国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

淺談數(shù)據(jù)庫的攻擊

2024-07-21 02:30:53
字體:
供稿:網(wǎng)友
淺談數(shù)據(jù)庫的攻擊(薦)

1。突破script的限制。  

例如,某網(wǎng)頁上有一文本框,允許你輸入用戶名稱,但是它限制你只能輸入4個(gè)字符。許多程序都是在客戶端限制,然后用msgbox彈出錯(cuò)誤提示。如果你攻擊時(shí)需要突破此限制,只需要在本地做一個(gè)一樣的主頁,只是取消了限制,通常是去掉VBscript或IavaScript的限制程序,就可以成功突破。  

如果是javascript做的,干脆臨時(shí)把瀏覽器的腳本支持關(guān)掉。如果是  
有經(jīng)驗(yàn)的程序員常常在程序后臺(tái)再做一遍檢驗(yàn),如果有錯(cuò)誤就用response.write或類似的語句輸出錯(cuò)誤。  

2。對SQL的突破  

例如某網(wǎng)頁需要你輸入用戶名稱和口令,這樣就有兩個(gè)文本框等待你的輸入,現(xiàn)在我們假設(shè)有一用戶adam,我們不知道他的口令,卻想以他的身份登陸。  

正常情況下,我們在第一個(gè)文本框輸入adam,第二個(gè)文本框輸入1234之類的密碼,如果密碼正確就可以進(jìn)入,否則報(bào)錯(cuò)。  

程序中的查詢語句可能是:  

sql="select * from user where username='"&text1.value&"' and passwd= '"&text2.value&"'"  

執(zhí)行時(shí)候就是  

select * from user where username='adam' and passwd='1234'  

好了,  

如果我們在text2里輸入的不是1234,而是1234'"&"'or 1=1  

我們的sql語句就成了,  

select * from user where username='adam' and passwd='1234' or 1=1  

我們就可以進(jìn)入了。。。  

有經(jīng)驗(yàn)的用戶就在程序中增加對單引號等特殊字符的過濾。  

但是,一般人習(xí)慣上有兩種登錄認(rèn)證方式我就用asp的VBScript做例子了:  

一是用select * from ... where username = ' & Request.Form("username") & "passWord = " & Request.Form("password"),然后判斷結(jié)果是否為空來驗(yàn)證。其實(shí)還有一種方式:  

用select * from ... where username = ' & Request.Form("username"), 然后判斷結(jié)果集中的密碼是否和輸入相同來驗(yàn)證,這種方式就安全一些了。  

3。利用多語句執(zhí)行漏洞。  

根據(jù)上面的思路,如果用戶根據(jù)書名(例如linux入門)查詢所有的書,SQL語句為  

select book.name,book.content from book where bookname='linux入門'  

如果我們輸入的不是linux入門而是 linux入門' delete from user where '1' = '1  

從而構(gòu)成對表的刪除。  

成功的前提條件是對方允許多條語句的執(zhí)行。  

由于程序沒有處理邊界符“'”產(chǎn)生的漏洞的危害程度和結(jié)果集的類型及數(shù)據(jù)庫的配置有很大的關(guān)系。首先說結(jié)果集,如果結(jié)果集只支持單條的SQL語句,那么你所能做的只是上面提到的那種在密碼框內(nèi)輸入' or '1' = '1來登錄,其他的做不了。  

我們還可以用這種方法在數(shù)據(jù)庫里增加用戶。  

4。SQL Server裝完后自動(dòng)創(chuàng)建一個(gè)管理用戶sa,密碼為空。而好多人裝完后并不去改密碼,這樣就留下了一個(gè)極大的安全問題,我稍后再細(xì)說。  

程序中的連接一般用兩種,不是用global.asa就是用SSL文件。SSL文件一般人習(xí)慣放到到Web的/include或/inc目錄下。而且文件名常會(huì)是conn.inc、db_conn.inc、dbconninc,等等,反正有時(shí)能猜到。  

如果這個(gè)目錄沒有禁讀,一旦猜到文件名就可以了,因?yàn)?inc一般不會(huì)去做關(guān)聯(lián)的,直接請求不是下載就是顯示源文件。  

還有當(dāng)主要程序放到一個(gè)后綴為.inc的文件而沒有處理“'”,當(dāng)運(yùn)行出錯(cuò)時(shí)返回的出錯(cuò)信息中常會(huì)暴露.inc文件,我遇到過幾次這樣的情況。其實(shí)可以在IIS里設(shè)置來不回應(yīng)腳本出錯(cuò)信息的。  

5。數(shù)據(jù)庫的利用。  

如果程序中的連接用戶權(quán)限極小,甚至多數(shù)表只能讀,你就很難有所作為了。這時(shí)所能做的是能猜出表名和字段名來進(jìn)行刪除數(shù)據(jù)或表的操作。  

INSERT語句利用起來討厭一些,主要是里面有好多列,而且還要處理掉最后的“)”。  

我就以我最熟悉的MS SQL Server來說一些吧。它的默認(rèn)端口號是1433,你用telnet連一下服務(wù)器的這個(gè)端口,如果能連上去一般是裝了MS SQL Server,當(dāng)然這是可以改掉的。  

好了,說一說數(shù)據(jù)庫的利用。  

如果對方的數(shù)據(jù)直接在Web服務(wù)器上而且你知道端口號,有帳號就干脆用SQL Analyzer來直接連接數(shù)據(jù)庫。在它里面可以執(zhí)行SQL語句。常用的是存儲(chǔ)過程master.dbo.xp_cmdshell,這是一個(gè)擴(kuò)展存儲(chǔ)過程,它只有一個(gè)參數(shù),把參數(shù)做為系統(tǒng)命令來裝給系統(tǒng)執(zhí)行。  

如果是管理用戶就有權(quán)執(zhí)行這個(gè)存儲(chǔ)過程,而且這時(shí)可以執(zhí)行很多操作,如用ipconfig來看ip設(shè)置,用net user來看系統(tǒng)用戶。不過用net user /add 用戶名 密碼并不一定成功,有時(shí)會(huì)返回一個(gè)“指定的登錄會(huì)話不存在”而不能執(zhí)行,原因我還不清楚。  

如果沒有權(quán)限也不要緊,MS SQL Server有個(gè)漏洞,你可以創(chuàng)建一個(gè)臨時(shí)存儲(chǔ)過程來執(zhí)行,就可以繞過去,如:  

CREATE PROC #cmdshell(@cmdstr varchar(200))  

AS  

EXEC master.dbo.xp_cmdshell @cmdshell  

當(dāng)然這時(shí)是沒有權(quán)限執(zhí)行net user /add等的,不過可以查看,可以創(chuàng)建文件。  

反復(fù)用echo創(chuàng)建一個(gè)FTP腳本,把木馬傳到一個(gè)FTP站點(diǎn)上,然后用存儲(chǔ)過程調(diào)用ftp來利用腳本來下載并安裝,然后......呵呵:)  

如果數(shù)據(jù)庫沒有裝在Web服務(wù)器上所以沒有找到或改了端口號而一時(shí)找不到還是有辦法的。  

如果數(shù)據(jù)庫服務(wù)器直接從Internet上無法訪問,你可以利用程序里的漏洞來刪除、修改數(shù)據(jù)或加入Javascript語句到數(shù)據(jù)庫,通常他們顯示本來應(yīng)該自己人錄入的數(shù)據(jù)時(shí)不去過濾<>,所以可以用javascript把它轉(zhuǎn)到其他站點(diǎn)上或做些什么。  

如果只是改了端口號就要看程序里數(shù)據(jù)庫用戶的權(quán)限了,如果是管理用戶,可以用' exec master.dbo.xp_cmshell 'net user /add aaa bbb來創(chuàng)建一個(gè)操作系統(tǒng)用戶,然后再用' exec master.dbo.xp_cmdshell 'net localgroup /add administrators aaa來把它升級為超級用戶。  

如果這臺(tái)服務(wù)器的NetBIOS綁定了TCP/IP,而且C$、D$等管理共享存在,呵呵,恭喜了,你在DOS命令下用net use Z: /ip address$ "bbb" /user:"aaa"就可以把對方的整個(gè)C盤映射為你本地的一個(gè)網(wǎng)絡(luò)驅(qū)對器Z:了。  

6。數(shù)據(jù)庫里如何留后門。  

創(chuàng)建用戶的sp_addlogin、權(quán)限分配的sp_addsrvrolemember是用一條語句來判斷用戶是否有權(quán)限執(zhí)行,也就是說用戶都可以執(zhí)行它,它再來判斷用戶是否有權(quán)執(zhí)行。  

當(dāng)你攻入一個(gè)數(shù)據(jù)庫時(shí)可以用它的Enterprise Manager來連上去修改這些存儲(chǔ)過程,因?yàn)檫@些存儲(chǔ)過程都沒有加密。  

可以在判斷的地方加個(gè)條件,當(dāng)這個(gè)條件滿足時(shí)就不直接執(zhí)行下去而不管是什么權(quán)限的用戶調(diào)用它。  

不過改完要注意,這時(shí)它的Type成了User,要想改回可以到sysobjects表中把name為sp_addlogin的一條刪除,然后再把沒有改過的相同版本的MS SQL Server的同一條記錄拷貝進(jìn)去就可以了。  

當(dāng)然不要忘了這些默認(rèn)是不能手工修改的,要修改得先把掉SQL Server的參數(shù),改完不要忘了再改回來啊:) 這時(shí)只要網(wǎng)站的程序有問題,不管程序中的用戶權(quán)限如何,你都可以隨時(shí)創(chuàng)建SQL Server的管理用戶。  

7。數(shù)據(jù)庫掃描工具。  

ISS DATABASE Scanner 
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 清远市| 湟源县| 白朗县| 东兴市| 舞钢市| 大方县| 扎赉特旗| 喜德县| 扬中市| 八宿县| 德兴市| 吉首市| 柳江县| 临桂县| 日喀则市| 青龙| 黎平县| 沂水县| 曲沃县| 仪陇县| 济南市| 周至县| 若羌县| 敖汉旗| 鄂托克旗| 淅川县| 曲阜市| 渑池县| 佛山市| 赤壁市| 武夷山市| 宁化县| 房产| 富宁县| 巴林右旗| 陇西县| 同江市| 凤庆县| 巴塘县| 博客| 漠河县|