Se descubrió la vulnerabilidad de HTTP TRACE: ¿qué debo hacer?

2

Primero, ¿por qué se permite el método HTTP TRACE en un sitio web? ¿No es algo malo para el servidor web o la seguridad de sus usuarios?

Segundo, cuando ejecuto el siguiente script PHP a través de mi navegador ...

<?php

$service_port = getservbyname('www', 'tcp');

$host='vulnerabledomain.org';

$address = gethostbyname($host);

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if ($socket < 0) echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";

$result = socket_connect($socket, $address, $service_port);

if ($result < 0) echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";

$in = "TRACE /t.php HTTP/1.1\r\n";
$in .= "Cookie: x=str<script>alert(\"XSS\");</script>str\r\n";
$in .= "Host: $host\r\n";
$in .= "Connection: Close\r\n\r\n";

$out = '';

socket_write($socket, $in, strlen($in));

while ($out = socket_read($socket, 2048)) {
    echo $out;
}

socket_close($socket);

?>

... Aparece una ventana de alerta de javascript con mi mensaje (XSS) que se encuentra en el encabezado de la cookie de solicitud, y algunos otros encabezados / información se muestran en la ventana del navegador. ¿No es este el signo de una vulnerabilidad particular en este sitio web? Me refiero a cosas como las vulnerabilidades XSS, XST, etc.

    
pregunta H M 29.06.2012 - 21:03
fuente

2 respuestas

5

El cuadro de alerta se muestra porque su script PHP está usando ...

echo $out;

... sin escapar $out . El JavaScript se ejecuta en su dominio . Si el script PHP se conecta a otro servidor, o simplemente escribe directamente la etiqueta del script no escapado, no hace ninguna diferencia.

Para explotar una vulnerabilidad de TRACE, debe engañar al navegador para que envíe una solicitud de TRACE, por ejemplo, a través de JavaScript, Flash, Active X.

La motivación común para explotar TRACE es leer la información del encabezado de la solicitud que, de lo contrario, no está disponible (como las cookies http y solo las cabeceras de autenticación):

var request = new ActiveXObject(“Microsoft.XMLHTTP”);
request.open("TRACE", "http://example.com", false);
request.send();
alert(request.responseText);
    
respondido por el Hendrik Brummermann 29.06.2012 - 23:19
fuente
4

HTTP Trace es una herramienta de depuración que puede ser usada para uso malicioso pero no indica la presencia o falta de XSS o XST, que puede o no estar presente a través de otras vulnerabilidades.

Además, si ejecuta un código de este tipo en un dominio que no tiene permisos, es posible que no cumpla con las leyes como la Ley de uso indebido de computadoras en el Reino Unido y que pueda ser juzgado en un tribunal penal.

Mi consejo es que no intente esto en ningún sitio web real que no posea: consulte otras preguntas en Security Stack Exchange sobre cómo ejecutar sus propios servidores de prueba vulnerables si necesita obtener más información.

    
respondido por el Rory Alsop 29.06.2012 - 21:17
fuente

Lea otras preguntas en las etiquetas