# Analyse statique

## Méthodologie

1. 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.
2. Utiliser un beautifer de code pour le rendre lisible si il est obfusqué.
3. Rechercher des liens relatifs pour augmenter votre surface d'attaque
4. Rechercher des secrets (api, password, token etc)
5. Rechercher des mauvaises pratiques et fonctions sensibles dans le code (innerHTML, dangerouslytSetInnerHTML, bypassSecurityTrust, eval, window\.postMessage, window\.localStorage, window\.sessionStorage...)
6. Vérifier les versions utilisées à la recherches de CVE connues.
7. Rechercher des mécanismes de chiffrement faibles.
8. Rechercher des commentaires de développeurs interessants
9. Rechercher des endpoint de debug (peu mener à des élévations de privilèges)
10. 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.

## Outils

### OWASP Benchmark

{% embed url="<https://owasp.org/www-community/Source_Code_Analysis_Tools>" %}

### Semgrep

Semgrep est un analyseur de code source qui se base sur des règles "grep" pour détecter des patterns potentiellement vulnérables. A l'image de nuclei, c'est un outil pour lequel la communauté peut créer et partager ses propres régles etc.

Ressources:

* <https://github.com/semgrep/semgrep>
* <https://www.sstic.org/2023/presentation/analyse_statique_de_code_avec_semgrep/>

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

{% hint style="warning" %}
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():

&#x20;             <mark style="color:orange;">time.sleep(1)</mark>&#x20;

&#x20;             p.apply\_async(worker, (queue,result,settings))

&#x20;queue.join(
{% endhint %}

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:

1. Ouvrir "index.html"
2. coller le code javascript
3. cliquer sur scanner
4. voir les resultats dans "report.html"

ressource: <https://github.com/dpnishant/jsprime>

### Sourcemapper

Extracteur des arborescences source JavaScript des fichiers Sourcemap.

Exemple d'utilisation:

```
$ ./sourcemapper -output dhubsrc -url https://hub.docker.com/public/js/client.356c14916fb23f85707f.js.map
```

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](https://github.com/wireghoul/graudit/)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://blog.s1rn3tz.ovh/pentest-web/analyse-statique.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
