본문 바로가기

정보보안/애플리케이션 보안

[웹 서버 취약점] 기타 웹 서버 취약점

 

디렉터리 리스팅 취약점
(Dirctory Listing)

① 개념

  • 웹 애플리케이션을 사용하고 있는 서버의 미흡한 설정으로 인해 인덱싱(리스팅) 기능이 확성화가 되어있으면 공격자가 강제 브라우징을 통해 서버의 모든 디렉터리 및 파일 목록을 볼 수 있는 취약점
  • 디렉터리 인덱싱 기능 : 활성화 시, 웹서버 구조뿐만 아니라 백업 파일이나, 공개되어서는 안 되는 파일 등이 노출될 수 있음

② 공격과정

  1. 특정 페이지(.php)가 아닌 디렉터리 경로(/home/board/)를 요청한다.
  2. HTTP 응답 메시지를 확인하면 상태코드 200 및 파일의 리스트를 확인할 수 있다. 
  3. 디렉터리 리스팅 취약점이 존재하면, 웹 브라우저상에 해당 디렉터리 내의 디렉터리/파일 정보가 그대로 노출되는 것을 확인할 수 있으며, 해당 디렉터리/파일을 클릭하면 그 내용을 확인할 수 있어 중요정보가 ㄱ 대로 노출되는 문제점이 있다.

③ 대응책

  • (Apache) 웹서버 설정파일 httpd.conf를 통이 디렉터리 인덱싱 기능 제거
    #httpd.conf
    <Directory /> 
    Options None  
    </Directory>
    • 모든 디렉터리(/) 섹션의 Options 지시자에 Indexes 설정이 되어 있으면 인덱싱 기능이 활성화되어 모든 디렉터리의 파일 목록이 보이는 취약점이 있다. (Options Indexes)
    • 모든 디렉터리(/) 섹션의 Options 지시자의 Indexes 설정을 제거한다.
    • 해당 설정 이후, 디렉터리 리스팅 공격 시 403(Forbidden) 에러메시지 출력
  • (윈도우 IIS) 윈도우 IIS 웹서버 환경에서의 디렉터리 인덱싱 기능 제거
    • 웹 사이트 등록정보 > 홈 디렉터리 > 디렉터리 검색 체크 해제 
    • 디렉터리 검색 체크 시, 인덱싱 기능이 활성화 되어 모든 디렉터리의 목록이 보임
  • (Tomcat) 톰캣 웹서버 환경에서의 디렉터리 인덱싱 기능 제거
    • Tomcat 웹서버의 웹 애플리케이션 설정파일(web.xml)의 default 서블릿 초기 파라미터 설정에 listings 파라미터 설정을 false로 설정한다.
      /* web.xml 파일 */
      <servlet>
          <servlet-name>default</servlet-name>
          <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
          <init-param>
              <param-name>listings</param-name>
              <param-value>false</param-value>
          </init-param>
          <load-on-startup>1</load-on-startup>
      </servlet>

웹 서비스 메소드 설정 취약점

 

① 개념

  • 웹 애플리케이션에서 일반적으로 사용하는 GET,POST 메소드 이외의 PUT,DELETE 등의 불필요한 메소드를 허용했을 경우, 공격자가 이를 악용해 웹서버에 악성파일을 생성하거나 중요 파일의 삭제 및 수정 등이 가능한 취약점

② 공격과정

  1. telent 프로그램을 이용해 대상 웹서버(ex.192.168.56.100)의 서비스 프로토콜(ex.80)로 접속 후 OPTIONS 메소드 요청 메시지를 를 생성하여 전송하면, OPTIONS 메소드를 지원할 경우, 200(OK) 응답과 함께 Allow 응답 헤더 필드를 통해 지원하는 메소드 리스트를 보여준다.
    #telnet 192.168.56.100
    #입력
    OPTIONS / http/1.1
    Host: 192.168.56.100

    #결과
    HTTP/1.1 200 OK
    Date: ...
    ...
    Allow: GET,HEAD,POST,OPTIONS,TRACE

 

③ 대응책

  • (Apache) 웹서버 설정 파일(httpd.conf)을 통해 불필요한 메소드 사용을 제한하다.
  • DocumentRoot 디렉터리 섹션에 LimitExcept 지시자를 이용해 불필요한 메소드 사용 제한을 한다.
    <Directory "/var/www/html"> # DocumentRoot 디렉터리 : /var/www/html
    <LimitExcept GET POST>
      Order allow,deny
      Deny from all
    </LimitExcept>
    • Limit 지시자 설정을 살펴보면 GET,POST 메소드를 제외한 모든 메소드에 대해서 접근을 거부(Deny from all)하도록 제한한다는 의미이다.
    • 해당 살정 후, OPTIONS 메소드 요청 시 403(Forbidden) 에러 응답 메시지가 반환

 


관리자 페이지 노출 취약점

① 개념

  • 웹 애플리케이션의 관리자 페이지가 추측할 수 있는 형태로 구성되어 있으면, 공격자가 관리자 페이지에 쉽게 접근할 수 있으며 무작위 대입 공격 등을 통해 관리자 권한을 획득할 수 있는 취약점

② 공격과정

  1. /admin, /manager, /master 등 유추하기 쉬운 페이지 이름으로 url 경로를 입력했을 때, 접근제어를 하지 않아 접속되면 관리자 페이지 노출 취약점을 갖고있다고 할 수 있다.

③ 대응책

  • 관리자 페이지 URL 이름을 쉽게 추측하기 어렵게(ex. alfuemdnvue.php)로 만든다.
  • 관리자 페이지에 대한 접근제어 설정을 한다.
    • (Apache) httpd.conf 파일에 저관리자 페이지가 위치한 디렉터리에 IP 기반 접근제어 설정을 한다.
      <Directory "/var/www/html/admin">
      Order Deny,Allow
      Deny from all
      Allow from 192.168.56.30 #특정 IP 지정
      Allow from 192.168.56.30 192.168.56.40
      # 리스트 지정
      Allow from 192.168.56
      # 대역 지정
      Allow from 192.168.56.0/24 # 대역 지정
      </Directory>
      Order 지시자는 Allow(허용할 IP), Deny(차단할 IP)의 순서를 명시하는 것으로 뒤에 오는 설정이 우선한다. 즉, 먼저 Allow 설정을 참조하고 매칭되지 않으면 Deny 설정을 참조한다. 
    • 허용되지 않은 IP로 접근 시 403(Forbidden) 에러 응답 메시지 반환

위치공개 취약점

① 개념

  • 개발 과정 또는 소스코드를 수정하였을 경우 백업파일, 로그파일, 압축파일과 같은 파일이 개발자 모르게 자동적으로 생성되어 웹 애플리케이션 상에 노출될 경우, 공격자가 유추 후 직접 접근을 요청해 핵심 정보를 획득할 수 있는 취약점

② 공격과정

  1. 개발 소스 운영 이관 시 사용한 소스 압축파일을 운영 웹서버에서 삭제하지 않고 그대로 보관하여 외부에서 이를 유추해 URL과 같은 것으로 다운로드에 성공한다.

③ 대응책

  • 불필요한 파일 삭제 및 적절한 접근제어 설정
  • (Apache) 아파치 웹서버 설정 파일(httpd.conf)을 통해 파일에 대한 접근제어를 설정한다. 
    #httpd.conf
    <Files ~ "\.gz$">
    Order Allow,Deny
    Deny from all
    </Files>

    <Files ~ "\.bak$">
    Order Allow,Deny
    Deny from all
    </Files>
    • .gz, .bak 확장자를 가진 파일에 대해 Order 지시자 순서에 따라 deny를 먼저 참조해 모든 접근 차단
    • 제한된 파일 접근 시 403(Forbidden) 에러 응답 메시지 반환

검색엔진 정보 노출 취약점

① 개념

  • 검색엔진에 의해 웹 사이트 해킹에 필요한 정보가 검색되어 해킹의 빌미가 제공되는 취약점
    • 검색엔진의 성능 향상에 따라 HTML 웹 페이지의 내용 뿐만이 아니라 PDF,엑셀,한글,워드 등 서버에 저장된 문서파일의 내용까지 검색해 의도하지 않은 주소록, 회원 정보 등의 개인정보 파일이 노출되는 위험성 증가
  • 로봇배제표준 : 검색로봇에 대한 웹사이트의 디렉터리 및 파일들에 대한 검색 조건을 명시해놓은 국제 규약.
    • robots.txt: 로봇배제 표준 설정파일. 접근 제한 설정 파일
    • 검색로봇 : 검색엔진이 검색 데이터베이스의 내용을 보충하기 위해 웹사이트를 검색하여 정보를 가져온는 프로그램.
    • robots.txt 설정법
      • 로봇의 이름을 적는 부분(User-agent)과 URL 접근 허용 어부를 적는 부분(Allow/Disallow)로 구분
      • robots.txt 파일은 반드시 웹 사이트의 최상위 주소에 저장해야 한다. 하위디렉터리 저장할 경우 효력 x
        • 대소문자 구분 : User-agent (o), User-Agent(x)
        • 띄어쓰기 : User-agent: *(o), User-Agent : (x)  
        • 줄바꾸기 : 다중검색로봇 지정 시, 한줄 띄우기 x 바로 다음 줄에 해당 정보가 있어야 한다.
        • 설정 파일 이름 : robot.txt(x), robots.txt(o)
        • 설정 파일 적용위치 : /home/test/robots.txt(x) /robots.txt(o). 반드시 보유한 홈페이지의 최상위 디렉터리어야함
    • (일반적인 검색로봇) 사이트 방문시 가장 먼저 웹 사이트의 로봇배제표준 설정 파일(robot.txt)을 확인 후, 이를 준수하여 컨텐츠 수집
    • (악의적인 검색엔진) 로봇배제표준은 방지 기술이 아닌 검색로봇 운영자 간의 약속이므로 이를 무시하고 컨텐츠를 수집
    • 주요 검색엔진 및 검색 로봇은 구글의 Googlebot, 네이버의 naverbot, yeti 등이 있다.
    •  

 대응책

  • 검색 엔진 접근 차단 설정
    User-agent: *
    Disallow:
    위의 경우 취약한 설정이다. 모든 검색로봇에 대해 웹사이트 전체에 대한 접근 허용을 의미
    User-agent: *
    Disallow: /search
    Allow: /search/about

    모든 검색로봇에 대해 /serach로 시작하는 경로는 차단하되, /search/about로 시작하는 경로는 모두 허용한다는 의미