Você está na página 1de 2

Rastreamento Cross-Site

Descrição

A Cross-Site Tracing ataque (XST) envolve o uso de Cross-site Scripting (XSS) e


TRACE ou TRACK métodos HTTP. De acordo com a RFC 2616, "TRACE permite que o cliente
possa ver o que está a ser recebido na outra extremidade da cadeia de pedido e
utilizar esses dados para o teste ou a informação de diagnóstico.", O método age na
mesma maneira, mas é específico para o servidor web IIS da Microsoft. XST poderia
ser usada como um método para roubar cookies do usuário por meio de Cross-site
Scripting (XSS), mesmo se o cookie tem o "HttpOnly" set bandeira e / ou expor
cabeçalho de autorização do usuário.
O método TRACE, embora aparentemente inofensivo, pode ser aproveitado com sucesso
em alguns cenários para roubar credenciais de usuários legítimos. Esta técnica de
ataque foi descoberta por Jeremiah Grossman, em 2003, em uma tentativa de contornar
a tag HttpOnly que a Microsoft introduziu no Internet Explorer 6 SP1 para proteger
os cookies sejam acessados por JavaScript. Por uma questão de fato, um dos padrões
de ataque mais recorrentes em Cross Site Scripting é acessar o objeto Document e
enviá-lo para um servidor web controlado pelo atacante para que ele / ela possa
sequestrar a sessão da vítima (Hijacking). Marcando um cookie como HttpOnly proíbe
JavaScript para acessá-lo, protegendo-o de ser enviado para um terceiro. No
entanto, o método de rastreamento pode ser usado para contornar essa proteção e
acessar o cookie, mesmo neste cenário.
Navegadores modernos agora evitar solicitações de rastreamento estão sendo feitas
via JavaScript, no entanto, outras formas de envio de solicitações de rastreamento
com os navegadores foram descobertos, como o uso de Java.

Exemplos

Um exemplo usando cURL na linha de comando para enviar um pedido de rastreio para
um servidor web no localhost com TRACE ativada. Observe como o servidor web
responde com o pedido, que foi enviado a ele.

$ curl -X TRACE 127.0.0.1


TRACE / HTTP/1.1
User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r
zlib/1.2.5
Host: 127.0.0.1
Accept: */*

Neste exemplo ele avisa de como nós enviamos um cabeçalho de cookie com o pedido e
que também está na resposta do servidor web.

$ curl -X TRACE -H "Cookie: name=value" 127.0.0.1


TRACE / HTTP/1.1
User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r
zlib/1.2.5
Host: 127.0.0.1
Accept: */*
Cookie: name=value

Neste exemplo, o método TRACE é desativado, observe como obtemos um erro, em vez de
o pedido que enviamos.
$ curl -X TRACE 127.0.0.1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>405 Method Not Allowed</title>
</head><body>
<h1>Method Not Allowed</h1>
<p>The requested method TRACE is not allowed for the URL /.</p>
</body></html>

Exemplo JavaScript XMLHttpRequest com o pedido TRACE. No Firefox 19.0.2 não


funcionará e retornará um erro "valor ilegal". No Google Chrome 25.0.1364.172 não
vai funcionar e retornar um "erro Uncaught: SecurityError: DOM Exception 18" de
erro. Isso ocorre porque os navegadores modernos agora bloqueiam o método TRACE em
XMLHttpRequest para ajudar a mitigar XST.

<script>
var xmlhttp = new XMLHttpRequest();
var url = 'http://127.0.0.1/';

xmlhttp.withCredentials = true; // send cookie header


xmlhttp.open('TRACE', url, false);
xmlhttp.send();
</script>

Remediação ~

Apache

Em versões do Apache 1.3.34, 2.0.55 ou posteriores, definir a directiva TraceEnable


para "off" no arquivo de configuração principal e, em seguida, reiniciar o Apache.
Veja TraceEnable para mais informações.

TraceEnable off

Você também pode gostar