Como es de costumbre, cada vez que encuentro alguna vulnerabilidad en sitios web lo primero que hago es intentar comunicarme con los responsables de ese sitio web, si estas personas me contestan entonces los ayudo a solucionar los problemas y, una ves solucionado, genero un reporte sobre las vulnerabilidades y las publico aca, en caso contrario, si las personas con quien intento comunucarme tienen una reaccion negativa o derechamente ni si quiera responden los correos electronicos, tambien las hago publicas.
Esta vez es el turno de Caffarena.cl quien tiene cinco vulnerabildiades críticas en su sitio web.
Si entramos al sitio y pinchamos en “Acceso clientes” llegaremos a formulario de inicio de sesion de la intranet
CategoríaHacking
Estamos en el año 2009 y es increible que existiendo tantas herramientas de auditoría y el peligro/riesgo que existe por el mal tratamiento de la información, los desarrolladores esten cayendo en errores tan básicos.
Voy a listar las vulnerabilidades que, según mi experiencia, son las más comunes en los sitios web.
- File/Path Disclosure: Esta vulnerabilidad es más comun de lo que uno pueda imaginar, aunque generalmente para poder llegar a explotarla es necesario pasar algun sistema de autentificacion ya que es muy comun en sistemas donde los usuarios tienen acceso a descargar o subir información como un sitio de una Universidad, biblioteca, intranet, etc.
- XSS (Cross-Site Scripting): Esta vulnerabilidad tambien es muy comun, aunque es un poco mas compleja de explotar, requiere conocimiento en javascript, manejos de cookies y un poco de experiencia en el tema. Con esta vulnerabilidad es posible robar cookies para ingresar a algun sistema autentificado con un usuario ajeno.
- SQL Injection: Hace un tiempo fue el boom de esta vulnerabilidad, muchos sitios tenian fallos de este tipo. Estuvo de moda explotar vulnerabilidades de phpnuke o phpbb basadas en SQL Injection que nos permitian escalacion de privilegios. Esta tecnica consiste basicamente en manipular una consulta sql para lograr nuestro proposito como saber nombre de tablas, version de la base de datos y tambien manipular ingresos de datos a la base de datos para modificar campos de tablas, crear archivos, cambiar privilegios, etc.
- Authentication bypass: Desde mi punto de vista, esta vulnerabilidad, bug o fallo es uno de los mas estupidos que un programador/desarrollador puede cometer. Para hacer un login es necesario manejarse con el tema de cookies o sesiones, segun el lenguaje o las necesidades y cuando una persona sin estos conocimientos intenta hacer un codigo de autentificacion sucede lo peor. El caso mas comun y sencillo de este tipo de fallo es saltarse el login haciendo un cambio en la URL. Por ejemplo, tenemos https://example.com/login.php y nos damos cuenta que ese login.php hace un POST con nuestros datos a https://example.com/admin/valida.php, luego, sin ingresar ningun usuario ni password escribimos manualmente la url https://example.com/admin y sorpresa! estamos en el sitio de admin sin usuario pass ni nada, habiendonos saltado el login. Aunque no lo crean, es bastante comun.
Al igual que en el post anterior, que hablaba sobre la vulnerabilidad en uno de los sitios de la Universidad de Chile, esta vez es el turno de la Universidad Catolica de Valparaiso (UCV), especificamente el campus virtual.
Al parecer el sitio estaba en mantenimiento ya que me encontre con varios mensajes que del tipo “Este sitio esta en mantencion“, pero esto no es excusa. Dejar un directorio que contiene informacion sensible de clientes, empleados, empresa, alumnos, etc no puede estar publicado en internet con permisos de listar directorio habilitado. Existen varias formas de proteger el contenido de un directorio desde la configuracion del fichero .htaccess hasta algo tan simple como el crear un index.php|html|htm vacios, sin dejar de lado que se puede hacer agregado reglas de acceso a la configuracion del dominio.
Bueno, encontré un directorio con información sensible de alumnos de esa Universidad, quizas la informacion es un poco antigua pero que importa eso si ni el nombre ni el rut de las personas cambia. Intenté comunicar con la webmaster del sitio pero no obtuve respuesta.
En este caso, se han expuesto en internet datos de aproximadamente 2000 alumnos.
En esa imagen podemos ver un poco de la informacion que aparece en el directorio vulnerable. Es un fichero separado por gatos (###) donde podemos ver que lo mas interesante son las columnas 3, 4, 5 y 6 que corresponden al rut, nombre completo de la persona, nombre de usuario y password respectivamente.
Se trata del sitio de la biblioteca virtual de la Facultad de Economia y Negocios (FEN) de la Universidad de Chile. Hace un par de dias descubri una vulnerabilidad del tipo path disclosure en https://bibliodoc.fen.uchile.cl.
La forma de explotar este fallo era iniciar sesion con cualquier usuario y buscar algun documento, cuando acercabamos el mouse hacia el link podiamos ver:
Si modificabamos ese link, remplazando documento para descargar.pdf por alguna ruta a un archivo de sistema, podremos descargarlo. Por ejemplo
Con ../../../../ nos aseguramos retroceder lo suficiente para llegar a la raiz y con /etc/passwd le decimos al script download.php que nos entregue el fichero passwd, que guarda la informacion de usuarios de sistema. Obteniendo lo siguiente:
Dias despues de explotar y confirmar esta vulnerabilidad, me di el trabajo de comunicarles a los de soporte de ese sitio sobre este fallo obteniendo una respuesta en poco tiempo. Estaban muy agradecidos por haberles comunicado el problema. En unos minutos me agrego a gtalk/jabber el desarrollador del portal y me hizo unas preguntas, para saber como habia logrado explotar esa vulnerabilidad y en que consistia y, luego de haberle respondido algunas preguntas y haberlo ayudado, rapidamente solucionó el problema.
Las vulnerabilidades de tipo file/path disclosure son aquellas donde de alguna u otra forma podemos acceder a archivos del sistema que estan fuera del path de la web, como en este caso, por ejemplo si la web hubiese estado en /var/www/bibliodoc, mediante este bug pudimos acceder a un archivo ubicado en /etc/ que, claramente, esta fuera del directorio.
Este es un resumen de los distintos scripts y utilidades que he publicado en mi blog, con una breve descripcion y link de descarga.
- dirhack: Script escrito en bash que nos ayudará al momento de querer hacer auditorias en nuestro servidor web con multiples usuarios. El script buscara en los directorios especificados los ficheros con información sensible que esten legibles y/o modificables por otros usuarios. Se puede ejecutar desde el explorador web o desde algun tipo de terminal o consola.
- password salt cracker: Tambien escrito en bash, este script será útil cuando queramos romper algun password encriptado con un salt. Sirve para cualquier tipo de encriptacion como md5, sha, shadow, etc. La forma en que trabaja es netamente fuerza bruta y se basa en un diccionario de palabras. Lee palabra por palabra y la encripta con el salt especificado, si las password coinciden entonces bingo!.
- web login por fuerza bruta/brute force web login: Con esta utilidad podremos realizar pequeñas pruebas a nuestro sistema de autentificacion y tambien verificar la calidad de nuestras contraseñas. Consiste en realizar determinadas peticiones POST a paginas que validen el login de una sesion. Debido a que esta basada en un diccionario de palabras, podría tardar horas en dar algun resultado.
- firewall-router: Este es otro script en bash que facilita la creacion de reglas sobre iptables. Nos puede servir para que nuestra maquina sea un router y tambien firewall. Permite el routeo de paquetes, redireccionamiento de puertos, bloqueo de puertos, etc. Es bastante util y facil de usar, ademas permite el uso de ficheros externos para definir redirecciones de puertos, direcciones ip para bloquear, etc.
- twitsh/twitbash: Lo desarrolle pensando en facilitar el uso te twitter en fluxbox. Esta herramienta no nos servira para leer los twits de otra gente pero si para enviar nuestros updates.
El Viernes pasado se anunciaron, en la lista de seguridad de debian, actualizaciones para el kernel, que solucionaba varias vulnerabilidades.
CVE-2009-0028 Chris Evans discovered a situation in which a child process can send an arbitrary signal to its parent. CVE-2009-0834 Roland McGrath discovered an issue on amd64 kernels that allows local users to circumvent system call audit configurations which filter based on the syscall numbers or argument details. CVE-2009-0835 Roland McGrath discovered an issue on amd64 kernels with CONFIG_SECCOMP enabled. By making a specially crafted syscall, local users can bypass access restrictions. CVE-2009-0859 Jiri Olsa discovered that a local user can cause a denial of service (system hang) using a SHM_INFO shmctl call on kernels compiled with CONFIG_SHMEM disabled. This issue does not affect prebuilt Debian kernels. CVE-2009-1046 Mikulas Patocka reported an issue in the console subsystem that allows a local user to cause memory corruption by selecting a small number of 3-byte UTF-8 characters. CVE-2009-1072 Igor Zhbanov reported that nfsd was not properly dropping CAP_MKNOD, allowing users to create device nodes on file systems exported with root_squash. CVE-2009-1184 Dan Carpenter reported a coding issue in the selinux subsystem that allows local users to bypass certain networking checks when running with compat_net=1. CVE-2009-1192 Shaohua Li reported an issue in the AGP subsystem they may allow local users to read sensitive kernel memory due to a leak of uninitialized memory. CVE-2009-1242 Benjamin Gilbert reported a local denial of service vulnerability in the KVM VMX implementation that allows local users to trigger an oops. CVE-2009-1265 Thomas Pollet reported an overflow in the af_rose implementation that allows remote attackers to retrieve uninitialized kernel memory that may contain sensitive data. CVE-2009-1337 Oleg Nesterov discovered an issue in the exit_notify function that allows local users to send an arbitrary signal to a process by running a program that modifies the exit_signal field and then uses an exec system call to launch a setuid application. CVE-2009-1338 Daniel Hokka Zakrisson discovered that a kill(-1) is permitted to reach processes outside of the current process namespace. CVE-2009-1439 Pavan Naregundi reported an issue in the CIFS filesystem code that allows remote users to overwrite memory via a long nativeFileSystem field in a Tree Connect response during mount.
Se publicaron dos exploits para explotar vulnerabildades de escalacion de provilegios local. Estos exploits se aprovechan de la funcion ptrace_attach() para ejecutar un codigo arbitrario que nos permita ejecutar una shell del tipo /bin/sh como root.
El primer exploit es el shoryuken, lo probé en distintas versiones del kernel de debian y archlinux, pudiendo ser explotada solo la version 2.6.26-1-686 de Debian 5.0, de forma aleatoria, es decir, hay veces que ejecuto el exploit y funciona y otras veces no. El segundo script fue probado por su autor en la version del kernel 2.6.29rc1 de Gentoo.
Estos exploits funcionan bajo situaciones especificas y no todos los sistemas son vulnerables.
© 2024 El rincón de Zerial
Tema por Anders Norén — Subir ↑
Comentarios recientes