WebDAV란? - 원격으로 웹서버를 제어할 수 있는 HTTP 프로토콜의 확장 기능이다. 취약하면 공격자는 이 확장 기능을 이용해서 악성 스크립트가 포함된 파일을 업로드해서 서버에 침투할 수 있으며, 기존에 있던 파일을 수정할 수도 있다. 몇몇 서비스에서 PUT 메소드를 허용하기에 악성 웹셸이 업로드 되는 경우가 있다.
[난이도 하]
/webdav 디렉터리로 이동하면 index of 보안 설정이 안되있어 디렉터리 내부가 노출된다.
칼리 리눅스로 telnet 80 포트로 연결해서 메서드 허용 설정이 어떻게 되어있는지 확인해보면 DELETE,MOVE 등 모든 메서드가 허용되어있다.
이제 webdav 페이지에 대한 요청을 PUT으로 변경하기 위해 버프슈트로 캡쳐하자.
GET 부분을 PUT 메소드로 변경하고 옆에는 /webdav/test.txt 로 변경하여 테스트용 파일을 생성한다. 그리고 맨 아래에 테스트 파일에 들어갈 내용을 적어주었다.
그러면 파일이 생성되었다는 메시지가 적힌 페이지가 보인다. 이제 webdav 디렉터리로 가보자.
그랬더니 /webdav 디렉터리 안에 파일을 생성할 수 있었다. 이런 방식으로 취약점이 존재한것을 알아냈으니 칼리리눅스로 공격해보자.
cadaver 툴을 사용할 것이다. cadaver은 리눅스용 WebDAV 클라이언트 도구로써, 원격 서버를 대상으로 파일을 추가/수정/삭제할 수 있다.
cadaver http://192.168.56.102/webdav 명령어를 입력하고 put r57.php 명령어를 입력해서 웹셸을 업로드 하였다. 웹페이지를 보자
보면 r57.php 웹셸이 업로드 된 것을 볼 수 있다. 이것을 실행하려면 URL에 /webdav/r57.php 를 쳐주면 된다.
그 결과 웹셸이 실행되어 서버의 각종 정보 노출 및 서버 조작이 가능하게 되었다. 이처럼 웹페이지에 따로 첨부파일 기능이 없더라도 보안설정이 미흡하면 악의적인 웹셸을 업로드할 수 있게 된다. 메서드 허용 여부는 환경 분석에서 빼먹을 수 있는 항목이기에 환경 분석 시 체크해야할 목록을 만들어서 반드시 점검해주어야 한다.
[대응방안]
/etc/apache2/httpd.conf 파일을 보면 WebDAV가 모든 사용자에게 허용되어 있다.
WevDAV를 비활성화 하는것이 가장 안전한 방법이지만, 꼭 필요한 경우 시스템 사용자에 한하여 접근할 수 있게 제한한다.
<Location>
Options Indexes
DAV On
AuthType Basic
AuthName "webdav"
AuthUserFile /etc/apache2/webdav.password
Require valid-user
처럼 설정해 주어서 접근 제한을 걸어주어야 한다.
'3. 웹 애플리케이션 취약점 진단 > 비박스를 활용한 웹 애플리케이션 취약점 진단' 카테고리의 다른 글
[비박스를 활용한 웹 취약점 진단] 10-1. 민감한 데이터 노출 [HTTP 페이지 내 평문 데이터] (0) | 2023.12.13 |
---|---|
[비박스를 활용한 웹 취약점 진단] 10. 민감한 데이터 노출 [Base64 인코딩 복호화 - Secret] (0) | 2023.12.13 |
[비박스를 활용한 웹 취약점 진단] 9. 보안 설정 오류 [Robots 파일 내 중요 정보 노출] (0) | 2023.12.13 |
[비박스를 활용한 웹 취약점 진단] 8-2.취약한 직접 객체 참조 [Order Tickets] (0) | 2023.12.13 |
[비박스를 활용한 웹 취약점 진단] 8-1.취약한 직접 객체 참조 [Reset Secret] (0) | 2023.12.13 |