# nmap 10.10.10.4/24
# nmap 10.10.10.1-255
# nmap 10.10.10.4
# nmap -A 10.10.10.4
# nmap -sV -sC -p- 10.10.10.4
# nmap -sU 10.10.10.4
-sV : Attempts to determine the version of the service running on port
-sC : Scan with default NSE scripts. Considered useful for discovery and safe
-A : Enables OS detection, version detection, script scanning, and traceroute
-p- : Port scan all ports
-sU : UDP ports (very slow)
-oN nmap.log : output file
TCP
20: ftp data
21: ftp control
22: ssh
23: telnet
25: SMTP (mail)
37: Time protocol
53: Bind/DNS
69: TFTP (Trivial FTP)
80: HTTP
109: POP2
110: POP3
111: RPC Remote Procedure Call
137: Netbios Name Service
138: Netbios Datagram Service
139: Netbios Session Service
143: IMAP (mail)
161: SNMP
220: IMAP
389: LDAP
443: HTTPS
445: MS Active Directory, SMB
464: Kerberos
1521: Oracle Database
3000: Node JS
3306: MySQL
UDP
69: TFTP
161: SNMP
http://www.0daysecurity.com/penetration-testing/enumeration.html
Le fichier robots.txt, quand il existe, à la racine d'un site web, contient une liste des ressources du site qui ne sont pas censées être indexées par les robots d'indexation des moteurs de recherche. Par convention, les robots consultent robots.txt avant d'indexer un site Web. Ce fichier liste des répertoires, et des fichiers qui peuvent donc nous interresser.
http://10.10.10.8/robots.txt
Plus d'info : https://fr.wikipedia.org/wiki/Protocole_d%27exclusion_des_robots
Les développeurs laissent parfois des informations utiles, voire des mots de passe dans les commentaires du code. Ce sont souvent des urls,ou des champs de formulaires utilisés pour les tests.
/* Secret code */
<!--- Secret code --->
<p hidden>Secret code.</p>
<label style='display: none'>Secret code.</label>
Nous testons méthodiquement des listes de répertoires communs et des noms de fichiers. Par exemple: login.htm, connect.php, register.php,... Logiciels de brute force usuels :
Il est crucial de bien choisir la liste de répertoires/noms de fichiers:
Lancer un scan rapide avec dirb, qui va utiliser sa liste 'common.txt'.
dirb 10.10.10.11
https://github.com/OJ/gobuster
Le télécharger et l'installer en /opt
wget https://github.com/OJ/gobuster/releases/download/v3.0.1/gobuster-linux-amd64.7z
Bruteforce le site http://10.10.10.11, avec la liste directory-list-2.3-medium.txt, avec des extensions de fichier html,php,js,txt
/opt/gobuster/gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://10.10.10.11 -l -x html,php,js,txt
Pour une url en HTTPS, ajouter l'option de ligne de commande
-k : skip HTTPS ssl verification
hydra -l admin -P /usr/share/wordlists/rockyou.txt -f 10.10.10.157 http-get /monitoring
hydra -l admin -P /usr/share/wordlists/rockyou.txt 10.10.10.11 http-post-form '/admin/login.php:username=^USER^&password=^PASS^:F=Wrong password:H=Cookie\: PHPSESSIONID=ms0t93n23mc2bn2512ncv1ods4' -V
Attention si la réponse est un 302 Redirect, hydra ne va pas suivre et va générer un faux positif.
hydra -l admin -P /usr/share/wordlists/rockyou.txt 10.10.10.4 http-get-form '/login.php:username=^USER^&password=^PASS^:F=Login failed:H=Cookie\: PHPSESSIONID=ms0t93n23mc2bn2512ncv1ods4' -V
Attention si la réponse est un 302 Redirect, hydra ne va pas suivre et va générer un faux positif.
Format des urls
Posts : /index.php?p=22
/index.php/2017/04/12/hello-world/
/index.php/jobs/apply/8/
Login : /wp-login/
/wp-login.php
Uploaded files : /wp-content/uploads/%year%/%month%/%filename%
Fichier de config, et credentials de la base de donnée
/var/www/html/ wordpress/wp-config.php
wordpress/htdocs/wp-config.php
Wpscan connait la structure d'un site wordpress et va faire du brute force pour identifier les pages, le sposts, les users, le thème, les plugins. Les failles de wordpress viennent essentiellement des plugins non mis à jour.
wpscan --url http:10.10.10.10/wordpress/ -e
--url : url de la page wordpress.
-e : énumeration
Brute force du login
wpscan --url http://10.10.10.10/wordpress/ -P rockyou.txt -U admin
Se connecter avec le client mysql.
mysql --host=HOST -u USER -p
--host=précise le nom du serveur
-u le login
-p force la saisie du mot de passe.
Dumper le contenu de la base.
show databases; -- Liste les bases de données.
-- La base 'information_schema' contient des informations internes à mysql ou mariadb. On peut généralement l'ignorer.
use DATABASE;
show tables; -- Liste les tables
SELECT * FROM TABLENAME;