WebDAV란?
WebDAV는 Web-based Distributed Authoring and Versioning (웹 기반 분산형 저작 및 버전관리)의 약자로 웹을 통하여 서버의 파일들을 관리하는 확장된 HTTP프로토콜이다.
구성환경
취약한 서비스인 bWAPP의 insecure webdav configuration을 이용하여 webdav의 취약점을 다룬다.
위 화면의 webdav를 클릭하면 /webdav 디렉토리로 이동한다.
/webdav로 이동하면 index 형식으로 파일들이 있다.
nikto를 이용하여 webdav의 취약점을 진단하자.
실행
nikto -h http://192.168.98.134/webdav/ 명령어를 입력한다. 대상 호스트는 /webdav로 입력한다.
출력 결과를 확인해보면 서버의 서비스 버전 및 정보 , 디렉토리 노출, 허용된 http 메서드 종류 등을 확인할 수 있다.
put 메서드는 클라이언트가 파일을 업로드 할 수 있게 한다. put 메서드를 이용하여 간단한 웹쉘을 업로드 한다.
웹 쉘 스크립트는 리눅스에서 제공하는 파일을 사용한다.
locate 명령어를 이용하여 /usr/share/webshells/php/simple-backdoor.php 파일의 코드를 확인한다.
request 메서드로 요청한 'cmd'의 값이 존재하면 system() 함수를 이용하여 서버쪽 명령을 한다.
사용 방법으로는 get 방식으로 파라미터 값을 넘겨 서버 명령을 실행한다. ex) ?cmd=cat+/etc/passwd
request 메서드는 get, post 두 방식 모두 포함한다.
ex) 예제에서 +는 공백을 대신하여 넣은 것 같다.
burpsuite를 이용하여 put 메서드로 웹 쉘을 업로드한다.
burpsuite를 실행하여 /webdav를 요청하면 get 방식으로 데이터를 요청한다.
해당 메서드를 put 방식으로 변경하고 파일을 업로드한다.
위의 그림은 변경 후의 코드이다. http 메서드를 put변경 , 디렉토리에 .php 파일을 추가 , 패킷 body 부분에 php파일 코드를 추가한다.
위 경로로 url을 입력하면 192.168.98.134(bwapp)의 계정정보를 확인할 수 있다.
대응방안
1. webdav 서비스를 내린다.
2. webdav 인증제어를 설정한다.
- /etc/apache2/httpd.conf 파일을 수정하여 인증된 사용자만 접근을 한다.
dav 서비스가 on 되어있다. 해당 부분에 2번째 그림처럼 코드를 작성한다.
인증 타입은 basic -> 기본
인증 계정 , 인증 계정 파일 , 접근 가능한 유저 계정 을 설정한다.
파일을 저장한 후 계정 저장 파일을 생성한다.
htpasswd 명령어를 이용하여 해당경로에 song 계정을 만든다. -c 옵션을 이용한다.
/webdav 경로에 진입하여 위와 같이 계정을 인증해야 접근이 가능하다.
'웹 > 웹 해킹 문제 풀이' 카테고리의 다른 글
bwapp 실습 (Session Management - Administrative Portals)_medium (0) | 2023.02.23 |
---|---|
bwapp 실습 (Session Management - Administrative Portals)_low (0) | 2023.02.23 |
webhacking.kr 7번 문제풀이 (0) | 2023.02.07 |
webhacking.kr 5번 문제풀이 (0) | 2023.02.06 |
webhacking.kr 4번 문제풀이 (0) | 2023.02.02 |