SSRF常用的四种协议

007bug2021-07-19 10:53:05

0x00 前言

最近在项目中遇到了ssrf漏洞,并探测到了目标机器上监听127.0.0.1的redis。尝试用ssrf打了一波,虽然最后因权限问题没能成功利用,但也学会了很多新东西,在这里给大家分享一下。


0x01 ssrf简介

SSRF(Server-side Request Forge, 服务端请求伪造):是利用一个可以发起网络请求的服务,当作跳板来攻击内网的其他服务的漏洞。类型可分为有回显和无回显两种。


漏洞产生原因:服务端提供从其他服务器应用获取数据的功能,却没有对地址和协议做过滤,导致可利用此功能攻击服务端本机或所在内网。


漏洞危害:探测内网信息、攻击内网应用


常见场景:云服务商操作数据库、远程图片加载、网站采集抓取、头像、让你输入网址和ip的地方、webmail收发其他邮箱邮件、转码服务、在线翻译、收藏功能等。


漏洞利用常用协议:file、http(s)、dict、gopher


0x02 file协议研究

使用file协议进行的任意文件读取算是ssrf最简单的利用方式了


首先先写一段有ssrf漏洞的代码,命名为ssrf.php并部署到服务器上。


用file协议简单测试一下,可以看到能成功利用ssrf漏洞读取文件。file协议的格式为:file://文件路径



0x03 http协议研究

http协议的利用也很简单,就是向目标发送http请求,由于get请求的参数是直接加在url里的,所以可以探测内网那些使用get请求即可攻击的应用。


使用nc可以接收到发送的http数据包,结构非常简单。


0x04 dict协议研究

用nc在测试机监听,然后利用ssrf漏洞测试一下dict协议发送字符串info,看看接收方会收到什么:



可以看到一共收到了三行数据,第一行是版本号,第二行是我们发送的数据,第三行是自动添加的QUIT。


dict协议不支持换行符,没有办法进行换行,相当于一次只能执行一条命令,所以不能用来攻击那些需要交互的应用(比如需要认证的redis)。


0x05 gopher协议研究

需要发送多行数据时,就要用到gopher协议,同样使用nc简单测试一下,可以看到接收端成功接收到了换行的数据,所以gopher协议可以用来攻击那些需要交互的应用。


测试过程就不全放出来了,这里直接贴我得到的结论:

1、gopher协议会吃掉第一个字符,所以要先放一个没有用的字符

2、回车是\r\n,但如果直接对\r\n进行url编码结果是不对的,因为编码的是\ r \ n四个字符的结果,实际回车只是两个不可见的字符,url编码为%0d%0a

3、直接发%可以正常接收,但是发%0d%0a就会出现数据包发不出去的问题,还需要进行一次url编码成%250d%250a才能正常发送出去(直接用curl命令测试没这个问题,应该是web服务器会自动进行一次url解码导致的)


0x06 未完成的工作

1、在gopher协议的研究中发现%0d%0a会影响ssrf漏洞的正常利用,于是想到会不会有其他特殊符号同样会影响ssrf,url编码能否绕过。如果在实战中遇到的ssrf漏洞利用需要使用特殊符号,最好先在本地测试一下。


2、本文由小黑在实战中遇到了ssrf和内网redis引起,那具体对redis的利用有哪些坑,比如说如何构造符合redis接收格式的数据,如何绕过?符号引起的截断。


3、ssrf中的http协议一般只能构造get请求,但是gopher协议实质上可以用来构造任意格式的请求,所以能不能使用gopher协议构造post请求去攻击内网的应用呢?


4、ssrf常见的防御手段及其bypass方法。

urlssrf
本作品采用《CC 协议》,转载必须注明作者和本文链接
SSRF常用的四种协议
2021-07-19 10:53:05
最近在项目中遇到了ssrf漏洞,并探测到了目标机器上监听127.0.0.1的redis。尝试用ssrf打了一波,虽然最后因权限问题没能成功利用,但也学会了很多新东西,在这里给大家分享一下。
最近在做项目的时候,测到了一个部署在云上的存在 Laravel UEditor SSRF 漏洞的站点,并且发现这个 SSRF 漏洞可以读取到临时凭证,这不巧了,正好最近写了一个云环境利用的工具。打点,但,是云环境一开始还是信息收集,首先通过指纹扫描发现在目标范围内的一个站点使用了 Laravel 框架,接着测试发现该站点存在 Laravel UEditor SSRF 漏洞。
一般情况下利用URL解析导致SSRF过滤被绕过基本上都是因为后端通过不正确的正则表达式对URL进行了解析。该方式主要是利用URL解析器和URL请求器之间的差异性发起攻击,由于不同的编程语言实现URL解析和请求是不一样的,所以很难验证一个URL是否合法。下图展示了cURL请求函数与其他语言解析函数结合使用时,由于差异性造成的漏洞。
一般情况下,SSRF针对的都是一些外网无法访问的内网,所以需要SSRF使目标后端去访问内网,进而达到我们攻击内网的目的。
Facebook 开发了一种新工具,允许安全专家在其软件中查找服务器端请求伪造 (SSRF) 漏洞。
FastCGI与PHP-FPM FastCGI 快速通用网关接口(Fast Common Gateway Interface/FastCGI)是一种让交互程序与Web服务器通信的协议。FastCGI是早期通用网关接口(CGI)的增强版本。FastCGI致力于减少网页服务器与CGI程序之间交互的开销,从而使[服务器可以同时处理更多的网页请求。
利用SSRF渗透内网主机
2021-12-26 07:39:35
接下来PHP解析器会解析php.ini文件,初始化执行环境,然后处理请求,再以规定CGI规定的格式返回处理后的结果,退出进程,Web server再把结果返回给浏览器。这就是一个完整的动态PHP Web访问流程。
起源是在某个数据包里看到url=这个关键字,当时第一想到会不会有SSRF漏洞。
从VMware vCenter SSRF漏洞调试来看系统模块调用与认证机制。
web服务器经常需要从别的服务器获取数据,如果获取数据的服务器地址可控,攻击者就可以通过web服务器自定义向别的服务器发出请求,本期我们聊一下ssrf漏洞原理和利用.快来一起看看吧
007bug
暂无描述