hacktricks/network-services-pentesting/pentesting-web/code-review-tools.md

246 lines
17 KiB
Markdown
Raw Normal View History

2023-06-03 13:10:46 +00:00
# Outils d'analyse de code
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) **groupe Discord** ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>
2023-06-03 13:10:46 +00:00
## Général
2020-11-10 09:27:45 +00:00
2022-09-27 00:18:19 +00:00
* [**https://owasp.org/www-community/Source\_Code\_Analysis\_Tools**](https://owasp.org/www-community/Source\_Code\_Analysis\_Tools)\
* [**https://github.com/analysis-tools-dev/static-analysis**](https://github.com/analysis-tools-dev/static-analysis)
2020-11-10 09:27:45 +00:00
```bash
https://www.sonarqube.org/downloads/
https://deepsource.io/signup/
https://github.com/pyupio/safety
https://github.com/returntocorp/semgrep
https://github.com/WhaleShark-Team/cobra
2021-09-25 13:27:46 +00:00
https://github.com/insidersec/insider
2020-11-10 09:27:45 +00:00
# Find interesting strings
https://github.com/s0md3v/hardcodes
https://github.com/micha3lb3n/SourceWolf
https://libraries.io/pypi/detect-secrets
```
2022-05-07 10:35:17 +00:00
## JavaScript
2023-06-03 13:10:46 +00:00
### Découverte
2022-09-02 04:20:58 +00:00
1. Burp:
2023-06-03 13:10:46 +00:00
- Spider et découvrir le contenu
- Sitemap > filtre
- Sitemap > clic droit sur le domaine > Outils d'engagement > Trouver des scripts
2022-09-02 04:20:58 +00:00
2. [WaybackURLs](https://github.com/tomnomnom/waybackurls):
- `waybackurls <domain> |grep -i "\.js" |sort -u`
2023-06-03 13:10:46 +00:00
### Analyse statique
#### Déminifier/embellir
2022-09-02 04:20:58 +00:00
https://prettier.io/playground/
https://beautifier.io/
2023-06-03 13:10:46 +00:00
#### Déobfusquer/Décompresser
__Note__: Il peut ne pas être possible de déobfusquer complètement.
1. Trouver et utiliser les fichiers .map:
- Si les fichiers .map sont exposés, ils peuvent être utilisés pour déobfusquer facilement.
- Couramment, foo.js.map est mappé à foo.js. Recherchez-les manuellement.
- Utilisez [JS Miner](https://github.com/PortSwigger/js-miner) pour les rechercher.
- Assurez-vous qu'une analyse active est effectuée.
- Lire '[Conseils/Notes](https://github.com/minamo7sen/burp-JS-Miner/wiki#tips--notes)'
- Si vous les trouvez, utilisez [Maximize](https://www.npmjs.com/package/maximize) pour déobfusquer.
2. Sans fichiers .map, essayez JSnice:
- Références: http://jsnice.org/ & https://www.npmjs.com/package/jsnice
- Conseils:
- Si vous utilisez jsnice.org, cliquez sur le bouton d'options à côté du bouton "Nicify JavaScript" et désélectionnez "Infer types" pour réduire l'encombrement du code avec des commentaires.
- Assurez-vous de ne laisser aucune ligne vide avant le script, car cela peut affecter le processus de déobfuscation et donner des résultats inexacts.
3. Utilisez console.log(<packerReturnVariable>);
- Trouvez la valeur de retour à la fin et changez-la en `console.log(<packerReturnVariable>);` pour que le js déobfusqué soit imprimé au lieu d'être exécuté.
- Ensuite, collez le js modifié (et toujours obfusqué) dans https://jsconsole.com/ pour voir le js déobfusqué enregistré dans la console.
- Enfin, collez la sortie déobfusquée dans https://prettier.io/playground/ pour l'embellir pour l'analyse.
- __Note__: Si vous voyez toujours du js empaqueté (mais différent), il peut être empaqueté de manière récursive. Répétez le processus.
#### Analyser
Références:
2022-09-02 04:20:58 +00:00
https://medium.com/techiepedia/javascript-code-review-guide-for-bug-bounty-hunters-c95a8aa7037a
2023-06-03 13:10:46 +00:00
Recherchez:
- Chargement anti-débogage
2022-09-02 04:20:58 +00:00
- Angular: [enableProdMode](https://blog.nvisium.com/angular-for-pentesters-part-2)
- Secrets
2023-06-03 13:10:46 +00:00
- Utilisez:
2022-09-02 04:20:58 +00:00
- [JS Miner](https://github.com/PortSwigger/js-miner)
- [RegHex](https://github.com/l4yton/RegHex) patterns
- [gf](https://github.com/tomnomnom/gf/tree/master/examples) patterns
2023-06-03 13:10:46 +00:00
- Recherchez des motifs de dictionnaire pertinents:
2022-09-02 04:20:58 +00:00
- pass, user, admin
- auth, login, sign, challenge, 2fa
- key, apikey, api_key, api-key, jwt, token
- secret, security, secure
- ...
2023-06-03 13:10:46 +00:00
- Examen manuel
- Si une clé API est trouvée, vérifiez ici la syntaxe d'utilisation potentielle: https://github.com/streaak/keyhacks.
- Fonctions vulnérables
- InnerHTML() - Si vous avez trouvé cela, cela signifie qu'il y a une chance potentielle de XSS si aucune désinfection appropriée n'a lieu. Même si votre charge utile est désinfectée, ne vous inquiétez pas. Tracez le code pour savoir où se trouve la désinfection. Étudiez-le et essayez de contourner la désinfection.
- Postmessage() - Si vous avez lu mon précédent article (https://medium.com/techiepedia/what-are-sop-cors-and-ways-to-exploit-it-62a5e02100dc), vous remarquerez que Postmessage() pourrait entraîner un problème potentiel de CORS. Si le deuxième paramètre de la fonction est défini sur *, vous êtes chanceux. Consultez mon article précédent pour comprendre davantage le mécanisme derrière.
- String.prototype.search() - Cette fonction semble normale. Pourquoi serait-ce une fonction dangereuse? Eh bien, c'est parce que certains développeurs l'ont utilisée pour trouver l'occurrence d'une chaîne à l'intérieur d'une autre chaîne. Cependant, "." est traité comme un caractère générique dans cette fonction. Donc, si cette fonction est utilisée comme vérification de désinfection, vous pouvez simplement la contourner en entrant ".". Consultez le rapport hackerone de Filedescryptor: https://hackerone.com/reports/129873
- Endpoints et paramètres
- Utilisez [LinkFinder](https://github.com/GerbenJavado/LinkFinder) & [JS Miner](https://github.com/PortSwigger/js-miner).
- Bibliothèques et dépendances vulnérables
- Utilisez [Retire.js](https://retirejs.github.io/retire.js/) et [NPM](https://snyk.io/advisor/) (faites défiler jusqu'à la section sécurité > lien toutes les versions).
- URLs Cloud
- Utilisez [JS Miner](https://github.com/PortSwigger/js-miner).
- Sous-domaines
- Utilisez [JS Miner](https://github.com/PortSwigger/js-miner).
- Erreurs de logique
- Acquérir une connaissance de la situation:
2022-09-02 04:20:58 +00:00
- `use strict;`?
2023-06-03 13:10:46 +00:00
- Recherchez des contrôles côté client:
2022-09-02 04:20:58 +00:00
- disable, enable, hidden, hide, show
- catch, finally, throw, try
- input, validate, verify, valid, correct, check, confirm, require, ..
2023-06-03 13:10:46 +00:00
- Recherchez des non-primitifs:
2022-09-02 04:20:58 +00:00
- function , =>
- class
2023-06-03 13:10:46 +00:00
### Analyse dynamique
2022-09-02 04:20:58 +00:00
2023-06-03 13:10:46 +00:00
Références
2022-09-02 04:20:58 +00:00
- https://www.youtube.com/watch?v=_v8r_t4v6hQ
- https://blog.nvisium.com/angular-for-pentesters-part-1
- https://blog.nvisium.com/angular-for-pentesters-part-2
2023-06-03 13:10:46 +00:00
Outils
2022-09-02 04:20:58 +00:00
- https://portswigger.net/burp/documentation/desktop/tools/dom-invader
2023-06-03 13:10:46 +00:00
#### Références moins utilisées
2022-09-02 04:20:58 +00:00
- https://cyberchef.org/
- https://olajs.com/javascript-prettifier
- https://jshint.com/
- https://github.com/jshint/jshint/
2020-11-10 09:27:45 +00:00
2022-05-07 10:35:17 +00:00
## NodeJS
2022-04-11 00:18:13 +00:00
```
2020-11-10 09:27:45 +00:00
https://github.com/ajinabraham/nodejsscan
```
2022-05-07 10:35:17 +00:00
## Electron
2020-11-10 09:27:45 +00:00
2023-06-03 13:10:46 +00:00
Electron est un framework open source qui permet de créer des applications de bureau multiplateformes en utilisant des technologies web telles que HTML, CSS et JavaScript. Il est utilisé par de nombreuses applications populaires telles que Slack, Discord et Visual Studio Code.
Cependant, l'utilisation d'Electron peut présenter des risques de sécurité, car il permet aux développeurs d'exécuter du code JavaScript côté client avec des privilèges élevés. Cela signifie que si une application Electron est compromise, un attaquant peut potentiellement accéder à des informations sensibles telles que des jetons d'authentification ou des clés API.
Il est donc important de prendre des mesures de sécurité appropriées lors de la création d'applications Electron, telles que la validation des entrées utilisateur, la désactivation de l'exécution de code à distance et la mise en œuvre de politiques de sécurité strictes pour les modules tiers utilisés dans l'application.
2022-04-11 00:18:13 +00:00
```
2020-11-10 09:27:45 +00:00
https://github.com/doyensec/electronegativity
```
2022-05-07 10:35:17 +00:00
## Python
2020-11-10 09:27:45 +00:00
2023-06-03 13:10:46 +00:00
Python est un langage de programmation interprété de haut niveau, orienté objet et multiplateforme. Il est souvent utilisé pour le développement web, l'analyse de données, l'automatisation de tâches et la création de scripts. Python est également largement utilisé dans le domaine de la sécurité informatique pour l'automatisation de tâches de pentesting et l'écriture d'outils de hacking.
Les outils de code review pour Python incluent PyCharm, PyLint, Flake8 et Bandit. PyCharm est un environnement de développement intégré (IDE) pour Python qui offre des fonctionnalités de débogage, de refactoring et de test. PyLint est un outil de vérification de code qui détecte les erreurs de syntaxe, les erreurs de style et les erreurs logiques dans le code Python. Flake8 est un outil de vérification de code qui combine PyLint, PyFlakes et McCabe pour détecter les erreurs de syntaxe, les erreurs de style et les erreurs de complexité dans le code Python. Bandit est un outil de sécurité de code source qui détecte les vulnérabilités de sécurité dans le code Python, telles que les injections SQL, les fuites d'informations et les vulnérabilités de contrôle d'accès.
2020-11-10 09:27:45 +00:00
```bash
# bandit
https://github.com/PyCQA/bandit
# pyt
https://github.com/python-security/pyt
```
2022-05-07 10:35:17 +00:00
## .NET
2020-11-10 09:27:45 +00:00
2023-06-03 13:10:46 +00:00
## Description
.NET is a free, open-source, cross-platform framework for building modern cloud-based applications. It is widely used for developing web applications, desktop applications, and mobile applications.
## Code Review Tools
- [Roslyn Security Guard](https://security-code-scan.github.io/RoslynSecurityGuard/)
- [.NET Security Guard](https://github.com/SecurityGuardNET/SecurityGuard)
- [SonarQube](https://www.sonarqube.org/)
- [Resharper](https://www.jetbrains.com/resharper/)
- [Visual Studio Code](https://code.visualstudio.com/)
- [Visual Studio](https://visualstudio.microsoft.com/)
## Useful .NET Libraries
- [Microsoft.AspNetCore.DataProtection](https://www.nuget.org/packages/Microsoft.AspNetCore.DataProtection/)
- [Microsoft.AspNetCore.Cryptography.KeyDerivation](https://www.nuget.org/packages/Microsoft.AspNetCore.Cryptography.KeyDerivation/)
- [Microsoft.AspNetCore.Identity](https://www.nuget.org/packages/Microsoft.AspNetCore.Identity/)
- [Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation](https://www.nuget.org/packages/Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation/)
- [Microsoft.AspNetCore.WebUtilities](https://www.nuget.org/packages/Microsoft.AspNetCore.WebUtilities/)
- [Microsoft.Extensions.Caching.Memory](https://www.nuget.org/packages/Microsoft.Extensions.Caching.Memory/)
- [Microsoft.Extensions.Configuration](https://www.nuget.org/packages/Microsoft.Extensions.Configuration/)
- [Microsoft.Extensions.DependencyInjection](https://www.nuget.org/packages/Microsoft.Extensions.DependencyInjection/)
- [Microsoft.Extensions.Logging](https://www.nuget.org/packages/Microsoft.Extensions.Logging/)
- [Microsoft.Extensions.Options.ConfigurationExtensions](https://www.nuget.org/packages/Microsoft.Extensions.Options.ConfigurationExtensions/)
- [Microsoft.Extensions.Options.DataAnnotations](https://www.nuget.org/packages/Microsoft.Extensions.Options.DataAnnotations/)
- [Microsoft.Extensions.WebEncoders](https://www.nuget.org/packages/Microsoft.Extensions.WebEncoders/)
2020-11-10 09:27:45 +00:00
```bash
# dnSpy
https://github.com/0xd4d/dnSpy
# .NET compilation
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe test.cs
```
2022-05-07 10:35:17 +00:00
## Java
2020-11-10 09:27:45 +00:00
2023-06-03 13:10:46 +00:00
Java est un langage de programmation orienté objet populaire utilisé pour développer des applications pour une variété de plates-formes. Il est souvent utilisé pour développer des applications Web et mobiles. Java est également utilisé pour développer des applications pour les plates-formes cloud et SaaS.
Les outils de révision de code Java sont des outils qui aident les développeurs à trouver des erreurs de code et des vulnérabilités de sécurité dans leur code Java. Ces outils peuvent être utilisés pour détecter des erreurs de syntaxe, des erreurs de logique, des vulnérabilités de sécurité et d'autres problèmes de code.
Certains des outils de révision de code Java les plus populaires sont FindBugs, PMD et Checkstyle. Ces outils peuvent être utilisés pour détecter des erreurs de code courantes telles que les fuites de mémoire, les erreurs de syntaxe et les vulnérabilités de sécurité. Ils peuvent également être utilisés pour détecter des erreurs de logique et d'autres problèmes de code plus complexes.
Les outils de révision de code Java peuvent être utilisés pour améliorer la qualité du code et réduire les risques de sécurité. Ils peuvent également être utilisés pour améliorer la productivité des développeurs en leur permettant de trouver et de corriger rapidement les erreurs de code.
2020-11-10 09:27:45 +00:00
```bash
# JD-Gui
https://github.com/java-decompiler/jd-gui
# Java compilation step-by-step
javac -source 1.8 -target 1.8 test.java
mkdir META-INF
echo "Main-Class: test" > META-INF/MANIFEST.MF
jar cmvf META-INF/MANIFEST.MF test.jar test.class
```
2023-06-03 13:10:46 +00:00
| Tâche | Commande |
2022-04-11 00:18:13 +00:00
| --------------- | --------------------------------------------------------- |
2023-06-03 13:10:46 +00:00
| Exécuter un Jar | java -jar \[jar] |
| Décompresser Jar| unzip -d \[répertoire de sortie] \[jar] |
| Créer un Jar | jar -cmf META-INF/MANIFEST.MF \[jar de sortie] \* |
| Base64 SHA256 | sha256sum \[fichier] \| cut -d' ' -f1 \| xxd -r -p \| base64 |
| Supprimer la signature | rm META-INF/_.SF META-INF/_.RSA META-INF/\*.DSA |
| Supprimer du Jar| zip -d \[jar] \[fichier à supprimer] |
| Décompiler une classe | procyon -o . \[chemin de la classe] |
| Décompiler un Jar | procyon -jar \[jar] -o \[répertoire de sortie] |
| Compiler une classe | javac \[chemin du fichier .java] |
2020-11-10 09:27:45 +00:00
2022-05-07 10:35:17 +00:00
## Go
2021-05-26 11:18:48 +00:00
```bash
https://github.com/securego/gosec
```
2022-05-07 10:35:17 +00:00
## PHP
2023-06-03 13:10:46 +00:00
[Psalm](https://phpmagazine.net/2018/12/find-errors-in-your-php-applications-with-psalm.html) et [PHPStan](https://phpmagazine.net/2020/09/phpstan-pro-edition-launched.html).
2023-06-03 13:10:46 +00:00
### Plugins Wordpress
2022-04-11 00:18:13 +00:00
2022-05-07 10:35:17 +00:00
[https://www.pluginvulnerabilities.com/plugin-security-checker/](https://www.pluginvulnerabilities.com/plugin-security-checker/)
2022-04-28 16:01:33 +00:00
2022-05-07 10:35:17 +00:00
## Solidity
* [https://www.npmjs.com/package/solium](https://www.npmjs.com/package/solium)
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>