mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 13:13:41 +00:00
438 lines
34 KiB
Markdown
438 lines
34 KiB
Markdown
# 80,443 - Méthodologie de Pentesting Web
|
|
|
|
<details>
|
|
|
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert Red Team AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
|
|
|
Autres façons de soutenir HackTricks:
|
|
|
|
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
|
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
|
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Si vous êtes intéressé par une **carrière en piratage** et pirater l'impossible - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
|
|
|
{% embed url="https://www.stmcyber.com/careers" %}
|
|
|
|
## Informations de Base
|
|
|
|
Le service web est le service le plus **commun et le plus étendu** et de nombreux **types de vulnérabilités différents** existent.
|
|
|
|
**Port par défaut :** 80 (HTTP), 443 (HTTPS)
|
|
```bash
|
|
PORT STATE SERVICE
|
|
80/tcp open http
|
|
443/tcp open ssl/https
|
|
```
|
|
|
|
```bash
|
|
nc -v domain.com 80 # GET / HTTP/1.0
|
|
openssl s_client -connect domain.com:443 # GET / HTTP/1.0
|
|
```
|
|
### Conseils pour les API Web
|
|
|
|
{% content-ref url="web-api-pentesting.md" %}
|
|
[web-api-pentesting.md](web-api-pentesting.md)
|
|
{% endcontent-ref %}
|
|
|
|
## Résumé de la méthodologie
|
|
|
|
> Dans cette méthodologie, nous allons supposer que vous allez attaquer un domaine (ou sous-domaine) et uniquement celui-ci. Vous devriez appliquer cette méthodologie à chaque domaine, sous-domaine ou IP découvert avec un serveur web indéterminé dans le périmètre.
|
|
|
|
* [ ] Commencez par **identifier** les **technologies** utilisées par le serveur web. Recherchez des **astuces** à garder à l'esprit pendant le reste du test si vous parvenez à identifier avec succès la technologie.
|
|
* [ ] Y a-t-il une **vulnérabilité connue** de la version de la technologie?
|
|
* [ ] Utilisation d'une **technologie bien connue**? Une **astuce utile** pour extraire plus d'informations?
|
|
* [ ] Un **scanner spécialisé** à exécuter (comme wpscan)?
|
|
* [ ] Lancez des **scanners à usage général**. On ne sait jamais s'ils vont trouver quelque chose ou s'ils vont trouver des informations intéressantes.
|
|
* [ ] Commencez par les **vérifications initiales**: **robots**, **sitemap**, erreur **404** et analyse **SSL/TLS** (si HTTPS).
|
|
* [ ] Commencez à **spider** la page web: Il est temps de **trouver** tous les **fichiers, dossiers** et **paramètres possibles** utilisés. Vérifiez également les **découvertes spéciales**.
|
|
* [ ] _Notez qu'à chaque fois qu'un nouveau répertoire est découvert lors du brute-forcing ou du spidering, il doit être spideré._
|
|
* [ ] **Brute-Force des répertoires**: Essayez de forcer le passage à tous les dossiers découverts à la recherche de nouveaux **fichiers** et **répertoires**.
|
|
* [ ] _Notez qu'à chaque fois qu'un nouveau répertoire est découvert lors du brute-forcing ou du spidering, il doit être forcé._
|
|
* [ ] Vérification des **sauvegardes**: Testez si vous pouvez trouver des **sauvegardes** des **fichiers découverts** en ajoutant des extensions de sauvegarde courantes.
|
|
* [ ] **Brute-Force des paramètres**: Essayez de **trouver des paramètres cachés**.
|
|
* [ ] Une fois que vous avez **identifié** tous les **points d'extrémité** possibles acceptant une **entrée utilisateur**, vérifiez tous les types de **vulnérabilités** qui y sont liées.
|
|
* [ ] [Suivez cette liste de contrôle](../../pentesting-web/web-vulnerabilities-methodology/)
|
|
|
|
## Version du serveur (Vulnérable?)
|
|
|
|
### Identifier
|
|
|
|
Vérifiez s'il existe des **vulnérabilités connues** pour la **version** du serveur en cours d'exécution.\
|
|
Les **en-têtes HTTP et les cookies de la réponse** pourraient être très utiles pour **identifier** les **technologies** et/ou la **version** utilisée. **Nmap scan** peut identifier la version du serveur, mais les outils [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)ou [**https://builtwith.com/**](https://builtwith.com)**:** pourraient également être utiles.
|
|
```bash
|
|
whatweb -a 1 <URL> #Stealthy
|
|
whatweb -a 3 <URL> #Aggresive
|
|
webtech -u <URL>
|
|
webanalyze -host https://google.com -crawl 2
|
|
```
|
|
Recherchez les **vulnérabilités de la version de l'application Web** [**ici**](../../generic-methodologies-and-resources/search-exploits.md)
|
|
|
|
### **Vérifiez s'il y a un WAF**
|
|
|
|
* [**https://github.com/EnableSecurity/wafw00f**](https://github.com/EnableSecurity/wafw00f)
|
|
* [**https://github.com/Ekultek/WhatWaf.git**](https://github.com/Ekultek/WhatWaf.git)
|
|
* [**https://nmap.org/nsedoc/scripts/http-waf-detect.html**](https://nmap.org/nsedoc/scripts/http-waf-detect.html)
|
|
|
|
### Astuces technologiques Web
|
|
|
|
Quelques **astuces** pour **trouver des vulnérabilités** dans différentes **technologies** bien connues :
|
|
|
|
* [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md)
|
|
* [**Apache**](apache.md)
|
|
* [**Artifactory**](artifactory-hacking-guide.md)
|
|
* [**Buckets**](buckets/)
|
|
* [**CGI**](cgi.md)
|
|
* [**Drupal**](drupal.md)
|
|
* [**Flask**](flask.md)
|
|
* [**Git**](git.md)
|
|
* [**Golang**](golang.md)
|
|
* [**GraphQL**](graphql.md)
|
|
* [**H2 - Base de données SQL Java**](h2-java-sql-database.md)
|
|
* [**Astuces IIS**](iis-internet-information-services.md)
|
|
* [**JBOSS**](jboss.md)
|
|
* [**Jenkins**](broken-reference/)
|
|
* [**Jira**](jira.md)
|
|
* [**Joomla**](joomla.md)
|
|
* [**JSP**](jsp.md)
|
|
* [**Laravel**](laravel.md)
|
|
* [**Moodle**](moodle.md)
|
|
* [**Nginx**](nginx.md)
|
|
* [**PHP (php a beaucoup d'astuces intéressantes qui pourraient être exploitées)**](php-tricks-esp/)
|
|
* [**Python**](python.md)
|
|
* [**Spring Actuators**](spring-actuators.md)
|
|
* [**Symphony**](symphony.md)
|
|
* [**Tomcat**](tomcat.md)
|
|
* [**VMWare**](vmware-esx-vcenter....md)
|
|
* [**Test d'API Web**](web-api-pentesting.md)
|
|
* [**WebDav**](put-method-webdav.md)
|
|
* [**Werkzeug**](werkzeug.md)
|
|
* [**Wordpress**](wordpress.md)
|
|
* [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/)
|
|
|
|
_Tenez compte du fait que le **même domaine** peut utiliser **différentes technologies** sur **différents ports**, **dossiers** et **sous-domaines**._\
|
|
Si l'application Web utilise une **technologie/plateforme bien connue** répertoriée précédemment ou **autre**, n'oubliez pas de **rechercher sur Internet** de nouvelles astuces (et faites-le moi savoir !).
|
|
|
|
### Examen du code source
|
|
|
|
Si le **code source** de l'application est disponible sur **github**, en plus de réaliser un **test White box** de l'application par **vous-même**, il y a **des informations** qui pourraient être **utiles** pour le **test Black-Box** actuel :
|
|
|
|
* Y a-t-il un fichier **Journal des modifications ou Lisez-moi ou Version** ou tout autre élément avec des **informations de version accessibles** via le web ?
|
|
* Comment et où sont sauvegardées les **informations d'identification** ? Y a-t-il un fichier (accessible ?) avec des informations d'identification (noms d'utilisateur ou mots de passe) ?
|
|
* Les **mots de passe** sont-ils en **texte clair**, **chiffrés** ou quel **algorithme de hachage** est utilisé ?
|
|
* Utilise-t-il une **clé principale** pour chiffrer quelque chose ? Quel **algorithme** est utilisé ?
|
|
* Pouvez-vous **accéder à l'un de ces fichiers** en exploitant une vulnérabilité ?
|
|
* Y a-t-il des **informations intéressantes dans les problèmes** (résolus et non résolus) de github ? Ou dans l'**historique des validations** (peut-être un **mot de passe introduit dans une ancienne validation**) ?
|
|
|
|
{% content-ref url="code-review-tools.md" %}
|
|
[code-review-tools.md](code-review-tools.md)
|
|
{% endcontent-ref %}
|
|
|
|
### Scanners automatiques
|
|
|
|
#### Scanners automatiques à usage général
|
|
```bash
|
|
nikto -h <URL>
|
|
whatweb -a 4 <URL>
|
|
wapiti -u <URL>
|
|
W3af
|
|
zaproxy #You can use an API
|
|
nuclei -ut && nuclei -target <URL>
|
|
|
|
# https://github.com/ignis-sec/puff (client side vulns fuzzer)
|
|
node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi2rVUN/?query=FUZZ"
|
|
```
|
|
#### Scanners de CMS
|
|
|
|
Si un CMS est utilisé, n'oubliez pas d'**exécuter un scanner**, peut-être que quelque chose de juteux est trouvé :
|
|
|
|
- [**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat.md)**, Railo, Axis2, Glassfish**\
|
|
- [**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** sites web pour des problèmes de sécurité. (GUI)\
|
|
- [**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal.md)**, PrestaShop, Opencart**\
|
|
- **CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal.md) **ou** [**(M)oodle**](moodle.md)\
|
|
- [**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal.md)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
|
|
```bash
|
|
cmsmap [-f W] -F -d <URL>
|
|
wpscan --force update -e --url <URL>
|
|
joomscan --ec -u <URL>
|
|
joomlavs.rb #https://github.com/rastating/joomlavs
|
|
```
|
|
> À ce stade, vous devriez déjà avoir des informations sur le serveur web utilisé par le client (si des données sont fournies) et quelques astuces à garder à l'esprit pendant le test. Si vous avez de la chance, vous avez peut-être même trouvé un CMS et exécuté un scanner.
|
|
|
|
## Découverte de l'application Web étape par étape
|
|
|
|
> À partir de ce point, nous allons commencer à interagir avec l'application web.
|
|
|
|
### Vérifications initiales
|
|
|
|
**Pages par défaut avec des informations intéressantes :**
|
|
|
|
* /robots.txt
|
|
* /sitemap.xml
|
|
* /crossdomain.xml
|
|
* /clientaccesspolicy.xml
|
|
* /.well-known/
|
|
* Vérifiez également les commentaires dans les pages principales et secondaires.
|
|
|
|
**Forcer des erreurs**
|
|
|
|
Les serveurs web peuvent **avoir un comportement inattendu** lorsqu'ils reçoivent des données étranges. Cela peut ouvrir des **vulnérabilités** ou **révéler des informations sensibles**.
|
|
|
|
* Accédez à des **pages fictives** comme /whatever\_fake.php (.aspx,.html,.etc)
|
|
* Ajoutez "\[]", "]]", et "\[\[" dans les valeurs des **cookies** et des **paramètres** pour créer des erreurs
|
|
* Générez une erreur en donnant une entrée comme **`/~randomthing/%s`** à la **fin** de l'**URL**
|
|
* Essayez des **verbes HTTP différents** comme PATCH, DEBUG ou incorrect comme FAKE
|
|
|
|
#### **Vérifiez si vous pouvez télécharger des fichiers (**[**verbe PUT, WebDav**](put-method-webdav.md)**)**
|
|
|
|
Si vous découvrez que **WebDav** est **activé** mais que vous n'avez pas suffisamment d'autorisations pour **télécharger des fichiers** dans le dossier racine, essayez de :
|
|
|
|
* **Forcer** les identifiants par **brute force**
|
|
* **Télécharger des fichiers** via WebDav dans le **reste** des **dossiers trouvés** à l'intérieur de la page web. Vous pouvez avoir les autorisations pour télécharger des fichiers dans d'autres dossiers.
|
|
|
|
### **Vulnérabilités SSL/TLS**
|
|
|
|
* Si l'application **ne force pas l'utilisation de HTTPS** à un moment donné, alors elle est **vulnérable aux attaques de l'homme du milieu (MitM)**
|
|
* Si l'application **envoie des données sensibles (mots de passe) en utilisant HTTP**. Alors c'est une vulnérabilité élevée.
|
|
|
|
Utilisez [**testssl.sh**](https://github.com/drwetter/testssl.sh) pour vérifier les **vulnérabilités** (dans les programmes de Bug Bounty, ces types de vulnérabilités ne seront probablement pas acceptées) et utilisez [**a2sv** ](https://github.com/hahwul/a2sv) pour re-vérifier les vulnérabilités:
|
|
```bash
|
|
./testssl.sh [--htmlfile] 10.10.10.10:443
|
|
#Use the --htmlfile to save the output inside an htmlfile also
|
|
|
|
# You can also use other tools, by testssl.sh at this momment is the best one (I think)
|
|
sslscan <host:port>
|
|
sslyze --regular <ip:port>
|
|
```
|
|
### Spidering
|
|
|
|
Lancez une sorte d'**araignée** à l'intérieur du web. Le but de l'araignée est de **trouver autant de chemins que possible** à partir de l'application testée. Par conséquent, le crawling web et les sources externes doivent être utilisés pour trouver autant de chemins valides que possible.
|
|
|
|
* [**gospider**](https://github.com/jaeles-project/gospider) (go) : Araignée HTML, LinkFinder dans les fichiers JS et sources externes (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
|
|
* [**hakrawler**](https://github.com/hakluke/hakrawler) (go) : Araignée HTML, avec LinkFinder pour les fichiers JS et Archive.org comme source externe.
|
|
* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python) : Araignée HTML, indique également les "fichiers sensibles".
|
|
* [**evine**](https://github.com/saeeddhqan/evine) (go) : Araignée HTML interactive en CLI. Recherche également dans Archive.org.
|
|
* [**meg**](https://github.com/tomnomnom/meg) (go) : Cet outil n'est pas une araignée mais peut être utile. Vous pouvez simplement indiquer un fichier avec des hôtes et un fichier avec des chemins et meg récupérera chaque chemin sur chaque hôte et enregistrera la réponse.
|
|
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go) : Araignée HTML avec des capacités de rendu JS. Cependant, il semble ne pas être maintenu, la version précompilée est ancienne et le code actuel ne compile pas.
|
|
* [**gau**](https://github.com/lc/gau) (go) : Araignée HTML qui utilise des fournisseurs externes (wayback, otx, commoncrawl).
|
|
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider) : Ce script trouvera des URL avec des paramètres et les listera.
|
|
* [**galer**](https://github.com/dwisiswant0/galer) (go) : Araignée HTML avec des capacités de rendu JS.
|
|
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python) : Araignée HTML, avec des capacités de beauté JS capable de rechercher de nouveaux chemins dans les fichiers JS. Il pourrait également être intéressant de jeter un œil à [JSScanner](https://github.com/dark-warlord14/JSScanner), qui est un wrapper de LinkFinder.
|
|
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go) : Pour extraire des points de terminaison à la fois dans la source HTML et les fichiers javascript intégrés. Utile pour les chasseurs de bugs, les équipes rouges, les ninjas de la cybersécurité.
|
|
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7) : Un script python 2.7 utilisant Tornado et JSBeautifier pour analyser les URL relatives à partir de fichiers JavaScript. Utile pour découvrir facilement les requêtes AJAX. Semble ne pas être maintenu.
|
|
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby) : Étant donné un fichier (HTML), il extraira les URL à partir de celui-ci en utilisant une expression régulière astucieuse pour trouver et extraire les URL relatives des fichiers moches (minifiés).
|
|
* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, plusieurs outils) : Rassemble des informations intéressantes à partir de fichiers JS en utilisant plusieurs outils.
|
|
* [**subjs**](https://github.com/lc/subjs) (go) : Trouver des fichiers JS.
|
|
* [**page-fetch**](https://github.com/detectify/page-fetch) (go) : Charge une page dans un navigateur sans tête et affiche toutes les URL chargées pour charger la page.
|
|
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust) : Outil de découverte de contenu mélangeant plusieurs options des outils précédents.
|
|
* [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions) : Une extension Burp pour trouver des chemins et des paramètres dans les fichiers JS.
|
|
* [**Sourcemapper**](https://github.com/denandz/sourcemapper) : Un outil qui, étant donné l'URL .js.map, vous fournira le code JS beatifié.
|
|
* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder) : C'est un outil utilisé pour découvrir des points de terminaison pour une cible donnée.
|
|
* [**waymore**](https://github.com/xnl-h4ck3r/waymore) : Découvrir des liens à partir de la machine wayback (en téléchargeant également les réponses dans le wayback et en recherchant plus de liens).
|
|
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go) : Crawl (même en remplissant des formulaires) et trouver également des informations sensibles en utilisant des regex spécifiques.
|
|
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite) : Spider Suite est un avancé multi-fonction GUI web security Crawler/Spider conçu pour les professionnels de la cybersécurité.
|
|
* [**jsluice**](https://github.com/BishopFox/jsluice) (go) : C'est un package Go et [outil en ligne de commande](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) pour extraire des URL, des chemins, des secrets et d'autres données intéressantes du code source JavaScript.
|
|
* [**ParaForge**](https://github.com/Anof-cyber/ParaForge) : ParaForge est une simple extension **Burp Suite** pour **extraire les paramètres et les points de terminaison** de la requête pour créer une liste de mots personnalisée pour le fuzzing et l'énumération.
|
|
|
|
### Brute Force directories and files
|
|
|
|
Commencez le **brute-force** à partir du dossier racine et assurez-vous de brute-forcer **tous** les **répertoires trouvés** en utilisant **cette méthode** et tous les répertoires **découverts** par le **Spidering** (vous pouvez effectuer ce brute-forcing **de manière récursive** et ajouter au début de la liste de mots utilisée les noms des répertoires trouvés).\
|
|
Outils :
|
|
|
|
* **Dirb** / **Dirbuster** - Inclus dans Kali, **ancien** (et ** lent**) mais fonctionnel. Autorise les certificats auto-signés et la recherche récursive. Trop lent par rapport aux autres options.
|
|
* [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python) : Il n'autorise pas les certificats auto-signés mais permet la recherche récursive.
|
|
* [**Gobuster**](https://github.com/OJ/gobuster) (go) : Il autorise les certificats auto-signés, il n'a pas de recherche **récursive**.
|
|
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) - Rapide, prend en charge la recherche récursive.
|
|
* [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ`
|
|
* [**ffuf**](https://github.com/ffuf/ffuf) - Rapide : `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
|
|
* [**uro**](https://github.com/s0md3v/uro) (python) : Ce n'est pas une araignée mais un outil qui, étant donné la liste des URL trouvées, supprimera les URL "dupliquées".
|
|
* [**Scavenger**](https://github.com/0xDexter0us/Scavenger) : Extension Burp pour créer une liste de répertoires à partir de l'historique de burp de différentes pages.
|
|
* [**TrashCompactor**](https://github.com/michael1026/trashcompactor) : Supprime les URL avec des fonctionnalités dupliquées (basées sur les imports JS).
|
|
* [**Chamaleon**](https://github.com/iustin24/chameleon) : Il utilise wapalyzer pour détecter les technologies utilisées et sélectionner les listes de mots à utiliser.
|
|
|
|
**Dictionnaires recommandés :**
|
|
|
|
* [https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt](https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt)
|
|
* Dictionnaire inclus dans **Dirsearch**
|
|
* [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10)
|
|
* [Listes de mots Assetnote](https://wordlists.assetnote.io)
|
|
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content)
|
|
* raft-large-directories-lowercase.txt
|
|
* directory-list-2.3-medium.txt
|
|
* RobotsDisallowed/top10000.txt
|
|
* [https://github.com/random-robbie/bruteforce-lists](https://github.com/random-robbie/bruteforce-lists)
|
|
* [https://github.com/google/fuzzing/tree/master/dictionaries](https://github.com/google/fuzzing/tree/master/dictionaries)
|
|
* [https://github.com/six2dez/OneListForAll](https://github.com/six2dez/OneListForAll)
|
|
* [https://github.com/random-robbie/bruteforce-lists](https://github.com/random-robbie/bruteforce-lists)
|
|
* _/usr/share/wordlists/dirb/common.txt_
|
|
* _/usr/share/wordlists/dirb/big.txt_
|
|
* _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
|
|
|
|
_Notez que chaque fois qu'un nouveau répertoire est découvert lors d'une attaque par force brute ou d'une exploration, il doit être soumis à une attaque par force brute._
|
|
|
|
### Ce qu'il faut vérifier sur chaque fichier trouvé
|
|
|
|
* [**Vérificateur de liens brisés**](https://github.com/stevenvachon/broken-link-checker) : Trouvez les liens brisés à l'intérieur des fichiers HTML qui pourraient être sujets à des prises de contrôle.
|
|
* **Sauvegardes de fichiers** : Une fois que vous avez trouvé tous les fichiers, recherchez des sauvegardes de tous les fichiers exécutables ("_.php_", "_.aspx_"...). Les variations courantes pour nommer une sauvegarde sont : _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp et file.old._ Vous pouvez également utiliser l'outil [**bfac**](https://github.com/mazen160/bfac) **ou** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
|
|
* **Découverte de nouveaux paramètres** : Vous pouvez utiliser des outils comme [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **et** [**Param Miner**](https://github.com/PortSwigger/param-miner) **pour découvrir des paramètres cachés. Si possible, vous pourriez essayer de rechercher** des paramètres cachés dans chaque fichier web exécutable.
|
|
* _Tous les wordlists par défaut d'Arjun :_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
|
|
* _Param-miner "params" :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
|
|
* _Assetnote "parameters\_top\_1m" :_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
|
|
* _nullenc0de "params.txt" :_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
|
|
* **Commentaires** : Vérifiez les commentaires de tous les fichiers, vous pouvez y trouver des **identifiants** ou une **fonctionnalité cachée**.
|
|
* Si vous participez à un **CTF**, une "astuce" courante est de **cacher des informations** à l'intérieur des commentaires à **droite** de la **page** (en utilisant **des centaines** d'**espaces** pour que les données ne soient pas visibles si vous ouvrez le code source avec le navigateur). Une autre possibilité est d'utiliser **plusieurs nouvelles lignes** et de **cacher des informations** dans un commentaire en bas de la page web.
|
|
* **Clés API** : Si vous **trouvez une clé API**, il existe un guide indiquant comment utiliser les clés API de différentes plateformes : [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
|
|
* Clés API Google : Si vous trouvez une clé API ressemblant à **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik, vous pouvez utiliser le projet [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) pour vérifier à quelles APIs la clé peut accéder.
|
|
* **Buckets S3** : Lors de l'exploration, vérifiez si un **sous-domaine** ou un **lien** est lié à un **bucket S3**. Dans ce cas, [**vérifiez** les **permissions** du bucket](buckets/).
|
|
|
|
### Découvertes spéciales
|
|
|
|
**En** effectuant l'**exploration** et l'**attaque par force brute**, vous pourriez trouver des **éléments intéressants** que vous devez **remarquer**.
|
|
|
|
**Fichiers intéressants**
|
|
|
|
* Recherchez des **liens** vers d'autres fichiers à l'intérieur des fichiers **CSS**.
|
|
* [Si vous trouvez un fichier _**.git**_, des informations peuvent être extraites](git.md)
|
|
* Si vous trouvez un fichier _**.env**_, des informations telles que des clés API, des mots de passe de bases de données et d'autres informations peuvent être trouvées.
|
|
* Si vous trouvez des **points de terminaison API**, vous [devriez également les tester](web-api-pentesting.md). Ce ne sont pas des fichiers, mais ils leur ressembleront probablement.
|
|
* **Fichiers JS** : Dans la section d'exploration, plusieurs outils permettant d'extraire des chemins à partir de fichiers JS ont été mentionnés. Il serait également intéressant de **surveiller chaque fichier JS trouvé**, car dans certaines situations, un changement peut indiquer qu'une vulnérabilité potentielle a été introduite dans le code. Vous pourriez par exemple utiliser [**JSMon**](https://github.com/robre/jsmon)**.**
|
|
* Vous devriez également vérifier les fichiers JS découverts avec [**RetireJS**](https://github.com/retirejs/retire.js/) ou [**JSHole**](https://github.com/callforpapers-source/jshole) pour voir s'ils sont vulnérables.
|
|
* **Déobfuscateur et désassembleur JavaScript** : [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
|
|
* **Embelleur JavaScript** : [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
|
|
* **Déobfuscation JsFuck** (javascript avec les caractères : "\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/))
|
|
* [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
|
|
* À plusieurs reprises, vous devrez **comprendre les expressions régulières** utilisées, cela sera utile : [https://regex101.com/](https://regex101.com)
|
|
* Vous pourriez également **surveiller les fichiers où des formulaires ont été détectés**, car un changement dans le paramètre ou l'apparition d'un nouveau formulaire peut indiquer une nouvelle fonctionnalité potentiellement vulnérable.
|
|
|
|
**403 Forbidden/Basic Authentication/401 Unauthorized (contournement)**
|
|
|
|
{% content-ref url="403-and-401-bypasses.md" %}
|
|
[403-and-401-bypasses.md](403-and-401-bypasses.md)
|
|
{% endcontent-ref %}
|
|
|
|
**502 Proxy Error**
|
|
|
|
Si une page **répond** avec ce **code**, il s'agit probablement d'un **proxy mal configuré**. **Si vous envoyez une requête HTTP comme : `GET https://google.com HTTP/1.1`** (avec l'en-tête host et d'autres en-têtes courants), le **proxy** tentera d'accéder à _**google.com**_ **et vous aurez découvert une** SSRF.
|
|
|
|
**Authentification NTLM - Divulgation d'informations**
|
|
|
|
Si le serveur en cours d'exécution demandant une authentification est **Windows** ou si vous trouvez une connexion demandant vos **identifiants** (et demandant un **nom de domaine**), vous pouvez provoquer une **divulgation d'informations**.\
|
|
**Envoyez** l'en-tête : `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` et en raison du fonctionnement de l'**authentification NTLM**, le serveur répondra avec des informations internes (version de IIS, version de Windows...) à l'intérieur de l'en-tête "WWW-Authenticate".\
|
|
Vous pouvez **automatiser** cela en utilisant le plugin **nmap** "_http-ntlm-info.nse_".
|
|
|
|
**Redirection HTTP (CTF)**
|
|
|
|
Il est possible d'**insérer du contenu** dans une **redirection**. Ce contenu ne sera pas affiché à l'utilisateur (car le navigateur exécutera la redirection), mais quelque chose pourrait être **caché** à l'intérieur.
|
|
### Vérification des vulnérabilités Web
|
|
|
|
Maintenant qu'une énumération complète de l'application Web a été effectuée, il est temps de vérifier de nombreuses vulnérabilités possibles. Vous pouvez trouver la liste de contrôle ici :
|
|
|
|
{% content-ref url="../../pentesting-web/web-vulnerabilities-methodology/" %}
|
|
[web-vulnerabilities-methodology](../../pentesting-web/web-vulnerabilities-methodology/)
|
|
{% endcontent-ref %}
|
|
|
|
Trouvez plus d'informations sur les vulnérabilités Web dans :
|
|
|
|
* [https://six2dez.gitbook.io/pentest-book/others/web-checklist](https://six2dez.gitbook.io/pentest-book/others/web-checklist)
|
|
* [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html)
|
|
* [https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection](https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection)
|
|
|
|
### Surveiller les pages pour les changements
|
|
|
|
Vous pouvez utiliser des outils tels que [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) pour surveiller les pages à la recherche de modifications qui pourraient introduire des vulnérabilités.
|
|
|
|
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Si vous êtes intéressé par une **carrière en piratage** et pirater l'impiratable - **nous recrutons !** (_maîtrise du polonais à l'écrit et à l'oral requise_).
|
|
|
|
{% embed url="https://www.stmcyber.com/careers" %}
|
|
|
|
### Commandes Automatiques HackTricks
|
|
```
|
|
Protocol_Name: Web #Protocol Abbreviation if there is one.
|
|
Port_Number: 80,443 #Comma separated if there is more than one.
|
|
Protocol_Description: Web #Protocol Abbreviation Spelled out
|
|
|
|
Entry_1:
|
|
Name: Notes
|
|
Description: Notes for Web
|
|
Note: |
|
|
https://book.hacktricks.xyz/pentesting/pentesting-web
|
|
|
|
Entry_2:
|
|
Name: Quick Web Scan
|
|
Description: Nikto and GoBuster
|
|
Command: nikto -host {Web_Proto}://{IP}:{Web_Port} &&&& gobuster dir -w {Small_Dirlist} -u {Web_Proto}://{IP}:{Web_Port} && gobuster dir -w {Big_Dirlist} -u {Web_Proto}://{IP}:{Web_Port}
|
|
|
|
Entry_3:
|
|
Name: Nikto
|
|
Description: Basic Site Info via Nikto
|
|
Command: nikto -host {Web_Proto}://{IP}:{Web_Port}
|
|
|
|
Entry_4:
|
|
Name: WhatWeb
|
|
Description: General purpose auto scanner
|
|
Command: whatweb -a 4 {IP}
|
|
|
|
Entry_5:
|
|
Name: Directory Brute Force Non-Recursive
|
|
Description: Non-Recursive Directory Brute Force
|
|
Command: gobuster dir -w {Big_Dirlist} -u {Web_Proto}://{IP}:{Web_Port}
|
|
|
|
Entry_6:
|
|
Name: Directory Brute Force Recursive
|
|
Description: Recursive Directory Brute Force
|
|
Command: python3 {Tool_Dir}dirsearch/dirsearch.py -w {Small_Dirlist} -e php,exe,sh,py,html,pl -f -t 20 -u {Web_Proto}://{IP}:{Web_Port} -r 10
|
|
|
|
Entry_7:
|
|
Name: Directory Brute Force CGI
|
|
Description: Common Gateway Interface Brute Force
|
|
Command: gobuster dir -u {Web_Proto}://{IP}:{Web_Port}/ -w /usr/share/seclists/Discovery/Web-Content/CGIs.txt -s 200
|
|
|
|
Entry_8:
|
|
Name: Nmap Web Vuln Scan
|
|
Description: Tailored Nmap Scan for web Vulnerabilities
|
|
Command: nmap -vv --reason -Pn -sV -p {Web_Port} --script=`banner,(http* or ssl*) and not (brute or broadcast or dos or external or http-slowloris* or fuzzer)` {IP}
|
|
|
|
Entry_9:
|
|
Name: Drupal
|
|
Description: Drupal Enumeration Notes
|
|
Note: |
|
|
git clone https://github.com/immunIT/drupwn.git for low hanging fruit and git clone https://github.com/droope/droopescan.git for deeper enumeration
|
|
|
|
Entry_10:
|
|
Name: WordPress
|
|
Description: WordPress Enumeration with WPScan
|
|
Command: |
|
|
?What is the location of the wp-login.php? Example: /Yeet/cannon/wp-login.php
|
|
wpscan --url {Web_Proto}://{IP}{1} --enumerate ap,at,cb,dbe && wpscan --url {Web_Proto}://{IP}{1} --enumerate u,tt,t,vp --passwords {Big_Passwordlist} -e
|
|
|
|
Entry_11:
|
|
Name: WordPress Hydra Brute Force
|
|
Description: Need User (admin is default)
|
|
Command: hydra -l admin -P {Big_Passwordlist} {IP} -V http-form-post '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log In&testcookie=1:S=Location'
|
|
|
|
Entry_12:
|
|
Name: Ffuf Vhost
|
|
Description: Simple Scan with Ffuf for discovering additional vhosts
|
|
Command: ffuf -w {Subdomain_List}:FUZZ -u {Web_Proto}://{Domain_Name} -H "Host:FUZZ.{Domain_Name}" -c -mc all {Ffuf_Filters}
|
|
```
|
|
<details>
|
|
|
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
|
|
|
D'autres façons de soutenir HackTricks:
|
|
|
|
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
|
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
|
|
|
</details>
|