4。SQL Server裝完后自動(dòng)創(chuàng)建一個(gè)管理用戶sa,密碼為空。而好多人裝完后并不去改密碼,這樣就留下了一個(gè)極大的安全問(wèn)題,我稍后再細(xì)說(shuō)。
程序中的連接一般用兩種,不是用global.asa就是用SSL文件。SSL文件一般人習(xí)慣放到到Web的/include或/inc目錄下。而且文件名常會(huì)是conn.inc、db_conn.inc、dbconninc,等等,反正有時(shí)能猜到。
如果這個(gè)目錄沒(méi)有禁讀,一旦猜到文件名就可以了,因?yàn)?inc一般不會(huì)去做關(guān)聯(lián)的,直接請(qǐng)求不是下載就是顯示源文件。
還有當(dāng)主要程序放到一個(gè)后綴為.inc的文件而沒(méi)有處理“'”,當(dāng)運(yùn)行出錯(cuò)時(shí)返回的出錯(cuò)信息中常會(huì)暴露.inc文件,我遇到過(guò)幾次這樣的情況。其實(shí)可以在IIS里設(shè)置來(lái)不回應(yīng)腳本出錯(cuò)信息的。
5。數(shù)據(jù)庫(kù)的利用。
如果程序中的連接用戶權(quán)限極小,甚至多數(shù)表只能讀,你就很難有所作為了。這時(shí)所能做的是能猜出表名和字段名來(lái)進(jìn)行刪除數(shù)據(jù)或表的操作。
INSERT語(yǔ)句利用起來(lái)討厭一些,主要是里面有好多列,而且還要處理掉最后的“)”。
我就以我最熟悉的MS SQL Server來(lái)說(shuō)一些吧。它的默認(rèn)端口號(hào)是1433,你用telnet連一下服務(wù)器的這個(gè)端口,如果能連上去一般是裝了MS SQL Server,當(dāng)然這是可以改掉的。
好了,說(shuō)一說(shuō)數(shù)據(jù)庫(kù)的利用。
如果對(duì)方的數(shù)據(jù)直接在Web服務(wù)器上而且你知道端口號(hào),有帳號(hào)就干脆用SQL Analyzer來(lái)直接連接數(shù)據(jù)庫(kù)。在它里面可以執(zhí)行SQL語(yǔ)句。常用的是存儲(chǔ)過(guò)程master.dbo.xp_cmdshell,這是一個(gè)擴(kuò)展存儲(chǔ)過(guò)程,它只有一個(gè)參數(shù),把參數(shù)做為系統(tǒng)命令來(lái)裝給系統(tǒng)執(zhí)行。
如果是管理用戶就有權(quán)執(zhí)行這個(gè)存儲(chǔ)過(guò)程,而且這時(shí)可以執(zhí)行很多操作,如用ipconfig來(lái)看ip設(shè)置,用net user來(lái)看系統(tǒng)用戶。不過(guò)用net user /add 用戶名 密碼并不一定成功,有時(shí)會(huì)返回一個(gè)“指定的登錄會(huì)話不存在”而不能執(zhí)行,原因我還不清楚。
如果沒(méi)有權(quán)限也不要緊,MS SQL Server有個(gè)漏洞,你可以創(chuàng)建一個(gè)臨時(shí)存儲(chǔ)過(guò)程來(lái)執(zhí)行,就可以繞過(guò)去,如:
CREATE PROC #cmdshell(@cmdstr varchar(200))
AS
EXEC master.dbo.xp_cmdshell @cmdshell
當(dāng)然這時(shí)是沒(méi)有權(quán)限執(zhí)行net user /add等的,不過(guò)可以查看,可以創(chuàng)建文件。
反復(fù)用echo創(chuàng)建一個(gè)FTP腳本,把木馬傳到一個(gè)FTP站點(diǎn)上,然后用存儲(chǔ)過(guò)程調(diào)用ftp來(lái)利用腳本來(lái)下載并安裝,然后......呵呵:)
如果數(shù)據(jù)庫(kù)沒(méi)有裝在Web服務(wù)器上所以沒(méi)有找到或改了端口號(hào)而一時(shí)找不到還是有辦法的。
如果數(shù)據(jù)庫(kù)服務(wù)器直接從Internet上無(wú)法訪問(wèn),你可以利用程序里的漏洞來(lái)刪除、修改數(shù)據(jù)或加入javascript語(yǔ)句到數(shù)據(jù)庫(kù),通常他們顯示本來(lái)應(yīng)該自己人錄入的數(shù)據(jù)時(shí)不去過(guò)濾<>,所以可以用javascript把它轉(zhuǎn)到其他站點(diǎn)上或做些什么。
如果只是改了端口號(hào)就要看程序里數(shù)據(jù)庫(kù)用戶的權(quán)限了,如果是管理用戶,可以用' exec master.dbo.xp_cmshell 'net user /add aaa bbb來(lái)創(chuàng)建一個(gè)操作系統(tǒng)用戶,然后再用' exec master.dbo.xp_cmdshell 'net localgroup /add administrators aaa來(lái)把它升級(jí)為超級(jí)用戶。
如果這臺(tái)服務(wù)器的NetBIOS綁定了TCP/IP,而且C$、D$等管理共享存在,呵呵,恭喜了,你在DOS命令下用net use Z: \ip address$ "bbb" /user:"aaa"就可以把對(duì)方的整個(gè)C盤(pán)映射為你本地的一個(gè)網(wǎng)絡(luò)驅(qū)對(duì)器Z:了。
6。數(shù)據(jù)庫(kù)里如何留后門(mén)。
創(chuàng)建用戶的sp_addlogin、權(quán)限分配的sp_addsrvrolemember是用一條語(yǔ)句來(lái)判斷用戶是否有權(quán)限執(zhí)行,也就是說(shuō)用戶都可以執(zhí)行它,它再來(lái)判斷用戶是否有權(quán)執(zhí)行。
當(dāng)你攻入一個(gè)數(shù)據(jù)庫(kù)時(shí)可以用它的Enterprise Manager來(lái)連上去修改這些存儲(chǔ)過(guò)程,因?yàn)檫@些存儲(chǔ)過(guò)程都沒(méi)有加密。
可以在判斷的地方加個(gè)條件,當(dāng)這個(gè)條件滿足時(shí)就不直接執(zhí)行下去而不管是什么權(quán)限的用戶調(diào)用它。
不過(guò)改完要注意,這時(shí)它的Type成了User,要想改回可以到sysobjects表中把name為sp_addlogin的一條刪除,然后再把沒(méi)有改過(guò)的相同版本的MS SQL Server的同一條記錄拷貝進(jìn)去就可以了。
當(dāng)然不要忘了這些默認(rèn)是不能手工修改的,要修改得先把掉SQL Server的參數(shù),改完不要忘了再改回來(lái)啊:) 這時(shí)只要網(wǎng)站的程序有問(wèn)題,不管程序中的用戶權(quán)限如何,你都可以隨時(shí)創(chuàng)建SQL Server的管理用戶。
7。數(shù)據(jù)庫(kù)掃描工具。
ISS DATABASE Scanner 淺談數(shù)據(jù)庫(kù)的攻擊(薦)
推薦:2007年11月網(wǎng)絡(luò)工程師考試全真模擬試題一下午試卷
更多軟考資料請(qǐng)?jiān)L問(wèn):考試吧軟件水平考試欄目
希望與更多網(wǎng)友交流,請(qǐng)進(jìn)入考試吧軟件水平考試論壇
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |