서론
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
해당 깃을 참고하여 설정하였다.
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
여기서 struts2 는 6.3.0.1로 확인이 가능하다.
공격자 PC 설정
Burpsuite가 설치된 리눅스 PC에서 진행을 하였으며, index페이지에서 jsp 파일을 업로드 진행한다.
아쉽지만 forbidden 폴더로 이동된다.(사실 아예 업로드를 차단하는게 가장 좋다.)
공격 시연
여기서 파일명을 ../webshell.jsp로 지정하여 상위 폴더로 이동하도록 한다.
결론
기존에 파일 업로드 코드 파일 검증 및 검사 기능이 존재할 경우 해당 취약점의 공격 성공 가능성이 많이 떨어진다. 그럼에도 불구하고 원격 코드 실행(RCE) 취약점으로 해당 시스템에 들어가 시스템의 다른 취약점을 이용해 권한을 탈취하면 해당 시스템 장악까지 가능하므로 최대한 빠르게 Apache Struts 2의 6.3.0.2 이상 또는 2.5.33 이상 버전으로 업데이트를 진행해야 한다.
참고
'기술보안 > CVE' 카테고리의 다른 글
CVE-2022-22965 PoC (0) | 2024.06.30 |
---|---|
CVE-2014-0497 Adobe Flash Player Integer Underflow Remote Code Execution (0) | 2023.08.29 |
SMBghost 실습(CVE-2020-0796) (0) | 2023.02.14 |
CVE-2021-35394 : RealTek UDPServer command injection attempt (0) | 2022.02.20 |
Log4Shell 정리 (0) | 2021.12.30 |