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