SSRF(pikachu)

一、 SSRF概述

SSRF(Server-Side Request Forgery,服务器端请求伪造)
形成的原因:大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制,导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据。即以存在SSRF漏洞的服务器为跳板取得其他应用服务器的信息。

数据流:攻击者 -----> 服务器 ----> 目标地址
根据后台使用的函数的不同,对应的影响和利用方法又有不一样

PHP中下面函数的使用不当会导致SSRF:
file_get_contents()
作用:
file_get_contents() 函数把整个文件读入一个字符串中。
和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。
file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。

fsockopen()
curl_exec()

如果一定要通过后台服务器远程去对用户指定(“或者预埋在前端的请求”)的地址进行资源请求,则请做好目标地址的过滤。

二、SSRF(curl)实验步骤

第一步:打开目标网站,并根据提示点击。
在这里插入图片描述
在这里插入图片描述
观察URL,发现它传递了一个URL给后台
第二步:我们可以把 url 中的内容改成内网的其他服务器上地址和端口,探测内网的其他信息,比如端口开放情况,下面这个例子就探测出10.2.7.24这台机器开放了3306端口
在这里插入图片描述

三、SSRF(file_get_content)实验步骤

第一步:访问目标网站,并根据提示点击
在这里插入图片描述
在这里插入图片描述
第二步:危害
file_get_content 可以对本地和远程的文件进行读取,比如
http://127.0.0.1/pikachu-master/vul/ssrf/ssrf_fgc.php?file=http://10.2.7.24/ceshi.php
在这里插入图片描述
http://127.0.0.1/pikachu-master/vul/ssrf/ssrf_fgc.php?file=file:///E://ceshi.txt
在这里插入图片描述
读取phpinfo.php代码内容显示为base64的形式
http://127.0.0.1/pikachu-master/vul/ssrf/ssrf_fgc.php?file=php://filter/read=convert.base64-encode/resource=…/…/…/phpinfo.php
在这里插入图片描述
百度搜索 base64解密,即会出现base64解密网站,把内容复制进去,点击base64解密
在这里插入图片描述
解密结果如下图所示
在这里插入图片描述