在红队参与中,仅找到 XSS 或基本的配置错误通常不够,实现远程代码执行(RCE)才是关键。在一次评估中,发现了 XiongMai 的 uc-httpd 这一在全球无数 IP 摄像机中使用的轻量级 Web 服务器,Shodan 显示约 70k 个实例在互联网上公开暴露,虽有严重漏洞历史但无现成的执行代码的利用方式,于是开始构建。
- 分析:需先理解漏洞,因软件非开源,利用 CVE-2017-7577 路径遍历漏洞下载分析文件,发现是 ARM 32 位动态链接可执行文件,无 RELRO 使全局偏移表可写,无栈保护且 NX 禁用可在栈上执行代码,PIE 禁用使其始终在固定地址加载。用 Ghidra 反编译发现 CVE-2018-10088 缓冲区溢出漏洞及可通过溢出覆盖的函数指针,还发现更有前景的 CVE-2022-45460 漏洞。
- 调试设置:为避免依赖硬件设备,利用路径遍历漏洞转储文件系统,用
chroot
和 QEMU 的 ARM 系统模拟器创建虚拟环境,后用树莓派配合gdbserver
和bash
建立调试环境,可远程用 GEF 调试。 - 触发漏洞:通过发送独特模式确定输入覆盖栈上特定偏移的位置以控制执行,在服务器端设置断点观察寄存器变化。
- 构建利用:虽 NX 禁用但栈标记为
rw
导致栈上执行 shellcode 失败,遂改为构建 ROP 链,需绕过 ASLR,利用路径遍历漏洞获取库基地址,了解 ARM 架构及调用约定,用 Ropper 寻找 gadgets,如pop {r3, pc}
等,构建执行system("/bin/sh")
的 ROP 链,通过${IFS}
绕过空格限制,还可利用已建立的连接复用作为 shell,需注意函数 prologue 对寄存器的影响。 - 总结:开发利用后发现该漏洞已被识别为 CVE-2022-45460 且已有利用 shellcode 实现 RCE 的公开利用,但仍享受探索不同利用方式的乐趣并发布了自己的利用方式。同时提到其他新闻,如 Via Browser 的跨站脚本问题和 Spring Boot 应用中的 SSTI 漏洞利用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。