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






Kali Linux 2024.2 설치 (VMware Fusion, Apple Silicon)

웹 해킹 훈련장 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)

<< 목록숨기기
#IP보안 #세션ID-IP주소 연동 #Session ID #세션ID #세션탈취 #Session Hijacking

세션 쿠키와 IP보안

세션 탈취에는 주로 크로스사이트스크립트(XSS) 취약점이 사용된다. 이외에도 표적 시스템의 근처에 침투하여 네트워크 감청을 통해 세션ID를 탈취하기도 한다. XSS에 의한 세션탈취는 HttpOnly 선언으로 일부 방지가 가능하다. TRACE 메소드에 의한 XST(Cross-site Tracing) 공격도 살펴본 바 있다. HTTP 통신에 SSL(Secure Socket Layer)을 적용함으로써 네트워크 감청을 대부분 차단할 수 있다. (SSL에 대한 세션탈취 기법으로 SSL Strip이라는 중간자 공격이 존재한다.)

세션이 탈취될 수 있다는 가정하에서 도입된 방어개념이 "세션+IP주소 연동"이다. 일반적으로 "IP보안"이라고 한다. 이 개념에서는 서버에 세션 데이터를 생성할 때 웹 브라우저의 공인 IP주소를 기록하여 이후의 접속에서 지속적으로 접속한 IP주소가 동일한 지를 검토한다. 세션 데이터에 기록되지 않은 IP주소로 접속했을 때는 세션을 거부하는 방식으로 세션 탈취를 방어한다. 다음 그림들은 네이버다음에 IP보안이 적용된 것을 보여준다.

네이버 대문 화면갈무리
[ Naver 누리집: 로그인 오른쪽에 "IP보안" 설정이 보인다. ]

네이버 IP보안 도움말
[ 네이버 IP보안 도움말]

네이버에서는 3단계로 IP보안을 지원한다. 1단계에서는 동일한 C클래스 대역에서 이전에 로그인한 세션으로 접속하는 것을 허용한다. 2단계에서는 최근 로그인한 IP주소들과 동일하면 허용한다. 3단계에서는 이전 IP주소와 동일할 때만 허용한다. 설정된 단계의 조건에 맞지 않으면 세션이 무효화되며 다시 로그인해야 한다. 네이버의 기본 설정은 1단계이다.

다음 대문 화면갈무리
[ 다음 누리집: 로그인 윗쪽에 "IP보안" 설정이 보인다. ]

다음 IP보안 도움말
[ 다음 IP보안 도움말 ]

다음에서는 2단계로 IP보안을 지원한다. 1단계에서는 동일한 C클래스 대역에서 이전에 로그인한 세션으로 접속하는 것을 허용한다. 2단계에서는 이전 IP주소와 동일할 때만 허용한다. 설정된 단계의 조건에 맞지 않으면 세션이 무효화되며 다시 로그인해야 한다. 다음의 기본 설정은 1단계이다.

IP보안의 단점

TCP/IP에서 IP주소를 변조하기는 매우 어렵기 때문에 IP보안은 세션탈취에 대한 강력한 보안방법이다. 하지만 현대의 인터넷 환경에서는 여러가지 단점도 가진다. 가장 강력한 직전 접속 IP주소로 IP보안을 하는 경우에 발생할 수 있는 단점을 알아보자.

  • 불편하다. 노트북 사용자가 여기저기 이동하게 되면 - 이미 로그인한 상태임에도 불구하고 - 새로운 장소에서 접속할 때마다 로그인을 새로 해야 한다.
  • 이동형 환경에 적용할 수 없다. 휴대전화와 같이 이동시에 수시로 IP주소가 변경되는 상황에서는 IP보안 적용이 현실적으로 불가능하다. 때문에 네이버나 다음에서도 PC환경에서는 IP보안을 기본으로 하지만 휴대전화에서는 - 실제로는 모바일 페이지에서느 - IP보안을 지원하지 않는다.
  • NAT(Network Address Translation) 환경에서는 같은 환경내의 모든 사람이 동일한 공인IP주소를 가진다. 음식점이나 커피숍의 WIFI와 같이 네트워크 감청이 쉬운 환경에서는 IP보안이 작동하지 않는다. 또한, 요즘 기업은 사설IP주소를 많이 쓰기 때문에 IP보안이 설정되더라도 내부PC에 의한 공격은 막을 수 없다.
  • 프록시(Proxy) 환경에서는 NAT 환경처럼 동일한 IP주소를 가지게 되어 유사한 상황이 발생한다.

보안은 사용자를 불편하지 않게 해야 한다. 사용자는 어떤 보안기능이 있는 지 모르는 것이 가장 이상적인 보안이다. 그런데 IP보안은 사용자에게 "이전에 접속한 IP주소와 다른 IP로 접속하여 새로 로그인 하셔야 합니다!"라는 - 이미 정상적으로 로그인한 사용자 입장에서는 - 황당한 경고를 보낸다. IP보안이 세션탈취를 막는 강력한 보안수단이긴 하지만 사용자에게 불편함을 준다는 점에서 좋은 보안수단이라고 보기는 어렵다.

간락하게 보는 IP보안의 개념

- 사용자가 로그인에 성공하면 웹서버는 세션 데이타에 사용자가 로그인한 공인 IP주소를 기록한다.

<?php
	...
	$_SESSION['user_id'] = $_POST['id'];
	$_SESSION['ip_addr'] = $_SERVER['REMOTE_ADDR'];
	...
?>

- 로그인한 사용자가 웹서버에 접속하면 항상 세션의 IP주소와 사용자의 공인IP주소를 비교한다. IP주소가 다르면 서버의 세션 데이타를 파기하고 웹 어플리케이션 실행을 종료한다.

<?php
	...
	if ($_SESSION['ip_addr'] != $_SERVER['REMOTE_ADDR']) {
		destroy_session();
		exit();
	}
	...
?>

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


> 이 글을 목록없이 인쇄하기 편하게 보기

< 이전 글 : 모든 꼬리표 모아보기(태그 클라우드) (2016.11.11)

> 다음 글 : HTTP TRACE method와 XST 공격 (2016.11.11)


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