서론

Apache Struts 2

2023-12-07일 Apache는 CVE-2023-50164 로 식별된 심각한 심각도 취약점을 해결하기 위해 Struts 버전 6.3.0.2 및 2.5.33을 출시했다. 특정 조건이 충족되면 악용될 수 있으며 공격자는 악성 파일을 업로드하고 대상 서버에서 원격코드 실행(RCE)가 가능하다.

 

본론

CVE-2023-50164는 Apache struts 가 2023-12-07일에 새로 출시되면서 최신버전에서는 작동하지 않는다.

취약 버전
Struts 2.0.0 ~ 2.3.37 (지원 종료)
Struts 2.5.0 ~ 2.5.32
Struts 6.0.0 ~ 6.3.0.1

 

실습 환경

실습 시나리오

공격자는 웹 서버를 운영하고 있는데 해당 ApacheStruts2 가 취약함을 인지하지 못하고 그대로 서비스를 하고 있다.

 

공격자는 Apache Struts2 취약점을 가지고 있는 운영되고 있는 시스템을 발견했고, 해당 시스템에 침투하기 위해 웹쉘을 넣어 시스템을 장악한다.

해당 시스템에 웹쉘을 업로드하기 위해 Burp Suite를 이용하기로 한다.

 

환경 구축

피해자 PC 설정

피해자 PC 설정의 경우

https://github.com/Trackflaw/CVE-2023-50164-ApacheStruts2-Docker

 

GitHub - Trackflaw/CVE-2023-50164-ApacheStruts2-Docker: Vulnerable docker container for Apache Struts 2 RCE CVE-2023-50164

Vulnerable docker container for Apache Struts 2 RCE CVE-2023-50164 - Trackflaw/CVE-2023-50164-ApacheStruts2-Docker

github.com

해당 깃을 참고하여 설정하였다.

git clone https://github.com/Trackflaw/CVE-2023-50164-ApacheStruts2-Docker.git
cd CVE-2023-50164-ApacheStruts2-Docker
docker build --ulimit nofile=122880:122880 -m 3G -t cve-2023-50164 .
docker run -p 8080:8080 --ulimit nofile=122880:122880 -m 3G --rm -it --name cve-2023-50164 cve-2023-50164
curl http://localhost:8080/upload.action

 

도커에 서비스 중인지 확인

 

해당 서비스 접속 확인 가능

Spring에서 Maven의 빌드 정보를 담고있는 pom.xml을 확인해본다.

위치는 /usr/local/tomcat/webapps/ROOT/META-INF/maven/org.trackflaw.example/upload/pom.xml

웹 서버 내 Spring의 Maven 빌드 정보

여기서 struts2 는 6.3.0.1로 확인이 가능하다.

 

정상적으로 사진 업로드가 가능하다.

공격자 PC 설정

Burpsuite가 설치된 리눅스 PC에서 진행을 하였으며, index페이지에서 jsp 파일을 업로드 진행한다.

파일 업로드

 

업로드는 성공했지만 jpg와 png만 업로드를 하라고 한다.

아쉽지만 forbidden 폴더로 이동된다.(사실 아예 업로드를 차단하는게 가장 좋다.)

forbidden 폴더에서 web.jsp 발견

 

공격 시연

 

웹쉘을 업로드 하기 전 upload -> Upload로 변경
마지막에 파일명을 수정하도록 Content-Disposition을 통해 파일명을 바꾼다.

여기서 파일명을 ../webshell.jsp로 지정하여 상위 폴더로 이동하도록 한다.

사진파일로 업로드 된 것으로 알려준다.
웹쉘 업로드 성공

 

결론

기존에 파일 업로드 코드 파일 검증 및 검사 기능이 존재할 경우 해당 취약점의 공격 성공 가능성이 많이 떨어진다. 그럼에도 불구하고 원격 코드 실행(RCE) 취약점으로 해당 시스템에 들어가 시스템의 다른 취약점을 이용해 권한을 탈취하면 해당 시스템 장악까지 가능하므로 최대한 빠르게 Apache Struts 2의 6.3.0.2 이상 또는 2.5.33 이상 버전으로 업데이트를 진행해야 한다.

 

참고

https://www.bleepingcomputer.com/news/security/hackers-are-exploiting-critical-apache-struts-flaw-using-public-poc/

 

Hackers are exploiting critical Apache Struts flaw using public PoC

Hackers are attempting to leverage a recently fixed critical vulnerability (CVE-2023-50164) in Apache Struts that leads to remote code execution, in attacks that rely on publicly available proof-of-concept exploit code.

www.bleepingcomputer.com

 

복사했습니다!