O que é o Reverse Shell?
Um Reverse Shell (ou Shell reverso) força a conexão de volta ao computador de ataque, em vez de esperar uma conexão de entrada. Nessa caso, em nosso computador de ataque, abrimos uma porta local e focamos ouvindo à espera de uma conexão feita a partir de nosso alvo porque é mais provável que essa conexão reversa consiga passar por um firewall (WEIDMAN, Georgia - 2014, p. 138).
Em outras palavras, a máquina do invasor (que tem um IPv4 e pode ser acessado pela Internet) age como um servidor. Ele abre um canal de comunicação e uma porta e aguarda por conexões de entrada. A máquina da vítima atua como um cliente e inicia uma conexão com o servidor de escuta do invasor. Nesse cenário, como a conexão está saindo da vítima, o Firewall não é acionado, facilitando o Reverse Shell do invasor
Como realizar um Reverse Shell?
Em essência, precisamos inicialmente conseguir um (CWE-94) Improper Control of Generation of Code (‘Code Injection’). Podemos conseguir isso através de uma Web Shell, através de um (CWE-434) Unrestricted Upload of File with Dangerous Type. Entretanto, contando que você já tenha alguma dessas vulnerabilidades exploradas, podemos prosseguir:
Primeiramente, precisamos abrir um servidor utilizando o Ngrok, com o formato TCP, em uma porta P, com o comando:
ngrok tcp [P]
Após isso, verificamos qual o servidor DNS aberto pelo Ngrok e pegos o IPv4 desse DNS. Após isso, utilizaremos o comando:
nc -lvmp [P]
Após isso, podemos montar um payload no Revshells e começar o ataque. Para isso:
- Coloque o IPv4 resolvido do DNS do servidor do Ngrok no site
- Coloque a porta do servidor Ngrok no site em questão
- Selecione o payload viável para a situação
- Uma boa ideia é utilizar o site RevShells para criar um payload de uma ReverseShell
- Execute o payload em um Web Shell na máquina vitima
E voilà! Temos uma ReverseShell no computador vítima!