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
2559dbf5d6
commit
fb289cac54
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
{{#include ../../../../banners/hacktricks-training.md}}
|
{{#include ../../../../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
`/proc`, `/sys`, और `/var` का उचित namespace isolation के बिना खुलासा महत्वपूर्ण सुरक्षा जोखिमों को जन्म देता है, जिसमें हमले की सतह का विस्तार और जानकारी का खुलासा शामिल है। ये निर्देशिकाएँ संवेदनशील फ़ाइलें रखती हैं जो, यदि गलत तरीके से कॉन्फ़िगर की गईं या किसी अनधिकृत उपयोगकर्ता द्वारा एक्सेस की गईं, तो कंटेनर से बाहर निकलने, होस्ट में संशोधन, या आगे के हमलों में मदद करने वाली जानकारी प्रदान कर सकती हैं। उदाहरण के लिए, `-v /proc:/host/proc` को गलत तरीके से माउंट करना AppArmor सुरक्षा को बायपास कर सकता है, जिससे `/host/proc` असुरक्षित रह जाता है।
|
`/proc`, `/sys`, और `/var` का उचित namespace isolation के बिना खुलासा महत्वपूर्ण सुरक्षा जोखिमों को प्रस्तुत करता है, जिसमें हमले की सतह का विस्तार और जानकारी का खुलासा शामिल है। ये निर्देशिकाएँ संवेदनशील फ़ाइलें रखती हैं जो, यदि गलत तरीके से कॉन्फ़िगर की गईं या किसी अनधिकृत उपयोगकर्ता द्वारा एक्सेस की गईं, तो कंटेनर से भागने, होस्ट में संशोधन, या आगे के हमलों में मदद करने वाली जानकारी प्रदान कर सकती हैं। उदाहरण के लिए, `-v /proc:/host/proc` को गलत तरीके से माउंट करना AppArmor सुरक्षा को बायपास कर सकता है, जिससे `/host/proc` असुरक्षित रह जाता है।
|
||||||
|
|
||||||
**आप प्रत्येक संभावित vuln के बारे में और विवरण पा सकते हैं** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**।**
|
**आप प्रत्येक संभावित vuln के बारे में और विवरण पा सकते हैं** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**।**
|
||||||
|
|
||||||
@ -15,7 +15,7 @@
|
|||||||
#### **`/proc/sys/kernel/core_pattern`**
|
#### **`/proc/sys/kernel/core_pattern`**
|
||||||
|
|
||||||
- [core(5)](https://man7.org/linux/man-pages/man5/core.5.html) में वर्णित।
|
- [core(5)](https://man7.org/linux/man-pages/man5/core.5.html) में वर्णित।
|
||||||
- कोर-फ़ाइल उत्पन्न होने पर निष्पादित करने के लिए एक प्रोग्राम को परिभाषित करने की अनुमति देता है, जिसमें पहले 128 बाइट्स तर्क के रूप में होते हैं। यदि फ़ाइल एक पाइप `|` से शुरू होती है तो यह कोड निष्पादन का कारण बन सकता है।
|
- कोर-फाइल जनरेशन पर निष्पादित करने के लिए एक प्रोग्राम को परिभाषित करने की अनुमति देता है, पहले 128 बाइट्स को तर्क के रूप में। यदि फ़ाइल एक पाइप `|` से शुरू होती है, तो यह कोड निष्पादन का कारण बन सकता है।
|
||||||
- **परीक्षण और शोषण उदाहरण**:
|
- **परीक्षण और शोषण उदाहरण**:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@ -38,17 +38,17 @@ ls -l $(cat /proc/sys/kernel/modprobe) # Check access to modprobe
|
|||||||
#### **`/proc/sys/vm/panic_on_oom`**
|
#### **`/proc/sys/vm/panic_on_oom`**
|
||||||
|
|
||||||
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html) में संदर्भित।
|
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html) में संदर्भित।
|
||||||
- एक वैश्विक ध्वज जो नियंत्रित करता है कि क्या कर्नेल पैनिक करता है या OOM किलर को बुलाता है जब OOM स्थिति होती है।
|
- एक वैश्विक ध्वज जो नियंत्रित करता है कि क्या कर्नेल पैनिक करता है या OOM स्थिति होने पर OOM किलर को बुलाता है।
|
||||||
|
|
||||||
#### **`/proc/sys/fs`**
|
#### **`/proc/sys/fs`**
|
||||||
|
|
||||||
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html) के अनुसार, फ़ाइल प्रणाली के बारे में विकल्प और जानकारी रखता है।
|
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html) के अनुसार, फ़ाइल प्रणाली के बारे में विकल्प और जानकारी रखता है।
|
||||||
- लिखने की अनुमति विभिन्न सेवा से इनकार के हमलों को सक्षम कर सकती है।
|
- लेखन पहुंच विभिन्न सेवा से इनकार के हमलों को सक्षम कर सकती है।
|
||||||
|
|
||||||
#### **`/proc/sys/fs/binfmt_misc`**
|
#### **`/proc/sys/fs/binfmt_misc`**
|
||||||
|
|
||||||
- मैजिक नंबर के आधार पर गैर-देशी बाइनरी प्रारूपों के लिए इंटरप्रेटर्स को पंजीकृत करने की अनुमति देता है।
|
- उनके जादुई नंबर के आधार पर गैर-देशी बाइनरी प्रारूपों के लिए व्याख्याकारों को पंजीकृत करने की अनुमति देता है।
|
||||||
- यदि `/proc/sys/fs/binfmt_misc/register` लिखा जा सकता है तो यह विशेषाधिकार वृद्धि या रूट शेल एक्सेस का कारण बन सकता है।
|
- यदि `/proc/sys/fs/binfmt_misc/register` लिखा जा सकता है, तो यह विशेषाधिकार वृद्धि या रूट शेल एक्सेस का कारण बन सकता है।
|
||||||
- प्रासंगिक शोषण और व्याख्या:
|
- प्रासंगिक शोषण और व्याख्या:
|
||||||
- [Poor man's rootkit via binfmt_misc](https://github.com/toffan/binfmt_misc)
|
- [Poor man's rootkit via binfmt_misc](https://github.com/toffan/binfmt_misc)
|
||||||
- गहन ट्यूटोरियल: [Video link](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
|
- गहन ट्यूटोरियल: [Video link](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
|
||||||
@ -84,7 +84,7 @@ echo b > /proc/sysrq-trigger # Reboots the host
|
|||||||
#### **`/proc/[pid]/mem`**
|
#### **`/proc/[pid]/mem`**
|
||||||
|
|
||||||
- कर्नेल मेमोरी डिवाइस `/dev/mem` के साथ इंटरफेस करता है।
|
- कर्नेल मेमोरी डिवाइस `/dev/mem` के साथ इंटरफेस करता है।
|
||||||
- ऐतिहासिक रूप से विशेषाधिकार वृद्धि हमलों के लिए संवेदनशील।
|
- ऐतिहासिक रूप से विशेषाधिकार वृद्धि के हमलों के लिए संवेदनशील।
|
||||||
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html) पर अधिक।
|
- [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html) पर अधिक।
|
||||||
|
|
||||||
#### **`/proc/kcore`**
|
#### **`/proc/kcore`**
|
||||||
@ -96,12 +96,12 @@ echo b > /proc/sysrq-trigger # Reboots the host
|
|||||||
|
|
||||||
#### **`/proc/kmem`**
|
#### **`/proc/kmem`**
|
||||||
|
|
||||||
- `/dev/kmem` के लिए वैकल्पिक इंटरफेस, कर्नेल वर्चुअल मेमोरी का प्रतिनिधित्व करता है।
|
- कर्नेल वर्चुअल मेमोरी का प्रतिनिधित्व करने के लिए `/dev/kmem` के लिए वैकल्पिक इंटरफेस।
|
||||||
- पढ़ने और लिखने की अनुमति देता है, इसलिए कर्नेल मेमोरी का प्रत्यक्ष संशोधन।
|
- पढ़ने और लिखने की अनुमति देता है, इसलिए कर्नेल मेमोरी का प्रत्यक्ष संशोधन।
|
||||||
|
|
||||||
#### **`/proc/mem`**
|
#### **`/proc/mem`**
|
||||||
|
|
||||||
- `/dev/mem` के लिए वैकल्पिक इंटरफेस, भौतिक मेमोरी का प्रतिनिधित्व करता है।
|
- भौतिक मेमोरी का प्रतिनिधित्व करने के लिए `/dev/mem` के लिए वैकल्पिक इंटरफेस।
|
||||||
- पढ़ने और लिखने की अनुमति देता है, सभी मेमोरी का संशोधन वर्चुअल से भौतिक पते को हल करने की आवश्यकता है।
|
- पढ़ने और लिखने की अनुमति देता है, सभी मेमोरी का संशोधन वर्चुअल से भौतिक पते को हल करने की आवश्यकता है।
|
||||||
|
|
||||||
#### **`/proc/sched_debug`**
|
#### **`/proc/sched_debug`**
|
||||||
@ -134,7 +134,7 @@ host*path=$(sed -n 's/.*\perdir=(\[^,]\_).\*/\1/p' /etc/mtab)
|
|||||||
|
|
||||||
echo "$host_path/evil-helper" > /sys/kernel/uevent_helper
|
echo "$host_path/evil-helper" > /sys/kernel/uevent_helper
|
||||||
|
|
||||||
#### एक uevent ट्रिगर करता है
|
#### एक uevent को ट्रिगर करता है
|
||||||
|
|
||||||
echo change > /sys/class/mem/null/uevent
|
echo change > /sys/class/mem/null/uevent
|
||||||
|
|
||||||
@ -153,7 +153,7 @@ cat /output %%%
|
|||||||
#### **`/sys/kernel/security`**
|
#### **`/sys/kernel/security`**
|
||||||
|
|
||||||
- `securityfs` इंटरफेस को रखता है, जो AppArmor जैसे Linux सुरक्षा मॉड्यूल की कॉन्फ़िगरेशन की अनुमति देता है।
|
- `securityfs` इंटरफेस को रखता है, जो AppArmor जैसे Linux सुरक्षा मॉड्यूल की कॉन्फ़िगरेशन की अनुमति देता है।
|
||||||
- एक्सेस एक कंटेनर को अपने MAC सिस्टम को निष्क्रिय करने में सक्षम कर सकता है।
|
- पहुंच एक कंटेनर को अपने MAC सिस्टम को निष्क्रिय करने में सक्षम कर सकती है।
|
||||||
|
|
||||||
#### **`/sys/firmware/efi/vars` और `/sys/firmware/efi/efivars`**
|
#### **`/sys/firmware/efi/vars` और `/sys/firmware/efi/efivars`**
|
||||||
|
|
||||||
@ -167,7 +167,7 @@ cat /output %%%
|
|||||||
|
|
||||||
### `/var` Vulnerabilities
|
### `/var` Vulnerabilities
|
||||||
|
|
||||||
होस्ट का **/var** फ़ोल्डर कंटेनर रनटाइम सॉकेट और कंटेनरों की फ़ाइल सिस्टम को रखता है। यदि इस फ़ोल्डर को एक कंटेनर के अंदर माउंट किया जाता है, तो उस कंटेनर को अन्य कंटेनरों की फ़ाइल सिस्टम पर रूट विशेषाधिकारों के साथ पढ़ने-लिखने की अनुमति मिलेगी। इसका दुरुपयोग कंटेनरों के बीच पिवट करने, सेवा से इनकार करने, या अन्य कंटेनरों और उन पर चलने वाले अनुप्रयोगों में बैकडोर डालने के लिए किया जा सकता है।
|
होस्ट का **/var** फ़ोल्डर कंटेनर रनटाइम सॉकेट और कंटेनरों की फ़ाइल सिस्टम को रखता है। यदि इस फ़ोल्डर को एक कंटेनर के अंदर माउंट किया जाता है, तो उस कंटेनर को अन्य कंटेनरों की फ़ाइल सिस्टम पर रूट विशेषाधिकार के साथ पढ़ने-लिखने की पहुंच प्राप्त होगी। इसका दुरुपयोग कंटेनरों के बीच पिवट करने, सेवा से इनकार करने, या अन्य कंटेनरों और उन पर चलने वाले अनुप्रयोगों में बैकडोर डालने के लिए किया जा सकता है।
|
||||||
|
|
||||||
#### Kubernetes
|
#### Kubernetes
|
||||||
|
|
||||||
@ -227,12 +227,16 @@ The XSS was achieved:
|
|||||||
The container can read K8s serviceaccount tokens or AWS webidentity tokens
|
The container can read K8s serviceaccount tokens or AWS webidentity tokens
|
||||||
which allows the container to gain unauthorized access to K8s or cloud:
|
which allows the container to gain unauthorized access to K8s or cloud:
|
||||||
```bash
|
```bash
|
||||||
/ # cat /host-var/run/secrets/kubernetes.io/serviceaccount/token
|
/ # find /host-var/ -type f -iname '*token*' 2>/dev/null | grep kubernetes.io
|
||||||
/ # cat /host-var/run/secrets/eks.amazonaws.com/serviceaccount/token
|
/host-var/lib/kubelet/pods/21411f19-934c-489e-aa2c-4906f278431e/volumes/kubernetes.io~projected/kube-api-access-64jw2/..2025_01_22_12_37_42.4197672587/token
|
||||||
|
<SNIP>
|
||||||
|
/host-var/lib/kubelet/pods/01c671a5-aaeb-4e0b-adcd-1cacd2e418ac/volumes/kubernetes.io~projected/kube-api-access-bljdj/..2025_01_22_12_17_53.265458487/token
|
||||||
|
/host-var/lib/kubelet/pods/01c671a5-aaeb-4e0b-adcd-1cacd2e418ac/volumes/kubernetes.io~projected/aws-iam-token/..2025_01_22_03_45_56.2328221474/token
|
||||||
|
/host-var/lib/kubelet/pods/5fb6bd26-a6aa-40cc-abf7-ecbf18dde1f6/volumes/kubernetes.io~projected/kube-api-access-fm2t6/..2025_01_22_12_25_25.3018586444/token
|
||||||
```
|
```
|
||||||
#### Docker
|
#### Docker
|
||||||
|
|
||||||
Docker (या Docker Compose तैनातियों) में शोषण बिल्कुल वही है, सिवाय इसके कि आमतौर पर अन्य कंटेनरों की फ़ाइल सिस्टम एक अलग आधार पथ के तहत उपलब्ध होती हैं:
|
Docker (या Docker Compose डिप्लॉयमेंट्स) में शोषण बिल्कुल वही है, सिवाय इसके कि आमतौर पर अन्य कंटेनरों की फ़ाइल सिस्टम एक अलग बेस पाथ के तहत उपलब्ध होती हैं:
|
||||||
```bash
|
```bash
|
||||||
$ docker info | grep -i 'docker root\|storage driver'
|
$ docker info | grep -i 'docker root\|storage driver'
|
||||||
Storage Driver: overlay2
|
Storage Driver: overlay2
|
||||||
@ -250,7 +254,7 @@ drwx--x--- 4 root root 4096 Jan 9 21:22 062f14e5adbedce75cea699828e22657c8044
|
|||||||
```
|
```
|
||||||
#### नोट
|
#### नोट
|
||||||
|
|
||||||
वास्तविक पथ विभिन्न सेटअप में भिन्न हो सकते हैं, यही कारण है कि आपका सबसे अच्छा विकल्प **find** कमांड का उपयोग करना है ताकि अन्य कंटेनरों की फ़ाइल सिस्टम को खोजा जा सके।
|
वास्तविक पथ विभिन्न सेटअप में भिन्न हो सकते हैं, यही कारण है कि आपका सबसे अच्छा विकल्प **find** कमांड का उपयोग करना है ताकि अन्य कंटेनरों की फ़ाइल सिस्टम और SA / वेब पहचान टोकन को खोजा जा सके।
|
||||||
|
|
||||||
### संदर्भ
|
### संदर्भ
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user