Critical Severity
Published: Nov 2, 2026

[GitHub] cve-scanner

Rce
Type
N/A
CVSS Score
4
Views
Anonymous
Author

Description

# RCE CVE (≧9.0) scanner

# cve-scanner

Fingerprint-driven blind testing CVE scanner: first identify Web / service fingerprints, only run CVE/vulnerability exp mapped to hit components, fall back to full blind testing when unable to identify application fingerprints. Automatically detect targets and verify real command execution (RCE).
**All target environments use real Docker images, no mocks.**

---

## Fingerprint-driven workflow

```
target ──► fingerprint.Detect()
│
├─ Hit application fingerprint (WebLogic/Tomcat/Struts2/Spring/Shiro/ActiveMQ/...)
│ └─► Only execute CVE exp mapped to that component (+ generic information disclosure detection)
│
├─ Only hit weak Web service fingerprint (nginx/Apache/PHP/Node.js)
│ └─► Treat as unidentified, execute full exp blind testing
│
└─ No fingerprint hit
└─► Full exp blind testing
```

### Secondary fingerprint expansion during collection

All exp requests go through the same collector (`internal/capture`):

1. First-round `fingerprint.Detect()` (`bb` as `QuickDetect`) obtains baseline fingerprint;
2. Each exp / probe response undergoes re-fingerprinting (`fingerprint.ObserveResponse`);
3. When new components appear beyond baseline (e.g., WebLogic / Struts2 / Shiro / Tomcat exposed in subsequent exp responses but not detected on first access), immediately merge into fingerprint and continue executing exp mapped to that component; executed probes are deduplicated by `ran` set;
4. Both `bb` and `scan` follow this workflow; `scan` collection results are simultaneously the payload source for smuggling replay.

### Smuggling replay after zero success (second pass)

When `bb` completes normal scanning with **0 findings**, and `scan` globally has **0 PASS (no real command echo)**, automatically enter second pass:

1. Collector has already recorded every exp request (method / path / headers / body) actually sent this round and direct responses;
2. For each target, first confirm CL.TE / TE.CL channel using limited TE obfuscation combinations;
3. Replay all collected payloads through the channel one by one (deduplicate by request, no longer limit count);
4. Smuggling response shows RCE features absent in direct response → `CRITICAL`; only confirm channel and successful delivery → `HIGH`;
5. Smuggling responses likewise undergo fingerprinting: if new components are exposed, supplement with exp mapped to that component.

Support http/https; auto-skip if no payload for replay (e.g., only ran GET probes). `scan` mode already integrated with same collector, smuggling replay results written to result file with `CVE=SMUGGLING-REPLAY`.

Built-in fingerprint library references matching methods from webanalyze / Wappalyzer (response headers, Server, Set-Cookie, title, body features + deep detection of WebLogic Console / Tomcat Manager / Actuator / Nacos / Metabase / GeoServer / OFBiz / Solr), pure standard library implementation, no third-party dependencies. Component → CVE mapping see [internal/fingerprint/cve_map.go](internal/fingerprint/cve_map.go).

View fingerprints separately:

```bash
./cve-scanner fp -t http://127.0.0.1:7001
./cve-scanner fp -t http://127.0.0.1:8161 -json
```

---

## Supported vulnerabilities

| CVE | Component | Protocol | CVSS | Affected versions | Port | id | whoami | hostname | pwd |
|-----|-----------|----------|------|------------------|------|-----|--------|----------|-----|
| [CVE-2026-70748](docs/CVE-2026-70748.md) | Oracle WebLogic Server | T3/IIOP | 9.8 | 12.2.1.4, 14.1.1.0 | 7

Translated to English from Chinese. Show original · see the source links.
Community Rating
0

Login to rate this exploit

Quick Actions