Metoda TRACE

Metoda TRACE

Metoda ta jest używana do zdalnego śledzenia wywołań wszelkich innych metod HTTP. Zapytanie powinno odwzorowywać badaną wiadomość z wyłączeniem pewnych wrażliwych pól (np. autoryzacyjnych).

Odpowiedź powinna:

  • mieć typ: message/http,
  • odesłać z powrotem niezmienione, wszystkie nagłówki zapytania,
  • nie odsyłać treści wiadomości
  • dodać nagłówek diagnostyczny.

Wiadomość ta może zostać wysłana zarówno do adresata, jak i serwerów pośrednich (np. proxy). Z tego też powodu, nie powinny być za jej pośrednictwem przesyłane żadne wrażliwe informacje w nagłówkach zapytania (takiej jak ciasteczka lub dane autoryzacyjne).
TRACE umożliwia prześledzenie ciągu przekazywania zapytania. Używany jest do tego nagłówek Via. Są w nim zapisane dane serwera, który bezpośrednio odesłał odpowiedź w ciągu informacyjnym. Wiele pól w nagłówku Via pokazuje ścieżkę którą przebyła wiadomość. Zazwyczaj przez serwery proxy. Dodatkowo przy każdej nazwie serwera widać wersję protokołu HTTP.

Via: 1.0 fred, 1.1 p.example.net

Użycie nagłówka Max-Forwards pozwala klientowi przez ile serwerów proxy chcemy przesłać wiadomość. Kiedy, liczba serwerów proxy będzie większa, zostanie zwrócony błąd.

Request Response
TRACE / HTTP/1.1
Host:www.apache.org
X-Header: Test
HTTP/1.1 200 OK
Date: Wed, 09 Jun 2010 16:14:49 GMT
Server: Apache/2.2.12 (Unix)
Transfer-Encoding: chunked
Content-Type: message/http
TRACE / HTTP/1.1
Host: http://www.apache.org
X-Header: Test

Cross Site Tracing

Jednym z bardziej wartościowych zasobów dla atakujących podczas pracy ze stronami www są ciasteczka. Często przechowują one wrażliwe dane takie jak identyfikator sesji użytkownika, nazwę jego konta lub informacje uwierzytelniające. Dysponując takimi danymi intruz może próbować podszyć się pod użytkownika naszej strony.

Aby temu przeciwdziałać wprowadzono opcję httpOnly dla ciasteczek. Powoduje ona, że niemożliwe jest odczytanie wartości ciasteczek z poziomu JavaScript. Jest to zabezpieczenie przed atakami XSS. Jednak w 2003 roku Jeramiah Grossman odkrył jak obejść to zabezpieczenie stosując metodę TRACE. Z uwagi na specyfikę tej metody, a mianowicie fakt, że odsyła ona w swojej treści całą wysłaną wiadomość, można wykonać zapytanie TRACE do serwera aplikacji. Zostaną do niego automatycznie dodane ciasteczka dostępne dla strony, a w rezultacie powrócą one wraz z odpowiedzią, co spowoduje ich ujawnienie osobie atakującej.

function sendTrace () 
{ 
   var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
   xmlHttp.open("TRACE", "http://foo.bar",false); 
   xmlHttp.send(); 
   xmlDoc=xmlHttp.responseText; 
   alert(xmlDoc); 
}

Z tego powodu w tej chwili zalecane jest wyłączenie tej metody na serwerach produkcyjnych.

Źródła:
http://tools.ietf.org/html/rfc7231
http://www.cgisecurity.com/whitehat-mirror/WH-WhitePaper_XST_ebook.pdf
https://www.owasp.org/index.php/Cross_Site_Tracing