본문 바로가기
IT이야기

[웹취약점] HTTP 메소드 설정 방법

by 너머스고(numusgo) 2024. 2. 6.

 

 

공공기관 사업을 하다 보면 웹 취약점 점검을 완료해야 ANY(*.*.*.*) 모든 IP에 대해서 허용해 주는 방화벽을 허용해 준다.

 

구축 사업을 하다 보면 다른 것은 AP업체에서 조치를 잘하지만 "취약한 메소스 설정" 항목에 대해서 몇 번 퇴자를 맞는 경우를 확인했다.

 

큰 공공기관의 경우에는 공문으로 취약점 조치 및 결과를 받아서 오랜 시간이 걸린다. 그래서 되도록이면 한 번에 끝내는 게 좋다.

 

아파치는 찾아서 적용했는데 취약하다고 또 나온다.

Apache 적용 완료

<LimitExcept GET POST HEAD OPTIONS>
	order deny,allow
 	Deny from all
</LimitExcept>HTML

 

추가적으로 Tomcat(WAS) 소스에 적용을 해줘야 한다.

AP소스위치/WEB-INF/conf/web.xml 파일 안  </ web-app> 위에 추가

가끔 다른 파일 안에 <security-constraint> 구문이 있으니 있으면 안에 추가해야 한다.

<security-constraint>
  <display-name>Forbidden</display-name>
  <web-resource-collection>
    <web-resource-name>Protected Context</web-resource-name>
    <url-pattern>/*</url-pattern>
    <http-method>PUT</http-method>
    <http-method>DELETE</http-method>
    <http-method>TRACE</http-method>
    <http-method>CONNECT</http-method>
  </web-resource-collection>
  <auth-constraint></auth-constraint>
</security-constraint>HTML

 

 

메소드 설명

메소드 설명
GET 요청받은 URI의 정보를 검색하여 응답한다.
POST Request body 내용에 데이터를 담아 전송하는데 사용하며, 생성이나 수정 용도로 사용된다.
HEAD GET 방식과 동일하지만, 응답에 BODY가 없고 응답코드와 HEAD만 응답한다.
PUT POST방식과 유사하게 데이터를 전송하고 요청된 자원을 수정한다.
DELETE 요청된 자원을 삭제할 것을 요청한다.
OPTIONS 웹 서비스에서 지원되는 메소드의 종류를 확인할 경우 사용
TRACE 원격지 서버에 루프백 메시지 호출하기 위해 사용
CONNECT 동적으로 터널 모드를 교환, 프록시 기능을 요청시 사용

 

 


 

1. Apache

http.conf or vhost.conf 추가

 

<LimitExcept GET POST HEAD OPTIONS>
	order deny,allow
 	Deny from all
</LimitExcept>HTML

 

 

2. Tomcat / Jboss

소스디렉토리위치/WEB-INF/conf/web.xml 추가

<security-constraint>
  <display-name>Forbidden</display-name>
  <web-resource-collection>
    <web-resource-name>Protected Context</web-resource-name>
    <url-pattern>/*</url-pattern>
    <http-method>PUT</http-method>
    <http-method>DELETE</http-method>
    <http-method>TRACE</http-method>
    <http-method>CONNECT</http-method>
  </web-resource-collection>
  <auth-constraint></auth-constraint>
</security-constraint>HTML

 

3. IIS

IIS 홈 디렉토리의 web.config파일안 필드 내에 설정을 추가하여 메소드를 차단 (IIS 7.0, 7.5, 8.0, 8.5, IIS 10)

<configuration>
   <system.webServer>
      <security>
         <requestFiltering>
            <verbs>
               <add verb="PUT" allowed="false" />
               <add verb="DELETE" allowed="false" />
               <add verb="TRACE" allowed="false" />
               <add verb="CONNECT" allowed="false" />
            </verbs>
         </requestFiltering>
      </security>
   </system.webServer>
</configuration>HTML

 

3. ngnix

ngnix 홈 디렉토리의 ngnix.conf 파일안 수정을 통하여 메소드를 차단

server{
   listen          80;
   server_name   abc.co.kr;
   access_log     log/access.log;
   location / {
      limit_except GET POST {
      deny all;
          }
      }HTML

 

4. WebtoB

WebtoB 홈 디렉토리/config/환경파일 파일안 Method를 수정하여 메소드를 차단한다.

webmain WEBTOBDIR = "/usr/local/webtob",
SHMKEY = 69000,
DOCROOT = "/usr/local/webto/docs",
User = "nobody",
Group = "nobody",
IndexName = "Index.html",
UserDir = "public_html",
DirIndex = "Index",
Method = "-PUT, -DELETE, -TRACE, -CONNECT",
LanguagePrio = "kr"HTML

 

5. Resin

Resin 홈 디렉토리/resisn.conf 파일안 <web-app> 필드 내에 설정을 추가하여 메소드를 차단한다.

<security-constraint>
 <web-resource-collection>
    <http-method>PUT</http-method>
    <http-method>DELETE</http-method>
    <http-method>TRACE</http-method>
    <http-method>CONNECT</http-method>
 </web-resource-collection>
 <auth-constraint role-name='user'/>
</security-constraint>HTML

 

 

 


참조

출처: https://mokpo.tistory.com/202 [MSS:티스토리]