結合WebScarab對WebGoat進行SQL的注入
WebScarab的原理很簡單,它記錄它檢測到的會話內容(請求和應答),使用者可以通過多種形式來查看記錄。WebScarab的設計目的是讓使用者可以掌握某種基于HTTP(S)程序的運作過程;也可以用它來調試程序中較難處理的bug,也可以幫助安全專家發現潛在的程序漏洞。
下載鏈接:http://down.51cto.com/data/149238
SQL注入是目前Web應用中最常見的漏洞,只要網頁上有提交框并且該提交框的內容影響后臺的查詢的SQL語句,就可能存在該漏洞。一般程序員在編寫Web應用程序時都是直接從request中取出提交的參數的值放入到SQL語句中進行查詢,這就造成了一個又一個的SQL注入風險。熟悉SQL語句的攻擊者會在網頁輸入框中輸入設計好的內容,將SQL的查詢邏輯改變,從而得到自己想要的東西。舉幾個例子:
案例1:繞過登錄界面:
常見的登錄頁面有兩個輸入框,一個用戶名,一個密碼,后臺的SQL語句為
select * from Users where username=’[用戶名]’ and password=’[密碼]’
其中[用戶名]和[密碼]分別為在兩個輸入框中輸入的內容,一般來說沒有什么問題,程序員只要判斷返回的recordset的記錄數大于0就可以使用戶登錄進去,但是如果惡意用戶在用戶名中輸入x’ or ‘1’=’1,密碼隨便輸,那么后臺的SQL查詢語句就會變為
select * from Users where username=’ x’ or ‘1’=’1’ and password=’[密碼]’
其中where語句的邏輯值始終為真,如果能猜中用戶名,即可以使用該用戶登錄
案例2:執行危險的SQL語句;
現在不少數據庫支持批處理,使用分號隔開多個SQL語句,如一個查詢界面,可以查詢客戶號(客戶號為數字類型),后臺的SQL語句為:
select * from customers where ID=[客戶號]
其中[客戶號]為用戶輸入內容,假如用戶輸入的為1;drop table customers。則整個SQL語句變為select * from customers where ID=[客戶號] 1;drop table customers,這樣的查詢一過,Customers表就沒了。
使用同樣的手法,惡意用戶還可以植入觸發器,修改數據,總之,可以執行后臺的SQL執行時使用的數據用戶權限內的所有操作。
當然SQL注入攻擊也不見得都是這么簡單,有的時候需要認真分析網頁,猜測其SQL的結構,并且需要利用一些工具進行輔助。因為在測試中用到了WebScarab,這里簡單介紹一下。
WebScarab說白了就是一個代理工具,他可以截獲web瀏覽器的通信過程,將其中的內容分析出來,使你很容易修改,比如我發一個submit請求,WebScarab首先截獲到,不急著給真正的服務器,而是彈出一個窗口讓你可以修改其中的內容,修改結束了再提交給服務器,如果網頁的輸入框進行了一些限制,如長度限制、數字格式限制等,只能使用這種方式進行修改了;它也可以修改服務器返回的response,這就可以過濾掉一些對客戶端進行限制的js等。這是OWASP的另一利器。
下面開始注入過程:
首先明確目標,webgoat的教程:
界面上只有一個輸入框,該教程的要求是要我們使用SQL注入方法登入界面,興沖沖的在password中輸入x’ or ‘1’=’1,不行,原來這個password框只能輸入8個字符,剛才的那個有12個字符之多!這時看樣子要祭出WebScarab了。
WebScarab的默認運行模式為Lite模式,如下圖:
需要將其更改為Full-Featured Interface模式,勾選上圖中的【use Full-Featured Interface】,重新啟動WebScarab,界面如下,多了很多功能選項:
因為我們要截獲發出的請求,將【Proxy】-【Manual Edit】-【Intercept request】勾選上。在IE中將代理服務器指向本機的8008端口(webscarab的),在webgoat的密碼框中輸入111提交,馬上彈出了如下界面:
其中password可以修改為:x’ or ‘1’=’1,點擊Accept Changes,成功,界面如下: