|
無意間發(fā)現(xiàn)某站點(diǎn)存在 SQL 注入漏洞,于是利用這個(gè)漏洞提權(quán)并獲取服務(wù)器控制權(quán)。這個(gè)案例很典型,像是教科書式的典型入侵步驟,下面就以這個(gè)案例展示從 SQL 注入到獲取目標(biāo)服務(wù)器控制權(quán)限的全過程。
發(fā)現(xiàn)
訪問某站點(diǎn)的搜索頁面,發(fā)現(xiàn)輸入單引號“'”就直接報(bào)錯(cuò),這就說明這個(gè)頁面存在 注入的可能。為了證實(shí)這點(diǎn),首先閉合請求訪問語句,然后對比返回結(jié)果的差異。
發(fā)現(xiàn)訪問
http://foo/rss.ASPx?keyword=lucky
以及
http://foo/rss.ASPx?keyword=lucky'));
都可以被執(zhí)行,但是返回的結(jié)果不同。根據(jù)下面的錯(cuò)誤信息,是注釋掉了 ORDER BY 。
分析
根據(jù)上面的情況,能非常肯定的斷定這個(gè)腳本存在很嚴(yán)重的 SQL 注入漏洞。下一步,嘗試構(gòu)建插入 SQL 語句
http://foo/rss.ASPx?keyword=lucky'));SELECT%20SERVERPROPERTY%20('edition');--
發(fā)現(xiàn)服務(wù)器的報(bào)錯(cuò)信息為 SQL 語句語法錯(cuò)誤,SQL 構(gòu)建不成功。幾次嘗試注入均不成功,于是休息下先把重點(diǎn)放到服務(wù)器本身
掃描目標(biāo)主機(jī)開放的端口,發(fā)現(xiàn)目標(biāo)主機(jī)的 3389 端口是開放的。用遠(yuǎn)程桌面訪問這個(gè)端口,可以訪問。萬事俱備,看來思路還得回到如何利用這個(gè) SQL 注入漏洞。
此時(shí)靈光一現(xiàn),是不是服務(wù)器的腳本分割用戶輸入的空格(%20),然后組成 SQL 語句查詢?那么將空格轉(zhuǎn)換成 TAB(%09)試試看,重新發(fā)起請求
http://foo/rss.ASPx?keyword=lucky'));SELECT%09SERVERPROPERTY%09('edition');--
并沒有報(bào)錯(cuò),說明判斷是正確的。接下來的事情就好辦了,調(diào)用 SQL 外部命令將 Guest 用戶解禁并加入管理組。
提權(quán)
解禁 Guest 用戶
相當(dāng)于服務(wù)器執(zhí)行
再將 Guest 加入到管理員組
相當(dāng)于服務(wù)器執(zhí)行
上述請求順利執(zhí)行成功,然后打開目標(biāo)主機(jī)的遠(yuǎn)程登錄,輸入用戶名“guest”密碼為空登錄,結(jié)果順利登錄 (運(yùn)氣和相貌都很重要 :P)。
重新關(guān)上 Guest 帳戶,并通知主機(jī)管理員,至此攻擊結(jié)束。
后記
正如上文所描述的,SQL 漏洞危害非常的巨大,但我相信國內(nèi)很多中小站點(diǎn)還普遍存在著這樣的漏洞。這里有些個(gè)人的不完全建議
1、代碼要對輸入的參數(shù)做到充分的過濾,并盡可能得考慮極端情況
2、錯(cuò)誤信息盡可能的少,否則無關(guān)的人看不懂而有心的人就會(huì)提起興趣
3、不要以管理員的身份運(yùn)行服務(wù)器進(jìn)程
4、某些情況下,NET 命令對于攻擊者而言就是“微軟牌”的木馬
5、嚴(yán)格控制遠(yuǎn)程登錄訪問者的來源
6、如果可能的情況下,不是很推薦使用 Windows 作為服務(wù)器操作系統(tǒng)
it知識庫:典型的 SQL 注入過程,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。