复现ssrf漏洞

目录

一、pikachu靶场

1、靶场环境:

使用docker拉取:

docker run -d -p 8765:80 8023/pikachu-expect:latest

2、使用dict

3、使用file读取文件

二、redis未授权访问

1、源码

2、使用bp探测端口

3、继续使用bp探测172.18.0.2的端口

4、使用gopherus写入

一、pikachu靶场

1、靶场环境:

使用docker拉取:

docker run -d -p 8765:80 8023/pikachu-expect:latest

如图所示:

2、使用dict

用 dict 协议的方式可以打开强行读取一些 mysql 服务的返回内容

但是当我们将端口号改变时发现没有返回内容

所以我们也可以用dict来探测内网端口,主要用来探测这几大服务

1、fistcgi   --发现后可以是用RCE

2、Redis  --未授权访问

如果你的Redis没有设置访问密码,以及安全模式关闭的情况下

1、用来写入webshell  --前提是知道物理路径

2、写入任务计划   --反弹shell可以将服务器权限反弹给攻击者

3、写入公钥   --意味着不需要账号密码直接登录服务器

3、使用file读取文件

二、redis未授权访问

1、源码

<?php
highlight_file(__file__);
function curl($url){  
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_HEADER, 0);
   echo curl_exec($ch);
   curl_close($ch);
}

if(isset($_GET['url'])){
   $url = $_GET['url'];

   if(preg_match('/file\:\/\/|dict\:\/\/|\.\.\/|127.0.0.1|localhost/is', $url,$match))
  {
       die('No, No, No!');
  }
   curl($url);
}
if(isset($_GET['info'])){
   phpinfo();
}
?>

相较于上面的靶场这个限制了file和dict,127.0.0.1和localhost同样限制

尝试使用dict探测端口显示No, No, No!

但是代码最后面写了一段,如果是info时就把这个打印出来

可以看到Hostname是172.18.0.3,可以得到现在docker下的ip为172.18.0.3

2、使用bp探测端口

发现只开放了80端口

因为Hostname是172.21.0.3,所以内网中不可能只有一台服务器,通过尝试发现172.18.0.2可能有web服务

3、继续使用bp探测172.18.0.2的端口

发现6379端口打开着

运行6379发现报错,说明这台内网主机上还运行着redis服务

通过bp扫描目录,发现有个upload目录,访问upload

4、使用gopherus写入

如下图:

gopherus --exploit redis

PHPShell

<?php system('cat /flag'); ?>

将生成的payload再次用url进行编码,然后发送过去,然后使用ssrf访问这个内网的upload/shell.php文件得到flag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值