해당 취약점은 JaKarta Multipart 파서를 기반으로 한 파일 업로드를 수행할 때 HTTP Request Header의 Content-Type 을 변조해 원격코드 실행을 가능하게 한다.
1-1) Apache Structs2 란
JAVA EE(Java Platform Enterprise Edition) 웹 애플리케이션을 개발하기 위한 오픈소스 프레임워크이다.
2. Apache Struts2 취약점 분석 환경 구축
2-1) Java 설치
2-2) 설치 후 환경 설정
- 시스템 변수 편집
;%JAVA_HOME%\bin; 추가
- 설치 확인
2-2) Apache Tomcat 설치
2-3) Tomcat 환경 설정
- http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/neon3
bin 폴더에서 startup.bat, shutdown.bat 파일로 서버 기동을 할 수 있다.
2-4) Eclipse 설치
2-5) Struts2 다운로드
2-6) 이클립스 실행 및 설정
- 이클립스 실행 > Window > Preference > Server > Runtime Environmments > Add > Apache Tomcat v7.0 > browse > 다운로드 한 tomcat 7.0 폴더 선택
- File > Import > war file > next < browse > 설치한 structs2 파일 선택
- Structs 2 우 클릭 > Run As > Run on Server
** 실수로 Navigator 창을 내렸을 때는, windows > show view > navigator 를 클릭
- 톰캣에서 사용하는 포트를 모두 바꿔야 실행이 된다.
- 제대로 되지 않으면 Tomcat 서비스를 중지 시킨 후 다시 실행해본다.
2-7) 아래와 같이 페이지가 뜨는것이 확인된다.
2-8) 공격 코드를 (https://www.exploit-db.com/exploits/41570/) 다운 받고 실행하면 다음과 같이 명령어가 실행되는 것을 볼 수 있다.
#참고
- https://blog.rebforpwn.com/index.php/2018/02/02/697/
- https://blog.rebforpwn.com/index.php/2018/02/02/702/
- https://m.blog.naver.com/PostView.nhn?blogId=skinfosec2000&logNo=220760726674&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F