查看: 86603|回复: 475

IIS6堆喷射及内存破坏漏洞利用图示详解

[复制链接]
  • TA的每日心情
    无聊
    2024-5-5 16:05
  • 签到天数: 914 天

    [LV.10]以坛为家III

    发表于 2015-9-22 17:03:56 | 显示全部楼层 |阅读模式
    0×00 概述

    事实证明,利用COM ActiveX中的漏洞是一个好点子,这方面的例子非常多,下面我们就以活动服务器页面(Active Server Page,ASP)为例详细说明此类漏洞的利用方法。

    0×01 Redim Preserve语句

    我发现,redim preserve语句可以用来分配大量内存,例如,下图所示的代码,在IIS 6.0中就可以很好地达到这个目的:

    实际上,我们可以把有效载荷放到Block中,你看,这是不是简单到了令人发指的地步了。

    0×02 SQLNS.SQLNamespace

    SQLNS.SQLNamespace广泛存在于安装了SERVER SQL的机器上面,这个ActiveX发布的某些方法必须定义为private型的。如果这些方法引起内存破坏,就可以执行任意代码。

    下面我们来考察Refresh()方法,该方法只有一个参数。

    现在,让我们利用cscript.exe来执行poc.vbs,当然,这需要在Immunity Debuger中执行,并且还得在oleaut32.dll#DispCallFunc处设置一个断点,如下图所示。

    现在,请连续按F9,并通过F8步进到代码CALL EAX处,如下图所示。
    14428254319647.jpg
    这里就是sqlns#Refresh的入口点,在此建立一个断点,继续按F9键。
    14428254497290.jpg
    很好,它终于崩溃了!

    429DF9FE 8B02 MOV EAX,DWORD PTR DS:[EDX]
    429DFA00 FF50 6C CALL DWORD PTR DS:[EAX+6C]
    目前,EAX = 0×41414141,ECX = 0×41414141,EDX = 0×41414141。

    那么,0×41414141来自哪里呢? 0×41414141 = 1094795585,它是Refresh()方法的参数。

    0×03 IIS怎么了?

    将vbs代码保存为asp文件,并将其复制到IIS 6.0的web目录下面。
    14428254757014.jpg
    打开网站,并连接w3wp进程。按F9继续运行w3wp进程,然后在浏览器中打开poc.asp,你会看到下图所示的内容:
    14428254899212.jpg
    0×04 Unicode&Ansi

    由于asp是按照unicode编码来存储数据的,所以我要用到某些函数来分配内存。然后,我们向内存传输Hex数据,即填充内存。
    14428255128503.jpg
    0×05 堆喷射!

    下面,我们将通过redim preserve语句来实现堆喷射:
    14428255298267.jpg
    每个block的大小为512 * 2048 = 0×1000000,我们可以查看内存映射情况,如下图所示。
    14428255433172.jpg
    对于每个block来说,都有36个字节长的一个管理struct。
    14428255576101.jpg
    0×06 准备拿下EIP

    由于这里每个payload的长度为2048字节,因此,514个payload副本的长度为0×1010000,它正好是一个内存页的大小。因此,我们精心设计的payload完全可以用来控制EIP。
    14428255837975.jpg
    需要注意的是,这次在按F9继续w3wp进程之前,需要先建立一个断点。

    429DF9FE 8B02 MOV EAX,DWORD PTR DS:[EDX]
    14428256011100.jpg
    按F8,以步越(step over)方式调试。
    14428256122029.jpg
    如上图所示,现在来到CALL DWORD PTR DS:[EAX + 6C]处,其中EAX + 6C = 0x0c0c0c78。

    0×07 绕过DEP

    我们能够将类似0x0c0c0c10这样的堆地址放到地址为0x0c0c0c78的内存中吗?

    下面是在w3core模块中发现的代码,具体如图所示。
    14428256277406.jpg
    我们把这个地址放入到地址为0x0c0c0c78的存储空间中,然后单步调试。
    14428256409614.jpg
    14428256555447.jpg
    这里,esp已经变为0x0c0c0c0c了,也就是说,我们能够利用ROP来绕过dep保护机制。
    14428256789928.jpg
    接下来的事情,就是堆栈溢出利用了。如果你想具体了解这个漏洞的利用详情,请参考https://www.exploit-db.com/exploits/38005/

    0×07 结束语

    感谢您阅读本文,希望能够对您有所帮助。
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2017-9-11 15:40
  • 签到天数: 425 天

    [LV.9]以坛为家II

    发表于 2015-9-22 18:03:30 | 显示全部楼层
    大哥,这两天先不要刷贴了,我的那个招人的帖子被你顶下去了

    点评

    确实  发表于 2015-9-22 22:32
    好吧 我不刷了 先休息几天继续  详情 回复 发表于 2015-9-22 18:05
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2024-5-5 16:05
  • 签到天数: 914 天

    [LV.10]以坛为家III

     楼主| 发表于 2015-9-22 18:05:04 | 显示全部楼层
    wuyan 发表于 2015-9-22 18:03
    大哥,这两天先不要刷贴了,我的那个招人的帖子被你顶下去了

    好吧
    我不刷了
    先休息几天继续
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2023-11-2 19:55
  • 签到天数: 94 天

    [LV.6]常住居民II

    发表于 2015-9-22 18:31:53 | 显示全部楼层
    你  好能干
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-9-23 01:35:34 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-9-23 09:25:21 | 显示全部楼层
    学习学习技术,加油!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-9-23 09:27:51 | 显示全部楼层
    支持中国红客联盟(ihonker.org)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2019-2-12 22:05
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2015-9-23 23:56:31 | 显示全部楼层
    支持中国红客联盟(ihonker.org)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2019-2-12 22:05
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2015-9-24 11:17:14 | 显示全部楼层
    还是不错的哦,顶了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2015-9-24 21:05:49 | 显示全部楼层
    支持中国红客联盟(ihonker.org)
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-5-17 15:08 , Processed in 0.030558 second(s), 14 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部