从路径遍历到RCE:解锁$40,000赏金的黑客进阶之路
从路径遍历到RCE:解锁$40,000赏金的黑客进阶之路
安全小白团译文 安全小白团 2025-02-14 22:01
forever young
不论昨天如何,都希望新的一天里,我们大家都能成为更好的人,也希望我们都是走向幸福的那些人
01
背景
安全小白团
在这篇文章中,我将详细介绍我和
Orwa Atyat如何成功将一个受限的路径遍历漏洞升级为 RCE,并因此赢得40,000 美元的赏金的故事。
在对我们最喜欢的目标进行侦察和端口扫描时,我们发现了一个子域名http://admin.target.com:8443,虽然响应是404,大多数赏金猎人都会忽略任何返回404的子域名。但我不会!。
02
漏洞挖掘
安全小白团
通过模糊测试
http://admin.target.com:8443/FUZZ,我发现/admin/路径会重定向到登录页面http://admin.target.com:8443/admin/faces/jsf/login.xhtml。
在测试此登录端点并未发现任何漏洞后,我决定继续在/admin/路径下进行模糊测试,比如http://admin.target.com:8443/admin/FUZZ。
我偶然发现了一个位于/admin/Download的端点/download/,它返回了一个“200”状态代码,但却是一个空响应。
从端点名称,您可以推断出它的功能!但是,我们缺少正确的参数,我们需要一个100% 有效的文件和路径。因为端点位于/admin/下,所以我们应该在admin目录中查找起作用的文件。
我通常从 JavaScript 文件开始测试 LFI 和路径遍历,因此我使用名为/admin/js/main.js的文件开始测试。这种方法有助于我们确定存在的 LFI和路径遍历漏洞并识别可访问的路径。此外,因为我们需要确定“/download”所需的正确参数,所以我们必须使用一个已知的有效文件,即/admin/js/main.js。这样可以确保在模糊测试时不会错过正确的参数。模糊测试命令的结构如下:**
通过模糊测试,我们现在知道/admin/download接受一个名为filename的参数。因此访问http://admin.target.com:8443/admin/download?filename=/js/main.js会显示位于http://admin.target.com:8443/admin/js/main.js的文件;
我首先尝试通过读取/etc/passwd来实现完整的路径遍历。不幸的是,该/download功能仅适用于/admin/下的文件,任何超出/admin/的外部文件都不起作用。这证实了这里确实有一个受限的路径遍历*漏洞。
由于目标部署在 Java 环境中,我尝试读取/WEB-INF/web.xml,因为此文件通常包含大量有用信息。通过访问到http://admin.target:8443/admin/download?fileName=/WEB-INF/web.xml,我能够获取到了一些有用的信息。
在 /WEB-INF/web.xml 中,我们发现了三个 URL:/download/、/faces/(我们已经知道)和一个新的 URL:/incident-report。访问http://admin.target:8443/admin/incident-report触发了一些意想不到的事情:它开始下载一个名为incident-report-xxxxxx.zip的巨大日志文件。这个文件竟然是实时生成的日志文件!
日志文件的内容如下:
每次访问时http://admin.target:8443/admin/incident-report,都会下载一个新的日志文件,因为日志是实时生成的。
****## 我应该在这里停下来并报告吗?很多猎人可能会在这时候结束他们的探索!
不!
03
扩大影响
安全小白团
在检查日志文件时,我发现了一个包含管理员密码的文件:
第一个密码无效,但第二个密码 Glglgl123 有效。
因此我再次尝试用admin:Glglgl123登录/admin/faces/jsf/login.xhtml,竟然可以作为管理员登录访问面板!
登录后,我发现了一个名为 export_step2.xhtml 的功能,其中包含
Groovy 控制台。我在这里停下来并报告了漏洞,然后询问程序所有者是否可以尝试进一步利用 RCE。他们的回应是:“如果你能进一步利用并证明 RCE,我们将非常感激。”
在深入研究之前,让我们先了解一下Groovy Console。
Groovy 控制台是一个开发和调试工具,允许执行 Groovy 脚本。如果未经授权的用户访问它,可能会导致以下安全问题:
任
意代码执行:攻击者可以运行任何 Groovy 或 Java 代码,可能导致远程代码执行(RCE)。
敏感信息泄露:攻击者可以读取配置文件、环境变量或服务器上的凭据。
权限提升:如果 Groovy 控制台以高权限运行,攻击者可以执行普通用户无法执行的操作。
04
RCE的实现
安全小白团
回到 export_step2.xhtml 中的 Groovy 控制台,我使用了以下 payload:
但命令执行后没有输出。我尝试了不同的命令:
print "id".execute().textprint "sudo cat /etc/passwd".execute().text
同样的问题依然存在:命令执行了,但没有返回输出。
(读者可以猜猜输出可能隐藏在哪里?如果你猜对了,不仅会感觉自己像个摇滚明星,还会离获得巨额赏金更近一步!)
05
漏洞链的利用
安全小白团
还记得 http://admin.target:8443/admin/incident-report 吗?每次访问它时,都会下载一个实时日志文件。是的,这就是获取 RCE 输出的关键!
通过访问 http://admin.target:8443/admin/incident-report,我可以下载最新的日志文件,并在其中找到 RCE 的输出!
漏洞利用步骤
1.使用我们发现的凭据登录。
2.进入 Groovy 控制台。
3.运行命令,例如 print “sudo cat /etc/passwd”.execute().text。
4.访问日志端点 http://admin.target:8443/admin/incident-report。
5.下载最新的日志文件,RCE 输出就在其中!
经验教训和总结
- 将漏洞赏金视为游戏
将漏洞赏金视为一场冒险——不要停留在子域名的初步发现上,直到达成最终目标。在我的案例中,最终目标是实现远程代码执行(RCE)并获得 40,000 美元的赏金。许多猎人可能会在发现第一个漏洞后立即报告。正如你所看到的,我并没有满足于仅仅下载日志的端点,甚至没有止步于路径遍历漏洞。我不断探索,直到发现了巨大的回报。这种方法让我屡次获得高额赏金!
- 在子域名上发现漏洞后,彻底完成所有测试
一旦在子域名上发现漏洞,请坚持完成所有测试。正如你所看到的,一个小小的发现——比如通过受限路径遍历访问日志文件——可能会引发连锁反应,最终导致管理员密码泄露,进而升级为 RCE。有时,你甚至需要回到最初的漏洞,以获取拼图的最后一块!
- 注重质量而非数量
最初,我们将所有这些发现整合到一个报告中。这种方法不仅显示了对程序所有者团队的尊重,还赢得了更多的信任,并可能获得更高的赏金。事实上,程序所有者要求我们将报告拆分为多个单独的提交。为什么?因为这使他们能够为每个独立的发现提供更高的奖励!
参考及来源:https://medium.com/@HX007/a-journey-of-limited-path-traversal-to-rce-with-40-000-bounty-fc63c89576ea
06
免责&版权声明
安全小白团
安全小白团是帮助用户了解信息安全技术、安全漏洞相关信息的微信公众号。安全小白团提供的程序(方法)可能带有攻击性,仅供安全研究与教学之用,用户
将其信息做其他用途,由用户承担全部法律及连带责任,安全小白团不承担任何法律及连带责任。安全小白团所分享的工具均来自互联网公开资源,我们不对工具的来源进行任何形式的担保或保证。
用户在下载或使用本公众号分享的工具前,应自行评估工具的安全性。我们无法对工具可能存在的病毒、木马或其他恶意软件负责,因此造成的任何损失,安全小白团不承担任何责任。
欢迎大家转载,
转载请注明出处。
如有侵权烦请告知,我们会立即删除并致歉。谢谢!
转发
收藏
点赞
在看