불필요한 메서드 제한
클라이언트에서 GET, POST 이외의 method 로
작업 요청 시 보안문제가 발생할 수 있으며
PUT, DELETE 등의 method 로 인해 파일 변조 및
삭제를 당하는 등 악의적인 이용으로 피해가 발생할 수 있습니다.
HTTP Method 란?
- HTTP 메서드는 서버가 http 요청을 어떻게 처리하는지 지시해주는 필드이며
서버는 HTTP method 에 Reuqest-URI 에 대해 다른 동작을 수행할 수 있습니다.
우리가 흔희 아는 GET POST 를 말합니다.
Method 종류
- GET
- Request-URI 요청에 필요한 정보를 모두 담는다
- 재요청이 잦은 경우 유용 ( ex : 새로고침 )
- POST
- 요청에 필요한 정보들을 body 필드에 숨긴다.
- 길이 제한 없으며 정보가 노출되지 않도록 사용한다.
- Text 및 binary 데이터 전송 가능하다
- DELETE
- Request-URI 정보 삭제
- PUT
- 요청에 동봉된 정보를 저장한다.
- OPTIONS
- Request-URI 통신에 대한 정보 제공
- 어떤 method 기능을 제공하는지 체크
- URI 에 대한 기능적인 체크 동작 수행
- Request-URI 에는 body 필드 정의하지 않아도 된다.
- HEAD
- 요청에 대한 응답 body 를 return하지 않고 헤더 정보만 return
- 요청에 대한 유효성, 접근성을 확인할 때 사용
- CONNECT
- SSL tunneling 에 사용되는 method
- TRACE
- 클라이언트로부터 수신한 메시지를 응답에 포함시킨다.
- TRACE 메서드 요청에는 요청 정보를 포함하는 URI 를 사용하면 안된다.
톰캣 web.xml 설정
Protected /* PUT DELETE HEAD TRACE OPTIONS
- 각 태그 설명
- security-constraint : web-resource-collection 내부에 정의된 방식의 요청을 제한
- url-pattern : 특정 디렉토리에 인증(제한)을 걸수 있게 pattern 지정
- auth-constraint : 모든 사용자 접근불가
- http-method : 인증(제한)할 메서드 지정
제한할 http-method 를 하나도 설정하지 않으면 url-pattern에 해당하는 모든 요청이 제한
아파치 httpd.conf 설정
- 허용할 method 정의
<Directory /> <LimitExcept GET POST> Order allow, deny deny from all </LimitExcept> </Directory>
- 제한할 method 정의
<Directory /> <Limit PUT DELETE OPTIONS> Order allow,deny Allow from all </Limit> </Directory>
Directory 태그를 사용하면 Directory 별로 모두 제한을 걸어줘야 하므로
URL pattern 을 이용하여 일괄적으로 제한하는 방법도 있습니다.
- Location 을 통한 method 제한
<Location /*> <LimitExcept GET POST> Order deny,allow Deny from all </LimitExcept> </Location>
- Trace Method 처리 방법
LimitExcept 제한 시 정상적으로 제한되지 않아 TraceEnable off 를 사용합니다.
(https 프로토콜 사용 시 httpd-ssl.conf 파일에도 동일한 설정 필요합니다.)
TraceEnable off
불필요한 메서드 적용 확인 방법
위의 내용을 적용을 한 후 정상적으로 반영됐는지 확인해보는 방법입니다.
- cmd 창 오픈
- telnet localhost 80
- 아무것도 보이지 않는 상태에서 TRACE / HTTP/1.0 입력 후 엔터 두번
- 제한 적용 전
HTTP/1.1 403 Forbidden Date: Thu, 10 Jan 2019 08:31:11 GMT Server: Apache/2.0.64 (Unix) Last-Modified: Wed, 19 Dec 2018 11:05:50 GMT ETag: "35fc89-3c6-57d5aff2a1f80" Accept-Ranges: bytes Content-Length: 950 Connection: close Content-Type: text/html
- 제한 적용 후
HTTP/1.1 200 OK Date: Thu, 10 Jan 2019 08:32:05 GMT Server: Apache/2.0.64 (Unix) Last-Modified: Wed, 19 Dec 2018 11:03:29 GMT ETag: "35fca1-2b-53d2df2c3b260" Accept-Ranges: bytes Content-Length: 42 Connection: close Content-Type: text/html
'IT > 보안' 카테고리의 다른 글
윈도우10 네트워크 공유폴더 안보임 해결 (1) | 2020.03.06 |
---|---|
빵집 다운로드 최신버전 무료로 다운받아 사용하세요 ( 사용법 추가 ) (0) | 2019.12.31 |
시스템 운영정보 노출 및 아파치버전 숨기는 설정 (0) | 2019.06.15 |
디렉토리 목록 노출 취약점 및 해결방법 (1) | 2019.06.14 |
XSS 방어 방법 ( 크로스사이트스크립팅 ) (4) | 2019.02.21 |