PDA

Ver la versión completa : 10 cosas que puedes revisar en tu Apache



LUK
21-11-2012, 10:06
Apache sigue siendo el servidor web más extendido en Internet. En este artículo hemos querido recopilar en 10 puntos las cosas que puedes probar fácilmente en un servidor web de Apache para mejorar su seguridad que te permitan fácilmente saber si tu aplicación web es más o menos segura o necesita ir a una "revisión médica", aquí van:

1) La versión del servidor web y actualización total

Conocer la versión exacta de un servidor web Apache no es tan trivial como puede parecer al inicio. Si se ha configurado el parámetro ServerSignature Off o el parámetro ServerTokens Prod en los ficheros de configuración httpd.conf o apache.conf el servidor web solo devolverá como versión del servidor un escueto valor "Apache". Si no se ha hecho esto, se podrá recoger la versión exacta del servidor web y se podrá ver si está actualizado a la última versión o no.


Si no está actualizado a la última versión, le afectarán todos los bugs descritos en el tracking de seguridad en Apache Web Server (http://httpd.apache.org/security_report.html) y no debería ser así. Para consultar el banner, basta con hacer una petición GET al servidor web y analizar las cabeceras en las respuestas.


http://3.bp.blogspot.com/-5XdzDJ1Hmlk/UKSXKpCPWJI/AAAAAAAANzA/U6_j2-0g4Aw/s1600/Malignito_Web_server.png (http://3.bp.blogspot.com/-5XdzDJ1Hmlk/UKSXKpCPWJI/AAAAAAAANzA/U6_j2-0g4Aw/s1600/Malignito_Web_server.png)
Figura 1: Banner de un Apache modificado a Malignito

Si no sale la versión, las herramientas de fingerprinting pueden dar una versión aproximada del servidor, pero no es nada fácil hoy en día acertar con la versión exacta de Apache con ellas. Deberías seguir actualizando a la última versión, pero al menos no es tan evidente que te faltan parches.


2) Las páginas de error en todos los frameworks

Los mensajes de error en un servidor web Apache pueden ser devueltos por el mismo servidor web o por cualquier framework que esté instalado sobre él. Conocer la información que puede obtenerse de las páginas de error puede hacerse generando errores 400, 404, 500 (http://www.elladodelmal.com/2011/08/un-problema-de-licencia-error-500-en.html), etc... con diferentes extensiones de ficheros, para analizar los frameworks. Es recomendable buscar los errores en frameworks JSP (http://www.elladodelmal.com/2011/08/descubrir-servidores-tomcat-con-errores.html), ColdFusion (http://www.elladodelmal.com/2011/08/un-problema-de-licencia-error-500-en.html), etc...



http://4.bp.blogspot.com/-THmbKaljLNA/Ty6T9rI-Z1I/AAAAAAAAJbs/KagHyq8G4X4/s1600/ApacheHTTPOnly.png (http://4.bp.blogspot.com/-THmbKaljLNA/Ty6T9rI-Z1I/AAAAAAAAJbs/KagHyq8G4X4/s1600/ApacheHTTPOnly.png)
Figura 2: Error 400 en Apache pintando las cookies HTTPOnly en la respuesta

Hay que recordar que con un error 400 en Apache era posible robar las Cookies HTTPOnly (http://www.elladodelmal.com/2012/02/robar-cookies-httponly-con-xss-en-webs.html)aprovechándose del mensaje de error por defecto. Lo ideal es que todos los códigos de error en todos los frameworks que tienes instalados sobre tu Apache tengan el mismo ErrorDocumentHandler (http://www.elladodelmal.com/2012/10/errordocument-handlers-en-aplicaciones.html) y en el propio servidor, estén controlados y devuelvan páginas de tratamiento de excepciones asépticas.


3) Multiple Choices: mod_negotiation

Uno de los módulos más peculiares que puede tener instalado el servidor Apache es el de Multiple Choices (http://www.elladodelmal.com/2011/10/buscando-backups-con-modnegotiation.html). Este módulo, llamado mod_negotiation, recomienda al usuario ficheros contenidos en el servidor Apache similares al pedido cuando el nombre del que se ha solicitado no se encuentra almacenado allí.


http://3.bp.blogspot.com/-grKBEtMc0W0/Tpftq9uWzlI/AAAAAAAAIm0/TGyOIn6HhGU/s1600/w3_300.png (http://3.bp.blogspot.com/-grKBEtMc0W0/Tpftq9uWzlI/AAAAAAAAIm0/TGyOIn6HhGU/s1600/w3_300.png)
Figura 3: Multiple Choices en W3.org

Esto puede utilizarse para descubrir backups en el servidor y puede descubrirse fácilmente con un sencillo ..FOCA (http://www.elladodelmal.com/2011/10/300-multiple-choices-automatizado-con.html).


4) Directorios personales de usuarios: mod_user_dir

Uno de los módulos más antiguos de Apache es mod_user_dir (http://httpd.apache.org/docs/2.2/mod/mod_userdir.html), que permite llevar las carpetas personales de un sistema *NIX* directamente a la web. Estos directorios suelen publicarse como servidor.com: The Leading Server Site on the Net (http://www.servidor.com/~usuario) y si están mal configurados se publicarán todas las carpetas de todos los usuarios.


http://2.bp.blogspot.com/-AKxZ6hHOlCo/T7PPLpC9n_I/AAAAAAAAKb4/FX447DzhAlY/s1600/Fuzzer1.png (http://2.bp.blogspot.com/-AKxZ6hHOlCo/T7PPLpC9n_I/AAAAAAAAKb4/FX447DzhAlY/s1600/Fuzzer1.png)
Figura 4: Web Fuzzer en FOCA PRO

Suele ser interesante hacer fuzzing al nombre del usuario con un diccionario generado con nombres de usuarios extraídos directamente desde la web o los propios metadatos de los documentos con FOCA (http://www.informatica64.com/foca.aspx). Para este tipo de cosas, entre otras, metimos el plugin de Web Fuzzer en FOCA PRO (http://www.elladodelmal.com/2012/05/foca-web-fuzzer-y-api-01-para.html).


5) Los métodos HTTP inseguros

Los métodos HTTP (http://www.elladodelmal.com/2010/06/la-foca-y-los-verbos-inseguros.html) que se pueden utilizar en un servidor web Apache deben estar restringidos para que sólo se usen aquellos que sean extrictamente necesarios. GET, POST y HEAD deberían ser más que suficientes para una web "normal". Si permites OPTIONS te van a poder examinar todos los métodos permitidos, si permites TRACE, te puedes encontrar con alguna situación como la de robar las cookies HTTPOnly (http://www.elladodelmal.com/2011/11/hijacking-de-cookies-http-only-con-xss.html).


http://4.bp.blogspot.com/_Y2uWeGSk9Sw/TCHBFtKmTsI/AAAAAAAAGfc/8IagE5PcfPw/s1600/http_PUT.png (http://4.bp.blogspot.com/_Y2uWeGSk9Sw/TCHBFtKmTsI/AAAAAAAAGfc/8IagE5PcfPw/s1600/http_PUT.png)
Figura 5: Options en un servidor Apache con soporte para PUT, DELETE y TRACE

Si permites el método PUT o DELETE te puedes encontrar algún punto de la web en los que por fallos de los permisos te acaben metiendo una webshell - y que aparezcas en una búsqueda por Shodan (http://www.elladodelmal.com/2012/10/donde-meto-mi-webshell-metodos.html) en un ataque de hacking con buscadores (http://www.informatica64.com/libros.aspx?id=hackingBuscadores) - o borrando ficheros.


Saludos Malignos! @ Un informático en el lado del mal: 10 cosas que puedes revisar en tu Apache (1 de 2) (http://www.elladodelmal.com/2012/11/10-cosas-que-puedes-revisar-en-tu.html)

LUK
21-11-2012, 10:09
Continuando con las 10 cosas que puedes revisar en tu servidor web Apache, hoy os dejo otras 5 cosas más. No son éstas las únicas que se pueden mirar - por supuesto - pero son algunas que son fáciles de comprobar. Si quieres fortificar más Apache, puedes leerte las recomendaciones de fortificación (http://httpd.apache.org/docs/2.4/misc/security_tips.html) que tienes también en la web del proyecto.

6) Consolas de administración y paneles de administración JBOSS

Hace poco salía a la luz los miles de servidores Apache con server-status abierto (http://www.elladodelmal.com/2012/11/apache-server-status-abierto-en-miles.html) sin ninguna contraseña en el servidor - entre los que salían sitios como CISCO -, pero casi más peligroso es tener paneles de administración JBOSS en /web-console o /jnx-console (http://www.elladodelmal.com/2010/04/si-es-que-van-pidiendo-guerra.html) sin password o con credenciales por defecto.



http://4.bp.blogspot.com/_Y2uWeGSk9Sw/S9Sb8SYgrfI/AAAAAAAAGJI/15iv-naZqFg/s640/WebConsole.png (http://4.bp.blogspot.com/_Y2uWeGSk9Sw/S9Sb8SYgrfI/AAAAAAAAGJI/15iv-naZqFg/s1600/WebConsole.png)
Figura 6: Panel de administración JBOSS


En cualquiera de los dos casos se está pidiendo a gritos un ataque que pueda terminar con la seguridad del sistema.

7) Servicios Proxy configurados en el servidor Apache

El servidor Apache puede funcionar como un servidor Proxy (http://thehackerway.com/2012/11/15/2074/) para dar conexión a una red interna que quiere salir a Internet o como un servidor Reverse Proxy que dé acceso a servidores de la Intranet desde Internet. En ambos casos, una mala configuración puede llevar a serios riesgos de seguridad. Para descubrir el servicio de Proxy en un servidor Apache primeramente se busca el módulo mod_proxy (http://httpd.apache.org/docs/2.2/mod/mod_proxy.html) o mod_proxy_ajp (http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html) - módulo de Apache para jserv que necesita usar mod_proxy - que puede aparecer directamente en el banner del servicio HTTP o en los mensajes de error. Se pueden encontrar haciendo hacking con buscadores en Shodan (http://www.informatica64.com/libros.aspx?id=hackingBuscadores).



http://3.bp.blogspot.com/-3KskO8yb3fc/UKUvE1jhJbI/AAAAAAAANzc/lv0s9dHKoPI/s1600/Apache_Proxy_1.png (http://3.bp.blogspot.com/-3KskO8yb3fc/UKUvE1jhJbI/AAAAAAAANzc/lv0s9dHKoPI/s1600/Apache_Proxy_1.png)
Figura 7: Servidores Apache con mod_proxy descubiertos por Shodan

Otra forma de descubrirse ese servicio es mediante el uso del método CONNECT por HTTP, que permite utilizar un servidor Proxy para realizar una conexión a otro servidor web, pero también se pude utilizar un servicio Proxy en modo transparente en donde se pide la URL completa en el método HTTP, por ejemplo GET http://servidor2.com/index.htm y utilizando en el encabezado HOST el nombre del servidor Proxy. FOCA realiza estas pruebas buscando servidores Proxy en las direcciones IP del dominio en los puertos 80, 443, 8080, 8081 y 3128 (Squid Proxy).



http://3.bp.blogspot.com/-vFXlBJW9kGs/TfEpqMGDU1I/AAAAAAAAICk/sHZYpekElOs/s1600/squid.jpg (http://3.bp.blogspot.com/-vFXlBJW9kGs/TfEpqMGDU1I/AAAAAAAAICk/sHZYpekElOs/s1600/squid.jpg)
Figura 8: Búsqueda de servidores Proxy en FOCA

Si alguien puede conectarse a tu servidor Apache y usarlo como servidor Proxy podría realizar actos maliciosos desde tu dirección IP y lograr que te bloquearan el equipo. Además, podría navegar por la Intranet y hasta por localhost a través del servidor Proxy o conectarse a cualquier servidor de la Intranet incluso si está bien configurado, pero no está actualizado (http://www.elladodelmal.com/2011/11/el-parche-del-bug-de-reverse-proxy-en.html).


8) El soporte PHP de tu servidor

Si tienes instalado PHP en tu servidor Apache, lo primero y más inmediato que debes comprobar es que no sea vulnerable al bug que permite ejecutar comandos en Apache si PHP está en modo CGI (http://www.elladodelmal.com/2012/05/ejecutar-codigo-remoto-en-apache-con.html). Para solucionarlo lo mejor es que tengas actualizado PHP a la última versión, antes de plantearte cualquier otra alternativa.


http://1.bp.blogspot.com/-EgzzL5zZ9p8/T6TKp6zoepI/AAAAAAAAKTk/scMBsNw4EA4/s640/php_bug3.png (http://1.bp.blogspot.com/-EgzzL5zZ9p8/T6TKp6zoepI/AAAAAAAAKTk/scMBsNw4EA4/s1600/php_bug3.png)
Figura 9: Ejecución de código en Apache a través del bug CVE-2012-1823

Después, puedes comprobar que no tienes un info.php en tu servidor, que no tienes Blind SQL Injection de libro en parámetros numéricos (http://www.elladodelmal.com/2011/07/6-easy-tests-para-evaluar-la-seguridad.html) y que no tienes ningún bug de type conversion en las aplicaciones PHP (http://www.elladodelmal.com/2009/12/data-type-conversion-attack-en-php.html).

9) Ataques D.O.S.

Si tienes una botnet atacando a tu servidor Apache la mejor forma de defenderse es tener el portal alojado en un proveedor en la nube que evite este tipo de ataques, pero si desde una única máquina se puede tirar abajo tu Apache, entonces sí hay problemas que pueden ser subsanados. Si revisas la tabla de CVEs de Apache HTTP Server (http://www.cvedetails.com/product/66/Apache-Http-Server.html?vendor_id=45), podrás ver que el número de bugs que permiten hacer una Denegación de Servicio es alto.


http://2.bp.blogspot.com/-2JkDaHvBhfM/UKXkJfCmqTI/AAAAAAAANz4/irATl_uCvb0/s640/Apache_CVEs.png (http://2.bp.blogspot.com/-2JkDaHvBhfM/UKXkJfCmqTI/AAAAAAAANz4/irATl_uCvb0/s1600/Apache_CVEs.png)
Figura 10: CVEs de Apache HTTP Server

No de todos hay herramientas públicas, pero algunas sí se hicieron muy populares, como la del ataque de Slowris que publicó RSnake (http://ha.ckers.org/slowloris/) y que tiene una aplicación para lanzarlo contra tu servidor y comprobar si es vulnerable o no.


http://4.bp.blogspot.com/-loYnIErJOe0/UKXkMQSDLpI/AAAAAAAAN0A/8fvm0NBnpP4/s1600/Http-post.png (http://4.bp.blogspot.com/-loYnIErJOe0/UKXkMQSDLpI/AAAAAAAAN0A/8fvm0NBnpP4/s1600/Http-post.png)
Figura 11: OWASP HTTP Post Attack Tool

Otra herramienta que puedes probar para ver la resistencia contra ataques D.O.S. de tu servidor Apache es OWASP HTTP Post Tool (https://www.owasp.org/index.php/OWASP_HTTP_Post_Tool). Si una sola máquina es capaz de tumbar tu servidor entonces debes revisar las actualizaciones de tu Apache, las propiedades de tu conexión y las configuraciones de seguridad que puedes aplicar para minimizarlo.

10) ¿Qué más hay allí? Los listeners

La última de las cosas que os voy a recomendar mirar es algo que hace FOCA (http://www.informatica64.com/foca.aspx) automáticamente por cada nombre de dominio, y es revisar los listeners HTTP y HTTPs de tu dominio. Para ello conéctate a http://www.tudominio.com y https://www.tudominio.com. Luego consulta la dirección IP de tudominio.com y conéctate a http://tuIP y https://tuIP, a ver si sale todo lo que tu esperabas y no aparezca una página por defecto o un portal de administración de un router con una password por defecto.


http://4.bp.blogspot.com/_Y2uWeGSk9Sw/S9kuvlf-skI/AAAAAAAAGKU/-ps-ZxMhbUg/s640/bing.png (http://4.bp.blogspot.com/_Y2uWeGSk9Sw/S9kuvlf-skI/AAAAAAAAGKU/-ps-ZxMhbUg/s1600/bing.png)
Figura 12: Modificador IP en Bing

Si quieres analizar un poco más lo que hay allí, puedes usar el modificador IP de Bing (http://www.elladodelmal.com/2011/10/cuatro-cosas-que-bing-hace-mejor-que_02.html) para ver con qué otros sitios webs compartes dirección (http://www.elladodelmal.com/2010/04/la-otan-y-el-yoga-companeros-de-ip.html) a ver si pudieras ser atacada por alguno de ellos, aunque eso exigiría que estuvieran en la misma máquina.

Saludos Malignos! @ Un informático en el lado del mal: 10 cosas que puedes revisar en tu Apache (2 de 2) (http://www.elladodelmal.com/2012/11/10-cosas-que-puedes-revisar-en-tu_16.html)

clarinetista
23-11-2012, 00:24
Buen post de Chema Alonso :)