Translated ['README.md', 'generic-methodologies-and-resources/pentesting
BIN
.gitbook/assets/image (10) (2) (1).png
Normal file
After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 176 KiB |
Before Width: | Height: | Size: 176 KiB After Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 358 KiB |
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 76 KiB |
BIN
.gitbook/assets/image (9) (1) (4).png
Normal file
After Width: | Height: | Size: 138 KiB |
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 165 KiB |
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 32 KiB |
|
@ -70,7 +70,7 @@ Obtenez un accès aujourd'hui:
|
||||||
|
|
||||||
🐞 Lire des tutoriels de bugs web3
|
🐞 Lire des tutoriels de bugs web3
|
||||||
|
|
||||||
🔔 Recevez des notifications sur les nouveaux bug bounties
|
🔔 Recevoir des notifications sur les nouveaux bug bounties
|
||||||
|
|
||||||
💬 Participer aux discussions de la communauté
|
💬 Participer aux discussions de la communauté
|
||||||
|
|
||||||
|
@ -80,4 +80,4 @@ Obtenez un accès aujourd'hui:
|
||||||
|
|
||||||
<figure><img src=".gitbook/assets/logo.svg" alt=""><figcaption></figcaption></figure>
|
<figure><img src=".gitbook/assets/logo.svg" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
[**WebSec**](https://websec.nl) est une entreprise de cybersécurité professionnelle
|
[**WebSec**](https://websec.nl) est une entreprise de cybersécur
|
||||||
|
|
|
@ -70,45 +70,27 @@ An EIGRP key chain can be attacked in various ways, such as:
|
||||||
|
|
||||||
- **Key ID Spoofing**: An attacker can spoof the key ID in an EIGRP packet to bypass the authentication mechanism. The attacker can send an EIGRP packet with a valid key ID that belongs to another router in the network. This can trick the receiving router into accepting the packet as authentic.
|
- **Key ID Spoofing**: An attacker can spoof the key ID in an EIGRP packet to bypass the authentication mechanism. The attacker can send an EIGRP packet with a valid key ID that belongs to another router in the network. This can trick the receiving router into accepting the packet as authentic.
|
||||||
|
|
||||||
- **Key String Cracking**: An attacker can crack the key string in an EIGRP packet to generate a valid message digest. The attacker can use various tools and techniques to crack the key string, such as brute-force attacks, dictionary attacks, and rainbow table attacks.
|
- **Key String Cracking**: An attacker can crack the key string in an EIGRP packet to generate a valid message digest. The attacker can use various tools and techniques to crack the key string, such as brute-force, dictionary attack, rainbow table attack, etc.
|
||||||
|
|
||||||
#### EIGRP Static Key Attacks
|
#### EIGRP Static Key Attacks
|
||||||
|
|
||||||
EIGRP static key authentication uses a pre-shared key that is manually configured on each router. The pre-shared key is a password that is used to generate the message digest. EIGRP static key authentication is vulnerable to various attacks that can bypass or crack the authentication mechanism.
|
An EIGRP static key is a password that is used to authenticate EIGRP packets. The static key is configured on each router that participates in the EIGRP process. The static key is vulnerable to various attacks that can bypass or crack the authentication mechanism.
|
||||||
|
|
||||||
An EIGRP static key can be attacked in various ways, such as:
|
An EIGRP static key can be attacked in various ways, such as:
|
||||||
|
|
||||||
- **Password Guessing**: An attacker can guess the pre-shared key by using various tools and techniques, such as brute-force attacks, dictionary attacks, and social engineering attacks.
|
- **Password Guessing**: An attacker can guess the static key by using various tools and techniques, such as brute-force, dictionary attack, etc.
|
||||||
|
|
||||||
- **Sniffing**: An attacker can sniff the pre-shared key from the network traffic by using a packet sniffer tool. The attacker can then use the pre-shared key to generate a valid message digest.
|
- **Packet Sniffing**: An attacker can sniff the EIGRP packets that contain the static key and use it to generate a valid message digest.
|
||||||
|
|
||||||
### EIGRP Spoofing Attacks
|
### EIGRP DoS Attacks
|
||||||
|
|
||||||
EIGRP spoofing attacks are used to inject false routing information into the network. EIGRP spoofing attacks can be used to redirect traffic to a malicious destination or to cause a denial of service (DoS) attack.
|
EIGRP is vulnerable to various DoS (Denial of Service) attacks that can disrupt the normal operation of the network. EIGRP DoS attacks can be launched using various tools and techniques, such as:
|
||||||
|
|
||||||
#### EIGRP Hello Spoofing
|
- **EIGRP Hello Flood**: An attacker can flood the network with EIGRP Hello packets to consume the bandwidth and resources of the network. This can cause the network to become slow or unresponsive.
|
||||||
|
|
||||||
EIGRP hello packets are used to discover and maintain neighbor relationships between routers. EIGRP hello packets are sent periodically to the multicast address 224.0.0.10. An EIGRP hello packet contains information about the router, such as its router ID, IP address, and subnet mask.
|
- **EIGRP Route Poisoning**: An attacker can send false routing information to the network to mislead the routers and cause routing loops. This can cause the network to become unstable or unreachable.
|
||||||
|
|
||||||
An EIGRP hello packet can be spoofed in various ways, such as:
|
- **EIGRP Authentication Failure**: An attacker can send invalid EIGRP packets to the network to trigger authentication failures. This can cause the routers to reset their EIGRP process and disrupt the normal operation of the network.
|
||||||
|
|
||||||
- **Router ID Spoofing**: An attacker can spoof the router ID in an EIGRP hello packet to impersonate a legitimate router in the network. This can trick the receiving router into establishing a neighbor relationship with the attacker.
|
|
||||||
|
|
||||||
- **IP Address Spoofing**: An attacker can spoof the IP address in an EIGRP hello packet to impersonate a legitimate router in the network. This can trick the receiving router into establishing a neighbor relationship with the attacker.
|
|
||||||
|
|
||||||
- **Subnet Mask Spoofing**: An attacker can spoof the subnet mask in an EIGRP hello packet to advertise a false network prefix. This can cause the receiving router to include the false network prefix in its routing table and to forward traffic to the attacker.
|
|
||||||
|
|
||||||
#### EIGRP Route Spoofing
|
|
||||||
|
|
||||||
EIGRP route packets are used to advertise routing information between routers. EIGRP route packets are sent to the multicast address 224.0.0.10. An EIGRP route packet contains information about the network prefix, the next hop router, and the metric.
|
|
||||||
|
|
||||||
An EIGRP route packet can be spoofed in various ways, such as:
|
|
||||||
|
|
||||||
- **Network Prefix Spoofing**: An attacker can spoof the network prefix in an EIGRP route packet to advertise a false network prefix. This can cause the receiving router to include the false network prefix in its routing table and to forward traffic to the attacker.
|
|
||||||
|
|
||||||
- **Next Hop Router Spoofing**: An attacker can spoof the next hop router in an EIGRP route packet to redirect traffic to a malicious destination. This can cause the receiving router to forward traffic to the attacker instead of the legitimate next hop router.
|
|
||||||
|
|
||||||
- **Metric Spoofing**: An attacker can spoof the metric in an EIGRP route packet to manipulate the path selection process. This can cause the receiving router to select a suboptimal path or to blackhole the traffic.
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### French Output:
|
### French Output:
|
||||||
|
@ -120,55 +102,38 @@ EIGRP (Enhanced Interior Gateway Routing Protocol) est un protocole de routage p
|
||||||
|
|
||||||
### Attaques d'authentification EIGRP
|
### Attaques d'authentification EIGRP
|
||||||
|
|
||||||
EIGRP prend en charge l'authentification pour empêcher l'accès non autorisé aux informations de routage. L'authentification EIGRP peut être configurée à l'aide d'une chaîne de clés ou d'une clé statique. Cependant, l'authentification EIGRP est vulnérable à diverses attaques qui peuvent contourner ou casser le mécanisme d'authentification.
|
EIGRP prend en charge l'authentification pour empêcher l'accès non autorisé aux informations de routage. L'authentification EIGRP peut être configurée à l'aide d'une chaîne de clés ou d'une clé statique. Cependant, l'authentification EIGRP est vulnérable à diverses attaques qui peuvent contourner ou craquer le mécanisme d'authentification.
|
||||||
|
|
||||||
#### Attaques de chaîne de clés EIGRP
|
#### Attaques de chaîne de clés EIGRP
|
||||||
|
|
||||||
Une chaîne de clés EIGRP est une séquence de clés qui sont utilisées pour authentifier les paquets EIGRP. Chaque clé dans la chaîne de clés a un identifiant de clé, une chaîne de clé et un algorithme cryptographique. L'identifiant de clé est un numéro qui identifie la clé dans la chaîne de clés. La chaîne de clé est un mot de passe qui est utilisé pour générer le message digest. L'algorithme cryptographique est utilisé pour générer le message digest.
|
Une chaîne de clés EIGRP est une séquence de clés qui sont utilisées pour authentifier les paquets EIGRP. Chaque clé de la chaîne de clés a un identifiant de clé, une chaîne de clé et un algorithme cryptographique. L'identifiant de clé est un numéro qui identifie la clé dans la chaîne de clés. La chaîne de clé est un mot de passe qui est utilisé pour générer la somme de contrôle du message. L'algorithme cryptographique est utilisé pour générer la somme de contrôle du message.
|
||||||
|
|
||||||
Une chaîne de clés EIGRP peut être attaquée de diverses manières, telles que:
|
Une chaîne de clés EIGRP peut être attaquée de diverses manières, telles que:
|
||||||
|
|
||||||
- **Spoofing d'identifiant de clé**: Un attaquant peut usurper l'identifiant de clé dans un paquet EIGRP pour contourner le mécanisme d'authentification. L'attaquant peut envoyer un paquet EIGRP avec un identifiant de clé valide qui appartient à un autre routeur du réseau. Cela peut tromper le routeur récepteur en acceptant le paquet comme authentique.
|
- **Spoofing d'identifiant de clé**: Un attaquant peut usurper l'identifiant de clé dans un paquet EIGRP pour contourner le mécanisme d'authentification. L'attaquant peut envoyer un paquet EIGRP avec un identifiant de clé valide qui appartient à un autre routeur du réseau. Cela peut tromper le routeur récepteur en acceptant le paquet comme authentique.
|
||||||
|
|
||||||
- **Cassage de chaîne de clé**: Un attaquant peut casser la chaîne de clé dans un paquet EIGRP pour générer un message digest valide. L'attaquant peut utiliser divers outils et techniques pour casser la chaîne de clé, telles que des attaques par force brute, des attaques par dictionnaire et des attaques par table arc-en-ciel.
|
- **Craquage de chaîne de clé**: Un attaquant peut craquer la chaîne de clé dans un paquet EIGRP pour générer une somme de contrôle valide. L'attaquant peut utiliser divers outils et techniques pour craquer la chaîne de clé, telles que la force brute, l'attaque par dictionnaire, l'attaque par table arc-en-ciel, etc.
|
||||||
|
|
||||||
#### Attaques de clé statique EIGRP
|
#### Attaques de clé statique EIGRP
|
||||||
|
|
||||||
L'authentification de clé statique EIGRP utilise une clé pré-partagée qui est configurée manuellement sur chaque routeur. La clé pré-partagée est un mot de passe qui est utilisé pour générer le message digest. L'authentification de clé statique EIGRP est vulnérable à diverses attaques qui peuvent contourner ou casser le mécanisme d'authentification.
|
Une clé statique EIGRP est un mot de passe qui est utilisé pour authentifier les paquets EIGRP. La clé statique est configurée sur chaque routeur qui participe au processus EIGRP. La clé statique est vulnérable à diverses attaques qui peuvent contourner ou craquer le mécanisme d'authentification.
|
||||||
|
|
||||||
Une clé statique EIGRP peut être attaquée de diverses manières, telles que:
|
Une clé statique EIGRP peut être attaquée de diverses manières, telles que:
|
||||||
|
|
||||||
- **Deviner le mot de passe**: Un attaquant peut deviner la clé pré-partagée en utilisant divers outils et techniques, telles que des attaques par force brute, des attaques par dictionnaire et des attaques d'ingénierie sociale.
|
- **Deviner le mot de passe**: Un attaquant peut deviner la clé statique en utilisant divers outils et techniques, telles que la force brute, l'attaque par dictionnaire, etc.
|
||||||
|
|
||||||
- **Sniffing**: Un attaquant peut renifler la clé pré-partagée à partir du trafic réseau en utilisant un outil de reniflage de paquets. L'attaquant peut ensuite utiliser la clé pré-partagée pour générer un message digest valide.
|
- **Sniffing de paquets**: Un attaquant peut renifler les paquets EIGRP qui contiennent la clé statique et l'utiliser pour générer une somme de contrôle valide.
|
||||||
|
|
||||||
### Attaques de spoofing EIGRP
|
### Attaques DoS EIGRP
|
||||||
|
|
||||||
Les attaques de spoofing EIGRP sont utilisées pour injecter de fausses informations de routage dans le réseau. Les attaques de spoofing EIGRP peuvent être utilisées pour rediriger le trafic vers une destination malveillante ou pour causer une attaque de déni de service (DoS).
|
EIGRP est vulnérable à diverses attaques DoS (Déni de Service) qui peuvent perturber le fonctionnement normal du réseau. Les attaques DoS EIGRP peuvent être lancées à l'aide de divers outils et techniques, telles que:
|
||||||
|
|
||||||
#### Spoofing de hello EIGRP
|
- **Inondation de Hello EIGRP**: Un attaquant peut inonder le réseau avec des paquets Hello EIGRP pour consommer la bande passante et les ressources du réseau. Cela peut rendre le réseau lent ou non réactif.
|
||||||
|
|
||||||
Les paquets hello EIGRP sont utilisés pour découvrir et maintenir les relations de voisinage entre les routeurs. Les paquets hello EIGRP sont envoyés périodiquement à l'adresse multicast 224.0.0.10. Un paquet hello EIGRP contient des informations sur le routeur, telles que son identifiant de routeur, son adresse IP et son masque de sous-réseau.
|
- **Empoisonnement de route EIGRP**: Un attaquant peut envoyer de fausses informations de routage au réseau pour tromper les routeurs et provoquer des boucles de routage. Cela peut rendre le réseau instable ou inaccessible.
|
||||||
|
|
||||||
Un paquet hello EIGRP peut être usurpé de diverses manières, telles que:
|
- **Échec d'authentification EIGRP**: Un attaquant peut envoyer des paquets EIGRP invalides au réseau pour déclencher des échecs d'authentification. Cela peut amener les routeurs à réinitialiser leur processus EIGRP et perturber le fonctionnement normal du réseau.
|
||||||
|
```
|
||||||
- **Spoofing d'identifiant de routeur**: Un attaquant peut usurper l'identifiant de routeur dans un paquet hello EIGRP pour se faire passer pour un routeur légitime dans le réseau. Cela peut tromper le routeur récepteur en établissant une relation de voisinage avec l'attaquant.
|
|
||||||
|
|
||||||
- **Spoofing d'adresse IP**: Un attaquant peut usurper l'adresse IP dans un paquet hello EIGRP pour se faire passer pour un routeur légitime dans le réseau. Cela peut tromper le routeur récepteur en établissant une relation de voisinage avec l'attaquant.
|
|
||||||
|
|
||||||
- **Spoofing de masque de sous-réseau**: Un attaquant peut usurper le masque de sous-réseau dans un paquet hello EIGRP pour annoncer un faux préfixe de réseau. Cela peut amener le routeur récepteur à inclure le faux préfixe de réseau dans sa table de routage et à faire suivre le trafic à l'attaquant.
|
|
||||||
|
|
||||||
#### Spoofing de route EIGRP
|
|
||||||
|
|
||||||
Les paquets de route EIGRP sont utilisés pour annoncer des informations de routage entre les routeurs. Les paquets de route EIGRP sont envoyés à l'adresse multicast 224.0.0.10. Un paquet de route EIGRP contient des informations sur le préfixe de réseau, le routeur de prochaine étape et la métrique.
|
|
||||||
|
|
||||||
Un paquet de route EIGRP peut être usurpé de diverses manières, telles que:
|
|
||||||
|
|
||||||
- **Spoofing de préfixe de réseau**: Un attaquant peut usurper le préfixe de réseau dans un paquet de route EIGRP pour annoncer un faux préfixe de réseau. Cela peut amener le routeur récepteur à inclure le faux préfixe de réseau dans sa table de routage et à faire suivre le trafic à l'attaquant.
|
|
||||||
|
|
||||||
- **Spoofing de routeur de prochaine étape**: Un attaquant peut usurper le routeur de prochaine étape dans un paquet de route EIGRP pour rediriger le trafic vers une destination malveillante. Cela peut amener le routeur récepteur à faire suivre le trafic à l'attaquant au lieu du routeur de prochaine étape légitime.
|
|
||||||
|
|
||||||
- **Spoofing de métrique**: Un attaquant peut usurper la métrique dans un paquet de route EIGRP pour manipuler le processus de sélection de chemin. Cela peut amener le routeur récepteur à sélectionner un chemin sous-optimal ou à mettre le trafic en trou noir.
|
|
||||||
```
|
```
|
||||||
Inguz# show version
|
Inguz# show version
|
||||||
```
|
```
|
||||||
|
@ -240,7 +205,7 @@ Arguments du script:
|
||||||
```
|
```
|
||||||
<figure><img src="../../.gitbook/assets/image (20) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (20) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
**Notre hôte semble être en difficulté :)**
|
**Notre hôte semble avoir des problèmes :)**
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (6) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (6) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
@ -262,7 +227,7 @@ Arguments du script :
|
||||||
```
|
```
|
||||||
~$ sudo python3 relationshipnightmare.py --interface eth0 --as 1 --src 10.10.100.100
|
~$ sudo python3 relationshipnightmare.py --interface eth0 --as 1 --src 10.10.100.100
|
||||||
```
|
```
|
||||||
<figure><img src="../../.gitbook/assets/image (9) (1).png" alt=""><figcaption><p>Extrait du trafic lors d'une perturbation de voisinage</p></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (9) (1) (4).png" alt=""><figcaption><p>Extrait du trafic lors d'une perturbation de voisinage</p></figcaption></figure>
|
||||||
|
|
||||||
<figure><img src="../../.gitbook/assets/image (27) (1).png" alt=""><figcaption><p>Le routeur GW1 se déconnecte et se reconnecte sans cesse à EIGRP</p></figcaption></figure>
|
<figure><img src="../../.gitbook/assets/image (27) (1).png" alt=""><figcaption><p>Le routeur GW1 se déconnecte et se reconnecte sans cesse à EIGRP</p></figcaption></figure>
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ $ cat /proc/self/cgroup
|
||||||
1:name=systemd:/user.slice/user-1000.slice/session-2.scope
|
1:name=systemd:/user.slice/user-1000.slice/session-2.scope
|
||||||
0::/user.slice/user-1000.slice/session-2.scope
|
0::/user.slice/user-1000.slice/session-2.scope
|
||||||
```
|
```
|
||||||
Ne soyez pas alarmé si la **sortie est considérablement plus courte** sur votre système; cela signifie simplement que vous avez probablement **seulement des cgroups v2**. Chaque ligne de sortie commence par un numéro et représente un cgroup différent. Voici quelques points à prendre en compte pour la lecture :
|
Ne soyez pas alarmé si la **sortie est considérablement plus courte** sur votre système; cela signifie simplement que vous avez probablement **seulement des cgroups v2**. Chaque ligne de sortie commence par un numéro et est un cgroup différent. Voici quelques points à prendre en compte pour la lecture :
|
||||||
|
|
||||||
* Les numéros 2 à 12 sont pour les cgroups v1. Les **contrôleurs** pour ceux-ci sont listés à côté du numéro.
|
* Les numéros 2 à 12 sont pour les cgroups v1. Les **contrôleurs** pour ceux-ci sont listés à côté du numéro.
|
||||||
* Le numéro 1 est également pour la **version 1**, mais il n'a pas de contrôleur. Ce cgroup est uniquement destiné à des **fins de gestion** (dans ce cas, systemd l'a configuré).
|
* Le numéro 1 est également pour la **version 1**, mais il n'a pas de contrôleur. Ce cgroup est uniquement destiné à des **fins de gestion** (dans ce cas, systemd l'a configuré).
|
||||||
|
@ -49,9 +49,9 @@ Ne soyez pas alarmé si la **sortie est considérablement plus courte** sur votr
|
||||||
### Visualisation des cgroups
|
### Visualisation des cgroups
|
||||||
|
|
||||||
Les cgroups sont généralement **accessibles via le système de fichiers**. Cela contraste avec l'interface d'appel système Unix traditionnelle pour interagir avec le noyau.\
|
Les cgroups sont généralement **accessibles via le système de fichiers**. Cela contraste avec l'interface d'appel système Unix traditionnelle pour interagir avec le noyau.\
|
||||||
Pour explorer la configuration des cgroups d'un shell, vous pouvez regarder dans le fichier `/proc/self/cgroup` pour trouver le cgroup du shell, puis naviguer vers le répertoire `/sys/fs/cgroup` (ou `/sys/fs/cgroup/unified`) et chercher un **répertoire portant le même nom que le cgroup**. En changeant de répertoire et en regardant autour, vous pourrez voir les différents **paramètres et informations d'utilisation des ressources pour le cgroup**.
|
Pour explorer la configuration des cgroups d'un shell, vous pouvez regarder dans le fichier `/proc/self/cgroup` pour trouver le cgroup du shell, puis naviguer vers le répertoire `/sys/fs/cgroup` (ou `/sys/fs/cgroup/unified`) et chercher un **répertoire portant le même nom que le cgroup**. En changeant de répertoire et en regardant autour de vous, vous pourrez voir les différents **paramètres et informations d'utilisation des ressources pour le cgroup**.
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (10).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (10) (2).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Parmi les nombreux fichiers qui peuvent être ici, **les fichiers d'interface de cgroup principaux commencent par `cgroup`**. Commencez par regarder `cgroup.procs` (utiliser cat est bien), qui liste les processus dans le cgroup. Un fichier similaire, `cgroup.threads`, inclut également les threads.
|
Parmi les nombreux fichiers qui peuvent être ici, **les fichiers d'interface de cgroup principaux commencent par `cgroup`**. Commencez par regarder `cgroup.procs` (utiliser cat est bien), qui liste les processus dans le cgroup. Un fichier similaire, `cgroup.threads`, inclut également les threads.
|
||||||
|
|
||||||
|
@ -69,20 +69,20 @@ Pour mettre un processus dans un cgroup, **écrivez son PID dans son fichier `cg
|
||||||
```shell-session
|
```shell-session
|
||||||
# echo pid > cgroup.procs
|
# echo pid > cgroup.procs
|
||||||
```
|
```
|
||||||
Voici comment fonctionnent les modifications apportées aux cgroups. Par exemple, si vous souhaitez **limiter le nombre maximal de PIDs d'un cgroup** (à, disons, 3 000 PIDs), procédez comme suit :
|
Voici comment fonctionnent les modifications apportées aux cgroups. Par exemple, si vous souhaitez **limiter le nombre maximal de PIDs d'un cgroup** (disons à 3 000 PIDs), procédez comme suit :
|
||||||
```shell-session
|
```shell-session
|
||||||
# echo 3000 > pids.max
|
# echo 3000 > pids.max
|
||||||
```
|
```
|
||||||
**La création de cgroups est plus délicate**. Techniquement, c'est aussi simple que de créer un sous-répertoire quelque part dans l'arborescence des cgroups ; lorsque vous le faites, le noyau crée automatiquement les fichiers d'interface. Si un cgroup n'a pas de processus, vous pouvez supprimer le cgroup avec rmdir même si les fichiers d'interface sont présents. Ce qui peut vous tromper, ce sont les règles régissant les cgroups, notamment :
|
**La création de cgroups est plus délicate**. Techniquement, c'est aussi simple que de créer un sous-répertoire quelque part dans l'arborescence des cgroups ; lorsque vous le faites, le noyau crée automatiquement les fichiers d'interface. Si un cgroup n'a pas de processus, vous pouvez supprimer le cgroup avec rmdir même si les fichiers d'interface sont présents. Ce qui peut vous tromper, ce sont les règles régissant les cgroups, notamment :
|
||||||
|
|
||||||
* Vous ne pouvez mettre des **processus que dans des cgroups de niveau supérieur ("feuille")**. Par exemple, si vous avez des cgroups nommés /my-cgroup et /my-cgroup/my-subgroup, vous ne pouvez pas mettre de processus dans /my-cgroup, mais /my-cgroup/my-subgroup est correct. (Une exception est si les cgroups n'ont pas de contrôleurs, mais ne creusons pas plus loin.)
|
* Vous ne pouvez mettre **des processus que dans des cgroups de niveau supérieur ("feuille")**. Par exemple, si vous avez des cgroups nommés /my-cgroup et /my-cgroup/my-subgroup, vous ne pouvez pas mettre de processus dans /my-cgroup, mais /my-cgroup/my-subgroup est correct. (Une exception est si les cgroups n'ont pas de contrôleurs, mais ne creusons pas plus loin.)
|
||||||
* Un cgroup **ne peut pas avoir de contrôleur qui n'est pas dans son cgroup parent**.
|
* Un cgroup **ne peut pas avoir de contrôleur qui n'est pas dans son cgroup parent**.
|
||||||
* Vous devez **spécifier explicitement les contrôleurs pour les cgroups enfants**. Vous le faites via le fichier `cgroup.subtree_control`; par exemple, si vous voulez qu'un cgroup enfant ait les contrôleurs cpu et pids, écrivez +cpu +pids dans ce fichier.
|
* Vous devez explicitement **spécifier les contrôleurs pour les cgroups enfants**. Vous faites cela via le fichier `cgroup.subtree_control`; par exemple, si vous voulez qu'un cgroup enfant ait les contrôleurs cpu et pids, écrivez +cpu +pids dans ce fichier.
|
||||||
|
|
||||||
Une exception à ces règles est le **cgroup racine** situé en bas de la hiérarchie. Vous pouvez **placer des processus dans ce cgroup**. Une raison pour laquelle vous pourriez vouloir le faire est de détacher un processus du contrôle de systemd.
|
Une exception à ces règles est le **cgroup racine** trouvé en bas de la hiérarchie. Vous pouvez **placer des processus dans ce cgroup**. Une raison pour laquelle vous pourriez vouloir le faire est de détacher un processus du contrôle de systemd.
|
||||||
|
|
||||||
Même sans contrôleurs activés, vous pouvez voir l'utilisation du CPU d'un cgroup en regardant son fichier cpu.stat :
|
Même sans contrôleurs activés, vous pouvez voir l'utilisation du CPU d'un cgroup en regardant son fichier cpu.stat :
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (2) (6) (3).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (2) (6) (3).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
Étant donné que c'est l'utilisation accumulée du CPU sur toute la durée de vie du cgroup, vous pouvez voir comment un service consomme du temps processeur même s'il génère de nombreux sous-processus qui finissent par se terminer.
|
Comme il s'agit de l'utilisation accumulée du CPU sur toute la durée de vie du cgroup, vous pouvez voir comment un service consomme du temps processeur même s'il génère de nombreux sous-processus qui finissent par se terminer.
|
||||||
|
|
|
@ -49,7 +49,7 @@ Vous pouvez utiliser le script [**JamfSniper.py**](https://github.com/WithSecure
|
||||||
|
|
||||||
De plus, après avoir trouvé les identifiants appropriés, vous pourriez être en mesure de forcer d'autres noms d'utilisateur avec le formulaire suivant :
|
De plus, après avoir trouvé les identifiants appropriés, vous pourriez être en mesure de forcer d'autres noms d'utilisateur avec le formulaire suivant :
|
||||||
|
|
||||||
![](<../../.gitbook/assets/image (13).png>)
|
![](<../../.gitbook/assets/image (6).png>)
|
||||||
|
|
||||||
#### Authentification de l'appareil JAMF
|
#### Authentification de l'appareil JAMF
|
||||||
|
|
||||||
|
@ -138,7 +138,7 @@ Il existe également des outils préparés pour MacOS pour énumérer automatiqu
|
||||||
|
|
||||||
* [**Machound**](https://github.com/XMCyber/MacHound) : MacHound est une extension de l'outil d'audit Bloodhound permettant de collecter et d'ingérer des relations Active Directory sur des hôtes MacOS.
|
* [**Machound**](https://github.com/XMCyber/MacHound) : MacHound est une extension de l'outil d'audit Bloodhound permettant de collecter et d'ingérer des relations Active Directory sur des hôtes MacOS.
|
||||||
* [**Bifrost**](https://github.com/its-a-feature/bifrost) : Bifrost est un projet Objective-C conçu pour interagir avec les API Heimdal krb5 sur macOS. Le but du projet est de permettre de meilleurs tests de sécurité autour de Kerberos sur les appareils macOS en utilisant des API natives sans nécessiter d'autres frameworks ou packages sur la cible.
|
* [**Bifrost**](https://github.com/its-a-feature/bifrost) : Bifrost est un projet Objective-C conçu pour interagir avec les API Heimdal krb5 sur macOS. Le but du projet est de permettre de meilleurs tests de sécurité autour de Kerberos sur les appareils macOS en utilisant des API natives sans nécessiter d'autres frameworks ou packages sur la cible.
|
||||||
* [**Orchard**](https://github.com/its-a-feature/Orchard) : Outil JavaScript pour l'automatisation (JXA) pour l'énumération Active Directory.
|
* [**Orchard**](https://github.com/its-a-feature/Orchard) : Outil JavaScript pour l'automatisation (JXA) pour effectuer une énumération Active Directory.
|
||||||
|
|
||||||
### Informations de domaine
|
### Informations de domaine
|
||||||
```bash
|
```bash
|
||||||
|
@ -209,7 +209,7 @@ Lorsqu'un fichier est téléchargé dans Safari, s'il s'agit d'un fichier "sûr"
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||||
|
|
||||||
* Travaillez-vous dans une entreprise de **cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
||||||
* Découvrez [**The PEASS Family**](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)
|
* 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
* **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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Extensions système macOS
|
## Extensions système macOS
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
## Extensions système / Framework de sécurité des points de terminaison
|
## Extensions système / Framework de sécurité des points de terminaison
|
||||||
|
|
||||||
Contrairement aux extensions du noyau, les **extensions système s'exécutent dans l'espace utilisateur** plutôt que dans l'espace du noyau, réduisant ainsi le risque de plantage du système en raison d'un dysfonctionnement de l'extension.
|
Contrairement aux extensions de noyau, les **extensions système s'exécutent dans l'espace utilisateur** plutôt que dans l'espace du noyau, réduisant ainsi le risque de plantage du système en raison d'un dysfonctionnement de l'extension.
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (4).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (4).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
|
@ -22,11 +22,11 @@ Il existe trois types d'extensions système : les extensions **DriverKit**, les
|
||||||
|
|
||||||
### **Extensions DriverKit**
|
### **Extensions DriverKit**
|
||||||
|
|
||||||
DriverKit est un remplacement des extensions du noyau qui **fournit une assistance matérielle**. Il permet aux pilotes de périphériques (tels que les pilotes USB, série, NIC et HID) de s'exécuter dans l'espace utilisateur plutôt que dans l'espace du noyau. Le framework DriverKit comprend des **versions d'espace utilisateur de certaines classes I/O Kit**, et le noyau transfère les événements normaux de l'I/O Kit vers l'espace utilisateur, offrant ainsi un environnement plus sûr pour l'exécution de ces pilotes.
|
DriverKit est un remplacement des extensions de noyau qui **fournissent une assistance matérielle**. Il permet aux pilotes de périphériques (tels que les pilotes USB, série, NIC et HID) de s'exécuter dans l'espace utilisateur plutôt que dans l'espace du noyau. Le framework DriverKit comprend des **versions d'espace utilisateur de certaines classes I/O Kit**, et le noyau transfère les événements normaux de l'I/O Kit vers l'espace utilisateur, offrant ainsi un environnement plus sûr pour l'exécution de ces pilotes.
|
||||||
|
|
||||||
### **Extensions Network**
|
### **Extensions Network**
|
||||||
|
|
||||||
Les extensions réseau fournissent la possibilité de personnaliser les comportements réseau. Il existe plusieurs types d'extensions réseau :
|
Les extensions réseau offrent la possibilité de personnaliser les comportements réseau. Il existe plusieurs types d'extensions réseau :
|
||||||
|
|
||||||
* **Proxy d'application** : cela est utilisé pour créer un client VPN qui implémente un protocole VPN personnalisé orienté flux. Cela signifie qu'il gère le trafic réseau en fonction des connexions (ou flux) plutôt que des paquets individuels.
|
* **Proxy d'application** : cela est utilisé pour créer un client VPN qui implémente un protocole VPN personnalisé orienté flux. Cela signifie qu'il gère le trafic réseau en fonction des connexions (ou flux) plutôt que des paquets individuels.
|
||||||
* **Tunnel de paquets** : cela est utilisé pour créer un client VPN qui implémente un protocole VPN personnalisé orienté paquet. Cela signifie qu'il gère le trafic réseau en fonction des paquets individuels.
|
* **Tunnel de paquets** : cela est utilisé pour créer un client VPN qui implémente un protocole VPN personnalisé orienté paquet. Cela signifie qu'il gère le trafic réseau en fonction des paquets individuels.
|
||||||
|
@ -40,30 +40,30 @@ Endpoint Security est un framework fourni par Apple dans macOS qui fournit un en
|
||||||
|
|
||||||
Ce framework fournit une **collection d'API pour surveiller et contrôler l'activité du système**, telle que les exécutions de processus, les événements du système de fichiers, les événements réseau et du noyau.
|
Ce framework fournit une **collection d'API pour surveiller et contrôler l'activité du système**, telle que les exécutions de processus, les événements du système de fichiers, les événements réseau et du noyau.
|
||||||
|
|
||||||
Le cœur de ce framework est implémenté dans le noyau, en tant qu'extension du noyau (KEXT) située dans **`/System/Library/Extensions/EndpointSecurity.kext`**. Cette KEXT est composée de plusieurs composants clés :
|
Le cœur de ce framework est implémenté dans le noyau, en tant qu'extension de noyau (KEXT) située dans **`/System/Library/Extensions/EndpointSecurity.kext`**. Cette KEXT est composée de plusieurs composants clés :
|
||||||
|
|
||||||
* **EndpointSecurityDriver** : cela agit comme le "point d'entrée" pour l'extension du noyau. C'est le principal point d'interaction entre le système d'exploitation et le framework Endpoint Security.
|
* **EndpointSecurityDriver** : cela agit comme le "point d'entrée" pour l'extension de noyau. C'est le principal point d'interaction entre le système d'exploitation et le framework Endpoint Security.
|
||||||
* **EndpointSecurityEventManager** : ce composant est responsable de la mise en œuvre des hooks du noyau. Les hooks du noyau permettent au framework de surveiller les événements du système en interceptant les appels système.
|
* **EndpointSecurityEventManager** : ce composant est responsable de la mise en œuvre des hooks du noyau. Les hooks du noyau permettent au framework de surveiller les événements du système en interceptant les appels système.
|
||||||
* **EndpointSecurityClientManager** : cela gère la communication avec les clients de l'espace utilisateur, en suivant les clients connectés et qui ont besoin de recevoir des notifications d'événements.
|
* **EndpointSecurityClientManager** : cela gère la communication avec les clients de l'espace utilisateur, en suivant les clients connectés et qui ont besoin de recevoir des notifications d'événements.
|
||||||
* **EndpointSecurityMessageManager** : cela envoie des messages et des notifications d'événements aux clients de l'espace utilisateur.
|
* **EndpointSecurityMessageManager** : cela envoie des messages et des notifications d'événements aux clients de l'espace utilisateur.
|
||||||
|
|
||||||
Les événements que le framework Endpoint Security peut surveiller sont catégorisés en :
|
Les événements que le framework Endpoint Security peut surveiller sont catégorisés en :
|
||||||
|
|
||||||
* Événements de fichiers
|
* Événements de fichier
|
||||||
* Événements de processus
|
* Événements de processus
|
||||||
* Événements de socket
|
* Événements de socket
|
||||||
* Événements du noyau (tels que le chargement/déchargement d'une extension du noyau ou l'ouverture d'un périphérique I/O Kit)
|
* Événements du noyau (tels que le chargement/déchargement d'une extension de noyau ou l'ouverture d'un périphérique I/O Kit)
|
||||||
|
|
||||||
### Architecture du framework de sécurité des points de terminaison
|
### Architecture du framework de sécurité des points de terminaison
|
||||||
|
|
||||||
<figure><img src="../../../.gitbook/assets/image (6).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../.gitbook/assets/image (8).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
La **communication de l'espace utilisateur** avec le framework Endpoint Security se fait via la classe IOUserClient. Deux sous-classes différentes sont utilisées, en fonction du type d'appelant :
|
La **communication de l'espace utilisateur** avec le framework Endpoint Security se fait via la classe IOUserClient. Deux sous-classes différentes sont utilisées, en fonction du type d'appelant :
|
||||||
|
|
||||||
* **EndpointSecurityDriverClient** : cela nécessite l'attribution `com.apple.private.endpoint-security.manager`, qui n'est détenue que par le processus système `endpointsecurityd`.
|
* **EndpointSecurityDriverClient** : cela nécessite l'attribution `com.apple.private.endpoint-security.manager`, qui n'est détenue que par le processus système `endpointsecurityd`.
|
||||||
* **EndpointSecurityExternalClient** : cela nécessite l'attribution `com.apple.developer.endpoint-security.client`. Cela serait généralement utilisé par des logiciels de sécurité tiers qui ont besoin d'interagir avec le framework Endpoint Security.
|
* **EndpointSecurityExternalClient** : cela nécessite l'attribution `com.apple.developer.endpoint-security.client`. Cela serait généralement utilisé par des logiciels de sécurité tiers qui ont besoin d'interagir avec le framework Endpoint Security.
|
||||||
|
|
||||||
Les extensions Endpoint Security : **`libEndpointSecurity.dylib`** est la bibliothèque C que les extensions système utilisent pour communiquer avec le noyau. Cette bibliothèque utilise l'I/O Kit (`IOKit`) pour communiquer avec l'extension Endpoint Security KEXT.
|
Les extensions de sécurité des points de terminaison : **`libEndpointSecurity.dylib`** est la bibliothèque C que les extensions système utilisent pour communiquer avec le noyau. Cette bibliothèque utilise l'I/O Kit (`IOKit`) pour communiquer avec la KEXT Endpoint Security.
|
||||||
|
|
||||||
**`endpointsecurityd`** est un démon système clé impliqué dans la gestion et le lancement des extensions système de sécurité des points de terminaison, en particulier pendant le processus de démarrage précoce. Seules les extensions système marquées avec **`NSEndpointSecurityEarlyBoot`** dans leur fichier `Info.plist` reçoivent ce traitement de démarrage précoce.
|
**`endpointsecurityd`** est un démon système clé impliqué dans la gestion et le lancement des extensions système de sécurité des points de terminaison, en particulier pendant le processus de démarrage précoce. Seules les extensions système marquées avec **`NSEndpointSecurityEarlyBoot`** dans leur fichier `Info.plist` reçoivent ce traitement de démarrage précoce.
|
||||||
|
|
||||||
|
|
|
@ -46,18 +46,24 @@ Il s'agit d'une [fonction publique](https://developer.apple.com/documentation/se
|
||||||
```
|
```
|
||||||
Pour plus d'informations, consultez cette présentation : [https://www.youtube.com/watch?v=lTOItyjTTkw](https://www.youtube.com/watch?v=lTOItyjTTkw)
|
Pour plus d'informations, consultez cette présentation : [https://www.youtube.com/watch?v=lTOItyjTTkw](https://www.youtube.com/watch?v=lTOItyjTTkw)
|
||||||
|
|
||||||
|
### Exécution par montage
|
||||||
|
|
||||||
|
Si un programme d'installation écrit dans `/tmp/fixedname/bla/bla`, il est possible de **créer un montage** sur `/tmp/fixedname` sans propriétaire, de sorte que vous pouvez **modifier n'importe quel fichier pendant l'installation** pour abuser du processus d'installation.
|
||||||
|
|
||||||
|
Un exemple de cela est **CVE-2021-26089** qui a réussi à **écraser un script périodique** pour obtenir une exécution en tant que root. Pour plus d'informations, consultez la présentation : [**OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl**](https://www.youtube.com/watch?v=jSYPazD4VcE)
|
||||||
|
|
||||||
## Références
|
## Références
|
||||||
|
|
||||||
* [https://www.youtube.com/watch?v=iASSG0\_zobQ](https://www.youtube.com/watch?v=iASSG0\_zobQ)
|
* [**DEF CON 27 - Unpacking Pkgs A Look Inside Macos Installer Packages And Common Security Flaws**](https://www.youtube.com/watch?v=iASSG0\_zobQ)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||||
|
|
||||||
* Travaillez-vous dans une entreprise de **cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
||||||
* Découvrez [**The PEASS Family**](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)
|
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||||
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) **groupe Discord** ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
* **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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@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 au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
|
@ -158,7 +158,7 @@ En tant que root, vous pouvez activer ce service et l'agent ARD aura un accès c
|
||||||
|
|
||||||
## Par plugins
|
## Par plugins
|
||||||
|
|
||||||
Les plugins sont du code supplémentaire généralement sous forme de bibliothèques ou de plist, qui seront chargés par l'application principale et s'exécuteront sous son contexte. Par conséquent, si l'application principale avait accès aux fichiers restreints TCC (via des autorisations ou des privilèges accordés), le code personnalisé l'aura également.
|
Les plugins sont du code supplémentaire généralement sous forme de bibliothèques ou de plist, qui seront chargés par l'application principale et s'exécuteront sous son contexte. Par conséquent, si l'application principale avait accès aux fichiers restreints TCC (via des autorisations accordées ou des privilèges), le code personnalisé l'aura également.
|
||||||
|
|
||||||
### CVE-2020-27937 - Utilitaire de répertoire
|
### CVE-2020-27937 - Utilitaire de répertoire
|
||||||
|
|
||||||
|
@ -211,7 +211,7 @@ Plusieurs applications Apple étaient vulnérables à cela.
|
||||||
|
|
||||||
## Par injection de processus
|
## Par injection de processus
|
||||||
|
|
||||||
Il existe différentes techniques pour injecter du code dans un processus et abuser de ses privilèges TCC :
|
Il existe différentes techniques pour injecter du code à l'intérieur d'un processus et abuser de ses privilèges TCC :
|
||||||
|
|
||||||
{% content-ref url="../../macos-proces-abuse/" %}
|
{% content-ref url="../../macos-proces-abuse/" %}
|
||||||
[macos-proces-abuse](../../macos-proces-abuse/)
|
[macos-proces-abuse](../../macos-proces-abuse/)
|
||||||
|
@ -255,7 +255,7 @@ Telegram avait les entitlements `com.apple.security.cs.allow-dyld-environment-va
|
||||||
|
|
||||||
## Par des invocations ouvertes
|
## Par des invocations ouvertes
|
||||||
|
|
||||||
Il est possible d'invoquer l'ouverture dans un environnement sandboxé.
|
Il est possible d'invoquer l'ouverture dans un environnement sandboxé 
|
||||||
|
|
||||||
### Scripts Terminal
|
### Scripts Terminal
|
||||||
|
|
||||||
|
@ -367,7 +367,7 @@ Le dossier **`/var/db/locationd/` n'était pas protégé contre le montage DMG**
|
||||||
|
|
||||||
À plusieurs reprises, des fichiers stockent des informations sensibles telles que des e-mails, des numéros de téléphone, des messages... dans des emplacements non protégés (ce qui compte comme une vulnérabilité chez Apple).
|
À plusieurs reprises, des fichiers stockent des informations sensibles telles que des e-mails, des numéros de téléphone, des messages... dans des emplacements non protégés (ce qui compte comme une vulnérabilité chez Apple).
|
||||||
|
|
||||||
<figure><img src="../../../../.gitbook/assets/image (7).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../../../../.gitbook/assets/image (9).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
## Référence
|
## Référence
|
||||||
|
|
||||||
|
|
|
@ -129,11 +129,11 @@ Les erreurs de configuration sont une autre vulnérabilité courante dans Postgr
|
||||||
|
|
||||||
## Mots de passe faibles
|
## Mots de passe faibles
|
||||||
|
|
||||||
Les mots de passe faibles sont une vulnérabilité courante dans toutes les applications, y compris PostgreSQL. Les mots de passe par défaut et les mots de passe simples sont souvent utilisés, ce qui facilite la tâche des attaquants.
|
Les mots de passe faibles sont une vulnérabilité courante dans toutes les applications, y compris PostgreSQL. Les mots de passe par défaut doivent être changés et les mots de passe forts doivent être utilisés pour tous les comptes d'utilisateur.
|
||||||
|
|
||||||
## Conclusion
|
## Conclusion
|
||||||
|
|
||||||
PostgreSQL est un système de gestion de base de données populaire utilisé par de nombreuses entreprises. En tant que testeur de pénétration, il est important de comprendre comment tester la sécurité de PostgreSQL en identifiant les instances en cours d'exécution, en cherchant des vulnérabilités à exploiter telles que les injections SQL, les erreurs de configuration et les mots de passe faibles.
|
PostgreSQL est un système de gestion de base de données populaire utilisé par de nombreuses entreprises pour stocker des données sensibles. En tant que testeur de pénétration, il est important de comprendre comment tester la sécurité de PostgreSQL en identifiant les instances en cours d'exécution, en cherchant des vulnérabilités à exploiter telles que les injections SQL, les erreurs de configuration et les mots de passe faibles.
|
||||||
```
|
```
|
||||||
DETAIL: FATAL: password authentication failed for user "name"
|
DETAIL: FATAL: password authentication failed for user "name"
|
||||||
```
|
```
|
||||||
|
@ -170,7 +170,7 @@ Malheureusement, il ne semble pas y avoir de moyen d'obtenir les détails de l'e
|
||||||
* Si vous êtes membre de **`pg_write_server_files`**, vous pouvez **écrire** des fichiers
|
* Si vous êtes membre de **`pg_write_server_files`**, vous pouvez **écrire** des fichiers
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
Notez que dans Postgres, un **utilisateur**, un **groupe** et un **rôle** sont les **mêmes**. Cela dépend simplement de **la façon dont vous l'utilisez** et si vous **l'autorisez à se connecter**.
|
Notez que dans Postgres, un **utilisateur**, un **groupe** et un **rôle** sont la **même chose**. Cela dépend simplement de **la façon dont vous l'utilisez** et si vous **l'autorisez à se connecter**.
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
```sql
|
```sql
|
||||||
# Get users roles
|
# Get users roles
|
||||||
|
@ -217,21 +217,7 @@ CREATE ROLE u LOGIN PASSWORD 'lriohfugwebfdwrr' IN GROUP pg_read_server_files;
|
||||||
```
|
```
|
||||||
### Tables
|
### Tables
|
||||||
|
|
||||||
Les tables sont des objets de base de PostgreSQL. Elles sont utilisées pour stocker des données dans une base de données relationnelle. Les tables sont composées de colonnes et de lignes. Les colonnes définissent les types de données que la table peut stocker, tandis que les lignes contiennent les données elles-mêmes.
|
Les tables sont les éléments les plus importants d'une base de données PostgreSQL. Elles contiennent les données que nous voulons stocker et manipuler. Les tables sont composées de colonnes et de lignes. Les colonnes définissent les types de données que nous pouvons stocker dans la table, tandis que les lignes contiennent les données elles-mêmes. Les tables peuvent être créées, modifiées et supprimées à l'aide de commandes SQL.
|
||||||
|
|
||||||
Pour afficher les tables dans une base de données PostgreSQL, vous pouvez utiliser la commande suivante :
|
|
||||||
|
|
||||||
```sql
|
|
||||||
\dt
|
|
||||||
```
|
|
||||||
|
|
||||||
Cela affichera une liste de toutes les tables dans la base de données actuelle. Pour afficher les colonnes et les types de données pour une table spécifique, vous pouvez utiliser la commande suivante :
|
|
||||||
|
|
||||||
```sql
|
|
||||||
\d+ nom_de_la_table
|
|
||||||
```
|
|
||||||
|
|
||||||
Cela affichera une liste détaillée des colonnes et de leurs types de données pour la table spécifiée.
|
|
||||||
```sql
|
```sql
|
||||||
# Get owners of tables
|
# Get owners of tables
|
||||||
select schemaname,tablename,tableowner from pg_tables;
|
select schemaname,tablename,tableowner from pg_tables;
|
||||||
|
@ -494,7 +480,7 @@ SetUserIdAndSecContext(onerel->rd_rel->relowner,
|
||||||
2. Insérer du contenu fictif dans la table, afin que la fonction d'indexation ait quelque chose à traiter.
|
2. Insérer du contenu fictif dans la table, afin que la fonction d'indexation ait quelque chose à traiter.
|
||||||
3. Créer une fonction d'indexation malveillante (avec notre charge utile d'exécution de code) sur la table.
|
3. Créer une fonction d'indexation malveillante (avec notre charge utile d'exécution de code) sur la table.
|
||||||
4. ALTERER le propriétaire de la table en cloudsqladmin, le rôle superutilisateur de GCP, utilisé uniquement par Cloud SQL pour maintenir et gérer la base de données.
|
4. ALTERER le propriétaire de la table en cloudsqladmin, le rôle superutilisateur de GCP, utilisé uniquement par Cloud SQL pour maintenir et gérer la base de données.
|
||||||
5. ANALYSER la table, forçant le moteur PostgreSQL à passer en mode contexte utilisateur pour le propriétaire de la table (cloudsqladmin) et à appeler la fonction d'indexation malveillante avec les autorisations de cloudsqladmin, ce qui permet d'exécuter notre commande shell, à laquelle nous n'avions pas la permission d'exécuter auparavant.
|
5. ANALYSER la table, forçant le moteur PostgreSQL à passer en mode contexte utilisateur pour le propriétaire de la table (cloudsqladmin) et à appeler la fonction d'indexation malveillante avec les autorisations de cloudsqladmin, ce qui permet d'exécuter notre commande shell, que nous n'avions pas la permission d'exécuter auparavant.
|
||||||
|
|
||||||
Dans PostgreSQL, ce flux ressemble à ceci :
|
Dans PostgreSQL, ce flux ressemble à ceci :
|
||||||
```sql
|
```sql
|
||||||
|
@ -556,7 +542,7 @@ SELECT * FROM pg_proc WHERE proname='dblink' AND pronargs=2;
|
||||||
```
|
```
|
||||||
### Fonction définie personnalisée avec SECURITY DEFINER
|
### Fonction définie personnalisée avec SECURITY DEFINER
|
||||||
|
|
||||||
Dans [cet article](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), les testeurs d'intrusion ont pu obtenir des privilèges élevés à l'intérieur d'une instance postgres fournie par IBM, car ils ont trouvé cette fonction avec le drapeau SECURITY DEFINER:
|
Dans ce [document](https://www.wiz.io/blog/hells-keychain-supply-chain-attack-in-ibm-cloud-databases-for-postgresql), les testeurs de pénétration ont pu obtenir des privilèges élevés à l'intérieur d'une instance postgres fournie par IBM, car ils ont trouvé cette fonction avec le drapeau SECURITY DEFINER:
|
||||||
|
|
||||||
<pre class="language-sql"><code class="lang-sql">CREATE OR REPLACE FUNCTION public.create_subscription(IN subscription_name text,IN host_ip text,IN portnum text,IN password text,IN username text,IN db_name text,IN publisher_name text)
|
<pre class="language-sql"><code class="lang-sql">CREATE OR REPLACE FUNCTION public.create_subscription(IN subscription_name text,IN host_ip text,IN portnum text,IN password text,IN username text,IN db_name text,IN publisher_name text)
|
||||||
RETURNS text
|
RETURNS text
|
||||||
|
@ -577,9 +563,9 @@ AS $BODY$
|
||||||
…
|
…
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
||||||
Comme [expliqué dans la documentation](https://www.postgresql.org/docs/current/sql-createfunction.html), une fonction avec **SECURITY DEFINER est exécutée** avec les privilèges de l'**utilisateur qui la possède**. Par conséquent, si la fonction est **vulnérable à l'injection SQL** ou effectue des **actions privilégiées avec des paramètres contrôlés par l'attaquant**, elle peut être utilisée pour **escalader les privilèges à l'intérieur de postgres**.
|
Comme [expliqué dans les documents](https://www.postgresql.org/docs/current/sql-createfunction.html), une fonction avec SECURITY DEFINER est exécutée avec les privilèges de l'utilisateur qui la possède. Par conséquent, si la fonction est vulnérable à l'injection SQL ou effectue des actions privilégiées avec des paramètres contrôlés par l'attaquant, elle peut être utilisée pour escalader les privilèges à l'intérieur de postgres.
|
||||||
|
|
||||||
À la ligne 4 du code précédent, vous pouvez voir que la fonction a le drapeau **SECURITY DEFINER**.
|
À la ligne 4 du code précédent, vous pouvez voir que la fonction a le drapeau SECURITY DEFINER.
|
||||||
```sql
|
```sql
|
||||||
CREATE SUBSCRIPTION test3 CONNECTION 'host=127.0.0.1 port=5432 password=a
|
CREATE SUBSCRIPTION test3 CONNECTION 'host=127.0.0.1 port=5432 password=a
|
||||||
user=ibm dbname=ibmclouddb sslmode=require' PUBLICATION test2_publication
|
user=ibm dbname=ibmclouddb sslmode=require' PUBLICATION test2_publication
|
||||||
|
@ -587,11 +573,11 @@ WITH (create_slot = false); INSERT INTO public.test3(data) VALUES(current_user);
|
||||||
```
|
```
|
||||||
Et ensuite **exécuter des commandes** :
|
Et ensuite **exécuter des commandes** :
|
||||||
|
|
||||||
<figure><img src="../.gitbook/assets/image (9).png" alt=""><figcaption></figcaption></figure>
|
<figure><img src="../.gitbook/assets/image (9) (1).png" alt=""><figcaption></figcaption></figure>
|
||||||
|
|
||||||
### Passer Burteforce avec PL/pgSQL
|
### Passer le test de force brute avec PL/pgSQL
|
||||||
|
|
||||||
PL/pgSQL, en tant que **langage de programmation entièrement fonctionnel**, permet beaucoup plus de contrôle procédural que SQL, y compris la **capacité à utiliser des boucles et d'autres structures de contrôle**. Les déclarations SQL et les déclencheurs peuvent appeler des fonctions créées dans le langage PL/pgSQL.\
|
PL/pgSQL, en tant que **langage de programmation complet**, permet beaucoup plus de contrôle procédural que SQL, y compris la **capacité à utiliser des boucles et d'autres structures de contrôle**. Les déclarations SQL et les déclencheurs peuvent appeler des fonctions créées dans le langage PL/pgSQL.\
|
||||||
**Vous pouvez abuser de ce langage pour demander à PostgreSQL de forcer les identifiants des utilisateurs.**
|
**Vous pouvez abuser de ce langage pour demander à PostgreSQL de forcer les identifiants des utilisateurs.**
|
||||||
|
|
||||||
{% content-ref url="../pentesting-web/sql-injection/postgresql-injection/pl-pgsql-password-bruteforce.md" %}
|
{% content-ref url="../pentesting-web/sql-injection/postgresql-injection/pl-pgsql-password-bruteforce.md" %}
|
||||||
|
|