揭秘:利用调试模式,轻松实现RCE攻击,奖金高达15,000美元!

admin 2025年2月24日12:09:59评论5 views字数 3233阅读10分46秒阅读模式

forever young

不论昨天如何,都希望新的一天里,我们大家都能成为更好的人,也希望我们都是走向幸福的那些人

01

背景

安全小白团

你是否曾经遇到过这样一个端点:直觉告诉你它存在漏洞,但你无法完全理解后端发生了什么,也不知道如何利用它?

在这篇文章中,我将分享一种技术,它将我的黑盒测试转变为半白盒测试。这种方法帮助我发现了多个漏洞,并最终实现了远程代码执行(RCE)。

02

发现端点

安全小白团

在阅读某个 JavaScript 文件时,我发现了一个名为 ExtraServices 的端点。于是,我打开 Burp Suite,在 Repeater 中请求了这个端点。然而,端点返回了 404 状态码,但与主机通常返回的 404 略有不同。我猜测这可能是一个不同的主机,于是开始使用 ffuf 对该端点进行模糊测试。

揭秘:利用调试模式,轻松实现RCE攻击,奖金高达15,000美元!
使用的命令如下:
ffuf -c -w <(cat customwordlist.txt) -u https://company.com/Extraserivce/FUZZ
这里的 <() 语法被称为进程替换,它允许程序从标准输入中读取内容。我经常在模糊测试目标时使用它,因为它可以让我动态调整或修改我的字典。
例如,如果你发现一个像 api/users/:user:id 这样的端点,并且你想转储所有用户 ID,你可以直接使用以下命令,而不需要创建一个新文件来保存所有用户 ID:
ffuf -c -w <(seq 1 1337) -u https://company.com/api/users/FUZZ
回到 Extraserivce 端点的模糊测试,这次测试没有产生任何结果,于是我决定暂时放下它。几小时后,我发现之前一些正常工作的端点现在几乎都返回了一个自定义的 404 响应。我意识到开发者可能实现了一个功能,对某些端点返回 404 响应。我之所以知道这一点,是因为这个 404 响应与之前的截图不同。于是,我抓取了之前正常工作的一个端点,并在路径开头添加了一个反斜杠 ,例如 /purl/test,结果它返回了 200 OK。于是,我对 Extraserivce 端点也做了同样的处理,并重新开始模糊测试:
ffuf -c -w <(cat customwordlist.txt) -u https://company.com/Extraserivce/FUZZ
不久后,我收到了一个非常有趣的端点,名字叫 callAny。
揭秘:利用调试模式,轻松实现RCE攻击,奖金高达15,000美元!
根据端点的名称和响应,我猜测这个端点可能接受一个参数,然后在后端通过 call_user_func 或 eval 等函数执行代码。于是,我开始对端点进行模糊测试,尝试了 GET 和 POST 请求,并使用了一些值,例如:
FUZZ=phpinfo FUZZ=phpinfo() FUZZ=phpinfo();
我还尝试了通过 POST 请求直接传递参数,使用 php://input 包装器,例如在请求体中注入 phpinfo、<?php phpinfo(); ?>、ls 等,但都没有成功。
揭秘:利用调试模式,轻松实现RCE攻击,奖金高达15,000美元!
我还尝试了 SSRF 和 LFI,但仍然无法理解后端发生了什么,于是暂时放弃了。

03

通过调试模式监控后端

安全小白团

几天后,在浏览网站并测试其他功能时,我收到了以下错误。这是一个明显的迹象,表明开发者在生产环境中开启了调试模式。因为调试模式启用后,访问任何返回错误的端点都会显示错误详情,这样我就能知道问题出在哪里。于是,我迅速导航到 Extraserivce/callany 端点,但为时已晚,开发者几秒钟后关闭了调试模式。
揭秘:利用调试模式,轻松实现RCE攻击,奖金高达15,000美元!

这时,我灵光一现:为什么不监控这个端点,并在开发者再次开启调试模式时抓取响应呢?于是,我决定监控该端点,并检查响应大小是否发生变化。如果发生变化,它会将响应详情发送到我的 Discord 频道。如果你想学习如何监控目标,我推荐观看以下视频:
https://youtu.be/wP3n1JnqtMU
不久后,我在 Discord 上收到了以下三个错误:
Warning: Undefined array key "Model"in redacted on line Warning: Undefined array key "Method"in redacted on line Warning: include_once(Models/): Failed to open stream: No such file or directory in redacted on line
现在你可能已经知道发生了什么:开发者正在通过 Model 参数包含一个特定的模型,然后使用 Method 参数触发该模型中的特定函数。你发现漏洞了吗?这是一个 LFI(本地文件包含)漏洞!你可能会想,虽然可以包含任何文件,但仍然会收到错误,因为你需要一个有效的文件和有效的方法,否则服务器会返回 500 状态码。嗯……你只对了一部分。

揭秘:利用调试模式,轻松实现RCE攻击,奖金高达15,000美元!
揭秘:利用调试模式,轻松实现RCE攻击,奖金高达15,000美元!
在这个场景中,代码的逻辑是先通过 Model 参数包含一个文件,然后再通过 Method 参数调用该文件中的某个方法。这意味着,即使我们无法控制方法的调用(因为方法名可能是固定的或需要特定的值),我们仍然可以通过 LFI 漏洞包含任意文件。

04

LFI升级为RCE

安全小白团

我最喜欢/最快的方法之一是通过 PHP 过滤链将 LFI 升级为 RCE(参考:PHP Filters Chain:https://www.synacktiv.com/publications/php-filters-chain-what-is-it-and-how-to-use的-it.html)。但由于我们无法控制文件的第一部分,因此无法使用 PHP wrapper,所以我们必须更加努力。使用经典的方法,如日志污染、PHP 会话注入、读取 /proc/self/environ 等,都没有返回任何结果。于是,我决定对 Web 目录进行模糊测试,寻找可能写入主机的线索。

Model=../FUZZ
揭秘:利用调试模式,轻松实现RCE攻击,奖金高达15,000美元!
然后,我收到了三个结果。阅读 .gitignore 文件时,发现了一些有趣的文件
揭秘:利用调试模式,轻松实现RCE攻击,奖金高达15,000美元!
特别是 log 和 LOG_Path 目录,因为它们可能会记录一些用户可以控制的内容,例如标头、参数、路径等。
于是,我决定对这两个目录进行模糊测试。幸运的是,在模糊测试时,我忘记包含 log 目录,所以我没有执行:Model=../log/FUZZ.txt,而是执行了:Model=../FUZZ.txt。
当我查看响应时,发现 test.txt 文件的内容存储了整个 X-ORIGINAL_URL 端点的 HTTP 请求。
揭秘:利用调试模式,轻松实现RCE攻击,奖金高达15,000美元!
于是,我请求了 test.txt 文件中的路径,并在标头中添加了一个 WebShell:
T: <?php system($_GET['cmd-old']); ?>
然后,执行了 ls 命令作为POC。
揭秘:利用调试模式,轻松实现RCE攻击,奖金高达15,000美元!
总结
通过监控调试模式和分析错误信息,我成功地将一个看似普通的端点漏洞升级为远程代码执行。这次经历让我深刻认识到,调试模式和生产环境中的错误处理机制可能会成为攻击者的突破口。希望这篇文章能为你提供一些启发,帮助你在漏洞挖掘中取得更大的成功!
参考及来源:
https://medium.com/@0xold/15k-rce-through-monitoring-debug-mode-4f474d8549d5

05

免责&版权声明

安全小白团

安全小白团是帮助用户了解信息安全技术、安全漏洞相关信息的微信公众号。安全小白团提供的程序(方法)可能带有攻击性,仅供安全研究与教学之用,用户将其信息做其他用途,由用户承担全部法律及连带责任,安全小白团不承担任何法律及连带责任。安全小白团所分享的工具均来自互联网公开资源,我们不对工具的来源进行任何形式的担保或保证。用户在下载或使用本公众号分享的工具前,应自行评估工具的安全性。我们无法对工具可能存在的病毒、木马或其他恶意软件负责,因此造成的任何损失,安全小白团不承担任何责任。欢迎大家转载,转载请注明出处。如有侵权烦请告知,我们会立即删除并致歉。谢谢!
揭秘:利用调试模式,轻松实现RCE攻击,奖金高达15,000美元!

转发

揭秘:利用调试模式,轻松实现RCE攻击,奖金高达15,000美元!

收藏

揭秘:利用调试模式,轻松实现RCE攻击,奖金高达15,000美元!

点赞

揭秘:利用调试模式,轻松实现RCE攻击,奖金高达15,000美元!

在看

原文始发于微信公众号(安全小白团):揭秘:利用调试模式,轻松实现RCE攻击,奖金高达15,000美元!

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月24日12:09:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   揭秘:利用调试模式,轻松实现RCE攻击,奖金高达15,000美元!https://cn-sec.com/archives/3771833.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息