DVWA---全级别Insecure CAPTCHA

Insecure CAPTCHA

CAPTCHA是Completely Automated Public Turing Test to Tell Computers and Humans Apart (全自动区分计算机和人类的图灵测试)的简称。

但个人觉得,这一模块的内容叫做不安全的验证流程更妥当些,因为这块主要是验证流程出现了逻辑漏洞。

打开此关卡时,出现报错:

 

出现该问题是因为使用reCAPTCHA没有申请密钥,因此需要手动填入密钥,打开提示的配置文件,分别输入如下代码保存后,刷新关卡。

6LdK7xITAAzzAAJQTfL7fu6I-0aPl8KHHieAT_yJg

6LdK7xITAzzAAL_uw9YXVUOPoIHPZLfw2K1n5NVQ

 

成功后界面:

验证码需要申请,我是用内网搭的环境,没有申请所以这里不显示,但这并不影响我们操作。

reCAPTCHA验证流程:

这一模块的验证码使用的是Google提供reCAPTCHA服务,下图是验证的具体流程。

 

服务器通过调用recaptcha_check_answer函数检查用户输入的正确性。

recaptcha_check_answer($privkey,$remoteip, $challenge,$response)

$privkey是服务器申请的private key。

$remoteip是用户的ip。

$challenge 是recaptcha_challenge_field 字段的值,来自前端页面。

$response是 recaptcha_response_field 字段的值。

函数返回ReCaptchaResponse class的实例,ReCaptchaResponse 类有2个属性 :

$is_valid是布尔型的,表示校验是否有效。

$error是返回的错误代码。

验证码是无法被修改注入的,但我们可以绕过验证码。

Low:

首先查看服务器端核心代码:

服务器将改密操作分成了两步:

第一步检查用户输入的验证码,验证通过后,服务器返回表。

第二步客户端提交post请求,服务器完成更改密码的操作。

服务器仅仅通过检查Change、step 参数来判断用户是否已经输入了正确的验证码,所以存在明显的逻辑漏洞。

漏洞利用:

1.通过构造参数绕过验证过程的第一步

首先输入密码,点击Change按钮,抓包:

 

因为没有FQ,所以没能成功显示验证码,发送的请求包中也就没有recaptcha_challenge_field、recaptcha_response_field两个参数。

更改step参数绕过验证码:

 

修改密码成功:

2.由于没有任何的防CSRF机制,可以地构造攻击页面。

当受害者访问这个页面时,攻击脚本会伪造改密请求发送给服务器。

但受害者会看到更改密码成功的界面从而意识到自己遭到了攻击。

Medium:

首先查看服务器端核心代码:

Medium级别的代码在第二步验证时,增加了对参数passed_captcha的检查,如果参数值为true,则认为用户已经通过了验证码检查,然而用户依然可以通过伪造参数绕过验证,本质上来说,这与Low级别的验证没有任何区别。

漏洞利用:

1.可以通过抓包,更改step参数,增加passed_captcha参数,绕过验证码。

抓到的包:

更改之后的包:

 

更改密码成功:

 

2.依然可以实施CSRF攻击,当受害者访问这个页面时,攻击脚本会伪造改密请求发送给服务器,依然会跳转到更改密码成功的界面。

High:

首先查看服务器端核心代码:

服务器的验证逻辑是当$resp(这里是指谷歌返回的验证结果)是false,或者参数g-recaptcha-response不等于hidd3n_valu3,并且http包头的User-Agent参数不等于reCAPTCHA时,就认为验证码输入错误,反之则认为已经通过了验证码的检查。

漏洞利用:

由于$resp参数我们无法控制,所以修改参数g-recaptcha-response和User-Agent。

抓到的包:

 

更改之后的包:

更改密码成功:

Impossible:

首先查看服务器端核心代码:

Impossible级别的代码增加了Anti-CSRF token 机制防御CSRF攻击,利用PDO技术防护sql注入,验证过程终于不再分成两部分了,验证码无法绕过,同时要求用户输入之前的密码,进一步加强了身份认证。

 

posted @ 2020-03-01 08:01  强霸卓奇霸  阅读(308)  评论(0)    收藏  举报
https://blog-static.cnblogs.com/files/xiaokang01/js.js 这是添加的文件的链接 color="240,230,140" 粒子的颜色设置 opacity="1" 粒子的透明度 count="75" 粒子的个数