관리 메뉴

Information Security

Struts2 File Upload 취약점(CVE-2024-53677) 본문

CVE 취약점

Struts2 File Upload 취약점(CVE-2024-53677)

HackingPractice 2025. 1. 17. 10:52

 

Apache Struts2는 Java EE1 웹 애플리케이션 개발을 위한 오픈소스 프레임워크다. Java EE 웹 애플리케이션 분야에서 수많은 활용 사례가 존재한다. Apache Struts2 파일 업로드 우회를 통한 원격 코드 실행 취약점이다. 마찬가지로 파일 업로드 로직 결함으로 인해 발생하며 공격자는 OGNL 표현식2을 이용해 임의의 경로에 웹쉘(Web Shell)과 같은 악성파일을 업로드할 수 있다.

 

S/W 구분 취약점 버전
Apache Struts2 Struts 2.0.0 – Struts 2.3.37
Struts 2.5.0 – Struts 2.5.33
Struts 6.0.0. – Struts 6.3.0.2

 

 

이름 정보
피해자 Struts 6.3.0.2
(192.168.238.134)
공격자 Kali Linux
(192.168.238.135)

 

 

도커를 설치하기 yum-utils  패키지를 설치 한다.

 

Docker의 repository 설정을 해준다.

 

Docker Engine을 설치한다.

 

도커를 실행시켜 주고 프로세스를 확인해 준다.

 

피해자 PC에서 해당 명령어로 GitHub Repository를 복제한다.

 

해당 디렉터리로 이동하면 아래와 같은 파일들을 확인할 수 있다.

 

docker 디렉터리로 이동 후 catalina.sh 파일의 권한을 777로 변경을 해준다

 

해당 위치에서 docker 이미지를 빌드한다.

 

아래와 같이 docker 명령어를 이용하여  tomcat 프로세스를 활성화시킨다.

 

빌드된 tomcat이 실행되는 것을 알 수 있다.

 

8080 포트로 접속 시 아래와 같은 페이지를 확인할 수 있다.

cmd.jsp라는 WebShell 업로드 수행

WebShell이 업로드가 된 것을 알 수 있다.

WebShell이 실행되지 않는 것을 알 수 있다.

공격자 칼리리눅스에 CVE-2024-53677 저장소의 PoC를 다운로드한다.

 

CVE-2024-53677 디렉터리로 이동하여 파일을 확인 후 다운로드한 WebSehll인 cmd.jsp 파일을 해당 경로로 이동시킨다. 

 

CVE-2024-53677.py를 이용하여 아래와 같은 명령어로 실행시킨다.

 

아래와 같인 WebShell인 cmd.jsp 파일이 업로드가 성공한 것을 알 수 있다.

 

다시 한번 접속 시 cmd.jsp 실행되는 것을 알 수 있다.

시스템인 명령어 id 입력 시 root라는 것을 알 수 있다.

시스템 계정 정보도 확인할 수 있다.

struts2 6.3.0.2를 사용하는 것을 확인