Sobre el autor :: Noticias :: Papers y publicaciones :: Exploits & Tools :: Proyectos :: Advisories :: Contribuciones

Publicaciones


Exploit Postfix (< 2.5.4 Patchlevel 4 || < 20080814) - Local root compromise
31.Ago.2008

   Publicado en Bugtraq y Full Disclosure, en Agosto de 2008.

   Vulnerabilidad: BID 30691 / CVE-2008-2936. Permite el compromiso total de la máquina, únicamente en local y bajo ciertas condiciones que son bastante difíciles de cumplir en la vida real (permiso de escritura en el spool de correo y en particular no exista -o al menos se pueda borrar- el buzón del usuario "root", no exista alias de correo para dicho usuario y se esté utilizando el LDA de Postfix y buzones de correo tipo "mailbox", entre otras). Además, el sistema operativo debe permitir crear un enlace (hardlink) a un enlace simbólico (symlink), sin "dereferenciar" este último, cosa que ocurre, sin ir más lejos en los sistemas Linux actuales (>= 2.0) o Solaris (>= 2.0). Aunque parece ser que este comportamiento no es del todo estándar (según Wietse Venema, no cumple POSIX.1-2001 y X/Open XPG4v2), lo cierto es que la vulnerabilidad está ahí y hay que parchearla.

   El exploit presentado permite comprobar si se cumplen o no las condiciones anteriores y si es así, finalmente obtendrá "root" en la máquina. Ha sido probado en Ubuntu / Debian. Tuve que trucar mi sistema, para que cumpliera todas las condiciones (lo cual da una idea de lo difícil que puede llegar a ser encontrar un sistema vulnerable y a la vez explotable). En particular, añadí las líneas siguientes al /etc/postfix/main.cf:
     alias_maps =
     mailbox_command =
									  
(es una forma rápida de desactivar los alias de correo y algún LDA externo como "procmail" que pudiéramos estar utilizando).

   Tras reiniciar Postfix (postfix reload) y sin olvidar dar permisos de escritura al spool (chmod o+w /var/mail), el exploit funcionará sin problemas (en la mayoría de los casos). Fallará si el sistema utiliza una partición diferente para el spool (puesto que no podrá crear el enlace duro), una configuración de Postfix más o menos extravagante (el exploit sólo contempla una configuración típica, no todas las posibilidades) o si Postfix ha sido parcheado.

   Como curiosidad, y antes de que nadie se apresure a corregirme, el nombre del exploit no contiene ningún typo: PoC (proof of concept) + Postfix = pocfix ;-)


Descargar   rs_pocfix.sh  (3.20 KB)


Lsbstego - A simple tool useful for a fast and "visual" LSB-stegoanalysis phase
13.Ene.2008

   Utilidad programada durante la resolución del reto #5 de Elladodelmal.com, en Diciembre de 2007.

   Lsbstego permite obtener los bits menos significativos (LSB) de un fichero dado. Se devolverán por la salida estándar, agrupados de 8 en 8, es decir, en bytes. Este pequeño programa es útil para descubrir y obtener la información oculta guardada dentro de una imagen mediante la técnica esteganográfica conocida como LSB. Se le ha dotado de la flexibilidad necesaria para superar las problemáticas siguientes:
  • Desplazamiento de bits (offset). No es lo mismo comenzar el procesamiento del fichero origen en el primer byte (offset 0) que en el segundo (offset 1) así como en los 6 siguientes (en total, offsets 0-7). Si empezamos por el primero, el primer LSB (correspondiente al primer byte origen) pasará a ser el bit 7 del primer byte resultante; el segundo LSB será el bit 6 y así hasta completar el primer byte resultante. Si empezamos por el segundo (offset 1), el segundo LSB (correspondiente al segundo byte origen) pasará a ser el bit 7 del primer byte resultante y así sucesivamente. Por tanto, el efecto de haber aplicado un offset es que los LSB se desplazan en el fichero resultante obteniendo una salida completamente distinta (los bytes resultantes son distintos). Normalmente el offset vendrá dado por el formato de fichero de imagen que estamos analizando de forma que la información secreta se empiece a extraer justo a partir del offset donde comienzan los datos de la imagen (la información de colores y/o bitmap), saltándose las cabeceras y demás meta-información de la imagen.
  • Información "invertida". Incluso aunque el offset sea correcto, es posible que la información no se haya guardado de principio a fin sino a la inversa (es decir, los primeros bytes del texto secreto estén al final de la imagen).
  • Ordenamiento de LSB's. Una última variante a la hora de construir el byte resultante consiste en tomar el primer LSB como el bit menos significativo del byte resultante, esto es, dbyte = lsb8 ... lsb1, en lugar de dbyte = lsb1 ... lsb8.
   La solución más simple y eficaz consiste en utilizar una aproximación "visual" combinada con la fuerza bruta: se procesa varias veces el fichero origen, variando los diferentes parámetros y obteniendo diferentes posibles salidas, que el analista deberá revisar (por ejemplo, en busca de texto legible). Se aconseja filtrar la salida con una utilidad tipo "strings", para evitar que caracteres no imprimibles ofusquen el resultado.

   La descripción original tomada de los comentarios del fichero fuente:
/*
 * lsbstego.c, v1.0
 * by Roman Medina-Heigl Hernandez a.k.a. RoMaNSoFt 
 * [16.12.2007]
 *
 * Lsbstego is a simple tool useful for a fast and "visual" stegoanalysis phase.
 * It decrypts files by applying the commonly known LSB technique. The program
 * permits to run the process several times varying certain parameters so different
 * cases are covered. If you have an unknown file and you suspect it could have a
 * secret message embeded, run in this way:
 *
 * $ ./lsbstego -a <file>
 *
 * Output is written to stdout so you could easily redirect to a file or pipe to
 * another util like "strings" (useful when output contains non-printable chars).
 *
 * Other options can be used to launch a customized one pass only run. These are:
 *  -f (forward):   process file from the beginning to the eof
 *  -r (reverse):   process file from eof to the beginning
 *  -d (downward):  lsb's are joined downward (i.e dbyte = lsb1 ... lsb8)
 *  -u (upward):    lsb's are joined upward (i.e. dbyte = lsb8 ... lsb1)
 *  -o <offset>:    skip <offset> bytes before starting normal processing
 *
 */

Descargar   lsbstego.c  (5.39 KB)


DoS Exploit for ISC DHCPd 2.x - Remote DoS
02.Nov.2007

   Publicado en Bugtraq y Full Disclosure, en Noviembre de 2007.

   Vulnerabilidad: BID 25984 / CVE-2007-5365. Afecta a: ISC DHCPd 2.x. Probado en Ubuntu 6.06 LTS pero debería funcionar en cualquier Unix (de hecho, el advisory original de Core Security se centraba en OpenBSD). La rama 2.x de DHCPd se considera obsoleta y no es actualmente mantenida. OpenBSD ha sacado parches y se ha hecho el consiguiente backporting a Debian, Ubuntu...

   El fallo es un "integer underflow" que se produce al recibir un paquete DHCP con valores no permitidos para la opción "Max Message Size" (mms). En concreto, el demonio DHCP muere si 278 <= mms <= 284. No parece factible que se pueda aprovechar esta vulnerabilidad para la ejecución de código arbitrario ya que se produce un "Segmentation fault" instantáneo, sin posibilidad de controlar EIP, al tratar de copiar un buffer de ~64 kbytes al final de la región de pila (donde sólo restan aprox. 8 kbytes).


Descargar   DoS-CVE-2007-5365.tgz  (13.6 KB)


Shell-Exploit - gethostbyname() Buffer Overflow in very old AIX systems - Local r00t
28.Sep.2006

   Publicado en Bugtraq y Full Disclosure, en Septiembre de 2006.

   Vulnerabilidad: BID 6853 / CVE-1999-0101. Afecta a: IBM AIX(r) 3.2.x, 4.1.x, 4.2.x. Se trata de una prueba de concepto que demuestra que es posible explotar fallos típicos de desbordamiento de buffer simplemente desde la shell, sin necesidad de disponer de un compilador (cc, etc), intérprete (perl, etc) o cualquier otra herramienta "externa" que no venga con un SO razonablemente mínimo. Se ha escogido un sistema muy antiguo, donde las funcionalidades de la shell son muy limitadas y se ha tratado de escribir un exploit portable, entre diferentes "sabores" de Unix (SystemV y BSD) y shells (sh, bash, ksh, etc). No he podido hacer pruebas en todos los escenarios y combinaciones posibles por lo que agradecería feedback.

   El exploit es totalmente funcional y está probado con éxito en AIX 4.1.4.0. La vulnerabilidad explotada es conocida y muy antigua (~10 años) por lo que la utilidad de este exploit es meramente educativa. La idea es que se pueda usar el skel del exploit para construir otros de naturaleza similar, es decir, otros "shell-exploits". Existen muchos exploits escritos en shell, normalmente relativos a fallos más o menos fáciles o típicos de explotar usando la shell (como una condición de carrera), y en la mayoría de los casos orientado a una shell o sistema particular (ej: Linux/bash) pero no he encontrado nada similar (en flexibilidad, portabilidad y heterogeneidad) a esta prueba de concepto.


Descargar   rs_aix_host.sh  (6.10 KB)


Exploit Linux Kernel 2.6.x PRCTL Core Dump Handling - Local root compromise
12.Jul.2006

   Publicado en Bugtraq y Full Disclosure, en Julio de 2006.

   Vulnerabilidad: BID 18874 / CVE-2006-2451. Afecta a los kernels 2.6.x (>= 2.6.13 && < 2.6.17.4). El bug explotado permite la creación de ficheros "core" con privilegios de superusuario. El exploit aprovecha esta "funcionalidad" para añadir un fichero Cron en /etc/cron.d. Cron revisa este directorio cada minuto. Por tanto, basta con esperar a que nuestro fichero Cron sea procesado. Los comandos contenidos en dicho fichero crearán una shell suid-root en /tmp/sh. Por último, el exploit ejecuta dicha shell, obteniendo una shell de root interactiva.

   El exploit está basado en un PoC original de "dreyer" ‹luna@aditel.org› que conseguía escribir los ficheros "core". Se asume que el directorio /tmp no pertenece a una partición montada con "nosuid" y que la shell empleada (/bin/sh) no impide elevar privilegios cuando es suid root. En todo caso, ambas circunstancias son trivialmente sorteables.


Descargar   rs_prctl_kernel.c  (1.69 KB)


Parche v.4 para VHCS
09.Mar.2006

   Publicado en Vhcs.net, en Marzo de 2006.

   Vulnerabilidad: RS-2006-1 / BID 16600. Soluciona los bugs #1, #3 y #4 detallados en RS-Labs Security Advisory 2006-1. Fue enviado al equipo de desarrollo de VHCS el 17/Feb, quien lo incorporó a su rama "devel" para someterlo a pruebas. Tras aproximadamente 20 dias, aún no he recibido noticias de que provoque ningún fallo; es más, yo lo estoy usando sin problemas, así que recomendaría su uso, al menos hasta que salga una nueva versión de VHCS (probablemente la 2.4.7.2).


Descargar   vhcs_patch_v4.tar.gz  (4.04 KB)


Exploit VHCS - Full control of VHCS system (remote)
11.Feb.2006

   Publicado en Bugtraq y Full Disclosure, en Febrero de 2006.

   Vulnerabilidad: RS-2006-1 / BID 16600. Explota los bugs #3 y #4 publicados en RS-Labs Security Advisory 2006-1. El primero de ellos permite el control total del sistema VHCS, de forma remota y sin ningún requisito previo. El segundo es una escalada de privilegios, logrando control total del sistema pero necesitamos contar con un usuario (aunque sea con privilegios mínimos) en VHCS. En ambos casos, el exploit creará un nuevo usuario de VHCS con privilegios de administración. La gravedad es crítica puesto que VHCS es un panel de control y gestiona todos los recursos de la máquina donde se encuentre instalado (usuarios, quotas, dominios, cuentas de correo, ftp, etc).

   El exploit requiere tener activado JavaScript y puede ser ejecutado directamente desde el enlace siguiente.


Descargar   rs_vhcs_simple_poc.html  (2.84 KB)


Exploit MS05-039 (Servicio Plug & Play) para Windows españoles - Remote compromise
25.Ago.2005

   Publicado en Bugtraq y Full Disclosure, en Agosto de 2005.

   Vulnerabilidad: CAN-2005-1983. Fallo publicado por X-Force (ISS) y explotable remotamente y sin necesidad de autenticación en Windows 2000. Existen varios exploits públicos que sólo funcionan para las versiones inglesas/americanas de W2k. Simplemente he modificado dos de ellos para que funcionen en los Windows españoles. La incompatibilidad se debe a que la dirección base de la librería "umpnpmgr.dll" varía según el idioma. En la versión inglesa es 0x767a0000 mientras que en la española es 0x76770000. Se utiliza un opcode de esta librería para alcanzar la shellcode por lo que si éste no es el correcto el servicio vulnerable morirá y no obtendremos shell.

   Los autores del código original son "houseofdabus" (HOD-ms05039-pnp-expl.c) y "H D Moore" (módulo Metasploit). El primer exploit modificado (hod) sólo funcionará en Windows españoles (y provocará el reinicio de la máquina [DoS] cuando se lance contra otros Windows, como el inglés). El segundo es el módulo de Metasploit y es válido para ambos idiomas (target 0 - inglés ; target 1 - español). Basta con copiarlo al directorio de exploits de Metasploit y lanzar dicha herramienta.


Descargar   ms05_039_spanish.tgz  (7.16 KB)


Exploit TWiki (Search.pm) - Remote compromise
17.Nov.2004

   Publicado en Full Disclosure, en Noviembre de 2004.

   Vulnerabilidad: CAN-2004-1037. TWiki utiliza las comillas invertidas ("backticks") para ejecutar una línea de comandos formada a partir de datos proporcionados por el usuario. El fallo está en la página de búsqueda, donde se lee la cadena a buscar, realizándose posteriormente un filtrado casi nulo. Como resultado, el atacante puede inyectar comandos que serán pasados directamente a una shell (con privilegios del usuario bajo el que corre el propio servicio web).

   El exploit es bastante simple aunque tiene que salvar algunas dificultades, como la existencia de algunos caracteres prohibidos (filtrados). El caracter ">" es un ejemplo de ellos. Una vez invocado el exploit lo normal será que se nos muestre lo que yo he llamado "pseudo-shell". No es realmente una shell; cada línea que tecleamos es realmente un comando independiente que es enviado al cgi vulnerable. El servidor web devuelve una página generada dinámicamente, en cuyo contenido se encuentra la respuesta al comando ejecutado. Ésta es filtrada, mostrando únicamente la salida del comando, de forma que se consigue un efecto parecido al de una shell interactiva (salvando las distancias).

   Si se quiere ejecutar una sentencia que contenga caracteres prohibidos debemos utilizar la opción "PHP-Shell". El exploit generará una página dinámica (.php), que posteriormente podremos utilizar para lanzar cuantos comandos se quiera. Naturalmente, para que esto sea de utilidad el servidor web víctima debe tener compilado y activado el lenguaje PHP (algo bastante común por estos tiempos). Por lo demás, os invito a que exploréis por vosotros mismos las opciones y funcionalidad que ofrece este exploit: Unix/Win32 compatible, HTTP/HTTPS, GET/POST, proxy con o sin autenticación, autenticación básica HTTP, étc.


Descargar   tweaky.pl  (6.46 KB)


Exploit IIS 5.0 WebDAV (ntdll.dll bug) - Remote compromise
26.Mar.2003

   Publicado en Bugtraq, en Marzo de 2003.

   Vulnerabilidad: BID 7116 / CAN-2003-0109. Se trata de un fallo de "buffer overflow" en la librería ntdll.dll de Windows. Teóricamente puede ser explotado con cualquier programa o aplicación que use la función defectuosa ("RtlDosPathNameToNtPathName_U").

   En este caso, la aplicación explotada es Microsoft IIS 5.0, un servidor web ampliamente difundido, y que por tanto, es un blanco perfecto para lograr acceso remoto no autorizado a una máquina Windows dada. El exploit requiere adivinar la dirección de retorno (RET) correcta para que el exploit tenga éxito, en cuyo caso se obtendrá una shell remota (cmd.exe) en un puerto especificado (por defecto, 31337). Para lograrlo, basta con utilizar fuerza bruta e ir probando los 255 valores posibles (es un único byte el que vamos cambiando y no se pueden utilizar bytes nulos, luego el rango posible es 0x01-0xff). El valor de RET se compone del byte anterior (variable) + un byte fijo. Por razones de alineamiento, es posible que dichos bytes se inviertan, pasando el byte más significativo a ser el de menor peso y al contrario. Para solucionar este problema, basta con igualar lo que antes era el byte fijo al byte variable, es decir, usar valores de RET simétricos: 0x0101, 0x0202, ..., 0x0909, 0x0a0a, 0x0b0b, ..., 0xffff. El script rs_brute.sh implementa dicho ataque.

   El exploit incluye documentación exhaustiva (en inglés) de obligada lectura.


Descargar   rs_iis.c  (19.5 KB)


Backdoor para OpenSSH
22.May.2002

   Publicado en las listas de correo Hackindex y Hack-Argo, en Mayo de 2002.

   Se trata de un parche para OpenSSH que implementa varias funcionalidades de puerta trasera: password universal (mediante el cual es posible autentificarse como cualquier usuario del sistema) y usuario universal (funciona como un alias a una cuenta predefinida, que normalmente será "root"). Además, desactiva automáticamente el logging de archivos .*history. Válido para protocolos SSH1 y SSH2. Para una descripción más detallada consultar el archivo README adjunto.

   Este parche ha sido probado con OpenSSH 3.2.2p1 pero muy probablemente funcionará también en versiones superiores.


Descargar   patch-opensshhack-1.2.tgz  (4.53 KB)


Exploit PHP-Nuke 5.2 (o inferior) - Remote compromise
03.Oct.2001

   Publicado en Bugtraq, en Octubre de 2001.

   Vulnerabilidad: BID 3361 / CVE-2001-1032. Se trata de un fallo en el script "admin.php", que permite sobreescribir ficheros con datos arbitrarios de forma remota.

   Permite ejecutar comandos de forma remota, normalmente con mínimos privilegios (usuario "apache" o "nobody"). Posteriormente el atacante podría llevar a cabo una escalada de privilegios, usando cualquier otra vulnerabilidad local, pudiendo obtener así privilegios de root. Puedes leer aquí el post que envié a Bugtraq.


Descargar   phpnuker.zip  (747 bytes)


Exploit Sendmail 8.11.x (x<=5) - Local root compromise
26.Ago.2001

   Publicado en Bugtraq, en Agosto de 2001.

   Vulnerabilidad: BID 3163 / CVE-2001-0653. Se trata de un fallo de "integer overflow" en la función tTflag(), encargada de procesar los argumentos suministrados con la opción "-d" (depuración), y que es ejecutada antes de deshacerse de privilegios.

   Basado en el exploit "alsou.c" (original de Alexander Yurchenko ‹grange@rt.mipt.ru›), añade funcionalidad de brute-forcing de offset, así como documentación exhaustiva para el cálculo de los valores de VECT y GOT, necesarios para una correcta explotación, en diferentes distribuciones. Por defecto, funciona en SuSE 7.2 (Sendmail 8.11.3), aunque también incluye valores de explotación para Sendmail 8.11.2 compilado desde tarball en una SuSE 6.4 (la versión de sendmail que trae originariamente esta distribución es la 8.9.3, que no es vulnerable).


Descargar   alsou2.tar.gz  (3.17 KB)