systemadmin.es » Seguridad » Bug en mod_proxy (CVE-2011-3368) de Apache

Bug en mod_proxy (CVE-2011-3368) de Apache

Este pasado miercoles se público otra vulnerabilidad en Apache, en este caso en el modulo de proxy. Tal como podemos ver en el mensaje del anuncio si se usa incorrectamente las directivas RewriteRule o ProxyPassMatch es posible que estemos permitiendo que un cliente haga hacer peticiones al servidor web.

Suponiendo que tengamos la siguiente directiva con ProxyPassMatch:

ProxyPassMatch /media(.*) http://imagenes.systemadmin.es$1

Un cliente podría realizar la siguiente petición:

http://systemadmin.es/media@127.0.0.1/server-status

Esto haría que el servidor realizase la siguiente petición:

http://imagenes.systemadmin.es@127.0.0.1/server-status

Por lo tanto, podríamos estar exponiendo datos privados aúnque tengamos limitado de la siguiente forma el /server-status, ya que es el propio servidor que se conecta a dónde le indicamos.

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>

Esto se produce por el formato de la URL, lo podemos consultar en el RFC1738:

<scheme>://<user>:<password>@<host>:<port>/<url-path>

La petición que se genera esta indicando que la parte que definimos en la configuración corresponde al usuario, mientras que el servidor permitimos que lo introduzca el usuario (después de la @). Por ejemplo:

$ curl -I http://systemadmin.es@google.com
HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Thu, 06 Oct 2011 14:47:02 GMT
Expires: Sat, 05 Nov 2011 14:47:02 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 219
X-XSS-Protection: 1; mode=block

Así, en este caso estamos indicando que se conecte a “google.com” usando el usuario “systemadmin.es“. Únicamente modificando la directiva para obligar a que incluya siempre al principio la barra:

ProxyPassMatch /media/(.*) http://imagenes.systemadmin.es/$1

Por lo que la petición se generaría en el servidor que se indica en la directiva forzosamente:

$ curl -I http://systemadmin.es/@google.com
HTTP/1.1 404 Not Found
Server: nginx
Date: Thu, 06 Oct 2011 14:47:09 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive

El uso de la @ para indicar el servidor, engañando al usuario es algo que ya hace tiempo que se usa. Por ejemplo, Firefox cuando detecta que se le esta indicando un usuario a usar en una web que no requiere de autenticación avisa al usuario indicando claramente cual es el servidor al que realmente se conecta:

Warning en Firefox al intentar engañar al usuario

Warning en Firefox al intentar engañar al usuario

Relacionados

Imprimir Imprimir

One comment to “Bug en mod_proxy (CVE-2011-3368) de Apache”

  1. Muy buen POSTEO

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>