pikachu SSRF通关(服务器端请求伪造)

开始闯关吧

一共有两关

第1关 SSRF(curl)

按照指示点击下图蓝色字体的链接

得到了下图地址栏里的带参数的url,参数名是url,

 PHP的curl

PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。

libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。

PHP中使用cURL实现Get和Post请求的方法

这些函数在PHP 4.0.2中被引入。

1、file协议查看本地文件

先来看个比较熟悉的协议。file协议可以查看本地文件。

输入payload:http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=file:///etc/passwd

可以查看文件/etc/passwd的内容

第2关 SSRF(file_get_content)

2、php://filter/读php源代码

php伪协议中有个读php源代码的php://filter/,来试试这个好不好使。比如我想看rce.php的源代码,就输入payload:http://127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file=php://filter/read=convert.base64-encode/resource=../uploads/md.php

网页上就输出base64编码的rce.php的源代码了

网页上就输出base64编码的upload.php的源代码了 

复制出来之后在网上解码

3、http协议请求内网资源

浏览器输入payload:http://117.72.71.59:9001/vul/ssrf/ssrf_fgc.php?file=http://117.72.71.59:9001/vul/sqli/hack.txt

就成功读取到hack.txt的内容啦

4、ftp协议查看内网ftp服务器上的文件 

试了下ftp,没有成功

payload是:
 

5、dict协议扫描内网主机开放端口

使用dict协议可以获取内网主机开放端口相应服务的指纹信息,比如内网主机192.168.101.14上开了ftp服务的话,就可以通过payload:http://117.72.71.59:9001/vul/ssrf/ssrf_curl.php?url=dict://117.72.71.59:9001

SSRF修复建议

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

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值