CSRF

2020-04-13  本文已影响0人  _Beginner

一.本文介绍

1、本文介绍csrf攻击原理、CSRF分类、拖库、修改密码、防御。

2、环境:Discuz_X1.5、DVWA靶场。

3、CSRF不属于XSS:


二.学习步骤

CSRF和XSS的区别:

1、CSRF需要登陆后操作,XSS不需要

2、CSRF是请求页面api来实现非法操作,XSS是向当前页面植入js脚本来修改页面内容。

1、csrf攻击原理

1. (Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式 。 XSS是跨站脚本攻击,就是在用户的浏览器中执行攻击者的脚本,来获得其cookie等信息。而CSRF确实,借用用户的身份,向web server发送请求,因为该请求不是用户本意,所以称为“跨站请求伪造”。一般而且存在XSS漏洞的网站,也极有可能存在CSRF漏洞。

2. 因为CSRF攻击中的那个“伪造的请求”的URL地址,一般是通过XSS攻击来注入到服务器中的。所以其实CSRF是以XSS为基础的,也可以看做是XSS攻击的一种。CSRF一般的攻击过程是,攻击者向目标网站注入一个恶意的CSRF攻击URL地址(跨站url),当(登录)用户访问某特定网页时,如果用户点击了该URL,那么攻击就触发了,我们可以在该恶意的url对应的网页中,利用 <img src="" /> 来向目标网站发生一个get请求,该请求会携带cookie信息,所以也就借用了用户的身份,也就是伪造了一个请求,该请求可以是目标网站中的用户有权限访问的任意请求。也可以使用javascript构造一个提交表单的post请求。比如构造一个转账的post请求。 

2、csrf攻击分类

1.站内:滥用$_REQUEST类变量造成的。

在一些敏感的操作中(如修改密码、添加用户等),本来要求用户从表单提交发起POST请求传递参数给程序,但是由于使用了$_REQUEST等变量,程序除支持接收POST请求传递的参数外也支持接收GET请求传递的参数,这样就会为攻击者使用CSRF攻击创造条件

2.站外:外部提交数据问题。

在留言版或者存在可输入URL的表单中。可能没有对一些操作做任何限制,所以攻击者可以事先预测并设置请求的参数,在站外的Web页面里编写脚本伪造文件请求,或者和自动提交的表单一起使用来实现GET、POST请求,当用户在会话状态下点击链接访问站外Web页面,客户端就被强迫发起请求。

3、csrf漏洞检测方法

1. 去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。

2. 测试工具:CSRFTester或Burpsuite:先需要抓取我们在浏览器中访问过的所有链接以及所有的表单等信息,然后通过在CSRFTester中修改相应的表单等信息,重新提交,这相当于一次伪造客户端请求。如果修改后的测试请求成功被网站服务器接受,则说明存在CSRF漏洞。

4、实验:

1. csrf脱库:

在搭建好的DZ注册123456,然后发帖,插入远程图片,URL为:http://192.168.1.224:8082/dz/uc_server/admin.php?m=db&a=operate&t=export&appid=0&backupdir=6666%26backupfilename%3Daaaa

http://192.168.1.224:8082/dz/uc_server/admin.php?m=db&a=operate&t=export&appid=0&backupdir=6666%26backupfilename%3Daaaa

若管理员登录后查看帖子详细信息,则会出发页面中图片的恶意代码:

此时,我们可以访问默认备份路径及我们重命名的文件夹和文件名:http://192.168.1.224:8082/dz/uc_server/data/backup/66666/aaaa-1.sql

导入数据库即可看到所有信息

2. 添加帐号:

在注册账号没有验证码下,抓包,然后改成CSRF工具,另存为网页,可以不停的注册账号。

3. 更新密码实验

当我们登录DVWA后,在CSRF中:

LOW级别时:直接修改密码即可。

medium级别时:Regerer得为网站修改页面的路径。否则会修改失败

Rerferer为空或不为本网站页面

5、csrf防范方法

1. 验证 HTTP Referer 字段;

2. 在请求地址中添加 token 并验证;

3. 在 HTTP 头中自定义属性并验证

上一篇下一篇

猜你喜欢

热点阅读