연구 목적이 아닌 악의적인 목적으로 이용하여 발생할 수 있는 법적인 책임은 모두 본인에게 있습니다. 정보통신망 이용촉진 및 정보보호 등에 관한 법률 그 운용을 방해할 수 있는 프로그램(이하 "악성프로그램"이라 한다)을 전달 또는 유포하여서는 아니 된다. 부정한 명령을 처리하도록 하는 등의 방법으로 정보통신망에 장애가 발생하게 하여서는 아니 된다. - (제 71조) 제48조제1항, 제3항을 위반한 자는 5년 이하의 징역 또는 5천만원 이하의 벌금에 처한다. |
안녕하세요 Triumph 입니다.
최근 중국에서 국내 웹사이트를 공격, deface하는 사례가 발생했습니다.
주로 Apache Struts2 원격코드실행 취약점(CVE-2017-5638)을 통해 공격 했다고 알려져 취약한 환경을 구성하여 원격코드를 실행해 보았습니다.
취약점 개요
- Jakarta Multipart Parser 기반의 파일 업로드 처리 시 원격에서 임의의 코드를 실행할 수 있는 취약점으로, 공격자는 HTTP Request 헤더의 Content-Type값을 변조하여 원격 코드실행을 가능하게 합니다.
취약한 버전
- Struts 2.3.5 - Struts 2.3.31
- Struts 2.5 - Struts 2.5.10
취약한 환경구성
- Windows 7
- JDK 1.8
- Tomcat 7.0.76
- Struts 2.5
1. 필요 파일 다운로드
- JDK 다운로드 페이지(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)에서 JDK를 다운로드합니다.
- Tomcat 다운로드 페이지(http://tomcat.apache.org/download-70.cgi)에서 톰켓을 다운로드 합니다.
- Struts 이전 버전 다운로드 페이지(https://dist.apache.org/repos/dist/release/struts/2.5/)에서 struts-2.5-apps.zip를 다운로드합니다.
2. 필요파일 설치
- JDK설치 후 Tomcat을 설치합니다.(설치파일 실행 후 다음만 누르면 됨)
3. Struts2 샘플 환경 구성
- Struts2 2.5.zip의 압축해제 후 struts2-rest-showcase.war파일을 Apache Tomcat 설치 디렉터리 내 webapps폴더에 복사 또는 이동합니다.
- Apache Tomcat을 실행합니다.
- http://127.0.0.1:8080/struts2-rest-showcase/ 로 접속하면 정상적으로 접속되어 Struts2 샘플 환경구성이 끝났습니다.
4. PoC
- Python 코드이며, Python 설치 후 requests 모듈을 추가로 설치해야 사용 가능합니다.
- 아래와 같이 취약한 환경에 대해 PoC Code를 실행한 결과 취약한 것으로 확인하였습니다.
5. Exploit
- Exploit을 제작하여 실제 시스템 명령이 사용 가능함을 확인하였습니다.
대응방안
- 취약점이 해결된 버전으로 업데이트 수행
- Content-Type에 엄격한 필터링 적용 및 ognl표현식과 사용 금지
- commons-fileupload-x.x.x.jar 파일 삭제 (임시 조치)
* 해당 파일 삭제 시 업로드 기능 사용 불가
- 보안 솔루션 사용
* 탐지패턴
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"F-INV-APP-170307-ApacheStruts_remote_codeexecution_attempt"; flow:to_server,established; content:"Content-Type: %"; content:"com.opensymphony.xwork2.ActionContext.container"; nocase; content:"POST"; offset:0; depth:4;metadata:impact_flag red, service http; classtype:attempted-admin; rev:1;) |
감사합니다.
* Reference
- http://blog.alyac.co.kr/1002
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5638
'Web' 카테고리의 다른 글
OWASP Top 10 (0) | 2017.02.15 |
---|