CSRF(Cross-site request forgery)跨站请求伪造
文章目录
- 一、CSRF定义
- 二、CSRF危害
- 三、CSRF漏洞构成
- 1.漏洞风险存在
- 2.用户登录受信任网站A,并在本地生成Cookie
- 3.攻击者伪装数据操作请求的恶意链接或者页面
- 4.诱使未登出用户主动访问或登录恶意链接,触发非法操作
- 四、CSRF的类型
- 1.Get类型
- 2.Post类型
- 3.Get+token
- 五、CSRF实操
- 1.Pikachu靶场CSRF
- a.CSRF(get) login
- b.CSRF(post) login
- c.CSRF Token login
- 2.DVWA靶场CSRF
- a.LOW
- b.Mid
- c.High
- 六、蓝莲花靶场搭建与使用
- 1.安装
- a.将\BlueLotus_XSSReceiver-master\*.*拷贝到pikachu www目录下
- b.浏览器打开
- c.点安装
- d.登录即可
- e.进入主页面添加数据
- 2.使用
- a.打开DVWA LOW级别 反射型xss界面
- b.蓝莲花创建”我的js”模块
- c.点击生成payload
- d.执行payload
- e.蓝莲花打开接收面板
- 七、XSS在线平台
- 1.打开页面
- 2.新建项目
- 3.选择基础默认模块
- 4.复制上面任意一条payload到DVWA里看效果
一、CSRF定义
CSRF是通过伪装用户的请求来利用网站。利用网站漏洞从用户那里恶意盗取信息
二、CSRF危害
以受害者名义发送邮件,发消息,盗取受害者的账号,甚至购买商品,虚拟货币转账,修改受害者的网络配置(比如修改路由器DNS、重置路由器密码)
造成的问题包括:个人隐私泄露、机密资料泄露、用户甚至企业的财产安全;
盗用受害者身份,受害者能做什么,攻击者就能以受害者的身份做什么。
三、CSRF漏洞构成
1.漏洞风险存在
目标站点或系统存在一个可以进行数据修改或者新增操作,且此操作被提交到后台的过程中,未提供任何身份识别或校验的参数。后台只要收到请求,就立即下发数据修改或新增的操作;存在以上情况说明存在漏洞风险。
出现比较多的场景有:个人资料修改、用户密码的修改、支付、购物地址的修改或后台管理账户的新增、数据库备份等等操作过程中。
CSRF一般与XSS结合使用
2.用户登录受信任网站A,并在本地生成Cookie
3.攻击者伪装数据操作请求的恶意链接或者页面
恶意攻击者只要将伪装好的“数据修改或新增”的请求发送给被攻击者,或者通过社工的方式诱使被攻击者在其cookie还生效的情况下点击了此请求链接,即可触发CSRF漏洞,成功修改或新增当前用户的数据信息
4.诱使未登出用户主动访问或登录恶意链接,触发非法操作
当前用户在不知情的情况下,访问了黑客恶意构造的页面或在链接,即在非本意的情况下完成黑客想完成的“非法操作”,实现了对当前用户个人信息的恶意操作。
四、CSRF的类型
get类型和post类型
1.Get类型
Get指的是向某个地方获取一些数据,这个获取的过程可以理解为一个简单的查询,专业名词叫做“幂等”。幂等也就是能够随意多次执行。
get类型的CSRF是CSRF中最常见,危害最大,但也是最简单的一种类型了,只要一个http请求就可以了,这种类型的CSRF一般是由于程序员安全意识不强造成的。GET类型的CSRF利用非常简单,只需要一个HTTP请求,所以,一般会这样利用:
抓包获取请求修改html代码
复制url,写个简单的html文件
0元充值 ![在这里插入图片描述](https://img-blog.csdnimg.cn/890b6761d4cd4d04be5f2ffcfa42e4b5.png)里面的请求数据可以随意改,然后扔给未登出用户点击即完成攻击
在这里插入图片描述
2.Post类型
post是希望服务器做某项操作,也就是不幂等。因为是设计成有影响的操作,所以它不能被缓存。post请求一般都是表单提交,可以在body里面携带数据。
$_REQUEST既可以获取GET请求的数据,也可以获取POST请求的数据;
一般会这样利用:
Bp抓包获取html请求代码,里面的请求数据可以随意改,把我们刚刚复制出来的referer粘贴在这个里面,然后使用Engagement tools-Generate CSRF POC,然后扔给未登出用户点击即完成攻击
3.Get+token
应对方法1:跟暴力破解绕过token的方式一样
新密码、确认新密码要设置一样的字典,Grep - Extract 通过正则提取返回信息中的内容
应对方法2:bp插件 下载完成后填一下host和name
五、CSRF实操
1.Pikachu靶场CSRF
a.CSRF(get) login
首先BP抓包获取请求代码
复制url,写个简单的csrf.html文件
0元充值 修改请求数据后给前端用户点击 ![在这里插入图片描述](https://img-blog.csdnimg.cn/fa49bc7f81c642248cb2c007f7923e11.png)点击修改个人信息
用户编辑修改个人信息
BP抓包制作模仿链接
将数据提取出来
复制url,写个简单的csrf2.html文件,随意修改请求数据后给前端用户点击
b.CSRF(post) login
先登录
点击修改个人信息
然后抓包制作模拟链接
随意修改上面数据后保存成csrf-post.html给前端用户点击
也是一样被篡改数据了
c.CSRF Token login
先登录
点修改个人信息
抓包制作模拟链接,发现多了个token
但是发现要修改的参数太多,不是只是修改密码,不能用爆破的方法,因此这里使用插件CSRF Token Tracker实现
Extender–BApp Store–搜索CSRF Token Tracker–install
装完后主菜单会多出一个选项CSRF Token Tracker
CSRF Token Tracker–host填写127.0.0.1,Name填poc名称,勾选使用
然后抓包点send to repeater重放
可以修改下数据再点send
点Follow redirection后发现修改成功
重新登录验证下
说明也确实被修改成功了
但是发现这里有个问题就是只能重放一次,使用过后Follow redirection就不再出现了,需要重新再来,而且如果修改编码不对也不会出现Follow redirection
2.DVWA靶场CSRF
a.LOW
不知道是get还是post,先bp抓包再说
显然是get类型的
那就构造链接吧
复制url,写个简单的csrf3.html文件
点击submit
然后我们登出使用该密码登录
发现确实修改成功了
b.Mid
登录抓包
替换链接打开
登出用新密码登录,也成功了,中级的怎么一样的
c.High
不出所料,高级的多了token
这次用爆破试下
使用鱼叉模式,用修改密码和token做变量
grep-extract加入找到的token
第二个字典类型选用Recursive gep,并将token黏贴在此处
使用单线程和一直重定向
开始爆破
其他情况
注意。爆破字典里要有我们修改的密码,如这里的password,否则会全部失败的
六、蓝莲花靶场搭建与使用
1.安装
a.将\BlueLotus_XSSReceiver-master*.*拷贝到pikachu www目录下
b.浏览器打开
http://127.0.0.1/BlueLotus_XSSReceiver-master/
c.点安装
可以改下密码,其他默认提交
d.登录即可
e.进入主页面添加数据
2.使用
a.打开DVWA LOW级别 反射型xss界面
b.蓝莲花创建”我的js”模块
使用默认模块,插入模版,website使用dvwa的当前测试xss界面地址,自定义文件名,最后点下面的新增
c.点击生成payload
复制生成的payload
d.执行payload
将复制的payload,放到dvwa的xss模块执行
e.蓝莲花打开接收面板
(需要重新拼接地址,先访问一下
http://127.0.0.1/BlueLotus_XSSReceiver-master/,
再访问http://127.0.0.1/BlueLotus_XSSReceiver-master/admin.php)
七、XSS在线平台
1.打开页面
https://xssaq.com/?callback=project&act=view&id=12637,登录账号和密码:poilkjmnb,QWE123
2.新建项目
点下一步
3.选择基础默认模块
点下一步
4.复制上面任意一条payload到DVWA里看效果
但是好奇怪的是我这里并没收到cookie
漏洞提交平台
漏洞盒子:https://www.vulbox.com/
补天:https://www.butian.net/
CNVD:https://www.cnvd.org.cn/
教育SRC:https://src.sjtu.edu.cn/
信息收集平台
https://fofa.info/
https://hunter.qianxin.com/
https://www.zoomeye.org/
https://www.shodan.io/
https://quake.360.net/quake/