Pikachu靶场SSRF学习

下载Pikachu靶场:https://github.com/zhuifengshaonianhanlu/pikachu

Windows用phpstudy也行,记得要改config.inc文件

 

 打开SSRF靶场

如概述所说

SSRF(Server-Side Request Forgery:服务器端请求伪造)
其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制

导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据

数据流:攻击者----->服务器---->目标地址

根据后台使用的函数的不同,对应的影响和利用方法又有不一样
PHP中下面函数的使用不当会导致SSRF:
file_get_contents()
fsockopen()
curl_exec()
            

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

你可以根据"SSRF"里面的项目来搞懂问题的原因

关于SSRF可以尝试的payload:

php伪协议:
php://filter/read=convert.base64-encode/resource=file
文件读取:
file://x://路径
url访问:
http://url/filename
curl的getshell利用:
查看 curl 支持的协议列表 curl-config -protocols

使用 curl 读取文件 curl -v file://etc/passwd
使用 ftp 协议 curl -v “ftp://127.0.0.1:6666/info”
使用 dict 协议 curl -v “dict://127.0.0.1:6666/info”
使用 gopher 协议 curl -v “gopher://127.0.0.1:6666/_info”

首先,进行dict来探测端口开放情况及服务

本机:

 

 ssrf处

 

 

通过file:来读取指定的文件

Windows:file://C://test.txt

Linux:file:///etc/pwd

 

读取成功

 

 其次还有(file_get_contcent)的使用方法(上面的file方法也通用,dict不行)

 

 

 

 

 

通过php伪协议进行读取文件 类似于文件上传

 

 

 

phpinfo.txt在更目录下,由于ssrf_fgc.php在二级目录里

 

 

 所以要../../两次穿越目录

 php://filter/read=convert.base64-encode/resource=../../phpinfo.txt

 

 

 读取成功,转码

 

 

tftp --对应--》udp  ftp传输 协议:nc -lvup 1234

sftp--对应--》ssh文件传输协议:nc -lvp 1234

(环境原因暂无复现成功)

下一步:

通过SSRF从Redis Getshell

 

 

参考链接:

posted @ 2021-12-27 22:47  Dixk-BXy  阅读(454)  评论(0编辑  收藏  举报
Live2D