[HACK] Vulnerabilidad en Mailman y exploit (antiguo; <= 2.1.4)

Roman Medina roman at rs-labs.com
Sun Jun 20 19:04:30 CEST 2004


Hola,

Seguro que leisteis en su día la noticia de la vulnerabilidad de
Mailman que permitía obtener las contraseñas de cualquier usuario.
Como no ví ningún exploit en su momento investigué un poquito y plasmé
en una chuleta lo que saqué en claro. Haciendo limpia por el ordenador
hoy ha salido así que aprovecho y os resumo lo que vi.

Primero, busqué el parche, para ver cual era el fallo de seguridad. El
fallo está corregido en Mailman 2.1.5 así que lo suyo es hacer un diff
con la 2.1.4, que es la última versión vulnerable. Sin embargo, si nos
queremos ahorrar trabajo (hay más cambios entre estas versiones,
aparte del security fix) es más fácil coger las 2 últimas versiones en
Debian, que ya sabeis que suele seguir su (discutible) política de
parchear sólo lo necesario. Yo encontré esto:
http://svn.debian.org/viewcvs/pkg-mailman/tags/2.1.4-5/debian/patches/90_can-2004-0412.dpatch?view=log&rev=161
Si pinchais en "view", podeis ver el fallo corregido en el fichero
cmd_password.py, que en Debian unstable está en:
/usr/lib/mailman/Mailman/Commands/cmd_password.py

Ese script (Python) realiza el tratamiento de los mails que se envían
para pedir un recordatorio de contraseña. Como se puede ver en el
código vulnerable, todas las directivas "password" son tratadas y su
resultado es devuelto sin rechistar al solicitante (verdad a medias,
ver más abajo).

* Exploit: como ejemplo usaré esta misma lista de correo (no hagais
pruebas, porque _no_ es vulnerable, aparte de que no sería muy ético).
Sólo habría que enviar un mail con el siguiente titulo y contenido:
Subject: hacking-request at argo.es
Contenido:
password address=roman at rs-labs.com
password address=victima at undominio.com
password address=roman at rs-labs.com

Resultado:
- vulnerable: la petición se responde al email de la _última_ linea
password, pero la respuesta incluye las contraseñas de todas las
órdenes password (se procesan todas sin problemas).
- no vulnerable: la petición se responde al email de la primera linea
password. Sólo se envía la password del atacante, luego no vale de
nada.

Por tanto, al poner mi direcc. tanto en la primera como última linea
me aseguro de que Mailman no le va a responder a la víctima en ningún
caso (se mosquearía si le llega un mail con su contraseña y donde se
ven además las lineas password fallidas) sino siempre a mí (que en
este caso sería el atacante). Pequeño truco para pen-testers. :-)

Con este método puedes sacar la contraseña de cualquiera de una lista
(con Mailman vulnerable, evidentemente) y el alcance de este fallo se
vería acrecentado si la víctima tiene la costumbre de usar una misma
contraseña para distintos fines / recursos. Si no es así (o bien el
usuario tiene una contraseña generada aleatoriamente por Mailman, que
suele ser lo habitual) yo tampoco veo el fallo demasiado grave. A lo
mejor podrías dar de baja a una persona dada y poco más. En principio
creo que no se podría usurpar la interfaz de administración ya que
Mailman usa una clave especial para administrar la lista (y otra
genérica para administrar todas las listas de un servidor dado), que
es (/son) distinta(s) de la clave que pueda tener alguien que actúe
como administrador (es decir, el usuario jcea at argo.es puede ser
administrador de la lista hacking at argo.es, con una clave que podríamos
sacar [repito, si fuera vulnerable }:-)], pero la lista tendrá otra
clave diferente destinada a administración, y que en principio no se
podría obtener).

Por cierto, en Debian unstable el fallo está corregido en el paquete
con versión  "2.1.4-5" y no han releaseado ningún advisory. Muy mal,
desde mi punto de vista. Yo me quedé esperando a que Debian sacara el
paquete con  2.1.5, creyendo que mi máquina era vulnerable cuando
realmente ya había sido parcheada.

También le reprocho a Debian que todavía no haya sacado un paquete que
arregle el fallo que descubrí en Squirrelmail recientemente. Al menos
en Debian unstable no está arreglado. Ignoro si se corrigió en la
stable aunque no me suena haber visto aviso por parte de Debian. Mal
hecho (si alguien de los que me escucha es devel de Debian, que tome
nota; yo ya avisé en su día a security at debian y no me han hecho caso
así que ya paso).

Y eso es todo :-)

 Saludos,
 --Roman

--
PGP Fingerprint:
09BB EFCD 21ED 4E79 25FB  29E1 E47F 8A7D EAD5 6742
[Key ID: 0xEAD56742. Available at KeyServ]




More information about the hacking mailing list