OWASP TOP10——SSRF入门级理解,虚实结合简洁明了

目录

图示:

直接上案例 

SSRF成因

危险函数

危险协议

file协议

dict协议

gopher协议

绕过

防护


记录学习记录成长

SSRF (Server-Side Request Forgery,服务器端请求伪造)

与CSRF所不同的是SSRF主攻的是内网的探测,

准确地说是,对后端服务器同一个网络的其他服务器进行相关的扫描、探测,获取更多的资源,然后更进一步的进行攻击。

通常发生在攻击者可能受限于防火墙不能直接攻击到目标服务器,便伪造一个服务端请求,借由此为跳板攻击目标服务器。比如从指定 URL 地址获取网页文本内容,加载指定地址的图片,下载等等。

图示:

  

直接上案例 

 1、pikachu靶场curl函数使用不当(没有给参数添加过滤)

 从url这个参数可知向服务器请求了资源 

我们判断有没有ssrf漏洞,就用参数 http://baidu.com/robots.txt 来测试

说明确实是存在

接着我们可以把url中的内容改成内网的其他服务器上地址和端口,探测内网信息,比如端口开放情况

确认开放

结合bp对端口进行爆破查询,直接查出到底有哪些端口开放

很快就发现80等一系列端口长度不一样 

 

 如果是一般云服务器那么查看etc/password的话就很有可能有重大发现

SSRF成因

很多网站提供了从其他的服务器上获取数据的功能。通过指定的URL,网站可以从其他地方获取图片、下载文件、读取文件内容等。SSRF的实质就是利用存在缺陷的Web站点作为代理攻击远程和本地的服务器。

SSRF漏洞形成的原因大都是由于服务端提供了从其他服务器获取数据的功能但没有对目标地址做过滤与限制。

危险函数

file_get_contents():将整个文件或一个url所指向的文件读入一个字符串中。

readfile():输出一个文件的内容。

fsockopen():打开一个网络连接或者一个Unix 套接字连接。

curl_exec():初始化一个新的会话,返回一个cURL句柄,供curl_setopt(),curl_exec()和curl_close() 函数使用。

fopen():打开一个文件文件或者 URL。

危险协议

file协议

主要用于读取服务器本地文件,访问本地的静态资源

数据格式:file://文件绝对路径名

dict协议

常用来探测内网主机以及端口开放情况,既然能够探测端口,那么可以探测不同端口对应的服务的指纹信息。

数据格式:ditc://ip:port

gopher协议

gopher协议支持发出GET、POST请求

gopher协议在ssrf的利用中一般用来攻击redis,mysql,fastcgi,smtp等服务。

 数据格式:gopher://ip:port/_TCP/IP数据流

问题是这一串编码是怎么形成的呢

关键点就是:

1、问号(?)需要转码为URL编码,也就是%3f
2、回车换行要变为%0d%0a,但如果直接用工具转,可能只会有%0a
3、在HTTP包的最后要加%0d%0a,代表消息结束(具体可研究HTTP包结束)

当探测内网或执行命令时需要发送 POST 请求,gopher协议可就帮了大忙了 

与get不同的是,post还需要保留Content-Type和Content-Length,length对应的就是参数的总长度 

绕过

1、@绕过

URL跳转如果限制了只能xxx.com进行访问,

http://www.baidu.com@10.10.10.10http://10.10.10.10的请求是相同的

2、ip地址格式转换

127.0.0.1

0177.0.0.1 //八进制

0x7f.0.0.1 //十六进制

2130706433 //十进制

3、点用句号代替

www.baidu.com=www。baidu。com

4、利用短网址

网上有很多短网址转换工具

防护

1、禁止跳转

2、禁用除http和https外的协议,如:file://gopher://dict://等。

3、限制请求的端口为http常用的端口,如 80、443、8080。

4、统一错误信息,避免用户可以根据错误信息来判断远程服务器的端口状态。

5、对请求地址设置白名单或者限制内网IP,以防止对内网进行攻击。

6、URL特征参数进行检测和过滤

学到这只是了解,搞懂还是需要大量的练习

之后也会分享很多小记录

喜欢请关注1

  • 39
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值