介绍:
CSRF (Cross-site request forgery,跨站请求伪造)也被称为One Click Attack或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用
攻击者通过伪造用户的请求在用户不知情的情况下对网站执行未授权的操作。它利用受害者已经通过身份验证的会话来发送恶意请求,通常在用户访问受信任的站点时被触发。
简单工作原理:
(1)用户登录受信任的网站: 用户登录到一个受信任的网站(例如,example.com
),并获得一个会话cookie。这个cookie包含用户的认证信息,并在后续请求中用于识别用户身份。
(2)攻击者创建恶意网站: 攻击者创建一个包含恶意请求的网页或网站。这个恶意请求会向受信任的网站发送用户未授权的操作请求,例如转账、修改账户信息等。
(3)用户访问恶意网站: 用户在已经登录受信任网站的情况下,无意中访问了攻击者的恶意网站。这可能通过点击电子邮件中的链接、浏览恶意广告等方式实现。
(4)恶意请求发送: 当用户访问恶意网站时,恶意网站包含的请求(例如,隐藏的表单或自动提交的脚本)会自动向受信任的网站发送请求。这些请求会携带用户的会话cookie,因为用户已经在受信任的网站上登录过。
(5)受信任的网站处理请求: 由于请求携带了有效的会话cookie,受信任的网站会将请求视为合法用户发起的,从而执行请求中的操作。例如,执行资金转账或更改用户信息。
示例:
假设用户登录了银行网站(bank.com
),并且攻击者创建了一个恶意网站(evil.com
)。用户在登录bank.com
后,访问了evil.com
。evil.com
中包含如下的HTML代码:
<img src="http://bank.com/transfer?amount=1000&to=attacker_account" style="display:none;">
当用户访问evil.com
时,这段HTML代码会发送一个GET请求到bank.com
,请求内容是将1000元转账到攻击者的账户。由于用户已经登录过bank.com
,会话cookie会自动包含在请求中,bank.com
会认为这是合法请求并执行转账操作。
CSRF攻击需要的两个条件:
(1)目标用户已经登录了网站,能够执行网站的功能。
(2)目标用户访问了攻击者构造的URL。
CSRF&后台添加管理员
案例说明:小迪在登录后台管理自己网站的时候,突然群里给小迪说阿祖又说爱上别人了,随后给我发了个URL链接,小迪直接点了进去!
小迪网站:http://127.0.0.1:8105/
发送URL:http://127.0.0.1:8081/web/add.html
访问这个地址,其实就是管理员添加账号密码的数据包
CSRF触发前提条件:
1.管理员要提前登录(没有登录就没有权限触发)
2.访问了这个地址
3.要知道怎么添加用户,知道添加用户的数据包
利用流程:
1、获取目标的触发数据包
2、利用CSRFTester构造导出
3、诱使受害者访问特定地址触发
那么应该怎么构造数据包呢,这里我们在本地搭建,然后用到工具CSRFtester(工具里面端口为8008,点击bat)
CSRFtester工具介绍:
CSRF Tester工具使用教程_csrftester-CSDN博客
在触发添加数据包的时候,同时在工具中start,这样就会抓取你操作的数据包
在下面选择forms表单,然后把他生成为html格式,放在网站目录:
访问数据包地址:http://127.0.0.1:8081/web/add.html
然后在登录状态去访问http://127.0.0.1:8081/web/add.html
用户被创建成功。但是自己抓的包不能成功。
CSRF漏洞的挖掘:
(1)最简单的方法就是抓取一个正常请求的数据包,如果没有Referer字段和token,那么极有可能存在CSRF漏洞。
(2)如果有Referer字段,但是去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞
(3)工具检测,如CSRFtester和burpsuite等都有检测功能