针对 MitraStar GPT-2741GNAC 路由器中 OS 命令注入(CVE-2023-33381)的概念验证漏洞利用。演示通过诊断 ping/traceroute 功能绕过受限 shell,并包含对易受攻击 CGI 二进制的逆向工程分析。
通过 SSH 登录后,我立即注意到可用命令和选项的有限集合。很明显,我确实被限制在一个受限的 shell 环境中。

在探索了几种已知漏洞后,我决定深入挖掘新的漏洞。首先,我登录了管理门户,并开始测试各种可能导致操作系统命令注入的功能。在诊断菜单中,我遇到了一个特殊功能,它允许我使用 ping 和 traceroute 命令测试连通性。


于是,我决定尝试一些狡猾的手段,在我的命令中添加了一个 ";" 字符。我执行了 "cat /etc/passwd",结果如何?命令成功运行。

我更进一步,执行了 "sed" 命令,将 "/etc/passwd" 文件中的受限 shell 条目替换为一个完整的交互式 shell。

正如下方图片所示,我所做的修改使我能够登录并自由执行 "uname" 和 "cat" 等命令。

由于我拥有完全的管理员权限,我忍不住深入挖掘以发现存在漏洞的组件。在检查浏览器请求时,我注意到了一些有趣的事情。有两个 CGI 文件 "ping.cgi" 和 "DiagGeneral.cgi" 被请求所指向。

抓取文件后,我使用 Ghidra 进行了一些有趣的逆向工程。有趣的部分是:在 "ping.cgi" 文件中,我注意到 PingIPAddr 参数直接来自用户输入,没有进行任何适当的清理。从用户输入中获取的 PingIPAddr 参数通过 tcapi_set 函数保存以供将来使用。

最后,在 DiagGeneral.cgi 文件中,通过 tcapi_get 函数检索了 PingIPAddr 参数,然后直接用于 system 函数,没有任何清理。这个缺陷导致了命令注入漏洞,使得能够在系统上未经授权地执行任意命令。
