□ WEBDAV(웹 분산 저작 및 버전 관리) 개념
- WEBDAV : Web-based Distributed Authoring and Versioning
- 원래 웹 서버에 파일을 원격으로 업로드·수정·삭제할 수 있게 해주는 HTTP 확장 기능입니다
- 마치 공유 폴더처럼 서버의 파일 시스템을 웹을 통해 조작할 수 있게 하는 기술입니다.
□ PUT, DELETE, PATCH와 WEBDAV의 관계
- HTTP 표준 메소드로 PUT, DELETE 등은
서버 자원 생성(업로드), 삭제, 수정 기능을 수행합니다.
- 서버에 WEBDAV 기능이 활성화된 상태에서 PUT, DELETE 요청이 들어오면
"파일을 직접 추가·삭제·수정하라"는 의미로 해석되며, OS 레벨의 파일 변경 요청까지 이어질 수 있습니다.
- 웹 서버는 보안상 기본적으로 이 메소드들을 제한하거나 무시하도록 되어 있습니다.
□ 왜 웹서버는 이 기능을 기본 비활성화 할까요?
- 원래 웹서버는 정적 콘텐츠 제공이 주 목적이고, 파일을 임의로 바꾸는 것은 보안적으로 매우 위험합니다.
- PUT, DELETE, PATCH를 허용하면,
인증이 제대로 안된 상태에서 공격자가 웹 shell이나 악성 스크립트를 서버에 올리거나 지우는 것이
가능해집니다.
- 특히 WEBDAV 모듈이 켜져 있으면 이런 조작이 파일 시스템 레벨로 연결되기 때문에,
서버 전체가 뚫리는 결과를 초래합니다.
□ 취약점 예시
1. 서버에서 실수로 WEBDAV 활성화
2. 공격자가 PUT으로 웹 Shell 업로드
3. DELETE로 기존 로그 삭제
4. 이후 관리자 권한 획득 → 전체 서버 장악
□ 상황 재현 예제
- Apache - WEBDAV 활성화 서버 준비
- PUT을 사용해 웹 shell 업로드 - 백도어 Bash 스크립트 작성
• WEBDAV를 이용한 업로드
- curl -X PUT http://www.test.com/webdav/test.sh —data-binary @test.sh
; PUT이 뚫려 있으니 curl 명령어로 서버에 요청을 하여 webdav 디렉토리 하위에 test.sh를 업로드
. 같은 디렉토리에 test.sh가 있는 경우
. 특정 경로의 파일을 업로드 하는 경우
- curl -X PUT http://www.test.com/webdav/test.sh —data-binary @/home/user/desktop/test.sh
; 실행
우리가 터미널에서 명령어를 입력한 것처럼 처리 가능합니다.
. curl http://www.test.com/webdav/shell.sh?QUERY_STRING=id
. 단순 http 요청을 통한 명령 실행, 리버스 셸 이 가능하며
특정 상황에선 cron, SSH 키 등록, SUID 권한 상승 등과 결합이 가능합니다.
. 예제 : curl http://target.com/webdav/shell.sh?QUERY_STRING=cat /etc/passwd
- 백도어 파일 업로드 가능 예시
; ELF 바이너리
; PHP
; javascript
; python
□ HTTP1.1 표준 메소드의 사용목적과 보안문제
메소드 | 기본 목적 | 보안 취약점 원인 |
GET | • 리소스 조회 요청 - URL로 요청, 바디 없음 | • URL 조작 통한 정보 노출 • 캐싱 문제 • CSRF 공격 시도 가능 |
POST | • 리소스 생성 또는 데이터 제출 - 폼 전송, 업로드 등 | • 입력 검증 미비 시 XSS, SQL Injection 발생 가능 • 과도한 데이터 업로드로 DoS 공격 위험 |
PUT | • 지정한 경로에 리소스 생성 또는 덮어쓰기 | • WEBDAV 활성화 시 파일 업로드 취약점 • 인증/권한 관리 실패 시 웹쉘 업로드 가능 |
DELETE | • 지정한 리소스를 삭제 | • 인증/권한 관리 실패 시 파일 삭제 가능 • WEBDAV 연동 시 치명적인 무단 삭제 가능 |
PATCH | • 기존 리소스의 일부 수정 | • 입력 검증 실패 시 무단 코드 변경 가능 • 잘못된 패치 적용으로 시스템 무결성 손상 가능 |
OPTIONS | • 서버가 지원하는 메소드 목록 확인 | • 공격자가 서버 기능 파악 후 공격 경로 분석에 사용 가능 |
HEAD | • GET과 동일하나 본문 없이 헤더만 반환 - 상태 확인 용도 | • 잘못된 헤더 처리로 정보 노출 가능 • 보안 헤더 누락 시 서버 정보 노출 |
TRACE | • 요청 경로 추적 및 테스트 - 요청을 그대로 응답 | • Cross Site Tracing(XST) 공격 가능 • 쿠키나 인증정보가 반환되어 정보 탈취 가능 |
CONNECT | • 프록시 터널링 - 주로 HTTPS 프록시로 연결 시 사용 | • 프록시 서버 악용 시 포트 스캐닝 및 내부 네트워크 스캔 가능 • 잘못된 설정 시 비인가 터널링 가능 |
PRI | • HTTP/2 연결 초기화 시 내부 프로토콜 관리용 - 일반 사용 없음 | • 일반 요청에는 사용되지 않지만, 잘못된 구현 시 프로토콜 오류 발생 가능 |
□ WebDAV Extension 확장 메소드
메소드 | 기본 목적 | 보안 취약점 원인 |
PROPFIND | • 리소스 속성 및 메타데이터 조회 - 파일 목록, 권한, 생성일 등 | • 불필요한 정보 노출 • 권한 없이 서버 내부 파일 및 디렉터리 구조 노출 가능 |
PROPPATCH | • 리소스 속성 수정 - 메타데이터 변경 | • 권한 검증 실패 시 공격자가 리소스 속성 및 권한 변경 가능 |
MKCOL | • 새로운 컬렉션(디렉터리) 생성 | • 인증 및 권한 검증 실패 시 공격자가 서버에 디렉터리 생성 → 악성 파일 업로드 경로 확보 |
COPY | • 리소스를 다른 위치로 복사 | • 경로 우회 및 디렉터리 트래버설 취약점 유발 가능 |
MOVE | • 리소스 이동 | • 무단 이동 시 파일 변조 및 우회 |
LOCK | • 리소스를 잠그고 다른 사용자의 접근을 제한 | • 영구 잠금 또는 잠금 자원 탈취 가능 |
UNLOCK | • 잠금 해제 | • 인증 실패 시 공격자가 잠금 해제 후 파일 변경 가능 |
VERSION-CONTROL | • 리소스의 버전 관리 시작 | • 내부 상태 및 버전 정보 과도 노출 가능 |
REPORT | • 리소스의 버전 및 상태 리포트 요청 | • 무단 커밋 시 서버 코드 조작 및 변조 가능 |
CHECKIN | • 변경된 리소스의 새로운 버전을 커밋 | • 인증 실패 시 공격자가 변경 잠금 상태를 해제하고 조작 가능 |
CHECKOUT | • 리소스를 편집 가능한 상태로 전환 | • 무단 취소로 다른 사용자의 작업 중단 및 충돌 유발 가능 |
UNCHECKOUT | • 체크아웃(잠금) 취소 | • 무단 병합 시 서버의 예상치 못한 상태 변경, 소스 코드 변조 가능 |
MERGE | • 다른 브랜치나 변경 내용 병합 | • 인증 검증 실패 시 공격자가 독립 작업 공간 생성 후 악의적인 테스트 및 파일 업로드 가능 |
MKWORKSPACE | • 새로운 작업 공간 생성 | • 무단 업데이트로 시스템 변경 및 악성 코드 주입 가능 |
UPDATE | • 워크스페이스 또는 리소스 업데이트 | • 라벨 조작 시 중요 리소스를 위장하거나 관리 혼란 유발 가능 |
LABEL | • 특정 리소스 또는 버전에 라벨 지정 | • 순서 조작을 통한 취약점 탐색 및 시스템 동작 혼란 가능 |
ORDERPATCH | • 컬렉션 내 리소스 순서 변경 | • 파일 참조 우회 및 권한 우회 가능 |
BIND | • 리소스에 새로운 경로를 추가 (다른 경로에 동일 리소스 연결) | • 인증 검증 실패 시 중요한 경로 제거로 서비스 혼란 및 DoS 가능 |
UNBIND | • 경로 바인딩 제거 | • 잘못된 경로 재배치로 경로 탈취 및 권한 우회 가능 |
REBIND | • 경로를 다른 경로로 이동 | • 내부 상태 및 버전 정보 과도 노출 가능 |
□ WEBDAV 확장 메소드의 목적
1. 웹 서버를 파일 공유 서버처럼 사용할 수 있도록 확장하는 기능입니다.
2. 주요 메소드
- PUT → 파일업로드
- DELETE → 파일삭제
- MKCOL → 디렉토리 생성
- MOVE → 파일이동
; 권한 우회 가능
. 서버가 .php파일의 실행을 제한하는 경우, 공격자는 WEBDAV의 MOVE 기능을 사용하여 파일. 확장자를 변경 할 수 있음
. 명령어 예제 :
curl -X MOVE --header "Destination: http://www.test.com/webdav/test.php" http://www.test.com/webdav/test.txt
- PROPFIND → 파일 속성 조회
; 정보수집 가능 : 이 메소드를 사용하여 서버에 어떤 파일과 디렉토리가 있는지 조회 가능
. 명령어 예제
curl -X PROPFIND http://www.test.com/webdav/
. 응답에서 파일 목록과 속성 정보를 확인할 수 있음. (webdav 하위만 조회 가능)
. 단, 만약 WebDAV 설정이 /에 적용되어 있다면, /의 파일 목록까지 조회될 수도 있음.
. 공격자가 어떤 파일이 업로드 되어있는지, 어떤 권한이 있는지 파악가능.
□ 공통적인 취약점 원인
- 권한 및 인증 검증 미비
- 서버의 파일/폴더 조작 기능 노출
- 경로 및 리소스 조작으로 시스템 무결성 손상
- 잠금, 버전 컨트롤, 병합 기능의 남용으로 서버 혼란 유발
□ 특히 더 주의 해야 할 메소드
- PROPFIND, MKCOL, MOVE, LOCK, BIND, RFBIND는 대부분의 WebDAV 취약점 공격의 시작점이 됩니다.
⭐발표자 : 남상엽님
□ WEBDAV(웹 분산 저작 및 버전 관리) 개념
- WEBDAV : Web-based Distributed Authoring and Versioning
- 원래 웹 서버에 파일을 원격으로 업로드·수정·삭제할 수 있게 해주는 HTTP 확장 기능입니다
- 마치 공유 폴더처럼 서버의 파일 시스템을 웹을 통해 조작할 수 있게 하는 기술입니다.
□ PUT, DELETE, PATCH와 WEBDAV의 관계
- HTTP 표준 메소드로 PUT, DELETE 등은
서버 자원 생성(업로드), 삭제, 수정 기능을 수행합니다.
- 서버에 WEBDAV 기능이 활성화된 상태에서 PUT, DELETE 요청이 들어오면
"파일을 직접 추가·삭제·수정하라"는 의미로 해석되며, OS 레벨의 파일 변경 요청까지 이어질 수 있습니다.
- 웹 서버는 보안상 기본적으로 이 메소드들을 제한하거나 무시하도록 되어 있습니다.
□ 왜 웹서버는 이 기능을 기본 비활성화 할까요?
- 원래 웹서버는 정적 콘텐츠 제공이 주 목적이고, 파일을 임의로 바꾸는 것은 보안적으로 매우 위험합니다.
- PUT, DELETE, PATCH를 허용하면,
인증이 제대로 안된 상태에서 공격자가 웹 shell이나 악성 스크립트를 서버에 올리거나 지우는 것이
가능해집니다.
- 특히 WEBDAV 모듈이 켜져 있으면 이런 조작이 파일 시스템 레벨로 연결되기 때문에,
서버 전체가 뚫리는 결과를 초래합니다.
□ 취약점 예시
1. 서버에서 실수로 WEBDAV 활성화
2. 공격자가 PUT으로 웹 Shell 업로드
3. DELETE로 기존 로그 삭제
4. 이후 관리자 권한 획득 → 전체 서버 장악
□ 상황 재현 예제
- Apache - WEBDAV 활성화 서버 준비
- PUT을 사용해 웹 shell 업로드 - 백도어 Bash 스크립트 작성
• WEBDAV를 이용한 업로드
- curl -X PUT http://www.test.com/webdav/test.sh —data-binary @test.sh
; PUT이 뚫려 있으니 curl 명령어로 서버에 요청을 하여 webdav 디렉토리 하위에 test.sh를 업로드
. 같은 디렉토리에 test.sh가 있는 경우
. 특정 경로의 파일을 업로드 하는 경우
- curl -X PUT http://www.test.com/webdav/test.sh —data-binary @/home/user/desktop/test.sh
; 실행
우리가 터미널에서 명령어를 입력한 것처럼 처리 가능합니다.
. curl http://www.test.com/webdav/shell.sh?QUERY_STRING=id
. 단순 http 요청을 통한 명령 실행, 리버스 셸 이 가능하며
특정 상황에선 cron, SSH 키 등록, SUID 권한 상승 등과 결합이 가능합니다.
. 예제 : curl http://target.com/webdav/shell.sh?QUERY_STRING=cat /etc/passwd
- 백도어 파일 업로드 가능 예시
; ELF 바이너리
; PHP
; javascript
; python
□ HTTP1.1 표준 메소드의 사용목적과 보안문제
메소드
기본 목적
보안 취약점 원인
GET
• 리소스 조회 요청
- URL로 요청, 바디 없음
• URL 조작 통한 정보 노출
• 캐싱 문제
• CSRF 공격 시도 가능
POST
• 리소스 생성 또는 데이터 제출
- 폼 전송, 업로드 등
• 입력 검증 미비 시 XSS, SQL Injection 발생 가능
• 과도한 데이터 업로드로 DoS 공격 위험
PUT
• 지정한 경로에 리소스 생성 또는 덮어쓰기
• WEBDAV 활성화 시 파일 업로드 취약점
• 인증/권한 관리 실패 시 웹쉘 업로드 가능
DELETE
• 지정한 리소스를 삭제
• 인증/권한 관리 실패 시 파일 삭제 가능
• WEBDAV 연동 시 치명적인 무단 삭제 가능
PATCH
• 기존 리소스의 일부 수정
• 입력 검증 실패 시 무단 코드 변경 가능
• 잘못된 패치 적용으로 시스템 무결성 손상 가능
OPTIONS
• 서버가 지원하는 메소드 목록 확인
• 공격자가 서버 기능 파악 후 공격 경로 분석에 사용 가능
HEAD
• GET과 동일하나 본문 없이 헤더만 반환
- 상태 확인 용도
• 잘못된 헤더 처리로 정보 노출 가능
• 보안 헤더 누락 시 서버 정보 노출
TRACE
• 요청 경로 추적 및 테스트
- 요청을 그대로 응답
• Cross Site Tracing(XST) 공격 가능
• 쿠키나 인증정보가 반환되어 정보 탈취 가능
CONNECT
• 프록시 터널링
- 주로 HTTPS 프록시로 연결 시 사용
• 프록시 서버 악용 시 포트 스캐닝 및 내부 네트워크
스캔 가능
• 잘못된 설정 시 비인가 터널링 가능
PRI
• HTTP/2 연결 초기화 시 내부 프로토콜 관리용
- 일반 사용 없음
• 일반 요청에는 사용되지 않지만, 잘못된 구현 시 프로토콜
오류 발생 가능
□ WebDAV Extension 확장 메소드
메소드
기본 목적
보안 취약점 원인
PROPFIND
• 리소스 속성 및 메타데이터 조회
- 파일 목록, 권한, 생성일 등
• 불필요한 정보 노출
• 권한 없이 서버 내부 파일 및 디렉터리 구조 노출 가능
PROPPATCH
• 리소스 속성 수정
- 메타데이터 변경
• 권한 검증 실패 시 공격자가 리소스 속성 및 권한 변경
가능
MKCOL
• 새로운 컬렉션(디렉터리) 생성
• 인증 및 권한 검증 실패 시 공격자가 서버에 디렉터리
생성 → 악성 파일 업로드 경로 확보
COPY
• 리소스를 다른 위치로 복사
• 경로 우회 및 디렉터리 트래버설 취약점 유발 가능
MOVE
• 리소스 이동
• 무단 이동 시 파일 변조 및 우회
LOCK
• 리소스를 잠그고 다른 사용자의 접근을 제한
• 영구 잠금 또는 잠금 자원 탈취 가능
UNLOCK
• 잠금 해제
• 인증 실패 시 공격자가 잠금 해제 후 파일 변경 가능
VERSION-CONTROL
• 리소스의 버전 관리 시작
• 내부 상태 및 버전 정보 과도 노출 가능
REPORT
• 리소스의 버전 및 상태 리포트 요청
• 무단 커밋 시 서버 코드 조작 및 변조 가능
CHECKIN
• 변경된 리소스의 새로운 버전을 커밋
• 인증 실패 시 공격자가 변경 잠금 상태를 해제하고
조작 가능
CHECKOUT
• 리소스를 편집 가능한 상태로 전환
• 무단 취소로 다른 사용자의 작업 중단 및 충돌 유발 가능
UNCHECKOUT
• 체크아웃(잠금) 취소
• 무단 병합 시 서버의 예상치 못한 상태 변경, 소스 코드
변조 가능
MERGE
• 다른 브랜치나 변경 내용 병합
• 인증 검증 실패 시 공격자가 독립 작업 공간 생성 후
악의적인 테스트 및 파일 업로드 가능
MKWORKSPACE
• 새로운 작업 공간 생성
• 무단 업데이트로 시스템 변경 및 악성 코드 주입 가능
UPDATE
• 워크스페이스 또는 리소스 업데이트
• 라벨 조작 시 중요 리소스를 위장하거나 관리 혼란 유발
가능
LABEL
• 특정 리소스 또는 버전에 라벨 지정
• 순서 조작을 통한 취약점 탐색 및 시스템 동작 혼란 가능
ORDERPATCH
• 컬렉션 내 리소스 순서 변경
• 파일 참조 우회 및 권한 우회 가능
BIND
• 리소스에 새로운 경로를 추가
(다른 경로에 동일 리소스 연결)
• 인증 검증 실패 시 중요한 경로 제거로 서비스 혼란 및
DoS 가능
UNBIND
• 경로 바인딩 제거
• 잘못된 경로 재배치로 경로 탈취 및 권한 우회 가능
REBIND
• 경로를 다른 경로로 이동
• 내부 상태 및 버전 정보 과도 노출 가능
□ WEBDAV 확장 메소드의 목적
1. 웹 서버를 파일 공유 서버처럼 사용할 수 있도록 확장하는 기능입니다.
2. 주요 메소드
- PUT → 파일업로드
- DELETE → 파일삭제
- MKCOL → 디렉토리 생성
- MOVE → 파일이동
; 권한 우회 가능
. 서버가 .php파일의 실행을 제한하는 경우, 공격자는 WEBDAV의 MOVE 기능을 사용하여 파일. 확장자를 변경 할 수 있음
. 명령어 예제 :
curl -X MOVE --header "Destination: http://www.test.com/webdav/test.php" http://www.test.com/webdav/test.txt
- PROPFIND → 파일 속성 조회
; 정보수집 가능 : 이 메소드를 사용하여 서버에 어떤 파일과 디렉토리가 있는지 조회 가능
. 명령어 예제
curl -X PROPFIND http://www.test.com/webdav/
. 응답에서 파일 목록과 속성 정보를 확인할 수 있음. (webdav 하위만 조회 가능)
. 단, 만약 WebDAV 설정이 /에 적용되어 있다면, /의 파일 목록까지 조회될 수도 있음.
. 공격자가 어떤 파일이 업로드 되어있는지, 어떤 권한이 있는지 파악가능.
□ 공통적인 취약점 원인
- 권한 및 인증 검증 미비
- 서버의 파일/폴더 조작 기능 노출
- 경로 및 리소스 조작으로 시스템 무결성 손상
- 잠금, 버전 컨트롤, 병합 기능의 남용으로 서버 혼란 유발
□ 특히 더 주의 해야 할 메소드
- PROPFIND, MKCOL, MOVE, LOCK, BIND, RFBIND는 대부분의 WebDAV 취약점 공격의 시작점이 됩니다.
⭐발표자 : 남상엽님