Technical assessment
The artifact is a Python script (poc.py) that exploits CVE-2026-26980, an unauthenticated SQL injection in Ghost CMS Content API, to perform boolean-based blind data extraction from the database. It recovers admin email, name, API key ID, and secret, and enumerates table row counts.
Backdoor review
No backdoor observed in reviewed code
The supplied evidence consists of a Dockerfile, README.md, and poc.py for a public CVE-2026-26980 SQL injection proof-of-concept. The PoC demonstrates a boolean-based blind SQL injection against a vulnerable Ghost CMS instance to extract database metadata and API key material. No backdoor, trojan, or deceptive payload targeting the person running the PoC was observed. The code performs only the advertised exploit behavior against the specified target URL.
Model confidence98%
AuthenticationNot required
LanguagesPython
Target softwareGhost CMS
Attack typesSQL Injection
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidenceClassification basis and observed behavior
Classification basis
The Python script `poc.py` actively constructs and sends SQL injection payloads to a vulnerable Ghost CMS instance to extract sensitive data (admin credentials, API secrets) and enumerate database contents. This constitutes exploitation, not mere detection or scanning. The README describes it as a 'PoC' that 'demonstrates how a public Content API request can be turned into a boolean-based database read primitive' and the code performs the actual data extraction.
poc.py:1-237README.md:16README.md:129Requirements
- A target Ghost CMS instance vulnerable to CVE-2026-26980 (versions >= 3.24.0, < 6.19.1) with a known public Content API key.
README.md:14README.md:22-24poc.py:7 - The target must have two oracle tags named 'bacon' and 'chorizo' seeded in the database for the boolean-based extraction to function.
README.md:155-158poc.py:30poc.py:176
Observed behavior
- Sends HTTP GET requests to the Ghost Content API endpoint `/ghost/api/content/tags/` with a crafted `filter` parameter containing a SQL injection payload in the `slug:[...]` filter.
poc.py:15-18poc.py:21-30 - Uses a boolean-based blind SQL injection technique: the order of the returned tags ('bacon' first vs 'chorizo' first) reveals whether an injected SQL condition is true or false.
poc.py:33-42README.md:155-158 - Extracts database values character by character using a prefix-based GLOB search, recovering admin email, admin name, admin API key ID, and admin API secret.
poc.py:45-80poc.py:210-213 - Enumerates row counts for multiple database tables (settings, users, api_keys, posts, tags, posts_tags) using the same boolean oracle.
poc.py:101-118poc.py:202-206
Safety-review evidenceBehaviors behind the backdoor verdict
Observables
- Exploit Behavior
- poc.py sends crafted HTTP requests to a user-supplied target URL to perform boolean-based blind SQL injection and extract database values.This is the normal, advertised exploit behavior for CVE-2026-26980 and does not constitute a backdoor.
poc.py:1-237 - Network Target
- The PoC targets a user-supplied --url parameter (default http://127.0.0.1:9102).The target is explicitly provided by the user; the script does not contain hardcoded exfiltration to an attacker-controlled server.
poc.py:170 - Hardcoded Credential
- DEFAULT_CONTENT_API_KEY = 'EQSTLab299'This is a lab-specific Content API key used for the demonstration; it is not a backdoor credential and is documented in the README.
poc.py:7README.md:55-56
Review boundariesWhat the analysis did not establish
- The evidence packet includes only three text files (Dockerfile, README.md, poc.py) out of eight total files; two non-text media files and three additional text files are omitted, so the full repository content is not available for review.
- The analysis is based solely on static source code review; the code was not executed, and its behavior is inferred from the provided text.
- Five files in the repository were not included in the text evidence: docker-entrypoint.sh, patch-source-theme.sh, and two PNG assets (eqst01.png, work-mode.png) were reported as non-text media or omitted text files. Their content was not reviewed.
- The analysis is limited to static review of the provided text; the code was not executed, and no dynamic behavior was observed.
Model interpretationThis review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.