4 个漏洞利用,1 个漏洞:以 4 种不同方式利用 CVE-2024-20017

这是一篇关于wappd漏洞利用的文章,主要内容总结如下:

  • 介绍(Introduction):原计划在今年 3 月左右完成,因搬家、换工作等原因延迟近 6 个月。该漏洞存在于wappd网络守护程序中,影响 MediaTek MT7622/MT7915 SDK 及 RTxxxx SoftAP 驱动包,受影响的芯片组包括 MT6890、MT7915 等,受影响的软件版本有特定的 SDK 和 OpenWrt 版本。文章将通过 4 个漏洞利用示例来探讨利用该漏洞的策略,代码可在这里找到。
  • 背景(Background)

    • 发现(Discovery):通过使用名为fuzzotron的网络模糊测试器发现该漏洞,使用radamsa进行变异测试,并手动生成初始语料库。对wapp守护程序代码进行了 minor 修改,以便将接收到的最后一个数据包保存到磁盘。
    • 根本原因分析(Root cause analysis):在IAPP_RcvHandlerSSB()函数中,在使用攻击者控制的值调用IAPP_MEM_MOVE()之前,缺乏边界检查,导致栈缓冲区溢出,最多可溢出 1433 字节的攻击者控制数据。
    • 代码流从源到汇(Code flow from source to sink):从IAPP_Start()开始,经过IAPP_RcvHandler()select()IAPP_RcvHandlerUdp()IAPP_RcvHandlerTcp()等函数,最终到达IAPP_RcvHandlerSSB(),在该函数中发生缓冲区溢出。
    • 注入点概述(Overview of the injection point):最大接收数据包大小为 1600 字节,可用于溢出的数据约为 1430 字节。RT_IAPP_HEADERRT_IAPP_SEND_SECURITY_BLOCK结构体定义了请求的格式,Length字段和Command字段有特定要求。
  • 漏洞利用 1:通过损坏的返回地址劫持 RIP,ROP 到 system()

    • 构建:非分叉,无优化,仅启用 NX(不可执行栈)。
    • 利用方式:经典的 RIP 劫持,利用栈溢出损坏保存的返回地址,使其跳转到 ROP gadget,将命令字符串的指针放入正确的寄存器,然后调用system()执行命令。由于未启用 ASLR,可假设system()和栈地址的知识。
  • 漏洞利用 2:通过指针损坏进行任意写入,GOT 覆盖

    • 构建:x86_64,非分叉,无优化,启用 ASLR、栈保护、NX 和部分 RELRO。
    • 利用方式:利用函数栈帧中局部变量的溢出,损坏kdp_info结构体,通过控制OidReq->Len的赋值,实现对任意地址的 4 字节写入。将 shell payload 写入 GOT 段,利用read()的 GOT 条目重定向执行,最终执行system()
  • 漏洞利用 3:通过 ROP 进行返回地址损坏和任意写入(完全 RELRO)

    • 构建:x86_64,优化级别 2,启用分叉守护进程,启用 ASLR、完全 RELRO 和 NX。
    • 利用方式:由于无法再利用之前的指针损坏获取任意写入,禁用栈保护以获取代码重定向原语,使用 ROP 找到可用于任意写入的 gadget,将 shell payload 写入.bss 和.data 段,通过 ROP 调用system()执行命令。
  • 漏洞利用 4:WAX206 返回地址损坏 + 通过指针损坏进行任意读写

    • 构建:aarch64,Netgear WAX206 上的版本,启用完全 RELRO、ASLR、NX 和栈保护。
    • 利用方式:针对 arm64 目标,由于代码优化和布局变化,无法再利用之前的指针损坏方法。通过损坏IAPP_RcvHandler()中的pPktBuf指针获取 1600 字节的任意写入原语,利用该原语将 shell payload 写入已知内存区域,通过损坏返回地址到 ROP gadget 来设置system()的参数,最终执行命令。
  • 额外奖励:通过 JOP 执行任意 IOCTL 调用触发内核漏洞:利用 JOP 链打开新套接字、构造iwreq结构体并触发ioctl()调用,展示了利用一个漏洞利用两个不同漏洞的可能性。
  • 总结(Wrapping up):文章比预期长,但希望能提供足够的信息,帮助读者了解漏洞利用开发的不同方法和策略,强调了在不同环境中漏洞利用的复杂性和多样性。
  • 参考资料(References):提供了相关的漏洞利用代码、NVD 漏洞信息、MediaTek 公告、fuzzotron 项目和 OpenWrt 图像页面等参考链接。
阅读 13
0 条评论