Vulnerabilità HTTP TRACE scoperta: cosa devo fare

2

Innanzitutto, perché il metodo HTTP TRACE è consentito su un sito web Non è una brutta cosa per il web server o per la sicurezza degli utenti?

In secondo luogo, quando eseguo il seguente script PHP tramite il mio browser ...

<?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);

?>

... Viene visualizzata una finestra di avviso javascript con il mio messaggio (XSS) nell'intestazione del cookie della richiesta e alcune altre informazioni / intestazioni vengono visualizzate nella finestra del browser. Non è questo il segno di una particolare vulnerabilità con questo sito? Intendo cose come le vulnerabilità XSS, XST, ecc.

    
posta H M 29.06.2012 - 21:03
fonte

2 risposte

5

La casella di avviso viene visualizzata perché lo script PHP sta utilizzando ...

echo $out;

... senza sfuggire $out . Il JavaScript viene eseguito su tuo dominio . Se lo script PHP si connette a un altro server o scrive direttamente il tag script senza escape, non fa alcuna differenza.

Per sfruttare una vulnerabilità di TRACE, devi ingannare il browser per inviare una richiesta TRACE, ad esempio tramite JavaScript, Flash, Active X.

La motivazione comune per sfruttare TRACE è quella di leggere le informazioni dall'intestazione della richiesta che altrimenti non è disponibile (come i cookie di httpOnly e le intestazioni di autenticazione):

var request = new ActiveXObject(“Microsoft.XMLHTTP”);
request.open("TRACE", "http://example.com", false);
request.send();
alert(request.responseText);
    
risposta data 29.06.2012 - 23:19
fonte
4

HTTP Trace è uno strumento di debug che può essere utilizzato per uso dannoso ma non indica la presenza o la mancanza di XSS o XST, che possono o meno essere presenti attraverso altre vulnerabilità.

Inoltre, se si esegue un codice del genere su un dominio in cui non si dispone delle autorizzazioni, è possibile che si commetta un errore legislativo come il Computer Misuse Act nel Regno Unito e possa essere processato in un tribunale penale.

Il mio consiglio è di non provarlo su qualsiasi sito web reale che non possiedi - vedi altre domande su Security Stack Exchange eseguendo i tuoi server di prova vulnerabili se hai bisogno di saperne di più.

    
risposta data 29.06.2012 - 21:17
fonte

Leggi altre domande sui tag