PHP2Shell and HTTPS-to-Shell vulnerability scanners
  • Python 91%
  • Shell 6%
  • Dockerfile 3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-26 14:54:20 -06:00
__pycache__ Improve UI/UX with ASCII banner and formatted output 2026-10-26 12:01:08 -06:00
references Add https-to-shell scanner and update README with both tool docs 2026-10-26 09:13:02 -06:00
lab.Dockerfile Add https-to-shell scanner and update README with both tool docs 2026-10-26 09:13:02 -06:00
README.md Remove redundant screenshot from README 2026-10-26 14:42:26 -06:00
run_lab.sh Add https-to-shell scanner and update README with both tool docs 2026-10-26 09:13:02 -06:00
shellvector.py Remove emojis from output, use ASCII symbols 2026-10-26 12:17:24 -06:00
targets.txt Add jpwile.the424.com (Vercel, LOW risk) to scan targets 2026-10-26 09:45:54 -06:00

shellvector — RCE Vulnerability Scanner

Combined scanner for critical HTTP-based RCE vulnerabilities:

  • CVE-2026-109618/109619 (PHP2Shell) — PHP engine upload-progress handler UAF
  • CVE-2026-111497 (HTTP2Shell) — Brotli decoder out-of-bounds write

Both vulnerabilities allow unauthenticated remote code execution through HTTP request handling. This tool detects exposed versions via passive fingerprinting and optional active probes.

Note: HTTP2Shell (CVE-2026-111497) is the Brotli decoder vulnerability — not to be confused with HTTPS or HTTP/2. The name "HTTP2Shell" refers to the attack vector (HTTP request with crafted Brotli compression), not the protocol version.

Stdlib only. Python 3.8+.


Quick Start

# Scan a single target (passive only)
python3 shellvector.py https://target.example/

# Batch scan
python3 shellvector.py -t targets.txt -w 32 --json results.json

# Enhanced scanning with error page and path probing
python3 shellvector.py https://target.example/ --error-probe --probe-paths

# Active probes (opt-in, may trigger alerts)
python3 shellvector.py https://target.example/ --php-canary --brotli-probe

# Full scan with external tools (WhatWeb/Nmap) and passive DNS
python3 shellvector.py https://target.example/ --external-scan --passive-dns

# Show all results including non-vulnerable
python3 shellvector.py -t targets.txt --all --verbose

Vulnerabilities Detected

PHP2Shell (CVE-2026-109618/109619)

Vector: Heap UAF in PHP upload-progress handler → zend_call_function → system()

Affected: PHP 5.4–8.5 (all EOL branches vulnerable)

Fixed:

Branch Fixed Version
8.5 8.5.12
8.4 8.4.27
8.3 8.3.36
8.2 8.2.35
8.1 and older — (EOL, all vulnerable)

CVSS: 9.2 (Critical)

HTTP2Shell (CVE-2026-111497)

Vector: Out-of-bounds write in Brotli decoder via crafted compressed stream

Affected:

  • Brotli lib: 1.0.3–1.2.0
  • Node.js: 22.x, 24.x, 26.x (before patched releases)
  • Bun: < 1.4.4
  • Envoy: < 1.40.0 (varies by branch)
  • Istio: < 1.29.9, 1.30.6, 1.31.2

Fixed:

Runtime Fixed Version
Brotli 1.0.x 1.0.10
Brotli 1.1.x 1.1.1
Brotli 1.2.x 1.2.1
Node.js 22.x 22.23.4
Node.js 24.x 24.22.1
Node.js 26.x 26.12.1
Bun 1.4.4

CVSS: 9.2 (Critical)


Detection Modes

Mode Description Risk
fingerprint (default) Passive version detection via HTTP headers Safe
--error-probe Trigger 404/500 errors to extract version from stack traces Low
--probe-paths Scan common paths (/phpinfo.php, /info.php, etc.) Low
--external-scan Run WhatWeb/Nmap if available Low
--passive-dns Lookup passive DNS data (Shodan/Censys) Safe
--php-canary Small multipart POST with PHP_SESSION_UPLOAD_PROGRESS Low
--brotli-probe Send minimal Brotli stream to test decoder Medium

Output Format

The scanner displays a clean, professional output with an ASCII banner, detailed results per target, and a summary table.

Example Output

  _________.__           .__  .______   ____             __                
 /   _____/|  |__   ____ |  | |  \   \ /   /____   _____/  |_  ___________ 
 \_____  \ |  |  \_/ __ \|  | |  |\   Y   // __ \_/ ___\   __\/  _ \_  __ \
 /        \|   Y  \  ___/|  |_|  |_\     /\  ___/\  \___|  | (  <_> )  | \/
/_______  /|___|  /\___  >____/____/\___/  \___  >\___  >__|  \____/|__|   
        \/      \/     \/                      \/     \/                   

  shellvector v2.1 — RCE Vulnerability Scanner
  PHP2Shell (CVE-2026-109618/109619) | HTTP2Shell (CVE-2026-111497)
  2026-10-26 12:17:18
  ============================================================

  [  LOW  ]  php2shell.uk
  --------------------------------------------------
    * Brotli support: Yes

======================================================================
  SCAN SUMMARY
======================================================================
  Target                    PHP2Shell       HTTP2Shell      Risk      
  -----------------------------------------------------------------
  php2shell.uk              -               -               LOW       

----------------------------------------------------------------------
  OVERALL STATISTICS
----------------------------------------------------------------------
  [+] Total targets scanned:     1
  [-] PHP2Shell vulnerable:      0
  [-] HTTP2Shell vulnerable:     0
  [!] Critical risk:             0
  [!] High risk:                 0
  [*] Medium risk:               0
  [+] Low risk:                  1

======================================================================
  Scan completed at 2026-10-26 12:17:18
======================================================================

Risk Levels

Score Level
7.0+ CRITICAL
5.0–6.9 HIGH
3.0–4.9 MEDIUM
< 3.0 LOW

References

PHP2Shell

HTTP2Shell


Notes

  • Passive fingerprinting only sees versions the runtime chooses to expose
  • CDNs (Cloudflare, Fastly) may hide origin server versions
  • Enhanced probing (--error-probe, --probe-paths) can uncover hidden versions
  • External tools (WhatWeb, Nmap) provide additional fingerprinting when available
  • Passive DNS (Shodan/Censys) shows historical version data (API keys required)
  • Active probes (--php-canary, --brotli-probe) may trigger alerts or crash vulnerable servers
  • Vendor backports may fix vulnerabilities without changing version numbers

Requirements

  • Python 3.8+ (stdlib only)
  • Optional: whatweb, nmap (for --external-scan)
  • Optional: Shodan/Censys API keys (for enhanced --passive-dns)

License

MIT — for authorized security testing only. Use responsibly.