목표:
1. Spring Boot에서 기본 로그설정인 Logback을 Log4j로 바꾼 후 취약서버로 만든 후 공격을 시도합니다.
2. Log4j2 취약점을 이용해 웹서버에 악성 요청 보낼 경우 웹 서버에 어떤 일이 일어나는지 확인합니다.
3. log4j2의 버전을 올려서 방어가 되는지 확인합니다.

spring-boot initializer로 아래와 프로젝트를 같이 만들어준다.
더보기
더보기
더보기
소스코드 보기
HomeController.java
@RestController
public class HomeController {
Logger log = LoggerFactory.getLogger(HomeController.class);
@RequestMapping("/")
public String index(String name){
log.debug("index! name:{}", name);
return "index";
}
}
Log4shellServerApplication.java
@SpringBootApplication
public class Log4shellServerApplication {
public static void main(String[] args) {
System.setProperty("com.sun.jndi.ldap.object.trustURLCodebase", "true");
SpringApplication.run(Log4shellServerApplication.class, args);
}
}
application.properties
logging.level.com.skmouse=TRACE
나머지 코드는 하단 참고

자 이제 log4j를 사용하기 위해 pom.xml을 수정해준다.


추가로 java 버전에서 막는것을 낮춰주기 위해 설정을 더 진행한다.

이제 처음에 했던 것처럼 post를 날려주면

이러한 에러는 겉으로 보기엔 아무렇지 않아보이지만, 특정 ip주소의 프로그램 실행을 요청하게된다면


위와 같이 프로그램이 강제로 실행된다.
반응형
'Security' 카테고리의 다른 글
FRAML(FDS+AML)이상거래탐지와 자금세탁방지의 융합 (0) | 2024.04.20 |
---|---|
[FDS: Fraud Detection System]로 알아보는 금융, 그리고 견해 (1) | 2024.01.06 |
암호화1. 암호화방식(단방향, 양방향(대칭키, 비대칭키)) (0) | 2020.12.10 |