2008年5月5日星期一

[Advisory]迅雷DownAndPlay.dll模块远程溢出

Author: dummy
Date: 2008-05-06
Team: http://www.ph4nt0m.org


迅雷DownAndPlay.dll随迅雷起来后(不知道这个模块在从那个版本开始出现,我这是最新版本),在本地绑定36897端口,等待链接,
接受的数据格式是 XLDAP|key|value|XLDAP, 其中的 key 由预定义的几个,
这里实现溢出选择的是 savepath, 当value 超长时就会在 spintf 处发生溢出。
附件的 11.dat 是在 临时构造的 一份数据,可以使用 nc 看看效果,运行命令,
迅雷会因为异常退出。

有兴趣试着写出完整攻击代码。

C:\>nc 127.0.0.1 36897 <11.dat

23132CB6     8D45 A0          lea      eax, dword ptr [ebp-60]
23132CB9     E9 
84010000      jmp      23132E42
23132CBE     
68 B4C61323      push     2313C6B4                          ; ASCII "savepath"
23132CC3     
57               push     edi
23132CC4     FFD6             call     esi
23132CC6     
59               pop      ecx
23132CC7     84C0             test     al, al
23132CC9     
59               pop      ecx
23132CCA     
74 5F            je       short 23132D2B
23132CCC     8B75 0C          mov      esi, dword ptr [ebp
+C]
23132CCF     8B0D E0D21323    mov      ecx, dword ptr [2313D2E0]
23132CD5     
56               push     esi
23132CD6     E8 EBE5FFFF      call     231312C6
23132CDB     8B46 
04          mov      eax, dword ptr [esi+4]
23132CDE     8B0D B0E41323    mov      ecx, dword ptr [
<&MSVCP60.`std::>; MSVCP60.`std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Nullstr'::`2'::_C
23132CE4     85C0             test     eax, eax
23132CE6     8BD1             mov      edx, ecx
23132CE8     
74 02            je       short 23132CEC
23132CEA     8BD0             mov      edx, eax
23132CEC     8B7F 
04          mov      edi, dword ptr [edi+4]
23132CEF     85FF             test     edi, edi
23132CF1     
74 02            je       short 23132CF5
23132CF3     8BCF             mov      ecx, edi
23132CF5     B8 D4C61323      mov      eax, 2313C6D4                     ; ASCII 
"XLDAP"
23132CFA     
50               push     eax
23132CFB     
52               push     edx
23132CFC     
51               push     ecx
23132CFD     
50               push     eax
23132CFE     8D85 5CFEFFFF    lea      eax, dword ptr [ebp
-1A4]
23132D04     
68 C0C61323      push     2313C6C0                          ; ASCII "%s|%s|%s|%s"
23132D09     
50               push     eax

溢出发生位置
23132D0A     FF15 54E51323    call     dword ptr [
<&MSVCRT.sprintf>]     ; MSVCRT.sprintf
23132D10     8D85 5CFEFFFF    lea      eax, dword ptr [ebp
-1A4]
23132D16     
50               push     eax


睡觉了。。

没有评论: