Générer des fichiers nmap au format HTML

Clément
3 min readMar 30, 2023

--

#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 :

Résultat de scan nmap affiché dans Firefox

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.

Blocage de la requête vers le fichier nmap.xsl

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 :

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 }

--

--

No responses yet