Share
## https://sploitus.com/exploit?id=5EF7DE3B-0FFD-5474-8BD5-9CC13B531FFE
# CVE-2026-57827 โ€” RSFiles! Unauthenticated File Upload โ†’ RCE

> **Disclaimer โ€” authorized use only.**
> This is a **proof-of-concept** for **security research and defensive testing**.
> You are responsible for using it **only on systems you own or have explicit
> written permission to test**. Misuse against third parties without consent is
> illegal. See [SECURITY.md](SECURITY.md) for the responsible-disclosure stance.

Exploit + standalone detector for **CVE-2026-57827** in the **RSFiles!**
(`com_rsfiles`) component for Joomla, versions **< 1.17.12** (fixed in
`1.17.12`, CVSS 9.8 / 10.0).

The frontend upload is split across two tasks:
1. `rsfiles.checkupload` โ€” pre-flight gate (permission + extension allow-list)
2. `rsfiles.upload` โ€” write method (no permission check, no file-type check, no CSRF)

The write task can be called **directly**, skipping the pre-flight gate, which
lets an unauthenticated attacker upload an executable `.php` file into a public
folder and run it โ†’ **unauthenticated RCE**.

---

## โš ๏ธ What this project is / isn't

- โœ… A clean, readable re-implementation of the *described* attack chain for
  researchers and defenders.
- โœ… Includes a **local mock server** so you can validate the whole flow with
  **zero risk** to anything real.
- โœ… Includes a **detection-only** mode that makes **no upload at all**.
- โŒ Not an authorized PoC from the vendor โ€” no public PoC exists, so this is an
  independent implementation based on the public advisory.

---

## Files

| File | Purpose |
|---|---|
| `cve_2026_57827.py` | Exploit + scanner + CLI (entry point) |
| `rsfiles_detect.py` | Standalone detection module (no exploit) โ€” also has its own CLI |
| `payload.py` | Modular, compact PHP payload builder |
| `common.py` | Shared HTTP client, config, and helpers |
| `mock_server.py` | Safe local simulation for testing |

All modules must live in the **same directory** (they import each other).

## Install

```bash
python3 -m pip install -r requirements.txt   # or just: pip install requests
```

## Usage

### 1 ยท Detection only (no upload, safe for reconnaissance)

```bash
python rsfiles_detect.py -t example.com
```

```
Host     : example.com
RSFiles! : YES v1.17.11
Protocol : https
Status   : VULNERABLE  (below 1.17.12)
```

Multi-host:
```bash
python rsfiles_detect.py -f hosts.txt
```

### 2 ยท Full exploit (single target)

```bash
python cve_2026_57827.py -t example.com
```

On success the tool prints the shell URL **with its random token** and the
command output โ€” that output is the proof of RCE.

### 3 ยท Mass scan + reports

```bash
python cve_2026_57827.py -f targets.txt --threads 30 -o shells.txt --csv report.csv
```

| Flag | Description |
|---|---|
| `--threads N` | Concurrency (default 30) |
| `--proxy URL` | Route through a proxy (Burp/ZAP) |
| `--timeout N` | Per-request timeout (seconds) |
| `--no-cleanup` | Keep the uploaded shell (default: auto-delete after RCE) |
| `-o FILE` | Save RCE URLs |
| `--csv FILE` | Full structured report |
| `--debug` / `-v` | Verbose request-level logging |

## Local testing (zero risk)

```bash
# Terminal 1 โ€” start the mock (vulnerable)
python mock_server.py 8000 1.17.11

# Terminal 2 โ€” scan it
python rsfiles_detect.py -t 127.0.0.1:8000
python cve_2026_57827.py -t 127.0.0.1:8000
```

`1.17.11` / `1.17.10` = vulnerable ยท `1.17.12` = patched.

## Design notes

- **Modular payload** (`payload.py`): each behaviour (gate, upload, exec,
  delete, list) is one small function; exec-function names are base64-encoded
  so raw names like `system` don't appear in the file bytes.
- **Randomized benign filenames** (e.g. `cache7f31.php`) instead of classic
  hidden dotfile shell names.
- **Incremental counters** (O(1)) instead of re-scanning results.
- **Single-source URL parsing** via `common.base_of()`.

## Credits / inspiration

Style modelled on public Joomla component-exploit collections (e.g.
`incredibleindishell/joomla-vulnerabilities`) and the RSJoomla/mysites.guru
advisory write-ups for this CVE. This is an independent implementation; no
public PoC was used.

## License

MIT โ€” see [LICENSE](LICENSE). Research/defense use only.