#nmaptips
L’outil nmap permet de générer des fichiers au format XML et ceux-ci peuvent être ensuite visualisés dans un navigateur Web.
Voici un exemple de résultat de scan fait sur ma propre machine :
Pour réaliser cela, il suffit de générer un export des résultats au format XML avec l’option -oX par exemple ou l’option -oA qui exporte les résultats du scan dans les trois formats supportés par nmap (texte, greppable et XML).
Ensuite, il vous suffit d’ouvrir votre fichier XML dans votre navigateur et voilà! (en théorie)
Vous connaissiez probablement déjà cette fonctionnalité de nmap et si vous l’avez déjà utilisé dans le passé vous vous êtes probablement rendu compte que les fichiers XML ne s’affichent plus correctement dans les navigateurs récents…
Le problème vient du fait que les navigateurs implémentent une politique CORS bloquant les accès vers des fichiers locaux.
Même l’option de nmap -webxml qui remplace l’utilisation d’un fichier local par une URL distante et qui est censée résoudre le problème ne fonctionne pas toujours. Certains navigateurs bloquent la requête vers l’extérieur à cause du fait que le fichier XML ouvert est hébergé localement :
Des solutions existent pour éviter ce problème :
- Héberger le fichier XML sur un serveur Web avec l’option -webxml (https://infosec.exchange/@net/109380574081957077)
- Copier le fichier nmap.xsl dans le même dossier que le fichier .xml et changer la balise xml-stylesheet avec href=“nmap.xls”
- Convertir le fichier .xml en .html une bonne fois pour toutes (https://nmap.org/book/output-formats-output-to-html.html) !
Introducing nmap-html
Il est donc possible de convertir le fichier XML au format HTML avec l’outil xsltproc comme décrit dans la documentation de nmap :
Pour aller un peu plus loin et convertir facilement et rapidement les différents scans nmap ; j'en ai profité pour faire une fonction Bash intitulée nmap-html.
Elle permet les choses suivantes :
- Convertir tous les fichiers XML nmap présent dans le dossier courant
- Fonctionne avec des résultats de scan avec et sans l’option -webxml
- Est facile à retenir
En action :
La fonction à ajouter dans le .bashrc / .zshrc :
nmap-html() { if ! command -v xsltproc &>/dev/null ;then echo -e "xsltproc is missing.\nTry: sudo apt install xsltproc" && return 1;else for file in $(ls *.xml) ;do if grep --quiet nmaprun $file;then base="${file%.*}"; xsltproc -o $base.html /usr/share/nmap/nmap.xsl $base.xml && echo $base.html created. ;fi ;done ;fi }