DVWA——Insecure CAPTCHA复现
原理
CAPTCHA是谷歌提供的一种用户验证服务,即:验证码验证,就是用来区分人类和计算机的一种手段,可以很有效的防止恶意软件、“肉鸡”大量调用系统功能,比如注册、登录等。
因为该模块是谷歌提供,需要科学上网,否则我们无法看到具体的页面数据,修改成功,验证码等
对于我们常用的brute force(暴力攻击),由于这个时候系统有个严密的验证码机制,此类攻击就无计可施了。但本关中我们的主体思路是基于本关验证过程不严谨我们选择绕过验证的方式进行实现。
实验开始前准备
由于我们构建靶场时不会带着对于模块的配置文件的内容会出现不能正常显示的情况所以我们需要在/dvwa/WWW/config/config.ini.php文件下配置假如谷歌的密钥:
$_DVWA[ ‘recaptcha_public_key’ ] =
‘6LdK7xITAAzzAAJQTfL7fu6I-0aPl8KHHieAT_yJg’; $_DVWA[
‘recaptcha_private_key’ ] =
‘6LdK7xITAzzAAL_uw9YXVUOPoIHPZLfw2K1n5NVQ’;
当然也可以自己科学上网去获取自己的密钥然后填入配置文件中
能够正常显示这样的就好了。
开始复现
LOW等级
查看源码,源代码看起来很多所以选择性去分析相关内容
第一部分:它是用来获取用户输入的两次密码是否一致,值得注意的是它们所作的所有检查都是在客户端进行的,即我们可以通过修改我们自己的数据包进行篡改实现绕过的思路应该是成立的。
第二部分:是用来判断验证码的正确性,如果正确了就返回密码的界面(即查看step值是否为2),但是由于该部分是科学上网内容才能查看对应的验证码的内容不然我们无法查看到对应的验证码内容部分。
按照思路修改密码提交表单使用burpsuite进行抓包并修改step值
修改step值后对数据包进行放行就可以看到密码被修改成功了
Medium等级
查看源码可以看到medium相对于low它增加了对于参数passed_captcha的检查,当它的参数值为true的时候才能认为是通过了验证码的检测(值得注意的是该等级的检测还是在客户端进行检验,并没有让数据与服务器端接收的数据进行比对)
所以我们就直接在low等级思路的基础上增加于passed_captcha参数就可以了
high等级
发现High验证改成了单步,加入了另一个参数’g-recaptcha-response’,并加入验证user-agent要使得user-agent的数据为reCAPTCHA。
通过前两个级别的攻破,应该会有思路,就是增加的这个参数根本没啥用;而user-agent也是完全可以改包的。
impossible等级
在该等级代码中,它不仅要求了用户需要输入之前的密码,并且还加入了动态的CSRF token口令还支持服务器端与CAPTCHA端数据互通对数据进行检测防止用户通过修改数据包绕过攻击。所以就抑制了绕过攻击出现。