Vulnerabilidad en PHP-CGI

Hace unos días se hizo público una vulnerabilidad sobre PHP-CGI. Esta vulnerabilidad puede ser aprovechada para conseguir código fuente de sitios web vulnerables, lo que significa que el código php de la web vulnerable queda expuesto para que sea analizado por un atacante que explote dicha vulnerabilidad. Hay que tener en cuenta que en muchos casos se encuentran usuarios, passwords, rutas de ficheros, ips privadas de servidores, etc dentro del código php, por lo que en estos casos, la criticidad de esta vulnerabilidad es mayor.

Dicha vulnerabilidad puede ser explotada de un forma muy sencilla, añadiendo los caracteres ?-s al final de la URL, que es lo mismo que ejecutar php-cgi con la opción -s.

Imagen 1 de http://blog.spiderlabs.com/

Otra forma de explotarla y que tiene una consecuencia peor, es poder ejecutar código de forma remota, lo que se haría a través del comando -d, insertándolo de la misma forma en la URL y pasándo por POST los comandos que queremos lanzar. De esta forma, también se han presentado ejemplos de como se podría ejecutar una shell reversa, donde recogeríamos los resultados de los comandos lanzados.


Imagen 2 de http://blog.spiderlabs.com/

Si incluimos la siguiente cadena “?-T+100000” el atacante puede hacer efectivo un ataque DoS.

Podemos comprobar si nuestro sitio web es vulnerable a través de este script de nmap: http-vuln-cve2012-1823.nse o bien a través del módulo de metasploit php_cgi_arg_injection.rb.

Desde snort, también nos han sugerido varias reglas a través de las cuales podemos detectar si están intentando explotar la vulnerabilidad. Los SIDs correspondientes son el 22063, 22064 y 22097.

Una de las opciones para evitar que exploten la vulnerabilidad en nuestros servidores es añadir las siguientes reglas en el fichero .htaccess:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^[^=]*$
RewriteCond %{QUERY_STRING} %2d|\- [NC]
RewriteRule .? – [F,L] 

Otra opción es mediante el uso de modsecurity en apache, a través de esta regla:

SecRule QUERY_STRING "^-[sdcr]" 
"phase:1,t:none,t:urlDecodeUni,t:removeWhitespace,block,log,msg:'Potential 
PHP-CGI Exploit Attempt'"

Aunque la mejor opción es siempre actualizar a la última versión de php-cgi en la que se han corregido los fallos de seguridad. Hay que tener en cuenta que existen BOTs que intentan explotar la vulnerabilidad de forma masiva, por lo que debemos tener especial cuidado de no ser víctima de ninguna de ellas.

Referencias:

  • http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-1823
  • http://eindbazen.net/2012/05/php-cgi-advisory-cve-2012-1823/
  • http://blog.sucuri.net/2012/05/php-cgi-vulnerability-exploited-in-the-wild.html
  • http://blog.spiderlabs.com/2012/05/php-cgi-exploitation-by-example.html
  • http://vrt-blog.snort.org/2012/05/php-cgi-vulnerability-exploits-in-wild.html?m=1
  • Comments

    1. La página de Spiderlabs te descarga automáticamente malware…