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






>> 목록보이기
#WH-COOKIE-01 #PHP 웹쉘 #HTML 삽입 #크로스사이트스크립트 #웹쉘생성 #홈페이지 위변조 #website defacement #웹취약성 분석보고서

WH-COOKIE-01 웹해킹훈련장 취약점분석 보고서

취약점분석 요약

WH-COOKIE-01 훈련장은 PHP 웹쉘을 생성할 수 있는 취약점이 존재하여 웹을 통해 시스템 침투가 가능한 상황이며 저장형 XSS 공격으로 홈페이지를 위변조하여 서비스거부공격이 가능

시스템 장악 위험성 존재

  • (13) 파일업로드 취약점 [위험도 상]
    이미지 업로드 과정에서 PHP 웹쉘을 생성할 수 있는 취약점이 가 존재하며, 악의적인 공격자가 HTTP를 통하여 외부에서 시스템 침투가 가능한 상황이므로 이미지 업로드 PHP의 수정이 긴급함
  • (6) 크로스사이트스크립트(XSS) 취약점 [위험도 상]
    이미지 설명(간단한 붙임말)과 원본 파일 이름에 JavaScript를 삽입할 수 있어서 홈페이지 위변조(defacement)를 통해 서비스거부공격(DoS, Denial of Service)이 가능함

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

  • (22) 취약한 서버 설정 취약점 (권고사항) [위험도 하]
    HTTP 헤더에서 PHP 버전 정보 노출: X-Powered-By: PHP/5.2.17

취약점 상세 설명

(1) 운영체제 명령 실행

   - 탐지사항 없음

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(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)

[탐지사항]

  • 간단한 붙임말이미지 파일 이름이 <img> 엘리먼트의 속성으로 출력됨
  • 간단한 붙임말은 부등호(<, >)를 &lt;, &gt;로 치환하여 HTML 삽입을 방어하고 있으나 img 엘리먼트의 내부에 출력되므로 이 방어기작 우회가 가능한 상황임
  • 이미지 파일 이름에 대한 방어기작은 없으나 파일이름이라는 특수한 조건때문에 완전한 자바스크립트 입력이 어려우나 부분적으로 서비스거부공격을 수행할 수 있음
  • 공격자의 자바스크립트가 서버에 저장되어 지속적으로 공격이 가능한 "저장형 XSS" 공격이 가능하며, 위변조뿐만 아니라 악성코드 배포에 악용할 수도 있음

[취약점 경로]

  • http://192.168.189.238/
  • http://192.168.189.238/upload.php

[취약점 증빙 자료]

WH-COOKIE-01: comment에 onload를 이용한 자바스크립트 입력
[ 간단한 붙임말에 onLoad를 이용하여 자바스크립트 삽입 시도 ]

WH-COOKIE-01: document.body.innerHTML defacement
[ 마지막에 업로드한 이미지 출력 후에(onLoad) 자바스크립트가 출력되어 홈페이지 변조 ]

WH-COOKIE-01:
[ HTML 소스에서 확인할 수 있는 홈페이지 위변조를 유발한 JavaScript 코드 ]

[취약점 조치방안]

  • 간단한 붙임말이미지 파일 이름을 HTML에서 출력하기 전에 htmlentities 함수를 적용하여 출력하여야 함
  • 이미지 파일 이름을 정보파일에 저장할 때도 htmlentities 함수를 적용하여야 함

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(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) 파일 업로드

[탐지사항]

  • upload.php에서 정보파일을 만들 때 infofile 쿠키의 값을 사용하기 때문에 이를 조작하여 php 확장자 파일을 만들 수 있으며 이미지 파일이름에 PHP 코드를 포함시켜서 공격자가 원하는 PHP 코드를 실행할 수 있음

[취약점 경로]

  • http://192.168.189.238/upload.php

[취약점 증빙 자료]

WH-COOKIE-01 훈련장에 쿠키조작 및 PHP 코드 파일이름의 이미지 업로드
[ WH-COOKIE-01 훈련장에 쿠키조작 후에 PHP 코드 파일이름의 이미지 업로드 ]

root@kali:~# curl http://192.168.189.238/imginfo/cmd.php --data "cmd=ls -als"
images/cmd.php.jpg:1480167216:400x547:148330:<pre>total 44
   0 drwxrwxrwx    2 www      www            260 Nov 26 13:41 .
   0 drwxr-xr-x    4 tux      tux            160 Nov 23 06:59 ..
   4 -rw-r--r--    1 www      www             92 Apr 29  2015 14302711480.68639500.txt
   4 -rw-r--r--    1 www      www            121 Apr 29  2015 14302715260.34919600.txt
   4 -rw-r--r--    1 www      www             90 Apr 29  2015 14302716850.67138300.txt
   4 -rw-r--r--    1 www      www            108 Apr 29  2015 14302809200.37569100.txt
   4 -rw-r--r--    1 www      www            102 Nov 23 03:23 14798713610.77972700.txt
   4 -rw-r--r--    1 www      www            121 Nov 23 05:08 14798714230.66950400.txt
   4 -rw-r--r--    1 www      www            120 Nov 23 05:12 14798778030.18648700.txt
   4 -rw-r--r--    1 www      www            109 Nov 23 05:15 14798779450.92621600.txt
   4 -rw-r--r--    1 www      www             87 Nov 26 12:46 14801643120.07442400.txt
   4 -rw-r--r--    1 www      www            128 Nov 26 13:41 14801672160.69267700.txt
   4 -rw-r--r--    1 www      www            111 Nov 26 13:33 cmd.php
.jpg:PHP code as image nameroot@kali:~#

[ "imginfo/" 디렉토리에 생성된 cmd.php 파일 확인 ]

WH-COOKIE-01 훈련장에서 PHP 웹쉘 실행
[ 정보파일 이름을 조작하여 생성한 웹쉘을 실행하여 시스템 정보 파악 ]

[취약점 조치방안]

  • 서버에서 생성하는 파일에 대한 정보를 웹브라우저로 전송하는 것을 차단하도록 PHP 소스 수정
  • infofile 쿠키를 제거하고 이미지 정보파일은 서버에서 내부적으로 생성하여 사용자의 개입 가능성을 차단하여야 함

[참고자료]

  • “정보시스템 개발‧운영자를 위한 홈페이지 취약점 진단‧제거 가이드”, 한국인터넷진흥원(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.189.221/css/
  • http://192.168.189.221/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.189.221 (위험도 하)

[취약점 증빙 자료]

root@kali:~# curl -v -X TRACE http://192.168.189.221 --header "Fake: this should not be reflected"
* Rebuilt URL to: http://192.168.189.221/
*   Trying 192.168.189.221...
* Connected to 192.168.189.221 (192.168.189.221) port 80 (#0)
> TRACE / HTTP/1.1
> Host: 192.168.189.221
> 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.189.221
User-Agent: curl/7.49.1
Accept: */*
Fake: this should not be reflected

* Connection #0 to host 192.168.189.221 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) 취약한 서버 설정 (권고사항)

[탐지사항]

  • HTTP 헤더에서 PHP 버전 정보를 노출하여 추가 공격에 도움을 줄 소지가 있음
    - X-Powered-By: PHP/5.2.17 (위험도 하)

[취약점 경로]

  • curl -I http://192.168.189.238 (X-Powered-By: 헤더에서 PHP 버전 노출, 위험도 하)

[취약점 증빙 자료]

root@kali:~# curl -I 192.168.189.238
HTTP/1.1 200 OK
Date: Sat, 26 Nov 2016 12:56:11 GMT
Server: Apache
X-Frame-Options: DENY
X-XSS-Protection: 1
X-Content-Type-Options: nosniff
X-Powered-By: PHP/5.2.17
Set-Cookie: infofile=imginfo%2F14801649710.55177400.txt
Content-Type: text/html
X-Pad: avoid browser bug
root@kali:~# 

[ X-Powered-By 헤더에서 PHP 버전 노출 ]

[취약점 조치방안]

  • Server 헤더 간소화: /etc/apache/httpd.conf 파일의 끝에 "Header unset X-Powered-By" 한줄을 추가하고 Apache 웹서버를 재구동한다(apachectl restart).

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


< 이전 글 : WH-COOKIE-01: 잘못된 쿠키 사용 사례를 보여주는 웹해킹훈련장 (2016.11.24)

> 다음 글 : 웹해킹 공격/방어 일람 (2016.11.21)


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