80,443 - Pentesting Web Methodology

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Basic Info

Le service web est le service le plus courant et étendu et de nombreux types différents de vulnérabilités existent.

Port par défaut : 80 (HTTP), 443(HTTPS)

PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  ssl/https
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

Web API Pentesting

Résumé de la méthodologie

Dans cette méthodologie nous allons supposer que vous allez attaquer un domaine (ou sous-domaine) et seulement celui-ci. Donc, vous devez appliquer cette méthodologie à chaque domaine, sous-domaine ou IP découvert avec un serveur web indéterminé dans le scope.

  • Commencez par identifier les technologies utilisĂ©es par le serveur web. Cherchez des tricks Ă  garder en tĂȘte pendant le reste du test si vous pouvez identifier la tech.
  • Existe-t-il une vulnĂ©rabilitĂ© connue pour la version de la technologie ?
  • Utilise-t-on une well known tech ? Un trick utile pour extraire plus d’informations ?
  • Y a-t-il un specialised scanner Ă  lancer (comme wpscan) ?
  • Lancez des general purposes scanners. On ne sait jamais s’ils vont trouver quelque chose ou des informations intĂ©ressantes.
  • Commencez par les initial checks : robots, sitemap, erreur 404 et SSL/TLS scan (si HTTPS).
  • Commencez le spidering de la page web : il est temps de trouver tous les files, folders et parameters being used. VĂ©rifiez aussi les special findings.
  • Notez que chaque fois qu’un nouveau rĂ©pertoire est dĂ©couvert lors de brute-forcing ou spidering, il doit ĂȘtre spidered.
  • Directory Brute-Forcing : Essayez de brute force tous les dossiers dĂ©couverts Ă  la recherche de nouveaux files et directories.
  • Notez que chaque fois qu’un nouveau rĂ©pertoire est dĂ©couvert lors de brute-forcing ou spidering, il doit ĂȘtre Brute-Forced.
  • Backups checking : Testez si vous pouvez trouver des backups des discovered files en ajoutant des extensions de backup courantes.
  • Brute-Force parameters : Essayez de trouver des paramĂštres cachĂ©s.
  • Une fois que vous avez identifiĂ© tous les endpoints possibles acceptant des user input, vĂ©rifiez tous les types de vulnĂ©rabilitĂ©s liĂ©s.
  • Follow this checklist

Server Version (Vulnerable?)

Identify

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 peuvent ĂȘtre trĂšs utiles pour identifier les technologies et/ou la version utilisĂ©es. Une Nmap scan peut identifier la version du serveur, mais les outils whatweb, webtech ou https://builtwith.com/ peuvent aussi ĂȘtre utiles :

whatweb -a 1 <URL> #Stealthy
whatweb -a 3 <URL> #Aggresive
webtech -u <URL>
webanalyze -host https://google.com -crawl 2

Rechercher vulnerabilities of the web application version

VĂ©rifier s’il y a un WAF

Astuces techniques Web

Quelques astuces pour trouver des vulnérabilités dans différentes technologies bien connues utilisées :

Take into account that the same domain can be using different technologies in different ports, folders and subdomains.
Si l’application web utilise une technologie/plateforme bien connue listĂ©e ci-dessus ou toute autre, n’oubliez pas de chercher sur Internet de nouvelles astuces (et faites-le moi savoir !).

Revue du code source

Si le source code de l’application est disponible sur github, en plus d’effectuer par vous-mĂȘme un White box test de l’application, il existe des informations qui pourraient ĂȘtre utiles pour le Black-Box testing en cours :

  • Is there a Change-log or Readme or Version file or anything with version info accessible via web?
  • How and where are saved the credentials? Is there any (accessible?) file with credentials (usernames or passwords)?
  • Are passwords in plain text, encrypted or which hashing algorithm is used?
  • Is it using any master key for encrypting something? Which algorithm is used?
  • Can you access any of these files exploiting some vulnerability?
  • Is there any interesting information in the github (solved and not solved) issues? Or in commit history (maybe some password introduced inside an old commit)?

Source code Review / SAST Tools

Scanners automatiques

Scanners automatiques à usage général

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 CMS

Si un CMS est utilisĂ©, n’oubliez pas de lancer un scanner, vous pourriez trouver quelque chose d’intĂ©ressant :

Clusterd: JBoss, ColdFusion, WebLogic, Tomcat, Railo, Axis2, Glassfish
CMSScan: WordPress, Drupal, Joomla, vBulletin sites web pour des problÚmes de sécurité. (GUI)
VulnX: Joomla, Wordpress, Drupal, PrestaShop, Opencart
CMSMap: (W)ordpress, (J)oomla, (D)rupal ou (M)oodle
droopscan: Drupal, Joomla, Moodle, Silverstripe, Wordpress

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Ă  disposer de certaines informations sur le serveur web utilisĂ© par le client (si des donnĂ©es sont fournies) et de quelques astuces Ă  garder Ă  l’esprit pendant le test. Si vous avez de la chance, vous avez mĂȘme trouvĂ© un CMS et exĂ©cutĂ© un scanner.

DĂ©couverte pas Ă  pas de l’application Web

À partir de maintenant, nous allons commencer à interagir avec l’application web.

Vérifications initiales

Pages par défaut contenant des informations intéressantes :

  • /robots.txt
  • /sitemap.xml
  • /crossdomain.xml
  • /clientaccesspolicy.xml
  • /.well-known/
  • VĂ©rifiez aussi les commentaires dans les pages principales et secondaires.

Forcer des erreurs

Les serveurs web peuvent se comporter de maniĂšre inattendue lorsque des donnĂ©es Ă©tranges leur sont envoyĂ©es. Cela peut ouvrir vulnĂ©rabilitĂ©s ou entraĂźner la divulgation d’informations sensibles.

  • AccĂ©dez Ă  des pages factices comme /whatever_fake.php (.aspx,.html,.etc)
  • Ajoutez “[]”, “]]”, et “[[” dans les valeurs de cookie et les valeurs de paramĂštre pour provoquer des erreurs
  • GĂ©nĂ©rez une erreur en fournissant l’entrĂ©e /~randomthing/%s Ă  la fin de l’URL
  • Essayez des HTTP Verbs diffĂ©rents comme PATCH, DEBUG ou, pour tester, des verbes incorrects comme FAKE

Vérifiez si vous pouvez téléverser des fichiers (PUT verb, WebDav)

Si vous constatez que WebDav est activĂ© mais que vous n’avez pas suffisamment de permissions pour tĂ©lĂ©verser des fichiers dans le dossier racine, essayez de :

  • Brute Force identifiants
  • TĂ©lĂ©versez des fichiers via WebDav dans le reste des dossiers trouvĂ©s Ă  l’intĂ©rieur de la page web. Il se peut que vous ayez la permission de tĂ©lĂ©verser des fichiers dans d’autres dossiers.

Vulnérabilités SSL/TLS

  • Si l’application n’oblige pas l’utilisation de HTTPS dans aucune partie, alors elle est vulnĂ©rable aux MitM
  • Si l’application envoie des donnĂ©es sensibles (mots de passe) via HTTP, c’est alors une vulnĂ©rabilitĂ© Ă©levĂ©e.

Utilisez testssl.sh pour vérifier la présence de vulnérabilités (Dans les programmes Bug Bounty, probablement ce type de vulnérabilités ne sera pas accepté) et utilisez a2sv pour revérifier les vulnérabilités:

./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>

Information about SSL/TLS vulnerabilities:

Spidering

Lancer une sorte de spider sur le web. L’objectif du spider est de trouver autant de paths que possible dans l’application testĂ©e. Par consĂ©quent, le crawling et les sources externes doivent ĂȘtre utilisĂ©s pour dĂ©couvrir le plus de paths valides possible.

  • gospider (go): HTML spider, LinkFinder dans les JS files et sources externes (Archive.org, CommonCrawl.org, VirusTotal.com).
  • hakrawler (go): HML spider, avec LinkFider pour JS files et Archive.org comme source externe.
  • dirhunt (python): HTML spider, indique aussi les “juicy files”.
  • evine (go): CLI interactive HTML spider. Il recherche aussi dans Archive.org
  • meg (go): Cet outil n’est pas un spider mais peut ĂȘtre utile. Indiquez un fichier avec des hosts et un fichier avec des paths, meg rĂ©cupĂ©rera chaque path pour chaque host et sauvegardera la rĂ©ponse.
  • urlgrab (go): HTML spider avec rendu JS. Cependant, il semble non maintenu, la version prĂ©compilĂ©e est ancienne et le code actuel ne compile pas.
  • gau (go): HTML spider qui utilise des fournisseurs externes (wayback, otx, commoncrawl)
  • ParamSpider: Ce script trouvera les URLs avec des paramĂštres et les listera.
  • galer (go): HTML spider avec rendu JS.
  • LinkFinder (python): HTML spider, avec capabilities de JS beautify capable de chercher de nouveaux paths dans les JS files. Il peut valoir le coup de regarder aussi JSScanner, qui est un wrapper de LinkFinder.
  • goLinkFinder (go): Pour extraire des endpoints Ă  la fois dans le source HTML et dans les fichiers javascript embarquĂ©s. Utile pour bug hunters, red teamers, infosec ninjas.
  • JSParser (python2.7): Script python 2.7 utilisant Tornado et JSBeautifier pour parser les URLs relatives depuis les fichiers JavaScript. Utile pour dĂ©couvrir facilement les requĂȘtes AJAX. Semble non maintenu.
  • relative-url-extractor (ruby): Étant donnĂ© un fichier (HTML) il extraira les URLs en utilisant des regex astucieuses pour trouver et extraire les URLs relatives depuis des fichiers uglifiĂ©s/minifiĂ©s.
  • JSFScan (bash, plusieurs outils): Rassemble des informations intĂ©ressantes depuis les JS files en utilisant plusieurs outils.
  • subjs (go): Trouve les JS files.
  • page-fetch (go): Charge une page dans un navigateur headless et affiche toutes les urls chargĂ©es pour rendre la page.
  • Feroxbuster (rust): Outil de dĂ©couverte de contenu mĂ©langeant plusieurs options des outils prĂ©cĂ©dents
  • Javascript Parsing: Une extension Burp pour trouver paths et params dans les JS files.
  • Sourcemapper: Un outil qui, donnĂ© l’URL .js.map, rĂ©cupĂ©rera le code JS beatified
  • xnLinkFinder: Outil pour dĂ©couvrir des endpoints pour une cible donnĂ©e.
  • waymore: DĂ©couvre des liens depuis la wayback machine (tĂ©lĂ©charge aussi les rĂ©ponses dans la wayback et cherche plus de liens)
  • HTTPLoot (go): Crawl (mĂȘme en remplissant des forms) et trouve aussi des infos sensibles en utilisant des regex spĂ©cifiques.
  • SpiderSuite: Spider Suite est un crawler/spider GUI avancĂ© multi-fonction conçu pour les professionnels de la cybersĂ©curitĂ©.
  • jsluice (go): Package Go et outil en ligne de commande pour extraire URLs, paths, secrets, et autres donnĂ©es intĂ©ressantes depuis du code source JavaScript.
  • ParaForge: ParaForge est une simple Burp Suite extension pour extraire les paramters et endpoints depuis les requĂȘtes afin de crĂ©er des wordlists personnalisĂ©es pour le fuzzing et l’énumĂ©ration.
  • katana (go): Excellent outil pour ça.
  • Crawley (go): Imprime chaque link qu’il trouve.

Brute Force directories and files

Start brute-forcing depuis le dossier racine et assurez-vous de brute-forcer tous les directories trouvés en utilisant cette méthode et tous les directories découverts par le Spidering (vous pouvez faire ce brute-forcing récursivement et préfixer la wordlist utilisée avec les noms des directories trouvés).
Tools:

  • Dirb / Dirbuster - Inclus dans Kali, old (et slow) mais fonctionnel. Autorise les certificats auto-signĂ©s et la recherche rĂ©cursive. Trop lent comparĂ© aux autres options.
  • Dirsearch (python): Il n’autorise pas les certificats auto-signĂ©s mais permet la recherche rĂ©cursive.
  • Gobuster (go): Il autorise les certificats auto-signĂ©s, il n’a pas de recherche rĂ©cursive.
  • Feroxbuster - Fast, supports recursive search.
  • wfuzz wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ
  • ffuf - Fast: ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ
  • uro (python): Ce n’est pas un spider mais un outil qui, donnĂ© la liste d’URLs trouvĂ©es, supprimera les URLs “dupliquĂ©es”.
  • Scavenger: Burp Extension pour crĂ©er une liste de directories depuis l’historique Burp de diffĂ©rentes pages
  • TrashCompactor: Supprime les URLs avec des fonctionnalitĂ©s dupliquĂ©es (basĂ© sur les imports js)
  • Chamaleon: Utilise wapalyzer pour dĂ©tecter les technologies utilisĂ©es et sĂ©lectionner les wordlists Ă  utiliser.

Recommended dictionaries:

Remarque : chaque fois qu’un nouveau directory est dĂ©couvert pendant le brute-forcing ou le spidering, il doit ĂȘtre Brute-Forced.

What to check on each file found

  • Broken link checker: Trouver des broken links dans les HTMLs qui peuvent ĂȘtre propices Ă  des takeovers
  • File Backups: Une fois que vous avez trouvĂ© tous les fichiers, cherchez des backups de tous les fichiers exĂ©cutables (“.php”, “.aspx”
). Variantes communes pour nommer un backup : file.ext~, #file.ext#, ~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp and file.old. Vous pouvez aussi utiliser l’outil bfac ou backup-gen.
  • Discover new parameters: Vous pouvez utiliser des outils comme Arjun, parameth, x8 et Param Miner pour dĂ©couvrir des paramĂštres cachĂ©s. Si possible, tentez de rechercher des paramĂštres cachĂ©s sur chaque fichier web exĂ©cutable.
  • Arjun all default wordlists: https://github.com/s0md3v/Arjun/tree/master/arjun/db
  • Param-miner “params” : https://github.com/PortSwigger/param-miner/blob/master/resources/params
  • Assetnote “parameters_top_1m”: https://wordlists.assetnote.io/
  • nullenc0de “params.txt”: https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773
  • Comments: VĂ©rifiez les commentaires de tous les fichiers, vous pouvez y trouver des credentials ou des hidden functionality.
  • Si vous jouez en CTF, une astuce courante est de cacher des informations dans les commentaires Ă  droite de la page (en utilisant des centaines d’espaces afin que vous ne voyiez pas les donnĂ©es si vous ouvrez le source avec le navigateur). Autre possibilitĂ© : utiliser plusieurs nouvelles lignes et cacher des informations dans un commentaire en bas de la page web.
  • API keys: Si vous trouvez une API key, il existe des projets indiquant comment exploiter des API keys de diffĂ©rentes plateformes : keyhacks, zile, truffleHog, SecretFinder, RegHex, DumpsterDive, EarlyBird
  • Google API keys: Si vous trouvez une API key commençant par AIzaSyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik vous pouvez utiliser le projet gmapapiscanner pour vĂ©rifier quelles APIs la key peut accĂ©der.
  • S3 Buckets: Pendant le spidering, regardez si un subdomain ou un link est reliĂ© Ă  un S3 bucket. Dans ce cas, check the permissions of the bucket.

Special findings

Pendant le spidering et le brute-forcing vous pouvez trouver des choses intéressantes auxquelles il faut faire attention.

Fichiers intéressants

  • Cherchez des links vers d’autres fichiers Ă  l’intĂ©rieur des fichiers CSS.
  • If you find a .git file some information can be extracted
  • Si vous trouvez un .env des informations telles que des api keys, mots de passe de dbs et autres peuvent ĂȘtre trouvĂ©es.
  • Si vous trouvez des API endpoints vous should also test them. Ce ne sont pas des fichiers, mais ils “ressembleront” probablement Ă  des fichiers.
  • JS files: Dans la section spidering plusieurs outils capables d’extraire des paths depuis les JS files ont Ă©tĂ© mentionnĂ©s. Il serait aussi intĂ©ressant de monitorer chaque JS file trouvĂ©e, car dans certaines occasions, un changement peut indiquer qu’une vulnĂ©rabilitĂ© potentielle a Ă©tĂ© introduite dans le code. Vous pouvez utiliser par exemple JSMon.
  • Vous devriez aussi vĂ©rifier les JS files dĂ©couverts avec RetireJS ou JSHole pour voir s’ils sont vulnĂ©rables.
  • Javascript Deobfuscator and Unpacker: https://lelinhtinh.github.io/de4js/, https://www.dcode.fr/javascript-unobfuscator
  • Javascript Beautifier: http://jsbeautifier.org/, http://jsnice.org/
  • JsFuck deobfuscation (javascript with chars:“[]!+” https://enkhee-osiris.github.io/Decoder-JSFuck/)
  • TrainFuck: +72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.
  • À plusieurs occasions, vous devrez comprendre les regular expressions utilisĂ©es. Ceci sera utile : https://regex101.com/ ou https://pythonium.net/regex
  • Vous pouvez aussi monitorer les fichiers oĂč des forms ont Ă©tĂ© dĂ©tectĂ©s, car un changement dans un paramĂštre ou l’apparition d’un nouveau form peut indiquer une nouvelle fonctionnalitĂ© potentiellement vulnĂ©rable.

403 Forbidden/Basic Authentication/401 Unauthorized (bypass)

403 & 401 Bypasses

502 Proxy Error

Si une page rĂ©pond avec ce code, c’est probablement un proxy mal configurĂ©. Si vous envoyez une requĂȘte HTTP comme : GET https://google.com HTTP/1.1 (avec le header Host et d’autres headers communs), le proxy essaiera d’accĂ©der Ă  google.com et vous aurez trouvĂ© un SSRF.

NTLM Authentication - Info disclosure

Si le serveur qui demande l’authentification est Windows ou si vous trouvez un login demandant vos credentials (et demandant le domain), vous pouvez provoquer une information disclosure.
Envoyez le header : “Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=” et Ă  cause du fonctionnement de l’NTLM authentication, le serveur rĂ©pondra avec des infos internes (version IIS, version Windows
) dans le header “WWW-Authenticate”.
Vous pouvez automatiser ceci avec le plugin nmap “http-ntlm-info.nse”.

HTTP Redirect (CTF)

Il est possible d’insĂ©rer du contenu dans une Redirection. Ce contenu ne sera pas affichĂ© Ă  l’utilisateur (le navigateur exĂ©cutera la redirection) mais quelque chose pourrait ĂȘtre cachĂ© dedans.

Web Vulnerabilities Checking

Maintenant qu’une Ă©numĂ©ration complĂšte de l’application web a Ă©tĂ© effectuĂ©e, il est temps de vĂ©rifier un grand nombre de vulnĂ©rabilitĂ©s possibles. Vous pouvez trouver la checklist ici :

Web Vulnerabilities Methodology

Trouvez plus d’infos sur les web vulns :

Monitor Pages for changes

Vous pouvez utiliser des outils tels que https://github.com/dgtlmoon/changedetection.io pour monitorer des pages afin de détecter des modifications qui pourraient introduire des vulnérabilités.

HackTricks Automatic Commands

HackTricks Automatic Commands ```yaml 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.wiki/en/network-services-pentesting/pentesting-web/index.html

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>

> [!TIP]
> Apprenez et pratiquez le hacking AWS :<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Apprenez et pratiquez le hacking GCP : <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
> Apprenez et pratiquez le hacking Azure : <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://training.hacktricks.xyz/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Soutenir HackTricks</summary>
>
> - Vérifiez les [**plans d'abonnement**](https://github.com/sponsors/carlospolop) !
> - **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez-nous sur** **Twitter** 🐩 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Partagez des astuces de hacking en soumettant des PR au** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépÎts github.
>
> </details>