ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CVE-2019-0232][WIN] Tomcat CGI 취약점
    CVE 실습 2019. 12. 1. 16:07

     

    ※ 해당 게시글에 대한 내용은 악의적인 행위를 권장하는 것이 아닌 개인적인 공부를 위한 글입니다.

    반드시 개인 서버를 통하여 실습해야 하며, 이 게시글로 인한 발생하는 모든 피해는 책임지지 않음을 밝힙니다.

    CVE(Common Vulnerabilities and Exposure) 란, 전 세계적으로 사용하는 알려진 보안 취약점 항목이나 노출된 방법 등을제시하는 취약점 표준코드이다. "CVE-발생년도-취약점번호" 형식을 취하며, 과거에는 여러 기관이나 벤더사마다 각자의 이름을 가지고 사용했으나 서로 체계가 다르다 보니 일괄성이 없고 혼란스러워 비효율적이었다. 이는 2015년 1월 13일부터 MITRE가 현재의 CVE 체계로 변경하였으며 현재까지도 이를 기반으로 체계가 유지되고 있다.

    ■ 실습 CVE : CVE-2019-0232

    ■ 실습 OS : Windows 7 Ultimate K (64Bit)

    실습 Applicaton : Apache Tomcat 9.0.0.M1

     

    [구축 작업]

    ※ Apache Tomcat 설정 변경 → 스크립트 작성 → Tomcat 실행 → 취약점 실습

    Apache Tomcat 설정 변경

    - 파일 경로 : %설치경로%\conf\Context.xml

    - 변경 내역 : privileged="true" 구문 추가

    <Context>
    
        <!-- Default set of monitored resources. If one of these changes, the    -->
        <!-- web application will be reloaded.                                   -->
        <WatchedResource>WEB-INF/web.xml</WatchedResource>
        <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
    
        <!-- Uncomment this to disable session persistence across Tomcat restarts -->
        <!--
        <Manager pathname="" />
        -->
    </Context>
    
    <Context privileged="true">
    
        <!-- Default set of monitored resources. If one of these changes, the    -->
        <!-- web application will be reloaded.                                   -->
        <WatchedResource>WEB-INF/web.xml</WatchedResource>
        <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
    
        <!-- Uncomment this to disable session persistence across Tomcat restarts -->
        <!--
        <Manager pathname="" />
        -->
    </Context>
    

     

    Apache Tomcat 설정 변경

    - 파일 경로 : % 설치경로%\conf\Web.xml

    - 변경 내역 : 기존 CGI Servlet 주석 해제를 통한 활성화 및 executable 구문 추가

    (사용자마다 라인 위치가 다를 수 있으니, 내용 기준으로 참조할 것.)

    <servlet>
            <servlet-name>cgi</servlet-name>
            <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
            <init-param>
              <param-name>debug</param-name>
              <param-value>0</param-value>
            </init-param>
            <init-param>
              <param-name>cgiPathPrefix</param-name>
              <param-value>WEB-INF/cgi-bin</param-value>
            </init-param>
             <load-on-startup>5</load-on-startup>
    </servlet> 
    
    
    
        <servlet-mapping>
            <servlet-name>cgi</servlet-name>
            <url-pattern>/cgi-bin/*</url-pattern>
        </servlet-mapping>
    <servlet>
            <servlet-name>cgi</servlet-name>
            <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
            <init-param>
              <param-name>debug</param-name>
              <param-value>0</param-value>
            </init-param>
            <init-param>
              <param-name>cgiPathPrefix</param-name>
              <param-value>WEB-INF/cgi-bin</param-value>
            </init-param>
            <init-param>
              <param-name>executable</param-name>
              <param-value></param-value>
            </init-param>
             <load-on-startup>5</load-on-startup>
    </servlet> 
    
    
    
        <servlet-mapping>
            <servlet-name>cgi</servlet-name>
            <url-pattern>/cgi-bin/*</url-pattern>
        </servlet-mapping>

     

     스크립트 작성

    - 파일 경로 : % 설치경로%\webapps\ROOT\WEB-INF

    - 변경 내역 : cgi-bin 폴더 생성 (있으면 스킵) - hello.bat 스크립트 생성 (이름 변경 가능)

    이후 Tomcat 서비스가 재 실행이 정상적으로 수행된다면, 문제없이 구축 작업이 완료된 것이다. 이후에 만약 Tomcat 실행이 정상적으로 되지 않는다면 오타로 인한 문제 가능성이 있으니 처음부터 살펴보도록 하자.

     

    [실습]

    "http://실습 사이트 주소/cgi-bin/hello.bat?&dir" 형식을 실습해보았으며, 각 특수문자에 대한 기능은 아래와 같다.

    ? = 해당 URL에 대하여 특정 파라미터를 적용하겠음에 대한 시작을 의미하는 부분

    & = 각 파라미터에 대한 시작 부분

    [실습 완료]

     

    댓글

Designed by Tistory.