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:

  1. Coloque o IPv4 resolvido do DNS do servidor do Ngrok no site
  2. Coloque a porta do servidor Ngrok no site em questão
  3. Selecione o payload viável para a situação
    1. Uma boa ideia é utilizar o site RevShells para criar um payload de uma ReverseShell
  4. Execute o payload em um Web Shell na máquina vitima

E voilà! Temos uma ReverseShell no computador vítima!