淺談資料庫的攻擊(轉)
淺談資料庫的攻擊(轉)[@more@]淺談資料庫的攻擊(薦)1。突破script的限制。 例如,某網頁上有一文字框,允許你輸入使用者名稱稱,但是它限制你只能輸入4個字元。許多程式都是在客戶端限制,然後用msgbox彈出錯誤提示。如果你攻擊時需要突破此限制,只需要在本地做一個一樣的主頁,只是取消了限制,通常是去掉VBscript或IavaScript的限制程式,就可以成功突破。 如果是javascript做的,乾脆臨時把瀏覽器的指令碼支援關掉。如果是 有經驗的程式設計師常常在程式後臺再做一遍檢驗,如果有錯誤就用response.write或類似的語句輸出錯誤。 2。對SQL的突破 例如某網頁需要你輸入使用者名稱稱和口令,這樣就有兩個文字框等待你的輸入,現在我們假設有一使用者adam,我們不知道他的口令,卻想以他的身份登陸。 正常情況下,我們在第一個文字框輸入adam,第二個文字框輸入1234之類的密碼,如果密碼正確就可以進入,否則報錯。 程式中的查詢語句可能是: sql="select * from user where username='"&text1.value&"' and passwd= '"&text2.value&"'" 執行時候就是 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 我們就可以進入了。。。 有經驗的使用者就在程式中增加對單引號等特殊字元的過濾。 但是,一般人習慣上有兩種登入認證方式我就用ASP的VBScript做例子了: 一是用select * from ... where username = ' & Request.Form("username") & "password = " & Request.Form("password"),然後判斷結果是否為空來驗證。其實還有一種方式: 用select * from ... where username = ' & Request.Form("username"), 然後判斷結果集中的密碼是否和輸入相同來驗證,這種方式就安全一些了。 3。利用多語句執行漏洞。 根據上面的思路,如果使用者根據書名(例如linux入門)查詢所有的書,SQL語句為 select book.name,book.content from book where bookname='linux入門' 如果我們輸入的不是linux入門而是 linux入門' delete from user where '1' = '1 從而構成對錶的刪除。 成功的前提條件是對方允許多條語句的執行。 由於程式沒有處理邊界符“'”產生的漏洞的危害程度和結果集的型別及資料庫的配置有很大的關係。首先說結果集,如果結果集只支援單條的SQL語句,那麼你所能做的只是上面提到的那種在密碼框內輸入' or '1' = '1來登入,其他的做不了。 我們還可以用這種方法在資料庫裡增加使用者。 4。SQL Server裝完後自動建立一個管理使用者sa,密碼為空。而好多人裝完後並不去改密碼,這樣就留下了一個極大的安全問題,我稍後再細說。 程式中的連線一般用兩種,不是用global.asa就是用SSL檔案。SSL檔案一般人習慣放到到Web的/include或/inc目錄下。而且檔名常會是conn.inc、db_conn.inc、dbconninc,等等,反正有時能猜到。 如果這個目錄沒有禁讀,一旦猜到檔名就可以了,因為.inc一般不會去做關聯的,直接請求不是下載就是顯示原始檔。 還有當主要程式放到一個字尾為.inc的檔案而沒有處理“'”,當執行出錯時返回的出錯資訊中常會暴露.inc檔案,我遇到過幾次這樣的情況。其實可以在IIS裡設定來不回應指令碼出錯資訊的。 5。資料庫的利用。 如果程式中的連線使用者許可權極小,甚至多數表只能讀,你就很難有所作為了。這時所能做的是能猜出表名和欄位名來進行刪除資料或表的操作。 INSERT語句利用起來討厭一些,主要是裡面有好多列,而且還要處理掉最後的“)”。 我就以我最熟悉的MS SQL Server來說一些吧。它的預設埠號是1433,你用telnet連一下伺服器的這個埠,如果能連上去一般是裝了MS SQL Server,當然這是可以改掉的。 好了,說一說資料庫的利用。 如果對方的資料直接在Web伺服器上而且你知道埠號,有帳號就乾脆用SQL Analyzer來直接連線資料庫。在它裡面可以執行SQL語句。常用的是儲存過程master.dbo.xp_cmdshell,這是一個擴充套件儲存過程,它只有一個引數,把引數做為系統命令來裝給系統執行。 如果是管理使用者就有權執行這個儲存過程,而且這時可以執行很多操作,如用ipconfig來看ip設定,用net user來看系統使用者。不過用net user /add 使用者名稱 密碼並不一定成功,有時會返回一個“指定的登入會話不存在”而不能執行,原因我還不清楚。 如果沒有許可權也不要緊,MS SQL Server有個漏洞,你可以建立一個臨時儲存過程來執行,就可以繞過去,如: CREATE PROC #cmdshell(@cmdstr varchar(200)) AS EXEC master.dbo.xp_cmdshell @cmdshell 當然這時是沒有許可權執行net user /add等的,不過可以檢視,可以建立檔案。 反覆用echo建立一個FTP指令碼,把木馬傳到一個FTP站點上,然後用儲存過程呼叫ftp來利用指令碼來下載並安裝,然後......呵呵:) 如果資料庫沒有裝在Web伺服器上所以沒有找到或改了埠號而一時找不到還是有辦法的。 如果資料庫伺服器直接從Internet上無法訪問,你可以利用程式裡的漏洞來刪除、修改資料或加入javascript語句到資料庫,通常他們顯示本來應該自己人錄入的資料時不去過濾<>,所以可以用javascript把它轉到其他站點上或做些什麼。 如果只是改了埠號就要看程式裡資料庫使用者的許可權了,如果是管理使用者,可以用' exec master.dbo.xp_cmshell 'net user /add aaa bbb來建立一個作業系統使用者,然後再用' exec master.dbo.xp_cmdshell 'net localgroup /add administrators aaa來把它升級為超級使用者。 如果這臺伺服器的NetBIOS繫結了TCP/IP,而且C$、D$等管理共享存在,呵呵,恭喜了,你在DOS命令下用net use Z: ip address$ "bbb" /user:"aaa"就可以把對方的整個C盤對映為你本地的一個網路驅對器Z:了。 6。資料庫裡如何留後門。 建立使用者的sp_addlogin、許可權分配的sp_addsrvrolemember是用一條語句來判斷使用者是否有許可權執行,也就是說使用者都可以執行它,它再來判斷使用者是否有權執行。 當你攻入一個資料庫時可以用它的Enterprise Manager來連上去修改這些儲存過程,因為這些儲存過程都沒有加密。 可以在判斷的地方加個條件,當這個條件滿足時就不直接執行下去而不管是什麼許可權的使用者呼叫它。 不過改完要注意,這時它的Type成了User,要想改回可以到sysobjects表中把name為sp_addlogin的一條刪除,然後再把沒有改過的相同版本的MS SQL Server的同一條記錄複製進去就可以了。 當然不要忘了這些預設是不能手工修改的,要修改得先把掉SQL Server的引數,改完不要忘了再改回來啊:) 這時只要網站的程式有問題,不管程式中的使用者許可權如何,你都可以隨時建立SQL Server的管理使用者。 7。資料庫掃描工具。 ISS DATABASE Scanner
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-944352/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 淺談DDOS攻擊攻擊與防禦
- 淺談CSRF攻擊方式
- 淺談跨域WEB攻擊跨域Web
- SQL資料庫的一些攻擊(轉)SQL資料庫
- 淺談 CC 攻擊的防護方法
- 淺談DDos攻擊與防禦
- 淺談HASH長度擴充攻擊
- 淺談資料庫設計技巧(下)(轉)資料庫
- 淺談基於 NTP 的反射和放大攻擊反射
- Akamai淺談網路攻擊的防禦AI
- 淺談圖資料庫資料庫
- 圖資料庫淺談資料庫
- 淺談 JavaScript DDoS 攻擊原理與防禦JavaScript
- 淺談JavaScript DDoS攻擊原理與防禦JavaScript
- 淺談JS DDoS攻擊原理與防禦JS
- 淺析HTTP資料接收不同步攻擊HTTP
- 淺談資料庫事務資料庫
- 淺談資料庫連線資料庫
- 前端安全 — 淺談JavaScript攔截XSS攻擊前端JavaScript
- 淺談資料庫備份方案資料庫
- 淺談資料庫生命週期資料庫
- 淺談資料庫設計技巧資料庫
- 攻擊者使用SQLite資料庫中的惡意程式碼攻擊應用程式SQLite資料庫
- 資料庫的日常管理經驗淺談資料庫
- 加密你的資料並使其免受攻擊者的攻擊加密
- 資料庫:淺談DML、DDL、DCL的區別資料庫
- 淺談資料庫中的儲存過程資料庫儲存過程
- [資料庫] 淺談mysql的serverId/serverUuid資料庫MySqlServerUI
- 淺談DB2資料庫的備份與恢復(下) (轉)DB2資料庫
- 淺析HTTP走私攻擊HTTP
- CSRF 攻擊深入淺出
- 談談資料從sql server資料庫匯入mysql資料庫的體驗(轉)Server資料庫MySql
- 淺談DDOS中NTP放大攻擊的操作過程以及防禦措施?
- 網路攻擊泛談
- 淺談JDBC和資料庫連線池JDBC資料庫
- 淺談雲端計算時代的資料庫執行資料庫
- 如何防止網站資料庫被攻擊 被篡改網站資料庫
- 談談VB的資料庫程式設計方式 (轉)資料庫程式設計