🗿Analyse statique
Revue de code
Méthodologie
Récupérer des fichiers via le filtre d'extension burp suite, via les outils de développement du navigateur ou via la waybackmachine et autres outils.
Utiliser un beautifer de code pour le rendre lisible si il est obfusqué.
Rechercher des liens relatifs pour augmenter votre surface d'attaque
Rechercher des secrets (api, password, token etc)
Rechercher des mauvaises pratiques et fonctions sensibles dans le code (innerHTML, dangerouslytSetInnerHTML, bypassSecurityTrust, eval, window.postMessage, window.localStorage, window.sessionStorage...)
Vérifier les versions utilisées à la recherches de CVE connues.
Rechercher des mécanismes de chiffrement faibles.
Rechercher des commentaires de développeurs interessants
Rechercher des endpoint de debug (peu mener à des élévations de privilèges)
Rechercher des fichiers de backup et de config (.conf, .env, .cnf, .cfg, .cf, .ini, .sys, .plist...)
Autres méthodologies (Demande plus d'expertise)
Focus sur les fonctions importantes
Cette méthodologie vise à vérifier en priorités les fonctions sensibles types fonctions d'authentification, fonctions de reset de mot de passe, fonctions de changement d'état etc.
Focus sur les entrées utilisateurs
Une autre approche consiste à lire attentivement le code qui traite les entrées de l'utilisateur. Les paramètres de requête HTTP, les en-têtes HTTP, HTTP les chemins de requête, les entrées de base de données, les lectures de fichiers et les téléchargements de fichiers fournissent les points d'entrés principaux aux attaquants pour exploiter les vulnérabilités de l'application.
Relative Url Extractor
relative-url-extractor est un script ruby permettant d'extraire les chemins relatifs d'un fichier.
exemple d'utilisation:
$ cat file.js | ./extractor.rb
ressource: https://github.com/jobertabma/relative-url-extractor
DumpsterDiver
DumpsterDiver est un outil d'analyse statique dans divers fichiers
exemple d'utilisation:
$ python3 DumpsterDiver.py -p /path/to/file.js
ressource: https://github.com/securing/DumpsterDiver
Si vous avez une erreur avec la lib multiprocessing, ajoutez un time.sleep(1) après le "while" dans le script core.py:
p = multiprocessing.Pool(multiprocessing.cpu_count())
while queue.qsize():
time.sleep(1)
p.apply_async(worker, (queue,result,settings))
queue.join(
Vous pouvez aussi utiliser grep, awk ou sed pour faire ces recherches manuellement.
Jsprime
Jsprime est un outil d'analyse statique permettant de scanner un code javascript à la recherches de mauvaises pratiques de développement.
Utilisation:
Ouvrir "index.html"
coller le code javascript
cliquer sur scanner
voir les resultats dans "report.html"
ressource: https://github.com/dpnishant/jsprime
Sourcemapper
Extracteur des arborescences source JavaScript des fichiers Sourcemap.
Exemple d'utilisation:
ressource: https://github.com/denandz/sourcemapper
Graudit
Graudit est un outil permettant de faire des grep en masse en utilisant des bases de données de signatures.
Exemple d'utilisation:
$ graudit /path/to/project
ressource: https://github.com/wireghoul/graudit
Dernière mise à jour