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