Filing a building-code violation against a cardboard playhouse
CVE-2026-13548 is a textbook SQL injection in the editid parameter of /doctortimings.php in itsourcecode Hospital Management System 1.0. The application concatenates user input directly into SQL queries with no parameterization or input validation. The affected product is a free PHP/MySQL student capstone project distributed on itsourcecode.com for BSIT thesis work — it runs on XAMPP/WAMP and is designed to be downloaded, unzipped, and demoed for a professor. It is not a commercial product, has no vendor support, no patch pipeline, no update mechanism, and no known production deployment anywhere. Only version 1.0 exists; there are no other releases.
The vendor severity of MEDIUM (6.3) is technically accurate for the SQL injection mechanics — AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L correctly describes what happens if you exploit a PHP page that concatenates $_GET['editid'] into a query. But the score is entirely disconnected from real-world risk because the affected software has an installed base of approximately zero in any enterprise environment. This CVE is one of dozens of nearly identical SQL injection findings across this same student project (CVE-2026-13530, -13531, -75086, -75087, -75088, -19894, -19934, -14773, -14774, -16334, -19767, -20000, and more), each targeting a different .php file and a different delid or editid parameter. The entire product is a CVE farm — a researcher systematically running sqlmap against every endpoint of a homework project.
4 steps from start to impact.
Locate a running instance
- A running instance of itsourcecode HMS 1.0 must exist on a reachable network
- Zero instances found on Shodan, Censys, or FOFA
- This is a student demo project — not deployed in production anywhere
- No enterprise distribution channel, package manager, or container image exists
Authenticate to the application
/doctortimings.php endpoint. Default credentials may exist in the student project's SQL seed file, but the application must be running and reachable first.- Valid login credentials for the HMS application
- No default credential documentation; credentials are set during student setup
- Application must be running and network-reachable, which is nearly never true
Inject SQL via the editid parameter
/doctortimings.php?editid=1' AND GTID_SUBSET(CONCAT(0x716a766b71,(SELECT (ELT(7032=7032,1))),0x71786a7671),7032) AND 'mCrh'='mCrh (error-based) or a time-based blind payload. The application concatenates the value directly into a SQL query. Tool: sqlmap fully automates this.- Authenticated session on the target application
- Network access to the /doctortimings.php endpoint
- Requires steps 1 and 2 to succeed first, which is near-impossible in enterprise
Exfiltrate or manipulate data
- Successful SQL injection from step 3
- Data is student demo data with no real-world value
- No connection to enterprise identity systems, AD, or production databases
- MySQL likely running as local service with no network privileges
/doctortimings.php, /viewbilling.php, /viewmedicine.php, and similar endpoints. This buys time but does not fix the dozens of other vulnerable endpoints in the application.- Patching — No vendor exists to issue a patch. The project is abandoned student source code with no maintainer.
- WAF generic SQLi rules alone — May catch some payloads, but the application has so many injection points (15+ known CVEs across different endpoints) that coverage will be incomplete. New endpoints can be discovered trivially.
- Input validation at the network layer — The injection is in PHP application code; network-layer controls cannot fix the root cause, only partially filter known payloads.
The supporting signals.
| In-the-wild exploitation | None. Not on CISA KEV. No known campaigns. No GreyNoise or Shodan scanning activity targeting this application. |
|---|---|
| Proof of concept | Public. GitHub issue by researcher Vivian (ltranquility/submit#19). Error-based and time-based blind SQLi payloads provided. Trivially automatable with sqlmap. No dedicated GitHub repo for this CVE. Not indexed on pocindex.io. |
| EPSS score | 0.00333 (~0.3rd percentile) — near the absolute bottom of the distribution, consistent with a vulnerability no one will ever exploit in the wild. |
| KEV status | Not listed. No CISA due date. |
| CVSS v3.1 vector | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L (6.3 Medium). Network-reachable, low complexity, requires authentication, unchanged scope, low CIA impact across all three pillars. |
| CVSS v4.0 score | 5.3 Medium (CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P) |
| Affected versions | itsourcecode Hospital Management System 1.0 — the only version. No other releases exist. No distro packages. No container images. |
| Fixed version | None. No vendor support. No patch pipeline. Project is abandoned educational source code. |
| Scanning / exposure data | Zero instances found on Shodan, Censys, or FOFA. This application has no internet footprint. No GreyNoise tags exist for it. |
| Researcher / disclosure | Vivian (GitHub: ltranquility). Disclosed 2026-06-29 via VulDB #374556. Part of a systematic audit producing 15+ CVEs against this single student project. |
Sources.
Why this verdict
- Zero enterprise installed base. The affected product is a free PHP student capstone project on itsourcecode.com for BSIT thesis demonstrations. It has no commercial distribution, no vendor, no customers, and no production deployments. No security team managing 10,000 hosts has this in their environment.
- No high-value role exists. This software does not serve as an identity provider, hypervisor, CI/CD component, backup system, production database engine, network edge appliance, SIEM, or any other infrastructure-critical role. It is not installed on domain controllers. It is not embedded in supply chains. The entire blast radius is a single XAMPP instance on a student's laptop.
- Role multiplier: none. Walking the high-value-role catalog: Active Directory — no; PKI/CA — no; PAM — no; hypervisor/K8s — no; CI/CD — no; backup — no; production DB — no; EDR/AV — no; network edge — no; SIEM — no; OT/ICS — no. Zero percent of the installed base occupies a high-value role because the enterprise installed base is zero. The floor rule does not apply — there is no installed base to protect.
- CVE farm noise. This is one of 15+ nearly identical SQL injection CVEs filed against the same student project. Each targets a different PHP file with the same unsanitized parameter pattern. These inflate CVE counts and scanner findings without adding real-world risk.
Why not higher?
There is nothing to protect. The software has no enterprise users, no production deployments, and no internet exposure. Even if an instance somehow existed on a network, it would require authentication and would contain only demo data. The floor rule requires ≥1% of the installed base to occupy a high-value role — but the installed base is zero enterprise hosts. EPSS of 0.00333 confirms the probability of exploitation is negligible.
Why not lower?
IGNORE is already the lowest severity. We assign 0.5 rather than 0.0 solely because the SQL injection is technically real and a PoC exists — if someone inexplicably deployed this in production, the bug would work as described.
Crowdsourced verification payload.
Run from any auditor workstation or scanner host with curl installed. Invoke as bash check_cve_2026_13548.sh http://target-host. No special privileges required — this only sends HTTP GET requests to check for the presence of the vulnerable application.
#!/usr/bin/env bash
set -euo pipefail
# CVE-2026-13548 checker: itsourcecode Hospital Management System 1.0
# SQL injection in /doctortimings.php via editid parameter
# Usage: bash check_cve_2026_13548.sh http://target-host
TARGET="${1:?Usage: $0 http://target-host}"
ENDPOINT="${TARGET}/doctortimings.php"
echo "[*] Checking for itsourcecode Hospital Management System at ${TARGET}"
# Step 1: Check if the endpoint exists
HTTP_CODE=$(curl -sk -o /dev/null -w '%{http_code}' "${ENDPOINT}" 2>/dev/null || echo "000")
if [ "$HTTP_CODE" = "000" ]; then
echo "[!] UNKNOWN - Cannot reach ${ENDPOINT}"
exit 2
fi
if [ "$HTTP_CODE" = "404" ]; then
echo "[+] PATCHED/NOT PRESENT - /doctortimings.php not found (HTTP 404)"
exit 0
fi
# Step 2: Check for the telltale page content
BODY=$(curl -sk "${ENDPOINT}" 2>/dev/null)
if echo "$BODY" | grep -qi "Hospital Management System"; then
echo "[!] VULNERABLE - itsourcecode Hospital Management System detected at ${ENDPOINT}"
echo " /doctortimings.php is reachable (HTTP ${HTTP_CODE})"
echo " This application has systemic SQL injection. Decommission immediately."
exit 1
else
echo "[?] UNKNOWN - ${ENDPOINT} responded (HTTP ${HTTP_CODE}) but content does not match expected application."
exit 2
fi