SSRF介绍及利用
一、介绍
定义:SSRF(Server-Side Request Forgery:服务器端请求伪造)通过篡改 HTTP 请求中的资源地址发送给服务器,服务器没有校验请求的合法性,服务器解析用户传递过来的请求,处理之后返回给用户。简单理解就是将WEB服务器作为了一个跳板(代理)去请求更深层(内网)的资源。 危害及利用: 1.内外网的端口和服务扫描 2.主机本地敏感数据的读取(任意文件读取) 3.内外网主机应用程序漏洞的利用 4.内外网 Web 站点漏洞的利用 产生的原因: 1.参数用户可控 2.后端使用了一些危险函数。例如PHP中下面函数的使用不当会导致SSRF: file_get_contents() 可以读取PHP文件 fsockopen() curl_exec() 不能读取PHP文件一句话来说,SSRF是为了攻击我们直接打不到的地方。内网一般来说太脆弱了,通过SSRF很容易就攻破了。
二、实战(靶场为pikachu)
1.端口扫描
在靶场的SSRF内容里面
我们只要将 /pikachu/vul/ssrf/ssrf_info/info1.php 换成对应的端口号,然后进行爆破(bp或者自己写脚本),就可以了解哪些端口是开放的。
这里注意有时候http协议不好用,我们可以将http协议换成dict协议。
2.SSRF任意文件读取
(1)简单基础文件
在这里我们要注意,web服务器的权限 ,读取的文件一定是web服务器权限所允许的,不然权限不够无法读取。
示例如下:
注意我们这里利用了file协议去读取文件,读取 / 根目录下的etc下的passwd文件。
至于SSRF能用哪些协议,每一个站点都不一样,需要自己去测试。
补充:file协议不能读取php文件。我们要利用以下方法。
(2)PHP文件读取
用到的方法介绍
官方回答太复杂了,简单来说就是利用 php://filter来读取一个数据流。固定写法:php://filter/read=convert.base64-encode/resource=
看如下示例:
然后我们解码获取到的数据即可。