httpoxy o cómo con CGI y después de 15 años todavía se puede sobrescribir HTTP_PROXY remotamente...

Lo sabe hasta Bill Gates: los sistemas Linux/Unix utilizan la variable de entorno HTTP_PROXY que permite especificar un servidor proxy (IP -URL- y puerto) para usarse de forma genérica desde la shell u otras aplicaciones como elinks, lynx, wget, curl, etc.

Por otro lado y maldita casualidad, en CGI y según reza su RFC 3875 se añade automáticamente el meta tag "HTTP_" para especificar el protocolo, por lo que si añadimos en la petición HTTP una cabecera "PROXY" probablemente sobrescribiremos la variable de entorno HTTP_PROXY del servidor víctima, consiguiendo así especificar un proxy falso y facilitando un ataque MiTM.

Podéis verlo más claro y ya de paso comprobar si vuestro servidor es vulnerable fácilmente. Por ej. creáis un sencillo script CGI:

test.cgi:
#!/bin/sh
echo "Content-Type:text/plain"
​echo ""
echo "HTTP_PROXY='$HTTP_PROXY'"

y lo llamáis con el header extra “Proxy:”
curl -H ‘Proxy: AFFECTED’ http://my-server-name/cgi-bin/test.cgi
                                               
Si la salida es HTTP_PROXY='AFFECTED', estarías jodido comprometido, así de sencillo.
                                                       
Este bug ya se identificó y parcheo en 2001 (sí ¡¡hace 15 años!!) en perl y curl. Lo que pasa es que recientemente se está viendo que este fallo también existe en otros lenguajes y librerías y ha sido Scott Geary quien definitivamente lo ha traído a primera línea de fuego: le ha puesto el nombre 'httpoxy', un logo chulo, luces de colores y le están lloviendo CVEs como si no hubiera un mañana. La ocasión lo merece:
  •     CVE-2016-5385: PHP
  •     CVE-2016-5386: Go
  •     CVE-2016-5387: Apache HTTP Server
  •     CVE-2016-5388: Apache Tomcat
  •     CVE-2016-1000109: HHVM
  •     CVE-2016-1000110: Python
¡Y creciendo!

Así que si eres un administrador de un servidor web con CGI te recomendamos encarecidamente bloquear la cabecera 'Proxy' si no quieres que tu sistema empiece a usar un proxy malicioso, ya has visto lo fácil que es explotarlo...

Más información (must read) en:
- https://httpoxy.org/
- https://github.com/httpoxy

2 comentarios :