SSRF Mix

SSRF+Redis+WebShell

<?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等协议,但还可以get传参info查看phpinfo

可以得知它内网地址是172.18.0.3

或许可以尝试用get url传递http请求尝试探测端口

我们可以使用burpsuit快速扫描试试

payload numbers设置1-10000端口再高就没有常用的端口了

通过lengtn基本判断没有可用端口服务开放,除了80

但是我们知道了内网地址之后不仅是可用对端口进行扫描还可以进行网段的横向渗透扫描

我们尝试一下172.18.0.1

看下去貌似是一个apache2的默认网页

使用burpsuit扫描一下呢

发现还是没有什么可用的服务

再试下172.18.0.2呢

发现返回了一个Go away有点可疑?我们用burpsuit扫描看看

我们发现了6379端口好像存在服务?对应的是redis服务尝试访问看看

实时确实如此出现了redis的error

既然我们知道了在它的内网之上这台主机开放了redis的服务我们是否可以结合gopher+redis进行webshell写入呢?

我们尝试使用gopherus编写一个简单的redis+phpwebshell

我们再进行二次编码

如何进行get传参

发现正在转圈,有可能成功?尝试访问一下我们利用redis写入的webshell

提示404NotFound?是没有写入成功?

是这样吗,有可能是上传写入的路径不是默认的www/html下?

尝试一下upload目录呢?

再次利用gopherus构造payload

再进行二次编码,传入

貌似成功了?

我们访问一下试试呢?

事实确实如此

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值