Pentest: Usage de ReconFTW - Part 2

Introduction

Cet article reprend la suite du précédent avec l’introduction au pentesting via l’usage de l’outil reconFTW.

La précédente publication servait d’introduction et permettait de décrire l’installation de reconftw et des différentes dépendances associées via une instance Rocky Linux 9 exécutée sur WSL.

Nous finissions par lancer un scan en mode « recon », c'est-à-dire le mode reconnaissance, le niveau de test intermédiaire.

Il est maintenant temps de traiter les résultats et de donner quelques explications sur la sortie de reconftw.

Sortie de reconftw

Lorsque vous réalisez un pentest avec reconftw, vous pouvez soit lui fournir une liste de domaine cible, soit, comme dans mon cas, un domaine particulier.

Chaque domaine scanné va donner lieu à un dossier dans le répertoire d’installation de reconftw.

Si vous avez suivi mon tutoriel, il va s’agir de ~/cyber/reconftw/Recon.

Emplacement du scan de sortie

Cliquez sur l'image pour l'agrandir.

Au sein de ce dossier, vont se retrouver d’autres sous-dossiers, propres à chacun des types d’analyse réalisée par les outils exécutés par reconftw.

Le nombre de dossiers va dépendre des options activées dans le fichier de configuration (voir article précédent) et de la commande de scan exécuté.

Par exemple, dans mon précédent article, je finissais par la commande suivante:.

reconftw.sh -d myprivatelab.tech -r –ai

Ce qui me permet d’obtenir la liste des répertoires suivants:

Arborescence par défault en mode recon

Cliquez sur l'image pour l'agrandir.

Analyse du log et corrections des erreurs

À noter l’existence d’un dossier caché .log, qui, comme son nom l’indique, contient le log du scan.

Répertoire de log

Cliquez sur l'image pour l'agrandir.

L’une des premières choses à faire est d’ouvrir ce log en question pour identifier les problèmes potentiels rencontrés lors du scan.

Lecture du log

Cliquez sur l'image pour l'agrandir.

Vous ne devriez pas avoir trop de messages d’erreurs, mais il est parfois possible d’avoir des soucis liés à une mauvaise configuration de l’outil lancé par reconftw.

L’important est de vous assurer que la majorité des scans ont bien été réalisés.

Par exemple, on voit ici que le fichier user_agents.txt n’a pas été trouvé et que le binaire exiftool n’a pas été trouvé.

exemple d'erreur de scan

Cliquez sur l'image pour l'agrandir.

Pour exiftool, il suffit d’activer le repos EPEL

sudo dnf install epel-release
Activation du repo epel

Cliquez sur l'image pour l'agrandir.

Et d’installer le package perl-Image-ExifTool:

sudo dnf install perl-Image-ExifTool
installation du paquet exiftool

Cliquez sur l'image pour l'agrandir.

Pour le fichier "user_agents.txt" c’est un peu plus complexe.

Celui-ci est bien présent dans le répertoire de l’outil metagoofil.

Fichier user_agents.txt

Cliquez sur l'image pour l'agrandir.

C’est un utilitaire d’OSINT (Open Source Intelligence) conçu pour extraire des métadonnées à partir de documents accessibles publiquement sur Internet.

Le problème semble se situer dans le script metagoofil.py disponible dans le même répertoire que le fichier txt (pour rappel, par défaut reconftw déploie tous les outils tiers dans ~/Tools).

Comme on le voit dans le log du scan, l’erreur est à la ligne 128. Je ne vais pas faire quelque chose de très propre, mais pour gagner du temps, je vais mettre en dure le path où se trouve le fichier.

Correction du script

Cliquez sur l'image pour l'agrandir.

Ce n’est pas l’idéal, mais ça va me permettre de relancer mon scan.

Par défaut, Reconftw ne relance pas les tests qui ont déjà généré une sortie. Si on veut forcer un scan de zéro, alors il faut supprimer le dossier contenant nos résultats.

Suppression des résultats du scan

Cliquez sur l'image pour l'agrandir.

Et on recommence ! Sauf que cette fois çi je vais lancer un scan avec attaque, soit un scan complet via l'option -a.

reconftw.sh -d myprivatelab.tech -a –-ai

Pour rappel, c'est le choix de scan le plus intrusif ! Faite le en connaissance de cause et uniquement vers des assets dont vous avez la responsabilité ou que vous êtes autorisé à analyser.

Relance du scan

Cliquez sur l'image pour l'agrandir.

(Pour éviter d’attendre la fin du scan pour identifier une erreur, n’hésitez pas à faire un "tail -f" du fichier de log pour pouvoir interrompre le scan dès la détection d’erreur si vous le souhaitez.)

Disclaimer sur l'usage de l'IA

Le scan complet, incluant les tentatives d’attaques, dure naturellement plus longtemps.

Dans mon cas, il m’a fallu attendre plus de 5H pour obtenir les résultats finaux.

Durée du scan complet

Cliquez sur l'image pour l'agrandir.

Comme pour le scan précédent, les conclusions se trouvent dans le sous dossier /Recon du répertoire d’installation de reconftw.

Resultat du scan

Cliquez sur l'image pour l'agrandir.

Pour la suite de l’article, j’ai extrait les deux dossiers associés à mes scans sur mon poste de travail. C’est un des avantages de passer par WSL, on peut directement rapatrier des éléments de son arborescence Linux vers son arborescence Windows pour simplifier les manipulations sur les fichiers.

J’ai renommé mon premier scan -r pour identifier les résultats issus du mode reconnaissance, et -a pour le scan complet.

Récupération du scan

Cliquez sur l'image pour l'agrandir.

Si l’on compare les deux dossiers, on voit bien que -a dispose d’un dossier supplémentaire et semble plus gros que le dossier -r.

Comparaison des scans

Cliquez sur l'image pour l'agrandir.

C’est logique, car le scan -a exécute tous les tests du pentest.

Je vais donc m’appuyer sur le scan complet pour tenter de définir et d’expliquer les différents fichiers de sorties issues du pentest.

C’est ici que l’IA apporte une plus-value intéressante. Sans même parler du rapport final proposé par le modèle LLM exécuté par ollama tel que présenté dans le premier article, les chatGPT like peuvent être d’une grande aide pour aider à interpréter le résultat du pentest.

Attention, je ne dis pas que l’IA se suffit à elle-même pour offrir un service de pentest complet. Rien ne remplace un expert du sujet et une véritable analyse humaine approfondie des résultats.

L’expérience joue énormément pour interpréter correctement la sortie de reconftw. Mais l’IA permet d’avoir une première approche macro, pour défricher le terrain et offrir une première aide à quelqu’un qui débute… comme moi.

Je vais donc m’appuyer sur l’IA (et n’ai aucune honte à le dire) pour résumer le résultat de mon scan.

Mais là aussi, j’alerte sur l’usage de l’IA pour ce besoin. Quand je dis que je vais exploiter l’IA pour mon pentest, ça ne veut pas dire que je vais « betement » copier/coller le contenu de la sortie de reconftw dans le premier prompt venu.

Certaines informations contenues dans les résultats d’un pentest peuvent être confidentielles et hautement à risque… n’aller pas envoyer tout ça dans une IA publique sur lequel vous n’avez pas la maitrise du stockage des données.

Il faut utiliser l’IA à bon escient, ne pas fournir d’informations trop sensibles et savoir orienter l’attente des réponses.

Il est important d’analyser les retours et de s’assurer que la sortie de l’IA vous est compréhensible et vous semble logique. Si ce n’est pas le cas, n’hésitez pas à reformuler votre demande, à demander d’autres explications et surtout à revenir à l’ancienne méthode de la bonne vieille recherche Google et à l’exploration des forums/articles spécialisés.

Dans mon cas, je veux surtout obtenir une explication de chaque fichier de sortie et établir une logique de risque associé. Je voudrais pouvoir évaluer l’intérêt que présentent les données trouvées dans chaque fichier pour un attaquant, et connaitre le niveau de risque encouru par mon infrastructure lorsque j’essaie d’obtenir ces données.

Reconftw peut aussi servir à sélectionner un test ou une série de tests spécifiques. Il serait intéressant de mettre en place un pentest, plus ou moins fréquent et complet, selon les risques que l’on cherche à identifier et l’impact admissible sur l’architecture pendant le test.

On peut envisager de planifier des tests peu intrusifs à intervalles réguliers pendant les périodes d’activité. En revanche, certains tests plus significatifs et plus pertinents en termes de risques découverts devraient être effectués occasionnellement en dehors des heures de production pour minimiser l’impact d’un éventuel plantage causé par un balayage trop agressif.

Maintenant que tous les disclaimers sont faits, entrons dans le vif du sujet.

Logique de découpage de la sortie

Il faut comprendre que ReconFTW exécute les différents outils à sa disposition dans un ordre spécifique.

Globalement, il y a d’abord une phase de collectes, puis une phase d’analyse et enfin de tentative d’attaque basées sur ce qui a été découvert lors des phases précédentes.

Chaque étape donne lieu à un répertoire qui traduit le type d’informations qu’on va pouvoir y trouver.

📁 Dossier 🎯 Objectif principal 📊 Type de données contenues 🔧 Outils principaux utilisés
fuzzing Découvrir des fichiers, répertoires ou endpoints cachés Chemins valides (/admin, /api…), codes HTTP, taille des réponses ffuf, feroxbuster, wordlists (SecLists, persos)
hosts Identifier les IP et hôtes actifs Résolutions DNS, IP, bannières, ports ouverts, ASN nmap, masscan, dnsx, massdns, shuffledns
js Extraire et analyser les fichiers JavaScript URLs, endpoints API, clés API, tokens, variables sensibles getJS, subjs, LinkFinder, SecretFinder
nuclei_output Scanner des vulnérabilités avec des templates prédéfinis Vulnérabilités (CVE, misconfigurations), infos serveur, SSL nuclei (templates CVE, exposures, config checks)
osint Collecter des infos publiques (Open Source Intelligence) Emails, réseaux sociaux, fuites GitHub/Pastebin theHarvester, github-subdomains, scraping moteurs
subdomains Énumérer les sous-domaines Listes de sous-domaines brutes et résolus, classement par domaine assetfinder, amass, subfinder, dnsx, chaos-client
vulns Stocker les résultats détaillés des vulnérabilités Rapports techniques, PoC, captures d'écran nuclei (scan ciblé), httpx, tests manuels (XSS, SQLi…)
web Cartographier les services web URLs accessibles, techno détectées, screenshots httpx, aquatone/gowitness, whatweb/wappalyzer

Les dossiers subdomains et hosts servent de base aux étapes suivantes.

Web et fuzzing sont utiles pour la cartographie applicative.

nuclei_output et vulns sont les résultats exploitables pour un rapport final.

osint peut être recoupé avec les résultats JS pour trouver des accès internes.

Voici un schéma qui récapitule la logique entreprise par reconftw avec le positionnement de chaque répertoire. Le code couleur indique l’impact du pentest sur l’infrastructure scannée. Plus c’est rouge, plus les tests réalisés pour obtenir les résultats contenus dans les répertoires peuvent représenter une charge pour les serveurs visés.

schema de scan

Cliquez sur l'image pour l'agrandir.

On va maintenant passer dossier par dossier en suivant l’ordre du schéma.

Analyse par dossier

subdomains

Contenu du dossier subdomain

Cliquez sur l'image pour l'agrandir.

📁 Fichier 📝 Description 📊 Valeur pour l'attaquant / analyste ⚠️ Risque lors de la collecte
cloud_assets.txt Liste de ressources cloud liées à la cible (AWS, Azure, GCP…) 📈 Élevée – permet de cibler stockage, VM ou services cloud externes 🟢 Faible – recherche basée sur patterns, peu intrusive
cloudhunter_open_bucket.txt Buckets cloud publics détectés 📈 Très élevée – accès direct possible à des données sensibles 🟢 Faible – détection via requêtes HTTP GET simples
subdomains.txt Liste brute des sous-domaines trouvés 📈 Élevée – base pour scans ultérieurs, cartographie externe 🟢 Faible – collecte majoritairement passive
subdomains_dnsregs.json Sous-domaines enrichis avec infos ASN, DNS, pays, IP 📈 Élevée – aide à identifier fournisseurs, potentiels points d'entrée 🟢 Faible – enrichissement passif depuis API ou WHOIS
subdomains_ips.txt Correspondance sous-domaines → IP 📈 Moyenne à élevée – utile pour cibler réseau, services actifs 🟢 Faible – extraction depuis résolution DNS
zonetransfert.txt Résultat d'un transfert de zone DNS (AXFR) 🚀 Critique – fuite complète de la configuration DNS, y compris serveurs internes 🔴 Élevé – requête active pouvant être détectée, voire loggée comme tentative d'intrusion

Dans mon cas, pas d’alerte à ce niveau. Ma zone DNS est correctement protégée du transfert pour qu’aucun attaquant ne puisse s’approprier mon domaine.

osint

Contenu du dossier osint

Cliquez sur l'image pour l'agrandir.

📁 Fichier 📝 Description 🔧 Origine / Outils probables 📊 Valeur pour l'attaquant / analyste ⚠️ Risque lors de la collecte
3rdparts_misconfigurations.txt Liste de services tiers liés au domaine (CDN, SaaS, intégrations) avec configurations potentiellement faibles ou erronées. Recherche dans DNS, headers HTTP, tests simples (nuclei, dnsx, OSINT toolkits) 📈 Élevée – peut mener à une compromission via un service externe mal configuré. 🟢 Faible – analyse passive.
azure_tenant_domains.txt Liste des domaines/ID de tenant Azure Active Directory liés à la cible. o365enum, aadinternals, recherche passive de metadata MS. 📈 Très élevée – permet des attaques ciblées sur l'environnement M365/Azure. 🟢 Faible – interrogation passive des endpoints Microsoft.
domain_info_general.txt Résumé WHOIS, DNS, ASN, technologies utilisées par le domaine racine. whoisxmlapi, dnsx, amass, OSINT général. 📈 Moyenne – donne contexte et fournisseurs d'hébergement. 🟢 Faible – full passif.
dorks.txt Liste de requêtes Google Dorks préformatées pour rechercher des infos publiques sensibles. Génération à partir du domaine (site:, intitle:, filetype:). 📈 Élevée – permet de trouver fichiers, creds, configs exposées. 🟢 Faible – requêtes sur moteurs de recherche.
emails.txt Adresses e-mail associées au domaine. theHarvester, scraping de moteurs, bases publiques. 📈 Très élevée – base pour phishing, password spraying. 🟢 Faible – collecte passive.
postman_leaks.txt Collections ou environnements Postman publics liés au domaine. API Postman, recherche GitHub/GitLab. 📈 Critique – souvent contient tokens/API keys. 🟢 Faible – recherche passive.
scopify.txt Liste de domaines/sous-domaines validés comme "in scope" pour le programme de test. Génération par ReconFTW selon critères de filtrage. 📈 Moyenne – utile pour cadrer les scans et éviter hors-scope. 🟢 Faible – traitement interne.

En ce qui concerne l’OSINT, aucune alerte n’a été détectée concernant une fuite de données pouvant se rattacher à mon domaine.

Il est crucial de souligner que la qualité de la collecte de données dépendra du nombre de sources que Reconftw pourra exploiter sur cette section. C’est notamment le cas des services présentés dans la première partie comme Shodan.

Tous les sites permettant d’interroger de la collecte issue du darkweb ne sont pas forcement gratuit d’usage. Dans mon cas je me suis contenté de quelques référentiels en accès publics, mais avec des niveaux d’usage API limités.

C’est un élément important dont il faut tenir compte dans vos campagnes de pentest. Des sociétés spécialisées avec de vrais experts disposent souvent d’un référentiel bien plus pertinent et profond que ce qu’on peut trouver de base.

Cela peut justifier une facturation parfois importante, car tout n’est pas consultable simplement via une API, il faut parfois passer des heures et des heures à fouiller le darkweb pour identifier tout ce qui pourrait concerner une fuite de données associé à une entreprise, ou une menace à venir lier à la planification d’une attaque.

hosts

Contenu du dossier hosts

Cliquez sur l'image pour l'agrandir.

📁 Fichier 📝 Description 🔧 Origine / Outils probables 📊 Valeur pour l'attaquant / analyste ⚠️ Risque lors de la collecte
ipinfo.txt Informations enrichies sur les IP trouvées : ASN, pays, fournisseur, type de service. ipinfo.io, whois, asnmap. 📈 Moyenne – aide à savoir qui héberge l'IP et à quel réseau elle appartient. 🟢 Faible – interrogation API publique.
ips.txt Liste brute des adresses IP découvertes (résolution des sous-domaines ou découverte réseau). dnsx, massdns, extraction Nmap. 📈 Élevée – base pour scans actifs et corrélation OSINT. 🟢 Faible – collecte passive depuis DNS ou pré-scan.
portscan_active.gnmap Résultats bruts Nmap en format "grepable" après scan actif. nmap (scan TCP/UDP) 📈 Très élevée – montre ports ouverts et services actifs. 🔴 Élevé – scan actif, détectable, peut provoquer alertes SOC.
portscan_active.nmap Résultats Nmap en format lisible humain, après scan actif. nmap 📈 Très élevée – idem .gnmap mais plus détaillé. 🔴 Élevé – idem .gnmap.
portscan_active.xml Résultats Nmap en XML pour parsing automatisé. nmap 📈 Très élevée – format pour outils automatisés d'exploitation. 🔴 Élevé – idem .gnmap.
portscan_passive.txt Liste de ports/services obtenus sans scan direct (sources OSINT, scans publics). Shodan, Censys, bases de scans publics. 📈 Moyenne à élevée – donne une idée des services exposés sans bruit réseau. 🟢 Faible – passif.
portscan_shodan.txt Résultats de Shodan sur les IP trouvées (bannières, services, versions). API Shodan. 📈 Très élevée – bannières détaillées, failles connues. 🟢 Faible – interrogation API publique.

À ce niveau, rien de spécial: j’ai des ports ouverts, liés à l’exposition de certains services que j’héberge. Cependant, le scan n’a pas mis en évidence des ports en écoute dont je n’avais pas connaissance.

nuclei_output

Contenu du dossier nuclei_output

Cliquez sur l'image pour l'agrandir.

📁 Fichier 📝 Description 🔧 Origine / Outils probables 📊 Valeur pour l'attaquant / analyste ⚠️ Risque lors de la collecte
info.txt Résultats des templates Nuclei de sévérité Info au format texte lisible. Inclut souvent des infos techniques (headers HTTP, certificats SSL, versions logicielles). nuclei avec templates info 📈 Moyenne – utiles pour profiling technique, peu exploitables directement. 🟢 Faible à moyen – la majorité des templates info sont passifs, mais certains font des requêtes HTTP actives.
info_json.txt Même contenu que info.txt mais en format JSON pour parsing automatisé. nuclei 📈 Moyenne – identique à .txt mais exploitable en pipeline automatisé. 🟢 Faible à moyen – idem.
low.txt Vulnérabilités de sévérité Low en texte lisible. Ex : informations exposées, mauvaise configuration mineure. nuclei avec templates low 📈 Moyenne à élevée – parfois pivot vers attaques plus sérieuses. 🟠 Moyen – certains templates low sont actifs (requêtes de test ciblées).
low_json.txt Idem low.txt mais en JSON pour parsing automatique. nuclei 📈 Moyenne à élevée – identique à .txt. 🟠 Moyen – idem.

Une bonne nouvelle pour moi, puisqu’aucune sévérité supérieure à low n’a été découverte. J’ai surtout des problématiques autour de certains chiffrements autorisés pour la consultation de mon site. Je vais devoir sans doute revoir ma configuration Traefik pour améliorer ce point. Je vais retirer la prise en charge de tous les algorithmes obsolètes.

Vérification du contenu des vulnérabilité low

Cliquez sur l'image pour l'agrandir.

A noter que d'autres répertoires pourraient etre présent si des sévérités plus serieuses (medium, hight..) auraient été détectées.

vulns

Contenu du dossier vuln

Cliquez sur l'image pour l'agrandir.

📁 Fichier 📝 Description 🔧 Origine / Outils probables 📊 Valeur pour l'attaquant / analyste ⚠️ Risque lors de la collecte
brokenLinks.txt Liste d'URL sur le site cible pointant vers des ressources inexistantes (erreur 404, domaine expiré). broken-link-checker, linkfinder, modules de crawl (httpx, gospider). 📈 Moyenne – peut mener à du subdomain takeover si domaine expiré, ou à l'exploitation via injection JS si lien externe compromis. 🟢 Faible – vérification passive/HTTP simple.
testssl.txt Rapport complet de testssl.sh sur les hôtes détectés : versions TLS/SSL, chiffrements supportés, vulnérabilités SSL (Heartbleed, POODLE, etc.). testssl.sh 📈 Élevée – permet de savoir si un service HTTPS utilise des protocoles/chiffrements obsolètes ou vulnérables. 🟠 Moyen – scan actif TCP/443 pouvant être détecté, mais très faible charge réseau.

Hormis la confirmation du non-respect de certaines bonnes pratiques autour du chiffrement SSL, je n’ai rien d’alarmant de mise en avant.

Identification du chiffrement SSL

Cliquez sur l'image pour l'agrandir.

Il est à noter que le contenu de ce dossier peut changer d’une cible à une autre. D’autres fichiers peuvent apparaitre si d’autres failles sont trouvées.

webs

Contenu du dossier webs

Cliquez sur l'image pour l'agrandir.

📁 Fichier 📝 Description 🔧 Origine / Outils probables 📊 Valeur pour l'attaquant / analyste ⚠️ Risque lors de la collecte
dict_keys.txt Liste des clés extraites de données web (ex. clés API trouvées dans JS, paramètres GET/POST). gau, waybackurls, paramspider, extraction regex. 📈 Élevée – permet de cibler des paramètres sensibles ou identifiants API. 🟢 Faible – extraction passive.
dict_values.txt Liste des valeurs associées aux clés trouvées (tokens, noms de ressources). Même outils qu'au-dessus. 📈 Moyenne à élevée – peut contenir des secrets ou références internes. 🟢 Faible – extraction passive.
dict_words.txt Liste de mots-clés extraits du contenu web, utilisable pour du fuzzing ciblé. cewl, gau, parsing HTML. 📈 Moyenne – améliore les wordlists personnalisées. 🟢 Faible – extraction passive.
password_dict.txt Liste de mots trouvés pouvant servir comme mots de passe (noms internes, projets, personnes). cewl, parsing des pages internes/publiques. 📈 Très élevée – peut servir directement à du credential stuffing ou brute-force. 🟢 Faible – extraction passive.
robots_wordlist.txt Mots ou chemins issus des fichiers robots.txt détectés. httpx, parsing robots.txt. 📈 Moyenne – révèle des chemins volontairement masqués au public. 🟢 Faible – requête HTTP simple.
url_extract.txt URLs extraites (brutes, toutes extensions). gau, hakrawler, waybackurls. 📈 Très élevée – donne surface d'attaque complète. 🟢 Faible – collecte passive.
url_extract_nodupes.txt Même que ci-dessus mais dédupliqué. Idem. 📈 Très élevée – version épurée pour exploitation directe. 🟢 Faible – idem.
urls_by_ext.txt URLs regroupées par extension (.php, .asp, .js, etc.). gf, tri personnalisé. 📈 Élevée – permet de cibler des langages précis pour attaques spécifiques. 🟢 Faible – passif.
web_full_info.txt Rapport détaillé sur les hôtes web : titres de pages, status HTTP, technologies détectées, SSL, captures éventuelles. httpx, whatweb, wappalyzer, gowitness. 📈 Très élevée – profiling complet de l'application. 🟠 Moyen – certaines détections actives (requêtes HTTP multiples).
web_full_info_plain.txt Version texte brut du rapport ci-dessus, sans mise en forme. Idem. 📈 Très élevée – même utilité que .txt formaté. 🟠 Moyen – idem.
webs.txt Liste de services web détectés (URL uniques). httpx, httprobe. 📈 Très élevée – base pour fuzzing, vuln scan. 🟢 Faible – actif léger (HEAD/GET).
webs_all.txt Liste complète incluant doublons, tous les services web détectés. Idem. 📈 Très élevée – version brute avant filtrage. 🟢 Faible – idem.

Ce répertoire contient de nombreux fichiers, mais ce sont surtout des mots-clés utilisés pour tenter de pénétrer sur mon site. Rien de visible pour moi ici.

fuzzing

Contenu du dossier fuzz

Cliquez sur l'image pour l'agrandir.

📁 Fichier 📝 Description 🔧 Origine / Outils probables 📊 Valeur pour l'attaquant / analyste ⚠️ Risque lors de la collecte
fuzzing_full.txt Résultats complets de brute-force de chemins et fichiers sur l'ensemble des cibles web identifiées. Contient : chemins trouvés, codes HTTP, tailles de réponse. ffuf, feroxbuster, wordlists (SecLists, listes custom). 📈 Très élevée – peut révéler interfaces d'admin, backups, API cachées. 🔴 Élevé – envoi massif de requêtes HTTP, détectable, peut surcharger le serveur ou déclencher WAF.
k8s.myprivatelab.tech.txt Résultats de fuzzing ciblé sur ce sous-domaine précis. ffuf / feroxbuster avec scope limité. 📈 Très élevée – recherche de points d'entrée spécifiques à cet hôte Kubernetes. 🔴 Élevé – idem fuzzing_full.txt mais charge limitée à un hôte.
myprivatelab.tech.txt Résultats de fuzzing ciblé sur le domaine racine. Idem. 📈 Très élevée – découverte potentielle de répertoires sensibles sur le site principal. 🔴 Élevé – idem.
www.myprivatelab.tech.txt Résultats de fuzzing ciblé sur le sous-domaine www. Idem. 📈 Très élevée – détection d'éléments cachés du site public. 🔴 Élevé – idem.

Pareil a ce niveau. Rien de détecté pour mon domaine.

js

Contenu du dossier js

Cliquez sur l'image pour l'agrandir.

📁 Fichier 📝 Description 🔧 Origine / Outils probables 📊 Valeur pour l'attaquant / analyste ⚠️ Risque lors de la collecte
js_livelinks.txt Liste d'URLs actives extraites des fichiers JavaScript détectés sur les sites cibles. getJS, subjs, parsing HTML, LinkFinder. 📈 Très élevée – souvent contient endpoints API, URLs internes, services backend. 🟢 Faible – extraction passive après récupération des JS publics.
js_secrets.txt Clés API, tokens, credentials, ou informations sensibles détectées dans les JS. SecretFinder, regex custom, LinkFinder. 🚀 Critique – peut donner accès direct à API, BDD, ou services cloud. 🟢 Faible – passif (analyse locale des fichiers JS récupérés).
url_extract_js.txt Ensemble complet des URLs extraites de JS (incluant celles non actives ou en doublon). Idem. 📈 Élevée – utile pour enrichir la surface d'attaque et identifier services. 🟢 Faible – idem.

Ici aussi on est plutôt safe. C’est l’avantage d’avoir un site web non basé sur un CMS et sans base de données. Le fait de rester simple limite les risques de failles.

Analyse intégrée via IA

Il reste à traiter du report automatique proposé en fin de scan par reconftw.

Il existe plusieurs façons de l’exprimer, notamment sous les formes « executive », « brief » ou encore « bug hunter ».Cela dépend du public visé.

Contrairement à ce que j’explique dans mon premier article, j’ai finalement retenu un autre LLM, à savoir qwen2.5 en lieu et place de foundation-sec-abliterated. Ce dernier fournissait un report totalement inexploitable.

J’ai donc reparamétré reconftw avec qwen2.5 au niveau du fichier reconftw.cfg.

Changement de LLM

Cliquez sur l'image pour l'agrandir.

Mais même avec ce LLM, j’ai trouvé la sortie peu pertinente et peu fiable.

Vous obtenez un fichier Markdown, que vous pouvez transformer en HTML à l’aide d’un module complémentaire dans Visual Studio Code.

Conversion du rapport en HTML

Cliquez sur l'image pour l'agrandir.

Le fichier obtenu est très générique et, finalement peut parlant.

Résultat du rapport IA

Cliquez sur l'image pour l'agrandir.

Cela peut être dû à l’utilisation d’un modèle trop limité en termes de paramètres, mais mon GPU ne peut pas en offrir davantage. Je pense également qu’au vu du peu d’éléments à risque remonté par le pentest, lié au simple scan de mon site web, qui finalement n’expose que peu d’assets, l’IA est un peu en manque de données pour fournir un rapport pertinent.

Conclusion

C’est ici que se termine cette initiation au pentesting. J’ai appris énormément de choses en rédigeant les deux articles associés. La cybersécurité est un enjeu clef pour les entreprises et extrêmement intéressant à suivre. Mais c’est aussi un domaine d’expertise très spécifique nécessitant des compétences techniques avancées et un minimum d’expérience.

Néanmoins l’explosion de l’IA associé à la mise à disposition d’outil aussi puissant que reconftw peut permettre de mettre un premier pas dans le pentesting.

En se tenant informé des meilleures pratiques et en utilisant l’IA de manière appropriée, il est possible d’évaluer l'étanchéité de son système pour déterminer le niveau de risque informatique associé.

Ce n’est certainement pas suffisant, mais c’est un bon début et une bonne approche pour entamer un cycle d’amélioration continu tourné autour de la cybersécurité.

Rien ne remplacera une véritable expertise et des campagnes de pentesting professionnalisées incluant des engagements forts et une durée bien plus importante que de simples scans joués automatiquement.

Mais la cybersécurité reste l’affaire de tous, et chacun à son niveau peut participer à réduire l’exposition de son entreprise à ce fléau. Expérimenter et se former font partie des bonnes idées pour réduire son risque cyber, il faut savoir reconnaitre son niveau d’expertise et ne pas hésiter à compléter ses propres démarches par des sollicitations tierces de sociétés spécialisées.

Me concernant, cette initiation m’a donné envie d’en savoir plus et d’aller plus loin dans ce domaine pour mieux intégrer la cyber dans mes projets…Je ne suis pas près de perdre la passion 😊.