SSRF
SSRF(Server-Side Request Forgery:服务器端请求伪造)
PHP中下面函数的使用不当会导致SSRF:
1 | file_get_contents() |
- file_get_contents() 将整个文件读入一个字符串
- fsockopen() 打开 Internet 或者 Unix 套接字连接
- curl_exec() 执行 cURL 会话
SSRF(curl)
curl 可以接收很多内容,不论是一个链接,还是一个文件路径。如果是一个链接,curl 就直接访问那个链接,如果是一个文件路径就直接访问那个文件。
我们发现超链接是
1 | http://192.168.17.129:8000/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/vul/vul/ssrf/ssrf_info/info1.php |
不过我们的端口是 8000 ,我们再设置一下,还是不行,我试了一下,必须是外部的 IP(不管是局域网 IP 还是公网 IP 也好,不能是本地回环地址)
1 | http://192.168.17.129:8000/vul/ssrf/ssrf_curl.php?url=http://192.168.17.129:8000/vul/ssrf/ssrf_info/info1.php |
所以很容易可以调用其他的 PHP 代码,是吧。
我们又会用到 pikachu RCE exec”eval”的页面 php 代码了。
1 | 192.168.17.129:8000/vul/ssrf/ssrf_curl.php?url=http://192.168.17.129:8000/vul/rce/rce_eval.php |
页面有点错乱,没关系。不过,测了半天发现没用。
不过我们可以用这个干很多事情了。
源码分析
1 | if(isset($_GET['url']) && $_GET['url'] != null){ |
SSRF(file_get_content)
一样的,只不过是文件而已
file://文件路径
这个是服务器的本地文件路径
http://文件路径
是基于网站根目录的路径
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Mr.Virus's Blog!

