29.CSRF及SSRF漏洞案例讲解

CSRF&SSRF—漏洞案例讲解

博主的学习复现笔记

1. CSRF—跨站请求伪造攻击

CSRF漏洞解释,原理

CSRF(Cross-site request forgery)
跨站请求伪造,由客户端发起,是一种劫持受信任用户向服务器发送非预期请求的攻击方式,与XSS相似,但比XSS更难防范,常与XSS一起配合攻击

导图

img

img

原理详解

攻击者盗用了你的身份信息,以你的名义发送恶意请求,对服务器来说这个请求是你发起的,却完成了攻击者所期望的一个操作 XSS
利用站点内内的信任用户,盗取cookie CSRF通过伪装成受信任用户请求受信任的网站 利用目标用户的合法身份,以目标的名义执行某些非法参数
利用条件:已经登录系统,用户访问URL 已存在的网站中让用户跳转

CSRF漏洞检测,案例,防御

防御方案

1.当用户发送重要的请求时输入验证码
2.涉及随机TOKEN ---数据包的唯一值
3.检测referer来源,请求时判断请求连接是否为当前管理员正在使用的页面
(管理员在编辑文章,黑客发来恶意的修改密码链接,因为修改密码页面管理员并没有在操作,所以攻击失败)
4.设置验证码
5.限制请求方式只能为post (post请求更难获取)

2. SSRF(服务器端请求伪造)

1、解释:

SSRF(Server-side Request Forge, 服务端请求伪造)。
由攻击者构造的攻击链接传给服务端执行造成的漏洞,一般用来在外网探测或攻击内网服务

img

2、危害:

扫内网
向内部任意主机的任意端口发送精心构造的Payload
DOS攻击(请求大文件,始终保持连接Keep-Alive Always)
攻击内网的web应用,主要是使用GET参数就可以实现的攻击(比如struts2,sqli等)
利用file协议读取本地文件等

img

SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统
(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)
SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制

比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。
注释:除了http/https等方式可以造成ssrf,类似tcp connect 方式也可以探测内网一些ip 的端口是否开发服务,只不过危害比较小而已。

0x01 可能出现的地方

1.社交分享功能:获取超链接的标题等内容进行显示,分享:通过URL地址分享网页内容
2.转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览,http://101.201.64.215:8088/
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)

私有地址
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255

#上传图片、视频方式
1、本地上传
2、远程上传 (和远程文件包含相似)

0x02 漏洞验证

1.排除法:浏览器f12查看源代码看是否是在本地进行了请求 比如:该资源地址类型为 http://www.xxx.com/a.php?image=(地址)的就可能存在SSRF漏洞
2.dnslog等工具进行测试,看是否被访问
–可以在盲打后台用例中将当前准备请求的uri 和参数编码成base64,这样盲打后台解码后就知道是哪台机器哪个cgi触发的请求。
3.抓包分析发送的请求是不是由服务器的发送的,如果不是客户端发出的请求,则有可能是,接着找存在HTTP服务的内网地址
–从漏洞平台中的历史漏洞寻找泄漏的存在web应用内网地址
–通过二级域名暴力猜解工具模糊猜测内网地址
4.直接返回的Banner、title、content等信息
5.留意bool型SSRF

0x03 利用方式

1.让服务端去访问相应的网址
2.让服务端去访问自己所处内网的一些指纹文件来判断是否存在相应的cms
3.可以使用file、dict、gopher[11]、ftp协议进行请求访问相应的文件
4.攻击内网web应用(可以向内部任意主机的任意端口发送精心构造的数据包{payload})
5.攻击内网应用程序(利用跨协议通信技术)
6.判断内网主机是否存活:方法是访问看是否有端口开放
7.DoS攻击(请求大文件,始终保持连接keep-alive always)

0x04 绕过小技巧

注:参考[8]会有更详细的绕过方式总结
1.http://baidu.com@www.baidu.com/与http://www.baidu.com/请求时是相同的
2.各种IP地址的进制转换 https://tool.520101.com/wangluo/jinzhizhuanhuan/
3.URL跳转绕过:http://www.hackersb.cn/redirect.php?url=http://192.168.0.1/
4.短网址绕过 http://t.cn/RwbLKDx
5.xip.io来绕过:http://xxx.192.168.0.1.xip.io/ == 192.168.0.1 (xxx 任意)
指向任意ip的域名:xip.io(37signals开发实现的定制DNS服务)
6.限制了子网段,可以加 :80 端口绕过。http://tieba.baidu.com/f/commit/share/openShareApi?url=http://10.42.7.78:80
7.探测内网域名,或者将自己的域名解析到内网ip
8.例如 http://10.153.138.81/ts.php , 修复时容易出现的获取host时以/分割来确定host,
但这样可以用 http://abc@10.153.138.81/ 绕过

0x05 漏洞示例
1.Wordpress3.5.1以下版本 xmlrpc.php pingback的缺陷与ssrf
2.discuz!的ssrf (利用php的header函数来绕过,其实就是302跳转实现协议转换)
3.weblogic的ssrf
0x06 漏洞修复
1.禁止跳转
2.过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
3.禁用不需要的协议,仅仅允许http和https请求。可以防止类似于file://, gopher://, ftp:// 等引起的问题
4.设置URL白名单或者限制内网IP(使用gethostbyname()判断是否为内网IP5.限制请求的端口为http常用的端口,比如 8044380808090
6.统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
0x07 漏洞利用中牵涉的小技巧
crontab -l 显示当前计划任务
crontab -r 清除当前计划任务
端口转发工具 socat
在Apache配置文件中写入下面的内容,就可以将jpg文件当做PHP文件来执行
AddType application/x-httpd-php

案例演示:

案例1:Pikachu_CSRF案例及Burp检测

①pikachu靶场演示

在pikachu的CSRF中测试get

在这里插入图片描述

然后进去之后点击修改个人信息

修改手机号后,抓包。

在这里插入图片描述

相当于发送这个请求的时候,就会修改电话号

在这里插入图片描述

那么,我们可以在另外新建一个网页,把这个网页放到公网服务器上,然后诱导管理员去点击这个网页,并且管理员已经登录了后台,那么执行了伪造网页中的 js代码,就会神不知鬼不觉的修改了电话号,实战中可以添加管理员。

payload

<script src='http://127.0.0.1/pikachu/vul/csrf/csrfget/……'></script>

在这里插入图片描述
访问1.php
在这里插入图片描述

再次查看,手机号以被修改
在这里插入图片描述

burp插件_测试有没有这个漏洞

img

生成poc

在这里插入图片描述

然后把poc代码放到服务器上,本地测试就行了。

4、防御方案
1.当用户发送重要的请求时输入验证码
2.涉及随机TOKEN ---数据包的唯一值
3.检测referer来源,请求时判断请求连接是否为当前管理员正在使用的页面
(管理员在编辑文章,黑客发来恶意的修改密码链接,因为修改密码页面管理员并没有在操作,所以攻击失败)
4.设置验证码
5.限制请求方式只能为post (post请求更难获取)

案例2:Pikachu_CSRF防御Token测试

最有效的方法就是设置随机Token,Token可以确定唯一地数据包。

在CSRF token里看一下数据包。

img

在这里插入图片描述

重新请求的话,token的值会变。
在这里插入图片描述

无法修改

在这里插入图片描述

在这里插入图片描述

②Referer头

同源策略,Referer判断是否为同一个域名下的。如果不是的话,就不予以执行。

但是这个可以通过抓包修改,来伪造成同源。

案例3:SSRF_PHP,JAVA漏洞代码协议运用

①代码:

在这里插入图片描述

②界面:

在这里插入图片描述

③利用
  • 本地上传

  • 远程上传:

    远程上传的时候,会让用户输入一个远程的地址,比如说http://www.xxxx.com/aaa.jpg这个地址是个图片,那么服务端就回去访问这个地址。

请求本地

如果把这个地址恶意利用,请求本地

http://127.0.0.1

访问的是window7 (ip : 192.168.59.129)虚拟机上的

在这里插入图片描述

window7:
在这里插入图片描述

那么服务端就会请求本地的信息。

可以请求本地的端口,

比如127.0.0.1:3306,请求mysql的端口。

在这里插入图片描述

回显:返回了版本号信息。

在这里插入图片描述

内网的探针

可以进行一个端口的扫描。除此之外,还可以当做内网的探针,比如说让服务器请求自己已经打开的虚拟机,类比到内网之中,就实现了内网探测。

img

内网ip可以用字典跑,一般都是192.168.xxx.xxx,端口用常见的端口就可以了。

img

dict协议,ftp协议,查看是否开放协议的这个端口。

访问内网另外一台虚拟机window7sp(IP: 192.168.59.138)

访问:
在这里插入图片描述

window7sp安装hfs
在这里插入图片描述

访问:
在这里插入图片描述
在这里插入图片描述

参考链接:

SSRF漏洞(原理&绕过姿势)

https://www.t00ls.net/articles-41070.html
CSRFTester安全测试工具

教程

http://luckyzmj.cn/posts/a1b686d3.html

img

下载好这个cms之后,放到PHPstudy里面。

img

img

一系列的设置

img

数据库密码是root,害得自己猜。

img

登录后,先开启CSRFTester监听

img

完事儿之后,准提交表单奥。

在CSRFTester里找到提交的表单数据包,将其原来数据修改为admin2数据,然后点击右下角 Generate HTML 保存到指定目录,会生成一个index.html文件

img

这里我放到了桌面上

img

打开index.html将末尾form里面的代码全删除掉

img

修改完后,使用同个浏览器打开index.html,页面返回success

img

img

再返回查看会员列表页面,可以发现已经成功添加了admin2用户

img

参考文章:
https://www.cnblogs.com/darkerg/p/14778512.html
https://www.cnblogs.com/SnowSec/p/14316774.html
https://www.t00ls.cc/articles-41070.html
https://blog.csdn.net/kuiguowei/article/details/79070999
https://blog.csdn.net/weixin_30527323/article/details/94862967

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明月清风~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值