Que tal.
Bueno, aqui en Uk son casi las 5 de la madrugada, imagino que en Spain seran las 6 casi!
Pero bueno, nada, que pongo un lame lame programa que hice hace un tiempo para un user, pero estaba algo mal codeado. Este no es que este muy bien codeado, es mas, es horrible de mirar.
Pero si que es mucho mas funcional que el otro.
Lo mejor es ver el source ( Ughhhhhhhh! ) para ver el primer comentario.
Teneis que crear un fichero con la lista de directorios a probar en el server, desde /.
O sea, un fichero con un listado de posibles directorios tipo:
metadata
pub
sex
hornitorrincos
mizena
paparazzi
images
documents
cgi-bin
Y asi. Si el Web Server esta configurado para no devolver mensajes de estado de HTTP, te informare y el programa saldra de ejecucion ya que me baso en errores 200 OK y 40* HTTP.
Compilacion:
# gcc -O2 -o dires-scan2 dires-scan2.c
Ejecucion:
# ./dires-scan2 www.website.com file_with_dires.txt
Sin mas:
/*
* dires-scan.c By averno.
*
* - Hecho para el compi: winterfuse, del foro.elhacker.net -
*
* Compilacion: gcc -O2 -o dires-scan2 dires-scan2.c
*
* Uso:
* # ./dires-scan2 www.elhost.com fichero_con_directorios_a_probar
*
* Ejemplo:
* # ./dires-scan2 www.hacktheworld.com file.txt
*
*/
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#define MAX 1024
/* u_long resolve(char *); */
int open_sock(char *argv[])
{
struct sockaddr_in client;
struct hostent *he; /* utilizo gethostbyname(), ya que vamos a usar
nombres de dominio! */
int fd;
if ((fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket()");
exit(-1);
}
if ((he = gethostbyname(argv[1])) == NULL) {
error("gethostbyname()");
exit(-1);
}
memset(&client, 0, sizeof(client));
client.sin_family = AF_INET;
client.sin_port = htons(80);
client.sin_addr = *((struct in_addr *)he->h_addr);
if (connect(fd, (struct sockaddr *)&client, sizeof(struct sockaddr)) == -1) {
perror("connect()");
exit(-1);
}
return(fd);
}
void tester(char *argv[])
{
FILE *file;
char buff[MAX];
char tmp[MAX];
char tmp2[MAX];
char *buferr = "AvaxkijIAhh";
int readbytes;
int nonce; int sock;
if ((file = fopen(argv[2], "r")) == NULL) {
fprintf(stderr, "[=] Error abriendo archivo %s!\n\n", argv[2]);
exit(-1);
}
bzero(&tmp2, sizeof(tmp2));
sprintf(tmp2, "GET /%s/ HTTP/1.0\nHost: %s\n\n", buferr, argv[1]);
while (fgets(buff, sizeof(buff), file) != NULL) {
sock = open_sock(argv);
if (!nonce) {
if (write(sock, tmp2, strlen(tmp2)) == -1) {
perror("write1()");
exit(-1);
}
while ((readbytes = read(sock, tmp, 1024-1)) > 0) {
tmp[readbytes] = '\0';
if (strstr(tmp, "404")) {
break;
}
else {
printf("[=] El host %s no devuelve errores en mensajes HTTP\n", argv[1]);
printf("[=] Quitting!\n\n");
exit(-1);
}
}
nonce = 1;
}
memset(&tmp2, 0, sizeof(tmp2));
memset(&tmp, 0, sizeof(tmp));
if ((buff[0] == '#') || (buff[0] == '\n')) {
continue;
} /* kon esto, saltamos a la siguiente linea si el komienzo de la
linea es un komentario o una line vacia */
buff[strlen(buff) -1] = '\0'; /* Nos deshacemos del '\n' que pone
fgets() */
snprintf(tmp, sizeof(tmp), "GET /%s/ HTTP/1.0\nHost: %s\n\n", buff, argv[1]);
/* printf("[=] Assuming: %s\n", tmp); */
if (write(sock, tmp, strlen(tmp)) == -1) {
perror("write2()");
exit(-1);
}
while ((readbytes = read(sock, tmp2, 1024-1)) > 0) {
tmp2[readbytes] = '\0';
/* fprintf(stdout, "%s", tmp2); */
if (strstr(tmp2, "200 OK")) {
printf("[=] Directorio \"%s\" Enkontrado, winterfuse!\n\n", buff);
}
/* else {
printf("[=] Directory %s Not Found!\n", buff);
} */
}
sleep(0.5);
close(sock);
} /* Fin del loop while() de fgets() */
fclose(file);
} /* Fin de la funcion tester() */
int main(int argc, char *argv[])
{
if (argc < 3) {
fprintf(stderr, "[=] Uso: %s <host> <file>\n\n", argv[0]);
exit(0);
}
/*
fl = fcntl(fd, F_GETFL);
fcntl(fd, F_SETFL, fl | O_NONBLOCK); */
tester(argv);
return 0;
}
/* EOF */
Saludos.
P.D: No bad comments about my crappy app!!










Autor



En línea



El hacker es el filósofo de la actualidad
y para el foro.