lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <c97a18cbacc236f0daa9de111c07eee3@security.dxw.com>
Date: Thu, 17 Nov 2016 15:05:28 +0000
From: dxw Security <security@....com>
To: fulldisclosure@...lists.org
Subject: [FD] SQL Injection in Post Indexer allows super admins to read the
	contents of the database (WordPress plugin)

Details
================
Software: Post Indexer
Version: 3.0.6.1
Homepage: http://premium.wpmudev.org/project/post-indexer/
Advisory report: https://security.dxw.com/advisories/sql-injection-in-post-indexer-allows-super-admins-to-read-the-contents-of-the-database/
CVE: Awaiting assignment
CVSS: 4 (Medium; AV:N/AC:L/Au:S/C:P/I:N/A:N)

Description
================
SQL Injection in Post Indexer allows super admins to read the contents of the database

Vulnerability
================



Post Indexer does not use prepared queries in many cases and in some of its database calls it uses backticks (`). These are not automatically escaped by WordPress, thus leading to the possibility of SQL injection.
In other places in the code it simply takes user controlled values and adds them to SQL queries.
An example of this is remove_post_older_than:



// classes/class.model.php line 589
function remove_posts_older_than( $unit, $period ) {
    // ...
    $sql = $this->db->prepare( \"SELECT BLOG_ID, ID FROM {$this->network_posts} WHERE DATE_ADD(post_date, INTERVAL %d \" . $period . \") < CURRENT_DATE() LIMIT %d\", $unit, PI_CRON_TIDY_DELETE_LIMIT );
    $posts = $this->db->get_results( $sql );
    // ...
}




The value of $period is user-controlled and could easily be replaced with SQL:



// classes/cron.postindexerrebuild.php line 310
function process_tidy_agedposts($DEBUG = false) {
    // ...
    // The default is to remove posts from the index when they are over a year old
    $agedposts = get_site_option( \'postindexer_agedposts\', array( \'agedunit\' => 1, \'agedperiod\' => \'year\' ) );
    // ...
    $this->model->remove_posts_older_than( $agedposts[\'agedunit\'], $agedposts[\'agedperiod\'] );
    // ...
}



To exploit this vulnerability you need to be a super admin.




Proof of concept
================

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@....com to acknowledge this report if you received it via a third party (for example, plugins@...dpress.org) 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/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ