From 4f1b0772e50f98d604884e508298aefee90c48c6 Mon Sep 17 00:00:00 2001 From: Translator Date: Sat, 12 Jul 2025 08:57:54 +0000 Subject: [PATCH] Translated ['src/generic-hacking/tunneling-and-port-forwarding.md', 'src --- .../tunneling-and-port-forwarding.md | 22 ++++++++--------- .../sensitive-mounts.md | 12 ++++------ .../ios-pentesting-without-jailbreak.md | 22 ++++++++--------- .../pentesting-web/django.md | 14 +++++------ .../pentesting-web/special-http-headers.md | 12 +++++----- .../sql-injection/ms-access-sql-injection.md | 24 +++++++++---------- 6 files changed, 52 insertions(+), 54 deletions(-) diff --git a/src/generic-hacking/tunneling-and-port-forwarding.md b/src/generic-hacking/tunneling-and-port-forwarding.md index 2a79f9cff..ca9e49ce9 100644 --- a/src/generic-hacking/tunneling-and-port-forwarding.md +++ b/src/generic-hacking/tunneling-and-port-forwarding.md @@ -57,7 +57,7 @@ ssh -f -N -D @ #All sent to local port ``` ### Reverse Port Forwarding -Ceci est utile pour obtenir des shells inversés à partir d'hôtes internes à travers une DMZ vers votre hôte : +Ceci est utile pour obtenir des shells inversés à partir d'hôtes internes via une DMZ vers votre hôte : ```bash ssh -i dmz_key -R :443:0.0.0.0:7000 root@10.129.203.111 -vN # Now you can send a rev to dmz_internal_ip:443 and capture it in localhost:7000 @@ -89,7 +89,7 @@ route add -net 10.0.0.0/16 gw 1.1.1.1 ``` > [!NOTE] > **Sécurité – Attaque Terrapin (CVE-2023-48795)** -> L'attaque de rétrogradation Terrapin de 2023 peut permettre à un homme du milieu de manipuler la première poignée de main SSH et d'injecter des données dans **n'importe quel canal transféré** ( `-L`, `-R`, `-D` ). Assurez-vous que le client et le serveur sont corrigés (**OpenSSH ≥ 9.6/LibreSSH 6.7**) ou désactivez explicitement les algorithmes vulnérables `chacha20-poly1305@openssh.com` et `*-etm@openssh.com` dans `sshd_config`/`ssh_config` avant de compter sur les tunnels SSH. +> L'attaque de rétrogradation Terrapin 2023 peut permettre à un attaquant de type homme du milieu de manipuler le début de la poignée de main SSH et d'injecter des données dans **n'importe quel canal transféré** ( `-L`, `-R`, `-D` ). Assurez-vous que le client et le serveur sont corrigés (**OpenSSH ≥ 9.6/LibreSSH 6.7**) ou désactivez explicitement les algorithmes vulnérables `chacha20-poly1305@openssh.com` et `*-etm@openssh.com` dans `sshd_config`/`ssh_config` avant de compter sur les tunnels SSH. ## SSHUTTLE @@ -163,7 +163,7 @@ rportfwd stop [bind port] ### rPort2Port local > [!WARNING] -> Dans ce cas, le **port est ouvert sur l'hôte beacon**, pas sur le Team Server et le **trafic est envoyé au client Cobalt Strike** (pas au Team Server) et de là au hôte:port indiqué. +> Dans ce cas, le **port est ouvert dans l'hôte beacon**, pas dans le Team Server et le **trafic est envoyé au client Cobalt Strike** (pas au Team Server) et de là au hôte:port indiqué. ```bash rportfwd_local [bind port] [forward host] [forward port] rportfwd_local stop [bind port] @@ -223,7 +223,7 @@ interface_add_route --name "ligolo" --route / python server.py --server-port 9999 --server-ip 0.0.0.0 --proxy-ip 127 ```bash victim> python client.py --server-ip --server-port 9999 ``` -Pivoter à travers **NTLM proxy** +Pivot à travers **NTLM proxy** ```bash victim> python client.py --server-ip --server-port 9999 --ntlm-proxy-ip --ntlm-proxy-port 8080 --domain CONTOSO.COM --username Alice --password P@ssw0rd ``` @@ -316,7 +316,7 @@ victim> socat STDIO OPENSSL-CONNECT:localhost:433,cert=client.pem,cafile=server. ``` ### Remote Port2Port -Connectez le port SSH local (22) au port 443 de l'hôte attaquant +Connectez le port SSH local (22) au port 443 de l'hôte attaquant. ```bash attacker> sudo socat TCP4-LISTEN:443,reuseaddr,fork TCP4-LISTEN:2222,reuseaddr #Redirect port 2222 to port 443 in localhost victim> while true; do socat TCP4::443 TCP4:127.0.0.1:22 ; done # Establish connection with the port 443 of the attacker and everything that comes from here is redirected to port 22 @@ -350,7 +350,7 @@ netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=4444 Vous devez avoir **un accès RDP sur le système**.\ Téléchargez : -1. [SocksOverRDP x64 Binaries](https://github.com/nccgroup/SocksOverRDP/releases) - Cet outil utilise `Dynamic Virtual Channels` (`DVC`) de la fonctionnalité Remote Desktop Service de Windows. DVC est responsable de **tunneling des paquets sur la connexion RDP**. +1. [SocksOverRDP x64 Binaries](https://github.com/nccgroup/SocksOverRDP/releases) - Cet outil utilise `Dynamic Virtual Channels` (`DVC`) de la fonctionnalité Remote Desktop Service de Windows. DVC est responsable de **l'acheminement des paquets sur la connexion RDP**. 2. [Proxifier Portable Binary](https://www.proxifier.com/download/#win-tab) Dans votre ordinateur client, chargez **`SocksOverRDP-Plugin.dll`** comme ceci : @@ -484,7 +484,7 @@ ssh -D 9050 -p 2222 -l user 127.0.0.1 ## ngrok [**ngrok**](https://ngrok.com/) **est un outil pour exposer des solutions à Internet en une ligne de commande.**\ -_Exposition URI sont comme:_ **UID.ngrok.io** +_Les URI d'exposition sont comme :_ **UID.ngrok.io** ### Installation @@ -547,7 +547,7 @@ addr: file:///tmp/httpbin/ ``` ## Cloudflared (Cloudflare Tunnel) -Le démon `cloudflared` de Cloudflare peut créer des tunnels sortants qui exposent **des services TCP/UDP locaux** sans nécessiter de règles de pare-feu entrantes, en utilisant l'edge de Cloudflare comme point de rendez-vous. C'est très pratique lorsque le pare-feu de sortie n'autorise que le trafic HTTPS mais que les connexions entrantes sont bloquées. +Le démon `cloudflared` de Cloudflare peut créer des tunnels sortants qui exposent des **services TCP/UDP locaux** sans nécessiter de règles de pare-feu entrant, en utilisant l'edge de Cloudflare comme point de rendez-vous. Cela est très pratique lorsque le pare-feu de sortie n'autorise que le trafic HTTPS mais que les connexions entrantes sont bloquées. ### Quick tunnel one-liner ```bash @@ -578,7 +578,7 @@ Parce que tout le trafic quitte l'hôte **sortant sur 443**, les tunnels Cloudfl ## FRP (Fast Reverse Proxy) -[`frp`](https://github.com/fatedier/frp) est un reverse-proxy Go activement maintenu qui prend en charge **TCP, UDP, HTTP/S, SOCKS et P2P NAT-hole-punching**. À partir de **v0.53.0 (mai 2024)**, il peut agir comme un **SSH Tunnel Gateway**, permettant à un hôte cible de créer un tunnel inverse en utilisant uniquement le client OpenSSH standard – aucun binaire supplémentaire requis. +[`frp`](https://github.com/fatedier/frp) est un reverse-proxy Go activement maintenu qui prend en charge **TCP, UDP, HTTP/S, SOCKS et le P2P NAT-hole-punching**. À partir de **v0.53.0 (mai 2024)**, il peut agir comme une **passerelle de tunnel SSH**, permettant à un hôte cible de créer un tunnel inverse en utilisant uniquement le client OpenSSH standard – aucun binaire supplémentaire requis. ### Tunnel TCP inverse classique ```bash @@ -599,7 +599,7 @@ localIP = "127.0.0.1" localPort = 3389 remotePort = 5000 ``` -### Utilisation du nouveau passerelle SSH (sans binaire frpc) +### Utilisation du nouveau SSH gateway (pas de binaire frpc) ```bash # On frps (attacker) sshTunnelGateway.bindPort = 2200 # add to frps.toml diff --git a/src/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md b/src/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md index 9c9ce26ec..23e209a12 100644 --- a/src/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md +++ b/src/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md @@ -90,7 +90,7 @@ echo b > /proc/sysrq-trigger # Redémarre l'hôte - Liste les symboles exportés par le noyau et leurs adresses. - Essentiel pour le développement d'exploits du noyau, en particulier pour surmonter KASLR. -- Les informations d'adresse sont restreintes avec `kptr_restrict` réglé sur `1` ou `2`. +- Les informations d'adresse sont restreintes avec `kptr_restrict` défini sur `1` ou `2`. - Détails dans [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html). #### **`/proc/[pid]/mem`** @@ -270,16 +270,14 @@ Répertoire racine de Docker : /var/lib/docker So the filesystems are under `/var/lib/docker/overlay2/`: ```bash -```markdown $ sudo ls -la /var/lib/docker/overlay2 -drwx--x--- 4 root root 4096 Jan 9 22:14 00762bca8ea040b1bb28b61baed5704e013ab23a196f5fe4758dafb79dfafd5d -drwx--x--- 4 root root 4096 Jan 11 17:00 03cdf4db9a6cc9f187cca6e98cd877d581f16b62d073010571e752c305719496 -drwx--x--- 4 root root 4096 Jan 9 21:23 049e02afb3f8dec80cb229719d9484aead269ae05afe81ee5880ccde2426ef4f -drwx--x--- 4 root root 4096 Jan 9 21:22 062f14e5adbedce75cea699828e22657c8044cd22b68ff1bb152f1a3c8a377f2 +drwx--x--- 4 root root 4096 Jan 9 22:14 00762bca8ea040b1bb28b61baed5704e013ab23a196f5fe4758dafb79dfafd5d +drwx--x--- 4 root root 4096 Jan 11 17:00 03cdf4db9a6cc9f187cca6e98cd877d581f16b62d073010571e752c305719496 +drwx--x--- 4 root root 4096 Jan 9 21:23 049e02afb3f8dec80cb229719d9484aead269ae05afe81ee5880ccde2426ef4f +drwx--x--- 4 root root 4096 Jan 9 21:22 062f14e5adbedce75cea699828e22657c8044cd22b68ff1bb152f1a3c8a377f2 ``` -``` #### Note diff --git a/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md b/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md index bba9cfa36..2db89aeb8 100644 --- a/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md +++ b/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md @@ -8,7 +8,7 @@ Les applications signées avec l'**entitlement `get_task_allow`** permettent aux Cependant, ce n'est pas aussi simple que de simplement extraire l'IPA, de le re-signer avec l'entitlement, et de le flasher à nouveau sur votre appareil. Cela est dû à la protection FairPlay. Lorsque la signature de l'application change, la clé DRM (Digital Rights Management) est **invalidée et l'application ne fonctionnera pas**. -Avec un ancien appareil jailbreaké, il est possible d'installer l'IPA, **de le déchiffrer en utilisant votre outil préféré** (comme Iridium ou frida-ios-dump), et de le récupérer de l'appareil. Bien que, si possible, il est recommandé de demander simplement au client l'IPA déchiffré. +Avec un ancien appareil jailbreaké, il est possible d'installer l'IPA, **de le déchiffrer en utilisant votre outil préféré** (comme Iridium ou frida-ios-dump), et de le récupérer de l'appareil. Cependant, si possible, il est recommandé de demander simplement au client l'IPA déchiffré. ## Obtenir l'IPA déchiffré @@ -61,17 +61,17 @@ ideviceinstaller -i resigned.ipa -w ``` --- -### Activer le mode développeur (iOS 16+) +### Activer le Mode Développeur (iOS 16+) -Depuis iOS 16, Apple a introduit le **mode développeur** : tout binaire qui porte `get_task_allow` *ou* est signé avec un certificat de développement refusera de se lancer tant que le mode développeur n'est pas activé sur l'appareil. Vous ne pourrez également pas attacher Frida/LLDB à moins que ce drapeau ne soit activé. +Depuis iOS 16, Apple a introduit le **Mode Développeur** : tout binaire qui porte `get_task_allow` *ou* est signé avec un certificat de développement refusera de se lancer tant que le Mode Développeur n'est pas activé sur l'appareil. Vous ne pourrez également pas attacher Frida/LLDB à moins que ce drapeau ne soit activé. 1. Installez ou poussez **n'importe quel** IPA signé par un développeur sur le téléphone. 2. Accédez à **Réglages → Confidentialité & Sécurité → Mode Développeur** et activez-le. -3. L'appareil redémarrera ; après avoir saisi le code d'accès, vous serez invité à **activer** le mode développeur. +3. L'appareil redémarrera ; après avoir entré le code d'accès, il vous sera demandé d'**Activer** le Mode Développeur. -Le mode développeur reste actif jusqu'à ce que vous le désactiviez ou que vous réinitialisiez le téléphone, donc cette étape n'a besoin d'être effectuée qu'une seule fois par appareil. La [documentation d'Apple](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device) explique les implications en matière de sécurité. +Le Mode Développeur reste actif jusqu'à ce que vous le désactiviez ou que vous réinitialisiez le téléphone, donc cette étape n'a besoin d'être effectuée qu'une seule fois par appareil. [La documentation d'Apple](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device) explique les implications en matière de sécurité. -### Options modernes de sideloading +### Options de sideloading modernes Il existe maintenant plusieurs façons matures de sideloader et de maintenir les IPAs re-signés à jour sans jailbreak : @@ -84,7 +84,7 @@ Pour des pentests de routine sur les versions iOS actuelles, Alt/Side-Store sont ### Hooking / instrumentation dynamique -Vous pouvez hook votre application exactement comme sur un appareil jailbreaké une fois qu'elle est signée avec `get_task_allow` **et** que le mode développeur est activé : +Vous pouvez hook votre application exactement comme sur un appareil jailbreaké une fois qu'elle est signée avec `get_task_allow` **et** que le Mode Développeur est activé : ```bash # Spawn & attach with objection objection -g "com.example.target" explore @@ -92,11 +92,11 @@ objection -g "com.example.target" explore # Or plain Frida frida -U -f com.example.target -l my_script.js --no-pause ``` -Les récentes versions de Frida (>=16) gèrent automatiquement l'authentification des pointeurs et d'autres atténuations d'iOS 17, donc la plupart des scripts existants fonctionnent immédiatement. +Les dernières versions de Frida (>=16) gèrent automatiquement l'authentification des pointeurs et d'autres atténuations d'iOS 17, donc la plupart des scripts existants fonctionnent immédiatement. ### Analyse dynamique automatisée avec MobSF (sans jailbreak) -[MobSF](https://mobsf.github.io/Mobile-Security-Framework-MobSF/) peut instrumenter un IPA signé par un développeur sur un appareil réel en utilisant la même technique (`get_task_allow`) et fournit une interface web avec un navigateur de système de fichiers, capture de trafic et console Frida【turn6view0†L2-L3】. Le moyen le plus rapide est de faire fonctionner MobSF dans Docker puis de connecter votre iPhone via USB : +[MobSF](https://mobsf.github.io/Mobile-Security-Framework-MobSF/) peut instrumenter un IPA signé par un développeur sur un appareil réel en utilisant la même technique (`get_task_allow`) et fournit une interface web avec un navigateur de système de fichiers, capture de trafic et console Frida【turn6view0†L2-L3】. Le moyen le plus rapide est de faire fonctionner MobSF dans Docker et ensuite de connecter votre iPhone via USB : ```bash docker pull opensecurity/mobile-security-framework-mobsf:latest docker run -p 8000:8000 --privileged \ @@ -106,9 +106,9 @@ opensecurity/mobile-security-framework-mobsf:latest ``` MobSF déploiera automatiquement le binaire, activera un serveur Frida à l'intérieur du sandbox de l'application et générera un rapport interactif. -### iOS 17 & avertissements sur le mode de verrouillage +### iOS 17 & avertissements sur le mode verrouillage -* **Mode de verrouillage** (Réglages → Confidentialité & Sécurité) bloque le chargeur dynamique de chargement des bibliothèques dynamiques non signées ou signées de manière externe. Lors de tests sur des appareils qui pourraient avoir ce mode activé, assurez-vous qu'il est **désactivé** ou vos sessions Frida/objection se termineront immédiatement. +* **Mode verrouillage** (Réglages → Confidentialité & Sécurité) bloque le chargeur dynamique de chargement des bibliothèques dynamiques non signées ou signées de manière externe. Lors de tests sur des appareils qui pourraient avoir ce mode activé, assurez-vous qu'il est **désactivé** ou vos sessions Frida/objection se termineront immédiatement. * L'authentification par pointeur (PAC) est appliquée à l'échelle du système sur les appareils A12+. Frida ≥16 gère de manière transparente le stripping PAC — il suffit de garder à jour à la fois *frida-server* et la chaîne d'outils Python/CLI lorsque qu'une nouvelle version majeure d'iOS est publiée. ## Références diff --git a/src/network-services-pentesting/pentesting-web/django.md b/src/network-services-pentesting/pentesting-web/django.md index 740110420..d56f2ddee 100644 --- a/src/network-services-pentesting/pentesting-web/django.md +++ b/src/network-services-pentesting/pentesting-web/django.md @@ -1,6 +1,6 @@ # Django -{{#include /banners/hacktricks-training.md}} +{{#include /src/banners/hacktricks-training.md}} ## Manipulation du cache pour RCE La méthode de stockage par défaut du cache de Django est [Python pickles](https://docs.python.org/3/library/pickle.html), ce qui peut conduire à RCE si [des entrées non fiables sont dé-picklées](https://media.blackhat.com/bh-us-11/Slaviero/BH_US_11_Slaviero_Sour_Pickles_Slides.pdf). **Si un attaquant peut obtenir un accès en écriture au cache, il peut escalader cette vulnérabilité en RCE sur le serveur sous-jacent**. @@ -12,7 +12,7 @@ Ce rapport HackerOne fournit un excellent exemple reproductible d'exploitation d --- ## Injection de modèle côté serveur (SSTI) -Le langage de modèle Django (DTL) est **Turing-complet**. Si des données fournies par l'utilisateur sont rendues sous forme de *chaîne de modèle* (par exemple en appelant `Template(user_input).render()` ou lorsque `|safe`/`format_html()` supprime l'auto-échappement), un attaquant peut atteindre un SSTI complet → RCE. +Le langage de modèle Django (DTL) est **Turing-complet**. Si les données fournies par l'utilisateur sont rendues sous forme de *chaîne de modèle* (par exemple en appelant `Template(user_input).render()` ou lorsque `|safe`/`format_html()` supprime l'auto-échappement), un attaquant peut atteindre un SSTI complet → RCE. ### Détection 1. Recherchez des appels dynamiques à `Template()` / `Engine.from_string()` / `render_to_string()` qui incluent *toute* donnée de requête non assainie. @@ -33,7 +33,7 @@ Trouvez l'index de `subprocess.Popen` (≈400–500 selon la version de Python) ``` Un gadget universel plus sûr consiste à itérer jusqu'à ce que `cls.__name__ == 'Popen'`. -Le même gadget fonctionne pour les fonctionnalités de rendu de **Debug Toolbar** ou **Django-CMS** qui gèrent mal les entrées utilisateur. +Le même gadget fonctionne pour les fonctionnalités de rendu de **Debug Toolbar** ou **Django-CMS** qui gèrent mal l'entrée utilisateur. --- @@ -64,7 +64,7 @@ Envoyez le cookie résultant, et le payload s'exécute avec les permissions du w --- -## CVEs Django à Fort Impact Récents (2023-2025) que les Pentesters Doivent Vérifier +## CVEs Django à Fort Impact Récents (2023-2025) que les Pentesters Devraient Vérifier * **CVE-2025-48432** – *Injection de Log via `request.path` non échappé* (corrigé le 4 juin 2025). Permet aux attaquants de faire passer des nouvelles lignes/des codes ANSI dans les fichiers journaux et de polluer l'analyse des journaux en aval. Niveau de patch ≥ 4.2.22 / 5.1.10 / 5.2.2. * **CVE-2024-42005** – *Injection SQL critique* dans `QuerySet.values()/values_list()` sur `JSONField` (CVSS 9.8). Créez des clés JSON pour sortir des guillemets et exécuter du SQL arbitraire. Corrigé dans 4.2.15 / 5.0.8. @@ -73,7 +73,7 @@ Toujours identifier la version exacte du framework via la page d'erreur `X-Frame --- ## Références -* Publication de sécurité Django – "Django 5.2.2, 5.1.10, 4.2.22 traitent CVE-2025-48432" – 4 juin 2025. -* OP-Innovate : "Django publie des mises à jour de sécurité pour traiter la faille d'injection SQL CVE-2024-42005" – 11 août 2024. +* Publication de sécurité Django – "Django 5.2.2, 5.1.10, 4.2.22 adressent CVE-2025-48432" – 4 juin 2025. +* OP-Innovate : "Django publie des mises à jour de sécurité pour corriger la faille d'injection SQL CVE-2024-42005" – 11 août 2024. -{{#include /banners/hacktricks-training.md}} +{{#include /src/banners/hacktricks-training.md}} diff --git a/src/network-services-pentesting/pentesting-web/special-http-headers.md b/src/network-services-pentesting/pentesting-web/special-http-headers.md index 8f6731259..8307d1879 100644 --- a/src/network-services-pentesting/pentesting-web/special-http-headers.md +++ b/src/network-services-pentesting/pentesting-web/special-http-headers.md @@ -84,7 +84,7 @@ Un en-tête hop-by-hop est un en-tête conçu pour être traité et consommé pa - **`Accept-Ranges`** : Indique si le serveur prend en charge les requêtes de plage, et si oui, dans quelle unité la plage peut être exprimée. `Accept-Ranges: ` - **`Range`** : Indique la partie d'un document que le serveur doit retourner. Par exemple, `Range:80-100` retournera les octets 80 à 100 de la réponse originale avec un code d'état de 206 Partial Content. N'oubliez pas de supprimer l'en-tête `Accept-Encoding` de la demande. -- Cela pourrait être utile pour obtenir une réponse avec du code javascript réfléchi arbitraire qui pourrait autrement être échappé. Mais pour en abuser, vous auriez besoin d'injecter ces en-têtes dans la demande. +- Cela pourrait être utile pour obtenir une réponse avec un code javascript réfléchi arbitraire qui pourrait autrement être échappé. Mais pour en abuser, vous auriez besoin d'injecter ces en-têtes dans la demande. - **`If-Range`** : Crée une demande de plage conditionnelle qui n'est remplie que si l'etag ou la date donnée correspond à la ressource distante. Utilisé pour éviter de télécharger deux plages de versions incompatibles de la ressource. - **`Content-Range`** : Indique où dans un message complet un message partiel appartient. @@ -154,21 +154,21 @@ X-Content-Type-Options: nosniff ``` ### **X-Frame-Options** -Pour lutter contre le clickjacking, cet en-tête restreint la manière dont les documents peuvent être intégrés dans les balises ``, `