Translated ['src/pentesting-cloud/azure-security/az-basic-information/az

This commit is contained in:
Translator
2025-05-11 15:09:19 +00:00
parent fb2b9e2206
commit 89c63d70d0
4 changed files with 158 additions and 91 deletions

View File

@@ -4,19 +4,19 @@
## **Pod Uittrede**
**As jy gelukkig genoeg is, mag jy in staat wees om daarvan te ontsnap na die node:**
**As jy gelukkig is, mag jy in staat wees om daarvan na die node te ontsnap:**
![](https://sickrov.github.io/media/Screenshot-161.jpg)
### Ontsnap uit die pod
### Ontsnap van die pod
Om te probeer om uit die pods te ontsnap, mag jy eers **privileges opgradeer**. Sommige tegnieke om dit te doen:
Om te probeer ontsnap van die pods, mag jy eers **privileges moet opgradeer**, sommige tegnieke om dit te doen:
{{#ref}}
https://book.hacktricks.wiki/en/linux-hardening/privilege-escalation/index.html
{{#endref}}
Jy kan hierdie **docker uittredes nagaan om te probeer ontsnap** uit 'n pod wat jy gecompromitteer het:
Jy kan hierdie **docker uittredes nagaan om te probeer ontsnap** van 'n pod wat jy gecompromitteer het:
{{#ref}}
https://book.hacktricks.wiki/en/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/index.html
@@ -38,11 +38,11 @@ abusing-roles-clusterroles-in-kubernetes/
### Misbruik van Cloud Privileges
As die pod binne 'n **cloud omgewing** gedra word, mag jy in staat wees om 'n **token van die metadata eindpunt te lek** en privileges op te gradeer deur dit te gebruik.
As die pod binne 'n **cloud omgewing** gedra word, mag jy in staat wees om 'n **token van die metadata eindpunt te lek** en privileges daarmee op te gradeer.
## Soek kwesbare netwerkdienste
Aangesien jy binne die Kubernetes omgewing is, as jy nie privileges kan opgradeer deur die huidige pods privileges te misbruik nie en jy nie uit die houer kan ontsnap nie, moet jy **potensieel kwesbare dienste soek.**
Aangesien jy binne die Kubernetes omgewing is, as jy nie privileges kan opgradeer deur die huidige pods privileges te misbruik nie en jy nie van die houer kan ontsnap nie, moet jy **potensieel kwesbare dienste soek.**
### Dienste
@@ -50,7 +50,7 @@ Aangesien jy binne die Kubernetes omgewing is, as jy nie privileges kan opgradee
```
kubectl get svc --all-namespaces
```
Deur die standaard gebruik Kubernetes 'n plat netwerk skema, wat beteken **enige pod/dienste binne die kluster kan met ander praat**. Die **namespaces** binne die kluster **het nie enige netwerk sekuriteitsbeperkings nie**. Enige iemand in die namespace kan met ander namespaces praat.
Standaard gebruik Kubernetes 'n plat netwerk skema, wat beteken **enige pod/dienste binne die kluster kan met ander praat**. Die **namespaces** binne die kluster **het nie enige netwerk sekuriteitsbeperkings nie**. Enige iemand in die namespace kan met ander namespaces praat.
### Scanning
@@ -81,11 +81,11 @@ pentesting-kubernetes-services/
### Sniffing
In die geval waar die **gekompromitteerde pod 'n sensitiewe diens** draai waar ander pods moet autentiseer, mag jy in staat wees om die akrediteerbare inligting wat van die ander pods gestuur word te verkry deur **lokale kommunikasie te snuffel**.
In die geval waar die **gekompromitteerde pod 'n sensitiewe diens** draai waar ander pods moet autentiseer, mag jy in staat wees om die akrediteerbare wat van die ander pods gestuur word te verkry deur **lokale kommunikasie te snuffel**.
## Netwerk Spoofing
Standaard werk tegnieke soos **ARP spoofing** (en danksy dit **DNS Spoofing**) in die Kubernetes netwerk. Dan, binne 'n pod, as jy die **NET_RAW vermoë** het (wat daar is deur standaard), sal jy in staat wees om op maat gemaakte netwerkpakkette te stuur en **MitM-aanvalle via ARP Spoofing op al die pods wat in dieselfde node draai, uit te voer.**\
Standaard werk tegnieke soos **ARP spoofing** (en danksy dit **DNS Spoofing**) in die kubernetes netwerk. Dan, binne 'n pod, as jy die **NET_RAW vermoë** het (wat daar is deur standaard), sal jy in staat wees om pasgemaakte netwerkpakkette te stuur en **MitM-aanvalle via ARP Spoofing op al die pods wat in dieselfde node draai, uit te voer.**\
Boonop, as die **kwaadwillige pod** in die **dieselfde node as die DNS-server** draai, sal jy in staat wees om 'n **DNS Spoofing-aanval op al die pods in die kluster** uit te voer.
{{#ref}}
@@ -109,7 +109,7 @@ kubectl --namespace big-monolith top pod hunger-check-deployment-xxxxxxxxxx-xxxx
As jy daarin geslaag het om **uit die houer te ontsnap**, is daar 'n paar interessante dinge wat jy in die node sal vind:
- Die **Container Runtime** proses (Docker)
- Meer **pods/containers** wat in die node loop wat jy kan misbruik soos hierdie een (meer tokens)
- Meer **pods/containers** wat in die node loop wat jy soos hierdie een kan misbruik (meer tokens)
- Die hele **filesystem** en **OS** in die algemeen
- Die **Kube-Proxy** diens wat luister
- Die **Kubelet** diens wat luister. Kontroleer konfigurasie lêers:
@@ -119,6 +119,7 @@ As jy daarin geslaag het om **uit die houer te ontsnap**, is daar 'n paar intere
- `/var/lib/kubelet/config.yaml`
- `/var/lib/kubelet/kubeadm-flags.env`
- `/etc/kubernetes/kubelet-kubeconfig`
- `/etc/kubernetes/admin.conf` --> `kubectl --kubeconfig /etc/kubernetes/admin.conf get all -n kube-system`
- Ander **kubernetes algemene lêers**:
- `$HOME/.kube/config` - **User Config**
- `/etc/kubernetes/kubelet.conf`- **Regular Config**
@@ -126,9 +127,9 @@ As jy daarin geslaag het om **uit die houer te ontsnap**, is daar 'n paar intere
- `/etc/kubernetes/manifests/etcd.yaml` - **etcd Configuration**
- `/etc/kubernetes/pki` - **Kubernetes Key**
### Find node kubeconfig
### Vind node kubeconfig
As jy nie die kubeconfig lêer in een van die voorheen genoem padhouers kan vind nie, **kontroleer die argument `--kubeconfig` van die kubelet proses**:
As jy nie die kubeconfig lêer in een van die voorheen genoemde paaie kan vind nie, **kontroleer die argument `--kubeconfig` van die kubelet proses**:
```
ps -ef | grep kubelet
root 1406 1 9 11:55 ? 00:34:57 kubelet --cloud-provider=aws --cni-bin-dir=/opt/cni/bin --cni-conf-dir=/etc/cni/net.d --config=/etc/kubernetes/kubelet-conf.json --exit-on-lock-contention --kubeconfig=/etc/kubernetes/kubelet-kubeconfig --lock-file=/var/run/lock/kubelet.lock --network-plugin=cni --container-runtime docker --node-labels=node.kubernetes.io/role=k8sworker --volume-plugin-dir=/var/lib/kubelet/volumeplugin --node-ip 10.1.1.1 --hostname-override ip-1-1-1-1.eu-west-2.compute.internal
@@ -154,7 +155,7 @@ echo ""
fi
done
```
Die skrif [**can-they.sh**](https://github.com/BishopFox/badPods/blob/main/scripts/can-they.sh) sal outomaties **die tokens van ander pods verkry en kyk of hulle die toestemming het** waarna jy soek (in plaas daarvan dat jy 1 vir 1 kyk):
Die skrif [**can-they.sh**](https://github.com/BishopFox/badPods/blob/main/scripts/can-they.sh) sal outomaties **die tokens van ander pods verkry en nagaan of hulle die toestemming het** waarna jy soek (in plaas daarvan dat jy 1 vir 1 kyk):
```bash
./can-they.sh -i "--list -n default"
./can-they.sh -i "list secrets -n kube-system"// Some code
@@ -186,11 +187,11 @@ control-plane nodes het die **rol meester** en in **cloud bestuurde klusters sal
#### Lees geheime van etcd 1
As jy jou pod op 'n control-plane node kan laat loop met die `nodeName` selektor in die pod spesifikasie, mag jy maklike toegang tot die `etcd` databasis hê, wat al die konfigurasie vir die kluster bevat, insluitend al geheime.
As jy jou pod op 'n control-plane node kan laat loop met die `nodeName` selektor in die pod spesifikasie, mag jy maklike toegang tot die `etcd` databasis hê, wat al die konfigurasie vir die kluster bevat, insluitend al die geheime.
Hieronder is 'n vinnige en vuil manier om geheime van `etcd` te gryp as dit op die control-plane node is waarop jy is. As jy 'n meer elegante oplossing wil hê wat 'n pod met die `etcd` kliënt hulpmiddel `etcdctl` opstel en die control-plane node se akrediteer gebruik om met etcd te verbind waar dit ook al loop, kyk na [hierdie voorbeeld manifest](https://github.com/mauilion/blackhat-2019/blob/master/etcd-attack/etcdclient.yaml) van @mauilion.
Hieronder is 'n vinnige en vuil manier om geheime van `etcd` te gryp as dit op die control-plane node is waarop jy is. As jy 'n meer elegante oplossing wil hê wat 'n pod met die `etcd` kliënt nut `etcdctl` opstel en die control-plane node se akrediteer gebruik om met etcd te verbind waar dit ook al loop, kyk na [hierdie voorbeeld manifest](https://github.com/mauilion/blackhat-2019/blob/master/etcd-attack/etcdclient.yaml) van @mauilion.
**Kontroleer of `etcd` op die control-plane node loop en sien waar die databasis is (Dit is op 'n `kubeadm` geskepte kluster)**
**Kontroleer of `etcd` op die control-plane node loop en kyk waar die databasis is (Dit is op 'n `kubeadm` geskepte kluster)**
```
root@k8s-control-plane:/var/lib/etcd/member/wal# ps -ef | grep etcd | sed s/\-\-/\\n/g | grep data-dir
```
@@ -206,7 +207,7 @@ strings /var/lib/etcd/member/snap/db | less
```bash
db=`strings /var/lib/etcd/member/snap/db`; for x in `echo "$db" | grep eyJhbGciOiJ`; do name=`echo "$db" | grep $x -B40 | grep registry`; echo $name \| $x; echo; done
```
**Dieselfde opdrag, maar sommige greps om slegs die standaard token in die kube-system naamruimte te retourneer**
**Dieselfde opdrag, maar met 'n paar greps om slegs die standaard token in die kube-system naamruimte te retourneer**
```bash
db=`strings /var/lib/etcd/member/snap/db`; for x in `echo "$db" | grep eyJhbGciOiJ`; do name=`echo "$db" | grep $x -B40 | grep registry`; echo $name \| $x; echo; done | grep kube-system | grep default
```
@@ -231,7 +232,7 @@ etcd \ --data-dir=./restore \ --initial-cluster=state=existing \ --snapshot='./e
```bash
etcdctl get "" --prefix --keys-only | grep secret
```
6. Kry die sekrete:
6. Kry die sekretes:
```bash
etcdctl get /registry/secrets/default/my-secret
```
@@ -241,10 +242,10 @@ _Statiese Pods_ word direk deur die kubelet daemon op 'n spesifieke node bestuur
Daarom is statiese Pods altyd **gebind aan een Kubelet** op 'n spesifieke node.
Die **kubelet probeer outomaties om 'n spieël Pod op die Kubernetes API-bediener te skep** vir elke statiese Pod. Dit beteken dat die Pods wat op 'n node loop, sigbaar is op die API-bediener, maar nie van daar af beheer kan word nie. Die Pod-names sal met die node-hostnaam met 'n voorloop koppelteken gesuffikseerd word.
Die **kubelet probeer outomaties om 'n spieël Pod op die Kubernetes API-bediener** vir elke statiese Pod te skep. Dit beteken dat die Pods wat op 'n node loop, sigbaar is op die API-bediener, maar nie van daar af beheer kan word nie. Die Pod-names sal met die node-hostnaam met 'n voorafgaande koppelteken gesuffikseer word.
> [!CAUTION]
> Die **`spec` van 'n statiese Pod kan nie na ander API-objekte verwys nie** (bv., ServiceAccount, ConfigMap, Secret, ens. So **jy kan nie hierdie gedrag misbruik om 'n pod met 'n arbitrêre serviceAccount** in die huidige node te begin om die kluster te kompromitteer nie. Maar jy kan dit gebruik om pods in verskillende namespaces te laat loop (in geval dit om een of ander rede nuttig is).
> Die **`spec` van 'n statiese Pod kan nie na ander API-objekte verwys nie** (bv., ServiceAccount, ConfigMap, Secret, ens. So **jy kan nie hierdie gedrag misbruik om 'n pod met 'n arbitrêre serviceAccount** in die huidige node te begin om die kluster te kompromitteer nie. Maar jy kan dit gebruik om pods in verskillende namespaces te laat loop (indien dit om een of ander rede nuttig is).
As jy binne die node-gasheer is, kan jy dit laat 'n **statiese pod binne homself** skep. Dit is redelik nuttig omdat dit jou mag toelaat om 'n **pod in 'n ander namespace** soos **kube-system** te skep.

View File

@@ -1,72 +1,107 @@
# Kubernetes Versterking
# Kubernetes Hardening
{{#include ../../../banners/hacktricks-training.md}}
## Gereedskap om 'n kluster te analiseer
## Tools om 'n kluster te analiseer
### [**Steampipe - Kubernetes Compliance](https://github.com/turbot/steampipe-mod-kubernetes-compliance)
Dit sal **verskeie nakomingstoetsing oor die Kubernetes-kluster** uitvoer. Dit sluit ondersteuning in vir CIS, National Security Agency (NSA) en Cybersecurity and Infrastructure Security Agency (CISA) se tegniese verslag oor kubernetes-harding.
```bash
# Install Steampipe
brew install turbot/tap/powerpipe
brew install turbot/tap/steampipe
steampipe plugin install kubernetes
# Start the service
steampipe service start
# Install the module
mkdir dashboards
cd dashboards
powerpipe mod init
powerpipe mod install github.com/turbot/steampipe-mod-kubernetes-compliance
# Run the module
powerpipe server
```
### [**Kubescape**](https://github.com/armosec/kubescape)
[**Kubescape**](https://github.com/armosec/kubescape) is 'n K8s oopbron gereedskap wat 'n multi-cloud K8s enkele venster bied, insluitend risiko analise, sekuriteitsnakoming, RBAC visualiseerder en beeld kwesbaarhede skandering. Kubescape skandeer K8s klusters, YAML lêers, en HELM kaarte, wat miskonfigurasies volgens verskeie raamwerke (soos die [NSA-CISA](https://www.armosec.io/blog/kubernetes-hardening-guidance-summary-by-armo) , [MITRE ATT\&CK®](https://www.microsoft.com/security/blog/2021/03/23/secure-containerized-environments-with-updated-threat-matrix-for-kubernetes/)), sagteware kwesbaarhede, en RBAC (rol-gebaseerde-toegang-beheer) oortredings in vroeë stadiums van die CI/CD pyplyn, bereken risiko telling onmiddellik en toon risiko tendense oor tyd.
[**Kubescape**](https://github.com/armosec/kubescape) is 'n K8s oopbron hulpmiddel wat 'n multi-cloud K8s enkele venster bied, insluitend risiko-analise, sekuriteits-nakoming, RBAC visualiseerder en beeld kwesbaarhede skandering. Kubescape skandeer K8s klusters, YAML lêers, en HELM kaarte, en detecteer miskonfigurasies volgens verskeie raamwerke (soos die [NSA-CISA](https://www.armosec.io/blog/kubernetes-hardening-guidance-summary-by-armo) , [MITRE ATT\&CK®](https://www.microsoft.com/security/blog/2021/03/23/secure-containerized-environments-with-updated-threat-matrix-for-kubernetes/)), sagteware kwesbaarhede, en RBAC (rol-gebaseerde-toegang-beheer) oortredings in vroeë stadiums van die CI/CD pyplyn, bereken risiko telling onmiddellik en toon risiko tendense oor tyd.
```bash
curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash
kubescape scan --verbose
```
### [**Popeye**](https://github.com/derailed/popeye)
[**Popeye**](https://github.com/derailed/popeye) is 'n nut wat lewende Kubernetes-klusters skandeer en **rapporteer potensiële probleme met ontplooide hulpbronne en konfigurasies**. Dit sanitiseer jou kluster gebaseer op wat ontplooi is en nie wat op skyf sit nie. Deur jou kluster te skandeer, detecteer dit misconfigurasies en help jy om te verseker dat beste praktyke in plek is, wat toekomstige kopseer voorkom. Dit is daarop gemik om die kognitiewe \_over_load te verminder wat 'n mens ervaar wanneer jy 'n Kubernetes-kluster in die natuur bedryf. Verder, as jou kluster 'n metric-server gebruik, rapporteer dit potensiële hulpbron oor/onder toewysings en probeer om jou te waarsku indien jou kluster uit kapasiteit loop.
### [**Kube-bench**](https://github.com/aquasecurity/kube-bench)
Die hulpmiddel [**kube-bench**](https://github.com/aquasecurity/kube-bench) is 'n hulpmiddel wat nagaan of Kubernetes veilig ontplooi is deur die kontroles wat in die [**CIS Kubernetes Benchmark**](https://www.cisecurity.org/benchmark/kubernetes/) gedokumenteer is, uit te voer.\
Jy kan kies om:
- kube-bench van binne 'n houer te loop (wat PID-naamruimte met die gasheer deel)
- 'n houer te loop wat kube-bench op die gasheer installeer, en dan kube-bench direk op die gasheer te loop
- die nuutste binêre van die [Releases-bladsy](https://github.com/aquasecurity/kube-bench/releases) te installeer,
- dit van bron te kompileer.
- kube-bench van binne 'n houer te laat loop (wat PID-namespas met die gasheer deel)
- 'n houer te laat loop wat kube-bench op die gasheer installeer, en dan kube-bench direk op die gasheer te laat loop
- die nuutste binaire van die [Releases-bladsy](https://github.com/aquasecurity/kube-bench/releases) te installeer,
- dit van bron te compileer.
### [**Kubeaudit**](https://github.com/Shopify/kubeaudit)
Die hulpmiddel [**kubeaudit**](https://github.com/Shopify/kubeaudit) is 'n opdraglyn-hulpmiddel en 'n Go-pakket om **Kubernetes-klusters** vir verskeie verskillende sekuriteitskwessies te **audite**.
**[DEPRECATED]** Die hulpmiddel [**kubeaudit**](https://github.com/Shopify/kubeaudit) is 'n opdraglyn-hulpmiddel en 'n Go-pakket om **Kubernetes-klusters** vir verskeie verskillende sekuriteitskwessies te **audite**.
Kubeaudit kan opspoor of dit binne 'n houer in 'n kluster loop. As dit so is, sal dit probeer om al die Kubernetes-hulpbronne in daardie kluster te **audite**:
Kubeaudit kan detecteer of dit binne 'n houer in 'n kluster loop. As dit so is, sal dit probeer om al die Kubernetes-hulpbronne in daardie kluster te audite.
```
kubeaudit all
```
Hierdie hulpmiddel het ook die argument `autofix` om **automaties gedetecteerde probleme op te los.**
Hierdie hulpmiddel het ook die argument `autofix` om **automaties gedetecteerde probleme reg te stel.**
### [**Kube-hunter**](https://github.com/aquasecurity/kube-hunter)
Die hulpmiddel [**kube-hunter**](https://github.com/aquasecurity/kube-hunter) jag vir sekuriteits swakhede in Kubernetes klusters. Die hulpmiddel is ontwikkel om bewustheid en sigbaarheid vir sekuriteitskwessies in Kubernetes omgewings te verhoog.
**[DEPRECATED]** Die hulpmiddel [**kube-hunter**](https://github.com/aquasecurity/kube-hunter) jag vir sekuriteits swakhede in Kubernetes klusters. Die hulpmiddel is ontwikkel om bewustheid en sigbaarheid vir sekuriteitskwessies in Kubernetes omgewings te verhoog.
```bash
kube-hunter --remote some.node.com
```
### [Trivy](https://github.com/aquasecurity/trivy)
[Trivy](https://github.com/aquasecurity/trivy) het skandeerders wat soek na sekuriteitskwessies, en teikens waar dit daardie kwessies kan vind:
- Houer Beeld
- Lêerstelsel
- Git Repository (afgeleë)
- Virtuele Masjien Beeld
- Kubernetes
### [**Kubei**](https://github.com/Erezf-p/kubei)
[**Kubei**](https://github.com/Erezf-p/kubei) is 'n kwesbaarheidskandering en CIS Docker-benchmark hulpmiddel wat gebruikers toelaat om 'n akkurate en onmiddellike risiko-assessering van hul kubernetes klusters te verkry. Kubei skandeer alle beelde wat in 'n Kubernetes-kluster gebruik word, insluitend beelde van toepassingspods en stelselpods.
**[Lyk soos nie onderhou]**
[**Kubei**](https://github.com/Erezf-p/kubei) is 'n kwesbaarheidskandeer- en CIS Docker-benchmark hulpmiddel wat gebruikers toelaat om 'n akkurate en onmiddellike risiko-assessering van hul kubernetes klusters te kry. Kubei skandeer al die beelde wat in 'n Kubernetes-kluster gebruik word, insluitend beelde van toepassingspods en stelselpods.
### [**KubiScan**](https://github.com/cyberark/KubiScan)
[**KubiScan**](https://github.com/cyberark/KubiScan) is 'n hulpmiddel om Kubernetes-klusters te skandeer vir riskante toestemmings in Kubernetes se rol-gebaseerde toegangsbeheer (RBAC) outorisasiemodel.
[**KubiScan**](https://github.com/cyberark/KubiScan) is 'n hulpmiddel om Kubernetes-klusters te skandeer vir riskante toestemmings in Kubernetes se Rol-gebaseerde toegangbeheer (RBAC) outorisasiemodel.
### [Managed Kubernetes Auditing Toolkit](https://github.com/DataDog/managed-kubernetes-auditing-toolkit)
[**Mkat**](https://github.com/DataDog/managed-kubernetes-auditing-toolkit) is 'n hulpmiddel wat gebou is om ander tipes hoë risiko kontroles te toets in vergelyking met die ander hulpmiddels. Dit het hoofsaaklik 3 verskillende modi:
[**Mkat**](https://github.com/DataDog/managed-kubernetes-auditing-toolkit) is 'n hulpmiddel wat gebou is om ander tipes hoë risiko-toetse te toets in vergelyking met die ander hulpmiddels. Dit het hoofsaaklik 3 verskillende modi:
- **`find-role-relationships`**: Wat sal vind watter AWS rolle in watter pods loop
- **`find-secrets`**: Wat probeer om geheime in K8s hulpbronne soos Pods, ConfigMaps, en Secrets te identifiseer.
- **`test-imds-access`**: Wat sal probeer om pods te laat loop en probeer om toegang tot die metadata v1 en v2 te verkry. WAARSKUWING: Dit sal 'n pod in die kluster laat loop, wees baie versigtig omdat jy dalk nie dit wil doen nie!
- **`test-imds-access`**: Wat sal probeer om pods te laat loop en toegang tot die metadata v1 en v2 te kry. WAARSKUWING: Dit sal 'n pod in die kluster laat loop, wees baie versigtig omdat jy dalk nie dit wil doen nie!
## **Audit IaC Code**
### [**Popeye**](https://github.com/derailed/popeye)
[**Popeye**](https://github.com/derailed/popeye) is 'n nut wat lewendige Kubernetes-klusters skandeer en **rapporteer potensiële probleme met ontplooide hulpbronne en konfigurasies**. Dit sanitiseer jou kluster gebaseer op wat ontplooi is en nie wat op skyf sit nie. Deur jou kluster te skandeer, detecteer dit misconfigurasies en help jy om te verseker dat beste praktyke in plek is, wat toekomstige kopseer voorkom. Dit is daarop gemik om die kognitiewe \_over_load wat 'n mens ervaar wanneer 'n Kubernetes-kluster in die natuur bedryf word, te verminder. Verder, as jou kluster 'n metriek-bediener gebruik, rapporteer dit potensiële hulpbron oor/onder toewysings en probeer om jou te waarsku as jou kluster uit kapasiteit loop.
### [**KICS**](https://github.com/Checkmarx/kics)
[**KICS**](https://github.com/Checkmarx/kics) vind **sekuriteitskwesbaarhede**, nakomingkwessies, en infrastruktuur misconfigurasies in die volgende **Infrastruktuur as Kode oplossings**: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM, en OpenAPI 3.0 spesifikasies
[**KICS**](https://github.com/Checkmarx/kics) vind **sekuriteitskwesbaarhede**, nakomingskwessies, en infrastruktuur miskonfigurasies in die volgende **Infrastruktuur as Kode oplossings**: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM, en OpenAPI 3.0 spesifikasies
### [**Checkov**](https://github.com/bridgecrewio/checkov)
[**Checkov**](https://github.com/bridgecrewio/checkov) is 'n statiese kode analise hulpmiddel vir infrastruktuur-as-kode.
Dit skandeer wolkinfrastruktuur wat met [Terraform](https://terraform.io) voorsien is, Terraform plan, [Cloudformation](https://aws.amazon.com/cloudformation/), [AWS SAM](https://aws.amazon.com/serverless/sam/), [Kubernetes](https://kubernetes.io), [Dockerfile](https://www.docker.com), [Serverless](https://www.serverless.com) of [ARM Templates](https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/overview) en detecteer sekuriteits- en nakoming misconfigurasies met behulp van graf-gebaseerde skandering.
Dit skandeer wolkinfrastruktuur wat met [Terraform](https://terraform.io), Terraform plan, [Cloudformation](https://aws.amazon.com/cloudformation/), [AWS SAM](https://aws.amazon.com/serverless/sam/), [Kubernetes](https://kubernetes.io), [Dockerfile](https://www.docker.com), [Serverless](https://www.serverless.com) of [ARM Templates](https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/overview) voorsien is en detecteer sekuriteits- en nakomingsmisconfigurasies met behulp van graf-gebaseerde skandering.
### [**Kube-score**](https://github.com/zegl/kube-score)
@@ -85,7 +120,7 @@ Om te installeer:
### Kubernetes PodSecurityContext en SecurityContext
Jy kan die **sekuriteitskonteks van die Pods** (met _PodSecurityContext_) en van die **houers** wat gaan loop (met _SecurityContext_) konfigureer. Vir meer inligting lees:
Jy kan die **sekuriteitskonteks van die Pods** (met _PodSecurityContext_) en van die **houers** wat gaan loop (met _SecurityContext_) konfigureer. Vir meer inligting, lees:
{{#ref}}
kubernetes-securitycontext-s.md
@@ -93,11 +128,11 @@ kubernetes-securitycontext-s.md
### Kubernetes API Hardening
Dit is baie belangrik om die **toegang tot die Kubernetes Api Server** te **beskerm** aangesien 'n kwaadwillige akteur met genoeg bevoegdhede dit kan misbruik en op baie maniere die omgewing kan benadeel.\
Dit is belangrik om beide die **toegang** (**whitelist** oorspronge om toegang tot die API Server te verkry en enige ander verbinding te weier) en die [**authentisering**](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-authentication-authorization/) (volgens die beginsel van **min** **bevoegdheid**). En beslis **nooit** **anonieme** **versoeke** **toelaat**.
Dit is baie belangrik om die **toegang tot die Kubernetes Api Server** te beskerm, aangesien 'n kwaadwillige akteur met genoeg voorregte in staat kan wees om dit te misbruik en die omgewing op baie maniere te benadeel.\
Dit is belangrik om beide die **toegang** (**whitelist** oorspronge om toegang tot die API Server te verkry en enige ander verbinding te weier) en die [**outentisering**](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-authentication-authorization/) (volgens die beginsel van **min** **voorreg**) te beveilig. En beslis **nooit** **anonieme** **versoeke** **toelaat**.
**Algemene Versoek proses:**\
Gebruiker of K8s ServiceAccount > Authentisering > Outorisering > Toelatingsbeheer.
Gebruiker of K8s ServiceAccount > Outentisering > Outorisering > Toelatingsbeheer.
**Wenke**:
@@ -105,13 +140,13 @@ Gebruiker of K8s ServiceAccount > Authentisering > Outorisering > Toela
- Vermy Anonieme toegang.
- NodeRestriction; Geen toegang vanaf spesifieke nodes tot die API.
- [https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction)
- Basies verhoed dit dat kubelets etikette met 'n node-restriction.kubernetes.io/ voorvoegsel kan byvoeg/verwyder/opdateer. Hierdie etiketvoorvoegsel is gereserveer vir administrateurs om hul Node-objekte vir werklading-isolasie doeleindes te etiketteer, en kubelets sal nie toegelaat word om etikette met daardie voorvoegsel te wysig nie.
- Basies verhoed dit dat kubelets etikette met 'n node-restriction.kubernetes.io/ voorvoegsel kan byvoeg/verwyder/opdateer. Hierdie etiketvoorvoegsel is gereserveer vir administrateurs om hul Node-objekte vir werklading-isolasie doeleindes te etiketteer, en kubelets sal nie toegelaat word om etikette met daardie voorvoegsel te verander nie.
- En ook, laat kubelets toe om hierdie etikette en etiketvoorvoegsels by te voeg/verwyder/op te dateer.
- Verseker met etikette die veilige werklading-isolasie.
- Vermy spesifieke pods van API-toegang.
- Vermy ApiServer blootstelling aan die internet.
- Vermy ongeautoriseerde toegang RBAC.
- ApiServer poort met firewall en IP whitelisting.
- Vermy ongeoorloofde toegang RBAC.
- ApiServer poort met firewall en IP-whitelisting.
### SecurityContext Hardening
@@ -155,12 +190,19 @@ Jy moet jou Kubernetes-omgewing so gereeld as nodig opdateer om te hê:
**Die beste manier om 'n Kubernetes-kluster op te dateer is (van** [**hier**](https://kubernetes.io/docs/tasks/administer-cluster/cluster-upgrade/)**):**
- Opgradeer die Meester Node-komponente volgens hierdie volgorde:
- Opgradeer die Meester Knoop komponente volgens hierdie volgorde:
- etcd (alle instansies).
- kube-apiserver (alle kontrolevlak-gasheer).
- kube-apiserver (alle beheervlak gasheer).
- kube-controller-manager.
- kube-scheduler.
- cloud controller manager, as jy een gebruik.
- Opgradeer die Werker Node-komponente soos kube-proxy, kubelet.
- wolkbeheerder, as jy een gebruik.
- Opgradeer die Werknemer Knoop komponente soos kube-proxy, kubelet.
## Kubernetes monitering & sekuriteit:
- Kyverno Beleid Enjin
- Cilium Tetragon - eBPF-gebaseerde Sekuriteitswaak en Tydelike Handhaving
- Netwerk Sekuriteitsbeleide
- Falco - Tydelike sekuriteitsmonitering & opsporing
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1,4 +1,4 @@
# Kubernetes Kyverno omseiling
# Kubernetes Kyverno bypass
**Die oorspronklike skrywer van hierdie bladsy is** [**Guillaume**](https://www.linkedin.com/in/guillaume-chapela-ab4b9a196)
@@ -6,14 +6,14 @@
### Lys reëls
Om 'n oorsig te hê, kan help om te weet watter reëls aktief is, op watter modus en wie dit kan omseil
Om 'n oorsig te hê, kan help om te weet watter reëls aktief is, in watter modus en wie dit kan omseil
```bash
$ kubectl get clusterpolicies
$ kubectl get policies
```
### Tel Uitsluitings
### Enumereer Uitsluitings
Vir elke ClusterPolicy en Policy kan jy 'n lys van uitgeslote entiteite spesifiseer, insluitend:
Vir elke ClusterPolicy en Beleid, kan jy 'n lys van uitgeslote entiteite spesifiseer, insluitend:
- Groepe: `excludedGroups`
- Gebruikers: `excludedUsers`
@@ -23,13 +23,13 @@ Vir elke ClusterPolicy en Policy kan jy 'n lys van uitgeslote entiteite spesifis
Hierdie uitgeslote entiteite sal vrygestel wees van die beleidsvereistes, en Kyverno sal die beleid nie vir hulle afdwing nie.
## Voorbeeld 
## Voorbeeld
Kom ons kyk na een clusterpolicy voorbeeld : 
Kom ons kyk na een clusterpolicy voorbeeld :
```
$ kubectl get clusterpolicies MYPOLICY -o yaml
```
Soek na die uitgeslote entiteite : 
Soek na die uitgeslote entiteite :
```yaml
exclude:
any:
@@ -43,12 +43,16 @@ name: system:serviceaccount:TEST:thisisatest
- kind: User
name: system:serviceaccount:AHAH:*
```
Binne 'n kluster kan verskeie bygevoegde komponente, operateurs en toepassings uitsluiting van 'n klusterbeleid vereis. Dit kan egter uitgebuit word deur te fokus op bevoorregte entiteite. In sommige gevalle kan dit voorkom asof 'n naamruimte nie bestaan nie of dat jy nie toestemming het om 'n gebruiker na te boots nie, wat 'n teken van miskonfigurasie kan wees.
Binne 'n kluster kan verskeie bygevoegde komponente, operateurs en toepassings uitsluiting van 'n klusterbeleid vereis. Dit kan egter uitgebuit word deur te fokus op bevoorregte entiteite. In sommige gevalle kan dit voorkom asof 'n naamruimte nie bestaan nie of dat jy nie toestemming het om 'n gebruiker na te volg nie, wat 'n teken van miskonfigurasie kan wees.
## Misbruik van ValidatingWebhookConfiguration
'n Ander manier om beleide te omseil, is om op die ValidatingWebhookConfiguration hulpbron te fokus : 
Nog 'n manier om beleide te omseil, is om op die ValidatingWebhookConfiguration hulpbron te fokus:
{{#ref}}
../kubernetes-validatingwebhookconfiguration.md
{{#endref}}
## Meer inligting
Vir meer inligting, kyk [https://madhuakula.com/kubernetes-goat/docs/scenarios/scenario-22/securing-kubernetes-clusters-using-kyverno-policy-engine/welcome/](https://madhuakula.com/kubernetes-goat/docs/scenarios/scenario-22/securing-kubernetes-clusters-using-kyverno-policy-engine/welcome/)