그곰의 생활

[스크랩]WebDEV 처리방법 본문

Server System/WebApp & WAS Config

[스크랩]WebDEV 처리방법

그곰 2011. 11. 17. 13:42
이과 같은 조건이라면 PUT혹은 DELETE 메소드를 이용하여 콘텐츠를 생성하거나 삭제할 수 있다.


<PUT 메소드>
-----------------------------------------------------------------------------
HTTP 메소드 전송형태 설 명
-----------------------------------------------------------------------------
PUT PUT [request-uri] HTTP/1.1\r\n POST 와 유사한 전송 구조를 
Host:[HOstname] 혹은 [IP] \r\n 가지기 때문에 헤더 이외에 메시지(데이터)가
Content-Length:[Length in Bytes] \r\n 함꼐 전송된다. 대개 원격지 서버에 지정한
Content-Type:[Content Type] \r\n 콘텐츠를 저장하기 위해 사용되며 홈페이지편조에
\r\n 악용된다. 
[ 데이터 ]
-----------------------------------------------------------------------------

예를 들어 PUT 메소드를 이용하여 /upload/Defacement.html 파일을 삽입(호메이지 변조)하는 경우

헤더에는 파일 생성 위치를 넣고, 메시지(Body)에는 파일 내용을 추가한다.

(전송 방식은 POST와 같다.)

----------------------------------------------------------------------------
PUT /upload/Defacement.html HTTP/1.1
If-Modified-Since : Mon, 22 May 1970 12:00:00 GMT
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Win32)
Host: findjob.co.kr
Content-Length : 551
Connection : Keep-Alive
Cache-Control: no-cache
Cookie: ASPSESSIONIDQAADCQCS=OPLAHCMCOPBAEELAHOCJHHB


<html>
생략...

</html>


-------------------------------------------------------------------------------

파로소를 이용해서 패킷을 잡아다가 변조해도되고 소켓 프로그램으로 HTTP 에 PUT 메소드 형식에

맞게 상대방 서버에 보내면 원하는 파일변조 및 생성이 가능하다고 한다.

====================================================================

[ 해킹 로그 ]

PUT 메소드 악용은 특별한 고급 기술을 필요로 하지 않기 때문에 자주 악용되고 있다.

공격자는 먼저 WebDAV 운영 여부를 확인하기 위해 'PROPFIND /' 를 전송한다. 이때 응답 코드 207번이

수신되면 WebDAV 서비스 사용을 의미하기 때문에 파일 삽입(PUT /echo.html)을 즉시 요청한다.

======== PUT 악용 로그 샘플(1) ========

2005-01-09 23:43:XX XXXX - 222.222.222.222 PROPFIND / - 207
Microsoft+Data+Access_Internet+Publishing+Provider+DAV


2005-01-09 23:43:XX XXXX - 222.222.222.222 PUT /echo.htm - 201
Microsoft+Data+Access_Internet+Publishing+Provider+DAV

원격지에 파일이 생성되었을 경우 응답 코드는 201(Created)번이 수신된다.


====================================================================

[ 보호 방법 ]

대응책은 IIS(ASP), 아파치(PHP), JSP 관점에서 시스템 설정 변경을 통해 원하는 메소드를 통제할 수

있으므로 아래의 내용을 참고하기 바란다.

======== IIS ========

WebDAV는 암호화나 인증이 근본적으로 취약한 원격 관리 기능이므로 해당 서비스 중지를 권고한다.

(간단한 레지스터리 편집으로 서비스를 제거할 수 있다.)

레지스트리 편집기(regedit)를 열고 다음의 위치에 새로운 레지스트리 값을 생성한다.


HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\W3SVC\\Parameters


::DisableWebDAV 내용

값 이름 : DisableWebDAV
데이터 형식 : DWORD
값 데이터 : 1


======== 아파치 ========

아파치는 기본적으로 많은 메소드를 제공하므로 필요한 메소드만을 허용할 수 있다. 아래 http.conf

파일 내용은 모든 디렉터리에 대해 GET 과 POST 메소드만 허용하고, 이회의 메소드는 제한하는 방법이다.

----------

<Directory />

<LimitExcept GET POST>
Order allow, deny
Deny from all 
</LimitExcept>

</Directory>


======== JSP ========

web.xml 설정을 통해 정의한 웹 콘텐츠에 대해 어떤 메소드를 허용할지를 결정할 수 있다.

첫 번재 샘플은 "PARTNER" role을 가진 사용자에게 /acme/wholesale/ 디렉터리 하위 리소스에 대해

GET 및 POST 메소드 사용을 허용하는 정책이다.


----- 샘플 1 -----

<security-constraint>

<web-resource-collection>
<web-resource-name>wholesale</web-resource-name>
<url-pattern>/acme/wholesale/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>

<auth-constraint>
<role-name>PARTNER</role-name>
</auth-constrain>

<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>

</security-constraint>


두 번째 샘플은 manager 에게만 PUT, DELETE 메소드 사용을 제한하는 정책이다.


----- 샘플 2 -----


<security-constraint>

<web-resource-collection>
<web-resource-name>method block</web-resource-name>
<url-pattern>*</url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>

<auth-constraint>
<role-name>manager</role-name>
</auth-constrain>
</security-constraint>

-------------------


<web-resource-name> method block </web-resource-name>

임의의 이름을 줄 수 있다.

<url-pattern>/*</url-pattern>

모든 페이지를 의미한다.

<http-method>DELETE</http-method>

차단할 메소드를 등록한다.

<auth-constraint>

인증 사용자를 등록한다.
Comments