TraceRMI调试器代理RCEExploitarium Ghidra PoC的源到汇分析手法【免费下载链接】exploitariumA single archive of public exploit PoCs and vulnerability research writeups. At the time I post these, none have been reported. Feel free to report them yourself and take credit for the CVE if handed out lulz. Please do not abuse these. I do this so to allure people into the field, and Ive always found this is the most efficient way.项目地址: https://gitcode.com/GitHub_Trending/ex/exploitariumExploitarium 是一个公开漏洞 PoC 合集仓库其中 ghidra-12.1.2-rce-ace-calc-poc 目录用“源到汇”Source-to-Sink分析法拆解了 Ghidra 12.1.2 中 TraceRMI 调试器代理的 RCE 条件路径。本文将带你读懂这套分析手法如何从源码中定位“不可信输入”到“命令执行汇点”的完整链路。 先搞懂三个关键概念在展开分析之前先扫盲几个术语新手友好术语通俗解释源Source不可信数据进入程序的地方比如网络请求、打开的文件汇Sink数据最终触发危险操作的地方比如执行系统命令、调用 evalTraceRMIGhidra 基于 Java RMI 实现的远程调试接口可远程控制本地调试器代理Debug Agent所谓源到汇分析就是回答一个问题“攻击者能控制的输入最终能不能流到某个执行命令的函数里” TraceRMI 调试器代理RCE 条件在哪里PoC 作者对 Ghidra 12.1.2 的Ghidra/Debug目录做了模式扫描证据记录在 evidence/source-evidence.md 中。核心发现是三个“可执行汇点”GDB 代理execute(cmd)方法直接调用gdb.execute(cmd, ...)LLDB 代理execute(cmd)把命令字符串送进 LLDB 命令解释器LLDB 代理pyeval(expr)直接调用 Python 的eval(expr)源不可信对端 → TraceRMI 控制通道 ↓ 路径调试器代理 methods.py 暴露的 execute / pyeval 方法 ↓ 汇gdb.execute / LLDB 命令解释器 / Python eval⚠️ 关键在于条件Condition这些汇点本身并不对网络裸奔。只有当“已创建的 TraceRMI 控制通道可被不可信对端驱动”时才构成 RCE。这一点在 docs/classification.md 中被明确分类为conditional RCE条件性远程代码执行而非默认未认证 RCE。 新手学习要点负责任披露的黄金法则不是“找到 eval 就喊 RCE”而是把触发前置条件写清楚。这正是 Exploitarium 这类 PoC 仓库值得借鉴的地方。️ PoC 脚本如何验证“汇点存在”主验证脚本是 pocs/rce_tracermi_conditional_calc_poc.py它的思路非常克制在本地 Ghidra 12.1.2 源码树中递归查找各调试器代理的methods.py用一组特征模式如def execute(、gdb.execute(cmd、return eval(expr)命中可执行汇点输出“仅弹计算器”的命令形态并可选在本地启动系统计算器作为无害执行证明脚本不会真正启动 TraceRMI、连接代理或发送 execute 请求——它是纯防御性复现。跨平台计算器逻辑统一收口在 pocs/calc_helper.pyWindows 用calc.exe、macOS 用 Calculator、Linux 依次尝试xcalc等。python3 pocs/rce_tracermi_conditional_calc_poc.py --ghidra-source /path/to/ghidra-12.1.2运行后会在artifacts/tracermi-conditional-rce/生成两个产物本地 calc 标记文件与tracermi_calc_payload_shapes.txt仅命令形态非可直接投递的载荷。 对照参考同一个 PoC 里的另外两条路径为了理解“ACE 与 RCE 的边界”可以把 TraceRMI 放在作者划分的三级分类里看ACE条件性本地任意代码执行Swift 反混淆器路径。分析器配置中的 Swift 工具目录若被污染swift-demangle可执行文件会被进程启动验证脚本为 pocs/ace_swift_demangler_calc_poc.pyRCE条件性远程代码执行即本文主角 TraceRMI 调试器代理通道默认可达的 RCE 级解析面SevenZipJBinding 原生归档解析器证据链见 pocs/sevenzip_jbinding_reachability.py——它证明了“归档字节 → 原生 7-Zip 解析代码”在 JVM 内可达但作者明确不宣称已有 calc 级利用这个分级方式最接近的已验证 ACE / 最接近的已验证 RCE / 默认可达面是阅读 README 时最该记住的方法论先说清“验证到哪一步”再谈“还差什么条件”。 自己动手复现检查的步骤清单准备一份 Ghidra 12.1.2 源码检出目录确认Ghidra/Debug目录存在脚本会检查各代理的methods.py运行上文命令查看命中列表确认三个代理的汇点模式可选加--run-local-calc-demo在本地弹出计算器完成良性证明闭环阅读 evidence/source-evidence.md 对照每个汇点的源码证据整个过程不需要任何第三方依赖纯标准库 Python 即可完成——这也是 PoC 对新手友好的原因。️ 防御启示如何给自己的调试通道上锁限制 TraceRMI 通道暴露面确保调试器代理控制通道只绑定可信主机避免不可信对端接入警惕execute/pyeval类方法调试接口中的命令解释型方法是高危汇点评审时优先关注学习源到汇的评审顺序先列源哪些输入不可信→ 再列汇哪些函数会执行→ 最后连路径数据如何流转、条件是什么 延伸阅读材料PoC 总说明与 Quick Startghidra-12.1.2-rce-ace-calc-poc/README.md三个面的源码级证据汇总evidence/source-evidence.md分类结论与“为什么是条件性”docs/classification.md全仓库 PoC 目录总览40 项目清单README.md⚠️负责任使用提醒本仓库内容为善意公开披露的研究材料作者明确要求不得恶意使用。TraceRMI RCE 路径的前置条件不可信对端驱动已创建的代理通道在默认部署下并不成立请勿夸大其默认可利用性。【免费下载链接】exploitariumA single archive of public exploit PoCs and vulnerability research writeups. At the time I post these, none have been reported. Feel free to report them yourself and take credit for the CVE if handed out lulz. Please do not abuse these. I do this so to allure people into the field, and Ive always found this is the most efficient way.项目地址: https://gitcode.com/GitHub_Trending/ex/exploitarium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考