IT/ISSUE

Log4J 실행해보기

종금 2022. 5. 17. 09:59
반응형

한참 핫할때는 놀고서

좀 늦었지만 Log4j에 대한 글을 적어보도록하겠다.

1. Log4J 이론
흔히 Log4J라고 말하고있으나 취약점의 명칭은 Log4Shell(CVE-2021-44228)로 Log4J 라이브러리의 취약점을 이용한 해킹방법이다.
Log4J란 'Apache 소프트웨어 재단'에서 제작하고 배포하는 Java에서 Log를 기록하기 위해 사용하는 라이브러리 Log4J에 존재하는 취약점이다.

이때 Java를 사용하는 IDE(ex. eclipse, Android Studio and so on)를 사용해 개발을 진행할때 프로그램 코드의 로그를 남기기 위해서 Java에서 제공하는 Log4J를 사용한다. 이때 Log4J란 JNDI(Java Naming and Directory Interface)를 사용하는데 Java의 객체 지향에 맞춰서 이름 및 디렉터리를 찾아주는 API인데 이 API는 디렉터리를 네임으로 찾기 위해 LDAP(Lightweight Directory Access Protocol)를 사용하는데 이는 URL을 통해 디렉터리 혹은 파일을 찾고 실행할 수 있는데 이곳에서 문제점이 발견된다. 

즉 자바 base의 IDE는 Log파일을 기록하기위해 URL을 통해 파일을 수정하고 있는 것인데 이를 다른 파일도 접근 할 수 있는 것이 문제인 것이다. 해커는 URL을 통해 ldap주소로 파일에 접근 후 수정이 가능했고 그결과 ldap를 통해 /bin/bash등이 실행이 되어 shell을 탈취할 수 있는 것이 이 취약점의 컨셉이다.

 

2. Log4J 실습

실습을 위한 사이트 두개
2.1 log4j POC 사이트
https://github.com/welk1n/JNDI-Injection-Exploit
2.2 Log4J 공격 사이트(docker)
https://github.com/christophetd/log4shell-vulnerable-app/pkgs/container/log4shell-vulnerable-app

그럼 이제 설치해보자 VM을 통해 CENTOS하나 올리고 시작해보자

-취약서버 설치

docker 설치

 

docker 실행 및 컨테이너 들고오기(docker run -d --name vulnerable-app -p 8080:8080 ghcr.io/christophetd/log4shell-vulnerable-app)

docker ps를 통해 컨테이너 프로세스 확인

 

-ldap 취약서버 설치 

git clone하기

Java랑 Maven도 필요하다니 설치해주자

착한 어린이 답게 Github에서 치라고한 명령어도 쳐주자

Jar파일을 리눅스로 이동(git 1번 참고)

희생자 사이트에 whoami 명령어 보냄(java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "whoami" -A "127.0.0.1") -> docker로 연결됨

ldap서버 위치 확인 JDK1.7(선택사항)로 사용함 

안랩이 차단하니 일단 실시간 종료

curl을 통해 HelloWorld 확인(성공)

 

반응형