A8 - Cross-Site Request Forgery CSRF
- Cross-Site Request Forgery (Change Secret)
- Cross-Site Request Forgery (Change Secret)
- Cross-Site Request Forgery (Transfer Amount)
Cross-Site Request Forgery (Change Secret)
CSRF,全称Cross-site request forgery,翻译过来就是跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)。CSRF与XSS最大的区别就在于,CSRF并没有盗取cookie而是直接利用
修改密码的请求会暴露在url中
那么可以直接通过发送指定url给受害者点击, 即可恶意修改密码
http://127.0.0.1/bWAPP/bwapp/csrf_1.php?password_new=666&password_conf=666&action=change
medium&high
增加了需要原密码的确认
大佬的做法是
可以通过钓鱼的方式攻击:
即构造一个钓鱼界面, 诱导用户输入旧密码, 然后通过JS脚本"悄悄"将旧密码发送到攻击者服务器
为了与原网页仿真, 要复制HTML源代码中的表单
当受害者进入这个假的链接,并且还输入了自己的个人密码的时候,信息就会发送到到攻击者服务器上
Cross-Site Request Forgery (Change Secret)
这一关可以直接修改密码,但用的是post方式进行传输
通过使用Engagement tools
的Generate CSRF PoC
功能
这里的密码是可以修改的,修改之后将poc复制保存,同上一关进行钓鱼,诱导用户点击后密码就会被修改了
medium&high
加入了token进行验证
// A random token is generated when the security level is MEDIUM or HIGH
if($_COOKIE["security_level"] == "1" or $_COOKIE["security_level"] == "2")
{
$token = sha1(uniqid(mt_rand(0,100000)));
$_SESSION["token"] = $token;
}
使用了Anti Token来防止CSRF
Cross-Site Request Forgery (Transfer Amount)
模拟了一个银行转账, 使用是的Get的请求, 使得转账金额和对方账户都在url中暴露
而medium和high都要进行token进行验证