Reverse Shell
Caso precise, no Kali vem alguns WebShell disponíveis em /usr/share/webshells/.
Sempre quando for executar uma shell reversa no Burp Suite e pressione CTRL+U para encodar o payload.
Reverse Shell x Bind Shell
Apesar de ambos terem o mesmo objetivo, a forma de realizar a conexão é tem uma pequena diferença, a direção de acesso. No Blind Shell, o host alvo irá abrir uma porta para o atacante se conectar, já no Reverse Shell, é o host atacante quem abre uma porta e faz com que o host alvo se conecte nela.
Melhorando o Visual da Shell
Devido a muitas vezes conseguirmos pegar uma shell que não possui um bom retorno, funcionalidades como vi não funcionam, CTRL+C encerra a sessão, não temos histórico de comandos, etc, por isso devemos deixar nossa shell mais estável.
# Dentro da shell reversa
python -c 'import pty; pty.spawn("/bin/bash")'
CTRL+Z
# Agora já no terminal do atacante
stty raw -echo
# Quando digitar esse comando, não irá aparecer o que está digitando, mas continue mesmo assim
fg
ENTER (2x)
# Dentro da shell reversa
reset
export SHELL=bash
export TERM=xterm-256color
# No terminal do host (fora da reverse shell) maximize o terminal e veja os valores de "rows" e "columns" com o comando
stty -a
# Agora volte para o terminal da reverse shell e defina "rows" e "columns" com o mesmo valor retornado no comando acima
stty rows <num> columns <cols>Mais comandos para Spawning TTY
rlwrap
Deixa o netcat mais estável
Meterpreter
Caso tenha conseguido alguma shell no host alvo e não seja o Meterpreter, utilize o comando abaixo para atualizar sua shell para o Meterpreter:
Msfvenom
Existem 2 tipos de Reverse Shell que pode ser feita com o msfvenom:
staged = Esta divide o payload em pequenos pedaços. O Meterpreter em si é uma shell em etapas, primeiro ele envia algumas partes para configurar a conexão e depois envia um pouco mais. Este não pode ser acessado pelo Netcat.
non-staged = Já este é enviado em blocos e pode ser executado tanto no Metasploit quanto no Netcat
Stage Payload
OBS.: Utilize o Meterpreter, caso achar necessário
Non-Stage Payload
PHP (Web-Shell)
Esse php-shell é independente do sistema operacional. Você pode usá-lo no Linux e no Windows.
ASP (Web-Shell)
OBS.: Altere de asp para aspx caso seja necessário
War (Web-Shell)
JSP (Web-Shell)
OS
Executando um comandos no SO
Villain
Abre uma Reverse Shell que aceita múltiplas conexões, gerando assim várias sessões que podem ser acessadas a qualquer momento. Para gerar o payload, utilize o comando abaixo e execute a saída do comando no host alvo. Quando a vítima executar o comando, será aberta a sessão no próprio Villian
Para visualizar as sessões que estão ativas, execute:
Para acessar uma determinada sessão, execute:
Curl
Este não é de fato o responsável pelo Shell Reverso, mas com ele é possível baixar e executar determinado arquivo com o comando abaixo:
Bash TCP
Bash UDP
Windows
msfvenom
Criando executável
Deixe o Netcat em modo listener com o comando abaixo e execute o executável gerado com o comando acima no Windows.
Bypass Powershell
Primeiro execute o código abaixo para deixarmos o Metasploit no modo listener
Execute o script abaixo na máquina alvo
Abaixo segue outras maneiras, que podem ser porém utilizando o netcat como listener
Linux
Binário
Bash
FreeBSD
Netcat
Bind Shell
Reverse Shell
Com Flag -e
Sem Flag -e
Nem toda versão do Netcat tem a opção -e
Salvando a saída
Útil para estudar quais comandos o atacante está utilizando.
Executando comando (não interativo)
NOTA: Acima vimos exemplos onde executamos um comando no host alvo e enviamos a saída do comando para o host atacante. Isso é útil quando executamos o netcat, criamos uma conexão porém não conseguimos executar comandos. Caso queria, adicione o parâmetro -k (keep alive) no comando nc do host atacante para manter a conexão aberta enquanto recebe a saída dos comandos.
Ncat
Bind
Socat
Abaixo possui um site para baixar o código do socat (caso a vítima não tenha instalado) e, assim que definir qual a arquitetura correta, execute como no comando abaixo:
DICA: Todos os exemplos abaixo estão utilizando o protocolo TCP, porém podemos utilizar UDP, apena susbstituindo onde está escrito TCP para UDP. Note também que os parâmetros do socat são case-insensitive.
Método 1
Método 2
Método 3
Método 4
Método 5
Método 6
Método 7
Perl
Python 2.7
Python 3
OBS.: Caso não consiga utilizar comandos dentro do eval como import os, substitua por __import__('os').system('whoami')
PHP
Metasploit
Ruby
PowerShell (Invoke-PowerShell)
Insira no final do arquivo (Pesquisar se o arquivo está em ou baixar no Git).
Encontre o arquivo Invoke-PowerShellTcp.ps1 (geralmente está em /usr/share/nishang/Shells), copie para seu diretório atual (para manter o arquivo original) e insira a seguinte linha no final do arquivo:
Em outro terminal, deixe o arquivo disponível para o alvo com o comando python -m SimpleHTTPServer
OBS.: Veja nos sites abaixo, uma lista de shell para PowerShell
Powershell (msfvenom)
Crie o Payload com o comando abaixo
Agora digite os seguintes comandos:
Execute na máquina alvo com o comando iex (vide página de Powershell)
PowerShell (Manual)
Note que em alguns momentos (aqui e em outros exemplos) estamos utilizando o parâmetro -nop do powershell, que é uma abreviação de -NoProfile. Isso instrui o Powershell a não carregar o perfil de usuário. Quando o PowerShell é iniciado, por padrão, ele carrega os scripts de perfil de qualquer usuário existente, o que pode afetar negativamente a execução do nosso código. Essa opção evitará esse possível problema.
Microsoft SQL Server (MSSQL)
WinRM (Autenticado)
Base64 Encoding
Primeiro vamos encodar nosso payload. Como exemplo vamos pegar o reverse shell em bash, mas pode ser qualquer outro
Agora pegue o resultado do comando acima para montar o comando o abaixo
VILLAIN
Abre uma Reverse Shell que aceita múltiplas conexões, gerando assim várias sessões que podem ser acessadas a qualquer momento. Para gerar o payload, utilize o comando abaixo e execute a saída do comando no host alvo. Quando a vítima executar o comando, será aberta a sessão no próprio Villian
Para visualizar as sessões que estão ativas, execute:
Para acessar uma determinada sessão, execute:
NodeJS
LUA
Xterm
PHP
Crie o Payload com o comando
Será mostrado na tela o código, onde deverá ser enviado para o alvo web.
Agora digite os seguintes comandos:
JAVA
Telnet
Gawk
Sites
Last updated
Was this helpful?