
Defensiver Expositionsprüfer für Plex2Shell und php2shell — finde deine eigenen, bevor sie dich finden.
____ _ _ _____ _ _ ____ ____ _____ ______
/ ___|| | | | ____| | | | / ___| / ___|| _ \| ____|
\___ \| |_| | _| | | | | \___ \| | | |_) | |__
___) | _ | |___| |___ | |___ ___) | |___ | _ <| __|
|____/|_| |_|_____|_____|_____||____/ \____||_| \_\_____|
2shell-Exposure-Auditor — finde deine eigenen, bevor sie dich finden.
shellscope prüft ein autorisiertes Netzwerk auf zwei CVE-Cluster aus 2026:
session.upload_progress)Es liest Versions-Banner und HTTP-Header aus. Es nutzt die Schwachstelle nicht aus, authentifiziert sich nicht, lädt nichts hoch und löst den Speicherfehler nicht aus.
pipx install shellscope
# or
python -m pip install shellscope
Verwendungsbeispiele
1. Grundlegende Verwendung
from pycryptoki_lib import PyCryptoki
# Initialisierung
cryptoki = PyCryptoki()
# Schlüssel generieren
key = cryptoki.generate_key('AES', 256)
# Daten verschlüsseln
encrypted = cryptoki.encrypt(key, b'Geheimnis')
2. Erweiterte Verwendung
# Benutzerdefinierte Konfiguration
config = {
'slot': 0,
'pin': '1234',
'library': '/usr/lib/softhsm/libsofthsm2.so'
}
cryptoki = PyCryptoki(config)
3. Fehlerbehandlung
try:
key = cryptoki.generate_key('RSA', 2048)
except PyCryptokiError as e:
print(f'Fehler: {e}')
API-Referenz
PyCryptoki-Klasse
__init__(config=None) – Initialisiert die Bibliothekgenerate_key(type, size) – Generiert einen Schlüsselencrypt(key, data) – Verschlüsselt Datendecrypt(key, data) – Entschlüsselt Datensign(key, data) – Signiert Datenverify(key, signature, data) – Verifiziert eine SignaturUnterstützte Algorithmen
| Algorithmus | Schlüsselgrößen | Verwendung |
|---|---|---|
| AES | 128, 192, 256 | Symmetrische Verschlüsselung |
| RSA | 1024, 2048, 4096 | Asymmetrische Verschlüsselung |
| ECC | P-256, P-384, P-521 | Elliptische Kurven |
| SHA | 256, 384, 512 | Hashing |
Fehlerbehebung
Häufige Probleme
Bibliothek nicht gefunden
PyCryptokiError: Could not load PKCS#11 library
Stellen Sie sicher, dass die PKCS#11-Bibliothek installiert und der Pfad korrekt ist.
PIN-Fehler
PyCryptokiError: Invalid PIN
Überprüfen Sie die PIN und ob das Token entsperrt ist.
Slot nicht gefunden
PyCryptokiError: Slot not found
Überprüfen Sie die Slot-Nummer mit cryptoki.get_slots().
Debug-Modus
Aktivieren Sie die Protokollierung für detaillierte Informationen:
import logging
logging.basicConfig(level=logging.DEBUG)
cryptoki = PyCryptoki()
Beitragen
Beiträge sind willkommen! Bitte beachten Sie die folgenden Richtlinien:
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert – siehe die Datei LICENSE für Details.
Danksagungen
Kontakt
python -m pip install -e ".[dev]"
# prove the install works, no network traffic
shellscope --self-test
# see what would be scanned
shellscope --cidr 192.168.1.0/24 --dry-run
# audit your network
shellscope --cidr 10.0.0.0/24 --authorized
# inventory CSV: host,port,owner,environment
shellscope --inventory-csv assets.csv --authorized --html report.html
# CI gate
shellscope --inventory-csv assets.csv --authorized --fail-on high --quiet
--authorized ist für einen echten Scan erforderlich. Es ist Ihre Zusicherung, dass Sie das
Netzwerk besitzen oder eine schriftliche Genehmigung haben, es zu testen.
| CVE-Set | Probe | Bewertung |
|---|---|---|
| Plex2Shell | GET /identity → version | < 1.43.3.10861 → CRITICAL |
| php2shell | GET / → Server, X-Powered-By, PHPSESSID | Apache + PHP unterhalb der behobenen Version → HIGH |
| php2shell | dieselbe | nginx/LiteSpeed + unterhalb der behobenen Version → MEDIUM |
| php2shell | dieselbe | Apache + Version verborgen → MEDIUM (überprüfen) |
| — | offener Port, kein Fingerprint | INFO |
Behobene PHP-Versionen (leak-basiert bis zur offiziellen Advisory): 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12.
Die Aufteilung in HIGH/MEDIUM ist beabsichtigt: Der verbleibende php2shell-Bug wird nur als
Apache prefork + mod_php gemeldet, nicht als generische PHP-RCE.
--out audit.csv — eine Zeile pro Fund (Standard shellscope-results.csv)--json audit.json — Metadaten + Funde--html audit.html — dunkler, eigenständiger Bericht mit Filter und Sortierung$ shellscope --cidr 127.0.0.1/32 --ports 32400,8888 --force-checks --authorized
[scope] 1 assets / 2 checks
CRITICAL 127.0.0.1:32400 Plex Media Server 1.43.2.10664 Vulnerable to Plex2Shell
HIGH 127.0.0.1:8888 PHP 8.2.34 PHP 8.2.34 < 8.2.35 on Apache
SUMMARY
CRITICAL 1 #
HIGH 1 #
TOTAL 2
--authorized ist für einen echten Scan verpflichtend.--allow-public.--max-hosts, --workers und --delay begrenzen den Scan.Verwende es nur in Netzwerken, die dir gehören oder für die du eine schriftliche Testgenehmigung hast. Ein Bug-Bounty-Scope ist keine Lizenz, das Internet zu scannen; er autorisiert die aufgelisteten Assets gemäß den Regeln des jeweiligen Programms.
Server-Header kann Cloudflare beschreiben, nicht den PHP-Build.X-Powered-By ist oft deaktiviert. Ein fehlender Header ist kein Beweis für einen Patch.| Code | Bedeutung |
|---|---|
| 0 | Scan abgeschlossen, keine Funde bei/über --fail-on |
| 1 | Funde bei/über --fail-on |
| 2 | Nutzungs- oder Autorisierungsschutz |
python -m pip install -e ".[dev]"
python -m pytest
python -m ruff check src tests
python -m shellscope --self-test
MIT. Nur zur autorisierten Verwendung.