[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FD] Unserialisation in Post Indexer could allow man-in-the-middle to execute arbitrary code (in some circumstances) (WordPress plugin)
- To: fulldisclosure@xxxxxxxxxxxx
- Subject: [FD] Unserialisation in Post Indexer could allow man-in-the-middle to execute arbitrary code (in some circumstances) (WordPress plugin)
- From: dxw Security <security@xxxxxxx>
- Date: Thu, 17 Nov 2016 15:05:44 +0000
Details
================
Software: Post Indexer
Version: 3.0.6.1
Homepage: http://premium.wpmudev.org/project/post-indexer/
Advisory report:
https://security.dxw.com/advisories/unserialisation-in-post-indexer-could-allow-man-in-the-middle-to-execute-arbitrary-code-in-some-circumstances/
CVE: Awaiting assignment
CVSS: 7.6 (High; AV:N/AC:H/Au:N/C:C/I:C/A:C)
Description
================
Unserialisation in Post Indexer could allow man-in-the-middle to execute
arbitrary code (in some circumstances)
Vulnerability
================
Twice a day the blog makes an automated unencrypted HTTP request to
premium.wpmudev.org and the value that is returned is passed to unserialize().
It is possible for premium.wpmudev.org or any one on the network in a
man-in-the-middle position to return a string that contains an evil encoded
object that executes arbitrary code (depending on the active plugins and
themes).
This code is called twice a day by wp_schedule_event(time(), \'twicedaily\',
\'wpmudev_scheduled_jobs\') (extra/wpmudev-dash-notification.php):
var $server_url = \'http://premium.wpmudev.org/wdp-un.php\'; // line 12
$url = $this->server_url . \'?action=check&un-version=3.3.3&wp=\' .
urlencode($wp) . \'&bcount=\' . $blog_count . \'&domain=\' .
urlencode(network_site_url()) . $projects; // line 393
$response = wp_remote_get($url, $options); // line 400
$data = $response[\'body\']; // line 402
$data = unserialize($data); // line 404
There is a class called ProcessLocker in this plugin with an exploitable
__destruct method, which could be used as a jumping-off point for attacks using
this unserialize() vulnerability (or the use of unserialize() in WordPress core
which requires access to the database to exploit).
Proof of concept
================
Achieving arbitrary code execution depends on which classes are available (i.e.
which plugins and themes are installed and active). It won’t be possible in all
situations.
Mitigations
================
Upgrade to version 3.0.6.2 or later.
Disclosure policy
================
dxw believes in responsible disclosure. Your attention is drawn to our
disclosure policy: https://security.dxw.com/disclosure/
Please contact us on security@xxxxxxx to acknowledge this report if you
received it via a third party (for example, plugins@xxxxxxxxxxxxx) as they
generally cannot communicate with us on your behalf.
This vulnerability will be published if we do not receive a response to this
report with 14 days.
Timeline
================
2016-11-01: Discovered
2016-11-14: Reported to plugin author via https://premium.wpmudev.org/contact/
2016-11-14: Plugin author responded
2016-11-17: Confirmed that version 3.0.6.2 fixes the issue
2016-11-17: Requested CVE
2016-11-17: Advisory published
Discovered by dxw:
================
Glyn Wintle
Please visit security.dxw.com for more information.
_______________________________________________
Sent through the Full Disclosure mailing list
https://nmap.org/mailman/listinfo/fulldisclosure
Web Archives & RSS: http://seclists.org/fulldisclosure/