(개정판) 웹 해킹 & 보안 완벽 가이드 [웹 애플리케이션 보안 취약점을 겨냥한 공격과 방어]
- 원서명The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws, 2nd Edition (ISBN 9781118026472)
- 지은이데피드 스터타드, 마커스 핀토
- 옮긴이김경곤, 장은경, 이현정
- ISBN : 9788960775961
- 50,000원
- 2014년 08월 29일 펴냄
- 페이퍼백 | 1,116쪽 | 188*250mm
- 시리즈 : 해킹과 보안
책 소개
저자 홈페이지: http://mdsec.net/wahh
요약
웹 해킹, 보안에 관심 있는 사람이라면 한 번쯤은 들어봤을 만한 버프 스위트(Burp Suite)를 개발한 데피드 스터타드가 집필한 『웹 해킹 & 보안 완벽 가이드』의 개정판이다. 이 책은 크게 세 부분으로 나뉘어, 현재 웹 애플리케이션의 현황과 전망을 설명하고, 실제 웹 애플리케이션에서 자주 발생하는 취약점에 대해 실례와 함께 저자의 노하우가 담긴 팁을 알려준다. 또한, 웹 애플리케이션을 공격하는 데 도움을 주는 도구나 자동화 기법, 기타 기술들과 함께, 앞에서 소개한 모든 내용을 취합하여 청사진을 그려서 해커의 공격 방법론을 체계적으로 정리한다.
이 책에서 다루는 내용
이 책은 웹 애플리케이션에 대한 보안 취약점을 찾고 공격하기 위한 실전 기술과 과정을 설명하는 가이드다. ‘웹 애플리케이션’이라는 것은 웹 서버와 서로 통신하기 위해 웹 브라우저를 이용해 접근할 수 있는 애플리케이션을 말한다. 이 책에서는 데이터베이스, 파일 시스템, 웹 서비스 같은 여러 기술을 포괄적으로 설명하고 있지만, 주로 웹 애플리케이션에 대한 부분을 중점적으로 다룬다. 포트 스캔에 대한 동작 원리나 방화벽을 공격하기 위한 방법이나 다른 방법으로 서버를 공격하고 싶다면 다른 책을 보는 편이 낫다. 반면 웹 애플리케이션을 공격하는 방법이나 웹 애플리케이션에서 민감한 데이터를 훔치거나 인증을 우회하는 방법을 배우고 싶다면 이 책이 많은 도움이 될 것이다. 이 책에는 다른 국가를 침범하지 않고도 흥미롭고 즐겁게 이야기할 수 있는 다양한 주제가 충분히 담겨 있다.
이 책의 대상 독자
이 책을 읽어야 하는 주요 독자는 웹 애플리케이션을 공격하는 방법에 전문적이거나 개인적인 관심이 높은 모든 사람이다. 또한 웹 애플리케이션을 개발하거나 관리하는 사람을 위한 책이기도 하다. 웹 애플리케이션 개발자나 관리자는 해커들이 공격하는 방법을 이해하고 익힘으로써 현재 개발하거나 관리 중인 웹 애플리케이션을 보호하는 방법을 배울 수 있다. 이 책은 독자가 최소한 로그인과 접근 통제 같은 중요한 보안 개념과 브라우저, 웹 서버, HTTP 등 기본적인 웹 기술을 알고 있다고 가정한다. 그러나 앞서 언급한 개념에 대한 지식이 많지 않아도 이 책에서 설명하는 개념과 참고 문헌을 통해 이 책의 내용을 충분히 이해할 수 있을 것이다. 웹 애플리케이션이 지닌 다양한 보안 결함을 설명하는 과정에서 애플리케이션의 취약점을 드러내는 원인을 짚어내는 코드도 제공한다. 이 책에서 보여주는 예제들은 독자들이 프로그래밍 언어에 많은 지식이 없어도 쉽게 이해할 수 있게 작성됐으며, 프로그래밍 코드를 작성하거나 분석한 경험이 많은 독자라면 여기에서 설명하는 샘플들은 더욱 더 유용하게 활용할 수 있을 것이다.
이 책의 구성
이 책은 웹 애플리케이션 해킹과 보안을 다루는 여러 주제를 포함하며, 각 장은 독립적인 내용을 담고 있다. 이 책을 읽는 독자가 웹 애플리케이션 해킹 초보자라면 처음부터 끝까지 차례대로 읽어보길 바란다. 이를 통해 전체적인 웹 애플리케이션 보안과 해킹에 대한 개념부터 세부적인 웹 애플리케이션 공격 기법에 대한 지식을 얻을 수 있을 것이다. 반면 웹 애플리케이션 해킹과 보안에 경험이 많다면 흥미로운 주제가 있는 장들만 골라서 읽어도 좋다. 각 장을 읽다가 이해하기 어려운 부분이 나오면 좀 더 이해하기 쉽게 다른 장을 참조할 수 있게 표시해 놓았다. 이 책의 앞부분은 현재 웹 애플리케이션 보안 현황과 가까운 미래에 웹 애플리케이션 보안이 어떻게 발전될지에 대한 동향을 설명하는 세 개의 장으로 시작한다. 저자들은 현재 웹 애플리케이션에 영향을 끼치는 핵심 보안 문제들과 애플리케이션이 이와 같은 보안 문제들을 해결하기 위해 조치를 취하고 있는 여러 가지 보안 메커니즘을 설명한다. 또한 최근 웹 애플리케이션에서 사용되는 핵심 기술에 대한 내용도 담고 있다. 중반부터는 핵심 주제인 웹 애플리케이션을 공격하는 데 사용하는 기술들을 설명한다. 웹 애플리케이션을 공격하기 위해 어떤 부분을 조사할 것이며, 핵심 방어 메커니즘을 공격하기 위해 어떤 기법을 사용해야 하는지, 웹 애플리케이션에 존재하는 다양한 보안 결함을 찾기 위해 사용되는 포괄적인 공격 기법과 공격 절차 등을 설명한다. 뒷부분은 이 책에서 소개한 다양한 기술적, 방법적 요소를 포함하는 세 개의 장으로 결론을 맺는다. 19장에서 21장까지는 애플리케이션의 소스코드에서 취약점을 찾는 과정과, 웹 애플리케이션을 해킹할 때 도움을 주는 도구를 소개하고, 웹 애플리케이션을 포괄적이고 상세하게 공격하기 위한 방법론을 자세히 설명한다.
개정판에서 달라진 부분
1장, ‘웹 애플리케이션 보안’에서는 웹 애플리케이션의 새로운 사용법과 일부 기술 동향, 전형적인 조직의 보안 경계선이 지속적으로 변경된 것을 반영해 부분적으로 업데이트했다.
2장, ‘핵심 방어 메커니즘’에서는 일부 영역이 변경됐다. 입력 값 검증 방어를 우회하는 일반 적인 기술을 추가하는 예를 더했다.
3장, ‘웹 애플리케이션 기술’에서는 초판에서 설명한 내용을 좀 더 구체적이고 상세히 설명 했고, 또한 일부 새로운 기술을 추가해 기존 3장을 확장했다. 개정판에서 추가된 주제는 REST, 루비온레일스(Ruby on Rails), SQL, XML, 웹 서비스, CSS, VB스크립트, DOM, Ajax, JSON, 동일 출처 정책(same-origin policy), HTML5다.
4장, ‘애플리케이션 지도 작성’에서는 콘텐츠와 기능을 매핑하는 기술을 발전시킨 것을 반영해 다양한 부분에서 일부 업데이트했다.
5장, ‘클라이언트 측 통제 우회’에서는 내용을 꽤 많이 추가했다. 특히 브라우저 확장 기술 영역은 바이트코드 디컴파일러와 디버깅에 대한 일반적인 접근 방식을 설명하는 부분을 더 상세화 했으며, 일반적인 포맷에 시리얼 데이터를 처리하는 방법, 작업한 내용을 난독화하는 방법, non-proxy-aware 클라이언트와 SSL 문제를 추가했다. 또한 실버라이트(Silverlight) 기술을 포함했다.
6장, ‘인증 무력화’에서는 초판과 달라진 부분이 거의 없으며, 아주 일부분만 업데이트했다.
7장, ‘세션 관리 공격’에서는 토큰에 대해 랜덤화하는 정도를 자동으로 테스트하는 새로운 도구를 추가했다. 또한 암호화 알고리즘이나 사용된 암호화 키 없이 토큰을 훔치는 실전 기술을 설명하며, 암호화된 토큰을 공격하는 새로운 방법을 추가했다.
8장, ‘접근 통제 공격’에서는 서버 측 메소드에 직접 접근하면서 발생하는 접근 통제 취약점 과 접근 통제에 사용되는 HTTP 메소드에 기반을 둔 규칙이지만 잘못 설정된 플랫폼에 대한 부분을 추가했다. 또한 접근 통제를 테스트할 때 유용하게 사용할 수 있는 부분적으로 자동화된 도구와 기술을 설명한다.
9장과 10장은 주제를 더 체계적이고 논리적으로 재구성했다.
9장, ‘데이터 저장소 공격’에서는 다른 데이터 저장 기술에 대해 SQL 인젝션과 유사한 공격에 초점을 맞췄다. SQL 인젝션 취약점이 매우 광범위하게 알려져 있기 때문에 여기서는 SQL 인젝션이 발생할 수 있는 실제 상황에 좀 더 중점을 맞춘다. 또한 현재 기술과 공격 방법도 새롭게 반영해 업데이트했다. SQL 인젝션 공격을 하기 위한 자동화 툴에 대한 설명도 포함했다. LDAP 인젝션 부분은 특정 기술(마이크로소프트 액티브 디렉토리와 OpenLDAP)과 일반적인 취약점을 공격하기 위한 새로운 기술을 좀 더 상세히 설명하기 위해 거의 새롭게 작성했다. 또한 NoSQL에 대한 공격 방법도 새로 추가했다.
10장, ‘백엔드 컴포넌트 공격’에서는 9장에 포함된 그 외의 다양한 서버 측 인젝션 취약점을 포함한다. XML 외부 객체 인젝션, 백엔드 HTTP 요청 인젝션, HTTP 변수 인젝션, URL 재생 스키마상의 인젝션 같은 새로운 부분을 추가했다.
11장, ‘애플리케이션 로직 공격’에서는 입력 값 검증 기능에서 발생하는 일반적인 논리적 결함에 대한 좀 더 많은 실제 예를 포함했다. 애플리케이션 데이터를 보호하기 위해 암호화하는 사례가 증가함에 따라 오라클 암호화를 식별하고 악용하는 방법과, 암호화된 데이터를 복호화하는 방법을 추가했다. 초판에서 다룬 ‘다른 사용자 공격하기’ 부분은 관리하기 어려울 정도로 방대한 양이었기 때문에 개정판에서는 2개의 장으로 나눴다.
12장, ‘사용자 공격: XSS’에서는 순수하게 크로스사이트 스크립팅(XSS) 공격에 초점을 맞췄으며, 기존에 비해 많은 부분을 추가했다. 스크립트 코드를 삽입하기 위해 필터링을 우회하는 기법은 새로운 기법과 기능을 포함하기 위해 전면적으로 수정했으며, 이 부분에는 현재 브라우저에 있는 실행 가능한 스크립트 코드를 조금만 알아도 다양한 공격을 할 수 있는 방법을 추가했다. 또한 일반적인 입력 값 필터를 우회하기 위한 코드 난독화 방법을 좀 더 상세하게 다뤘으며, 실제 크로스사이트 스크립트 공격 사례에 대한 새로운 예들을 추가했다. 크로스사이트 스크립트와 관련된 다양한 공격 중에서 XML 같은 응답 콘텐츠와 비표준 요청에 대한 크로스사이트 스크립트 공격, 쿠키와 Referer 헤더를 통한 크로스사이트 스크립트 공격 같은 애플리케이션을 통해 권한 상승 공격을 할 수 있는 다양한 방법을 포함했다. 브라우저에 내장된 크로스사이트 스크립트 필터의 상세 분석과 어떻게 이를 우회해서 공격할 수 있는지를 포함했다. 추가적으로 새롭게 작성된 부분은 웹 메일 애플리케이션과 파일을 업로드하는 부분에 어떻게 크로스사이트 스크립트 공격을 할 수 있는지에 대한 구체적인 기법을 다뤘다. 마지막으로 크로스사이트 스크립트 공격을 방어하는 데 사용되는 다양한 방어 대책 부분을 보완했다.
13장, ‘사용자 공격: 기타 기법’에서는 애플리케이션 사용자 공격에서 남아있는 수많은 기법들을 통합했다. 크로스사이트 요청 위조 공격은 로그인 기능에 대한 CSRF 공격, CSRF 방어를 해체할 수 있는 방법, UI 교정 공격, 프레임버스팅(framebusting) 방어에 대한 일반적인 취약점을 포함해 업데이트했다. 크로스도메인 데이터 수집에 대한 새로운 장은 HTML, CSS 같은 스크립트가 아닌 태그를 삽입해 데이터를 추출하는 기법과, 자바스크립트 E4X를 통해 크로스도메인 데이터 수집에 대한 기법을 다룬다. 새로운 장은 동일 출처 정책, HTML5를 통해 변경된 부분, 다양한 브라우저 확장 기술, 프록시 서비스 애플리케이션을 통한 크로스도메인 방법과 클라이언트 측 쿠키 인젝션, SQL 인젝션, HTTP 변수 오염 공격을 추가했다. 클라이언트 측 프라이버시 공격은 HTML5와 브라우저 확장 기술에서 제공하는 저장 메커니즘을 포함해 확장했다. 마지막으로 특정 애플리케이션에 존재하는 취약점에 종속되지 않은 웹 사용자를 공격하는 일반적인 공격 방법을 추가했다. 이 방법은 네트워크상에 적절히 위치한 공격자나 악성/변조된 웹사이트를 통해 전달되는 공격 방법을 다뤘다.
14장, ‘자동화 공격’에서는 자동화 방법을 방해하는 요소들을 어떻게 극복할 수 있는지에 대한 추가적인 내용을 담았다. 많은 애플리케이션은 세션 처리 메커니즘을 통해 자동화 공격을 막고 있다. 예를 들어 세션 종료, 수명이 짧은 안티CSRF 토큰사용, 애플리케이션 상태를 업데이트하기 위한 다단계 절차 등이 있다. 새로운 보안메커니즘을 우회해 자동화 테스트 기술을 사용할 수 있는 일부 새로운 도구들을 소개한다. 또한 캡차(CAPTCHA) 통제에 대한 내용을 소개하고 캡차 보안 기술을 무력화할 수 있는 일반적인 취약점도 소개한다.
15장, ‘정보 노출 공격’에서는 에러 메시지상에서 XSS 공격과 암호화된 오라클을 공격하는 방법을 새롭게 추가했다.
16장, ‘컴파일된 애플리케이션 공격’은 업데이트하지 않았다.
17장, ‘애플리케이션 아키텍처 공격’에서는 클라우드 기반 아키텍처에서 발생하는 취약점을 설명하고, 아키텍처 취약점을 공격하기 위한 예를 추가했다.
18장, ‘애플리케이션 서버 공격’에서는 제티(Jetty), JMX 관리 콘솔, ASP 닷넷, 애플iDisk 서버, 루비 웹브릭(WEBrick) 웹 서버, 자바 웹 서버 같은 애플리케이션 서버와 플랫폼에서 발생하는 흥미로운 취약점을 설명한다. 또한 웹 애플리케이션 방화벽을 우회하기 위한 실질적인 접근 방식을 소개한다.
19장, ‘소스코드 내의 취약점 발견’은 수정하지 않았다.
20장, ‘웹 애플리케이션 해커의 도구상자’에서는 프록시 기반 도구 모음의 최신 기능에 대해 상세한 설명을 추가했다. non-proxy-aware 클라이언트에 대한 트래픽을 어떻게 수집할지와 브라우저상에서 발생하는 SSL 에러를 제거하는 방법, 상호 작용하는 프록시를 사용할 때 발생하는 클라이언트상의 문제들에 대해 설명한다. 프록시 기반 도구를 사용해서 테스트할 때 일반적으로 적용되는 작업 단계들에 대해 상세히 설명한다. 또한 현재 사용되고 있는 웹 취약점 스캐너와 각기 다른 환경에서 웹 취약점 스캐너를 사용하기 위한 최적의 접근 방식을 알아본다.
21장, ‘웹 애플리케이션 해커의 공격 방법론’은 이 책에서 설명한 전반적인 내용을 포함하는 새로운 방법론을 반영해 수정했다.
목차
목차
- 01장 웹 애플리케이션 보안
- 웹 애플리케이션의 발전
- 일반적인 웹 애플리케이션 기능
- 웹 애플리케이션의 혜택
- 웹 애플리케이션 보안
- “이 사이트는 안전합니다.”
- 보안 문제의 핵심: 사용자가 임의의 입력 값을 제공할 수 있다
- 주요 문제점
- 새 보안 경계선
- 웹 애플리케이션 보안의 미래
- 웹 애플리케이션의 발전
- 정리
- 사용자 접근 처리
- 인증
- 세션 관리
- 접근 제어
- 사용자 입력 값 처리
- 다양한 입력 값
- 입력 값 조작에 대한 처리 방법
- 경계 검증
- 다단계 검증과 정규화
- 공격자 핸들링
- 에러 핸들링
- 감사 로그 관리
- 관리자에 경고
- 공격에 대해 반응
- 애플리케이션 관리
- 정리
- 확인문제
- HTTP 프로토콜
- HTTP 요청
- HTTP 응답
- HTTP 메소드
- URL
- REST
- HTTP 헤더
- 쿠키
- 상태 코드
- HTTPS
- HTTP 프록시
- HTTP 인증
- 웹 기능
- 서버 측 기능
- 클라이언트 측 기능
- 상태와 세션
- 인코딩 스키마
- URL 인코딩
- 유니코드 인코딩
- HTML 인코딩
- Base64 인코딩
- Hex 인코딩
- 프레임워크 원격화와 직렬화
- 정리
- 확인문제
- 콘텐츠와 기능 수집
- 웹 스파이더링
- User-Directed 스파이더링
- 숨겨진 콘텐츠의 발견
- 애플리케이션 페이지와 기능 경로
- 숨겨진 변수 발견
- 애플리케이션 분석
- 사용자 입력이 가능한 곳 확인
- 서버 측 기술 확인
- 서버 측 기능 확인
- 핵심 공격 취약 영역 매핑
- 정리
- 확인문제
- 클라이언트를 통한 데이터 전송
- 숨겨진 폼 필드
- HTTP 쿠키
- URL 매개변수
- Referer 헤더
- 변형된 데이터
- ASP 닷넷 ViewState
- 사용자 데이터의 획득: HTML 폼
- 길이 제한
- 스크립트 기반 검증
- 비활성화된 요소
- 사용자 데이터의 획득: 브라우저 확장
- 일반적인 브라우저 확장 기술
- 브라우저 확장에 대한 접근
- 브라우저 확장 트래픽 가로채기
- 브라우저 확장 디컴파일
- 디버거 붙이기
- 네이티브 클라이언트 컴포넌트
- 클라이언트 측 데이터의 안전한 처리
- 클라이언트를 통한 데이터 전송
- 클라이언트가 생성한 데이터 검증
- 로깅과 경고
- 정리
- 확인문제
- 인증 기술
- 인증 메커니즘에서 발견되는 설계상 결함
- 안전하지 않은 비밀번호
- 무차별 대입 공격이 가능한 로그인
- 불필요하게 상세한 로그인 실패 메시지
- 로그인 정보의 전송 취약성
- 비밀번호 변경 기능
- 비밀번호 복구 기능
- ‘내 정보 기억하기’의 처리
- 신분 전환 기능
- 사용자 신원의 불완전한 검증
- 고유하지 않은 사용자명 문제
- 예측 가능한 사용자명
- 추측 가능한 초기 비밀번호
- 사용자 신원 정보의 안전하지 않은 배포
- 사용자 인증 구현상의 결함
- 장애 우회를 내포한 로그인 메커니즘
- 다단계 로그인 메커니즘의 결함
- 사용자 신원 정보의 안전하지 않은 보관
- 안전한 인증
- 강력한 사용자 신원 정보 사용
- 사용자 신원 정보의 안전한 처리
- 적절한 신원 정보 검증
- 정보 유출 방지
- 무차별 대입 공격 차단
- 비밀번호 변경 기능의 악용 차단
- 계정 복구 기능 악용 차단
- 로그, 감시, 통지
- 정리
- 확인문제
- 상태에 대한 유지 필요
- 세션 대안
- 세션 토큰 생성 과정에서 발생하는 취약점
- 중요한 토큰
- 추측 가능한 토큰
- 암호화된 토큰
- 세션 토큰을 처리할 때 발생하는 취약점
- 네트워크상의 토큰 노출
- 로그에서 토큰 노출
- 세션에 취약한 토큰 매핑
- 세션 종료의 취약점
- 토큰 하이재킹에 대한 클라이언트 노출
- 개방적인 쿠키 범위
- 안전한 세션 관리
- 강력한 토큰 생성
- 토큰이 생성되고 나서 없어질 때까지 안전하게 보호
- 로그, 감시, 경고
- 정리
- 확인문제
- 일반적인 취약점
- 접근 통제 기능이 허술하게 돼 있는 경우
- 식별자 기반 기능
- 다단계 기능
- 정적 파일
- 잘못 설정된 플랫폼
- 안전하지 않은 접근 통제 방법
- 접근 통제 공격
- 다른 사용자 계정으로 테스트
- 다단계 프로세스 테스트
- 제한된 접근에 대한 테스트
- 메소드에 대한 직접 접근 테스트
- 정적 리소스에 대한 통제 테스트
- HTTP 메소드에 대한 제한 테스트
- 안전한 접근 통제
- 다중 계층 접근 통제 모델
- 정리
- 확인문제
- 인터프리터 언어 안에 공격 코드 삽입
- 로그인 우회
- SQL 내에 공격 코드 삽입
- 기본적인 취약점 공격
- 인젝션에 이용되는 다양한 구문
- SQL 인젝션 취약점 검색
- 데이터베이스에 대한 정보 수집
- UNION 연산자
- 유용한 데이터 추출
- UNION을 이용한 데이터 추출
- 필터 우회
- 2차 SQL 인젝션
- 발전된 공격
- SQL 인젝션을 넘어서: 데이터베이스 권한 상승 공격
- SQL 공격 도구 사용
- SQL 문법과 에러 참조
- SQL 인젝션 방어
- NoSQL에 인젝션
- MongoDB에 인젝션
- XPath에 인젝션
- 애플리케이션 로직 파괴
- 다양한 XPath 인젝션
- 블라인드 XPath 인젝션
- XPath 인젝션 취약점 검색
- XPath 인젝션의 방어
- LDAP에 인젝션
- LDAP 인젝션 공격
- LDAP 인젝션 취약점 검색
- LDAP 인젝션 방어
- 정리
- 확인문제
- 운영체제 명령 인젝션
- 예제 1: 펄을 통한 인젝션
- 예제 2: ASP를 통한 인젝션
- 동적 실행을 통한 인젝션
- 운영체제 명령 인젝션 취약점 검색
- 동적 실행 취약점의 발견
- 운영체제 명령 인젝션 공격의 방어
- 스크립트 인젝션 취약점의 방어
- 파일 경로 조작
- 경로 탐색 취약점
- 파일 포함 취약점
- XML 인터프리터 안으로 공격 코드 인젝션
- XML 외부 엔티티 코드 삽입
- SOAP 안으로 공격 코드 인젝션
- SOAP 인젝션 취약점의 검색과 공격
- SOAP 인젝션의 방어
- 백엔드 HTTP 요청에 공격 코드 인젝션
- 서버 측 HTTP 리다이렉션
- HTTP 매개변수 인젝션
- 메일 서비스를 통한 공격 코드 인젝션
- 이메일 헤더 조작
- SMTP 명령 인젝션
- SMTP 인젝션 취약점 찾기
- SMTP 인젝션의 방어
- 정리
- 확인문제
- 로직 결함의 특징
- 현실적으로 존재하는 로직 결함
- 예제 1: 오라클 요청
- 예제 2: 취약한 비밀번호 변경 함수
- 예제 3: 체크아웃 절차
- 예제 4: 보험 상품 위험성
- 예제 5: 은행 털기
- 예제 6: 사업 기능 제한 파괴
- 예제 7: 대량 구매 할인에의 결함
- 예제 8: 이스케이프 회피
- 예제 9: 입력 값 검증 우회
- 예제 10: 검색 기능 악용
- 예제 11: 디버그 메시지 착취
- 예제 12: 로그인 경쟁
- 논리적 결함 회피
- 정리
- 확인문제
- XSS의 다양성
- 반사된 XSS 취약점
- 저장된 XSS 취약점
- DOM 기반의 XSS 취약점
- XSS 공격
- 실세계 XSS 공격
- 크로스사이트 스크립팅 공격 페이로드
- 크로스사이트 스크립팅 공격 전달 메커니즘
- 크로스사이트 스크립팅 취약점 발견과 악용
- 반사된 크로스사이트 스크립팅 취약점 발견과 악용
- 저장된 XSS 취약점 발견과 공격
- DOM 기반의 XSS 취약점 발견과 악용
- 크로스사이트 스크립팅 공격 예방
- 반사된 XSS와 저장된 XSS 예방
- DOM 기반 크로스사이트 스크립팅 예방
- 정리
- 확인문제
- 사용자 행동 유도
- 요청 위조
- UI Redress
- 크로스도메인 데이터 수집
- HTML 인젝션으로 데이터 수집
- CSS 인젝션으로 데이터 수집
- 자바스크립트 하이재킹
- 동일 출처 정책의 재고
- 동일 출처 정책과 브라우저 확대
- 동일 출처 정책과 HTML5
- 프록시 서버 애플리케이션으로 도메인 교차
- 기타 클라이언트 측 주입 공격
- HTTP 헤더 인젝션
- 쿠키 인젝션
- 오픈 리다이렉션 취약점
- 클라이언트 측 SQL 인젝션
- 클라이언트 측 HTTP 매개변수 오염
- 로컬 프라이버시 공격
- 영구적 쿠키
- 캐시된 웹 콘텐츠
- 브라우저 기록
- 자동 완성 기능
- 플래시 로컬 공유 객체
- 실버라이트 독립 저장소
- 인터넷 익스플로러 userData
- HTML5 로컬 저장 메커니즘
- 로컬 프라이버시 공격 방어
- 액티브X 컨트롤 공격
- 액티브X 취약점 발견
- 액티브X 취약점 예방
- 브라우저 공격
- 키 스트로크 기록
- 기록과 검색 쿼리 훔치기
- 현재 사용된 애플리케이션 목록화
- 포트 스캔
- 기타 네트워크 호스트 공격
- Non-HTTP 서비스 공격
- 브라우저 취약점 악용
- DNS 리바인딩
- 브라우저 공격 프레임워크
- 중간자 공격
- 정리
- 확인문제
- 맞춤 자동화의 사용
- 유효한 식별자 수집
- 기본적인 접근 방법
- 히트 찾기
- 공격 스크립트
- JAttack
- 유용한 데이터 대량 수집
- 일반적인 취약점 퍼징
- 공격 종합: 버프 인트루더
- 페이로드 위치 설정
- 페이로드 선택
- 응답 분석 설정
- 공격 1: 식별자 수집
- 공격 2: 정보 수집
- 공격 3: 애플리케이션 퍼징
- 자동화의 장벽
- 세션 처리 메커니즘
- CAPTCHA 컨트롤
- 정리
- 확인문제
- 에러 메시지 공격
- 스크립트 에러 메시지
- 스택 추적
- 디버그 메시지 정보
- 서버와 데이터베이스 메시지
- 공개된 정보 이용
- 중요한 에러 메시지 엔지니어링
- 공개된 정보 수집
- 추론 이용
- 정보 노출 예방
- 일반적인 에러 메시지 사용
- 민감한 정보 보호
- 클라이언트 측의 정보 노출 최소화
- 정리
- 확인문제
- 버퍼 오버플로우 취약점
- 스택 오버플로우
- 힙 오버플로우
- ‘off-by-one’ 취약점
- 버퍼 오버플로우 취약점 탐색
- 정수 취약점
- 정수 오버플로우
- 부호 관련 문제
- 정수 취약점 탐지
- 형식 문자열 취약점
- 형식 문자열 취약점 탐지
- 정리
- 확인문제
- 계층적 아키텍처
- 다층 아키텍처 공격
- 계층화된 구조 보호
- 공유 호스팅과 애플리케이션 서비스 공급자
- 가상 호스팅
- 공유된 애플리케이션 서비스
- 공유된 환경 공격
- 공유된 환경 보호
- 정리
- 확인문제
- 웹 서버 설정 취약점
- 기본 계정
- 기본 콘텐츠
- 디렉터리 목록화
- WebDAV 메소드
- 프록시로서의 애플리케이션 서버
- 잘못 설정한 가상 호스팅
- 웹 서버 설정 보안
- 웹 서버 소프트웨어의 취약점
- 애플리케이션 프레임워크 취약점
- 메모리 관리 취약점
- 인코딩과 정형화 취약점
- 웹 서버 취약점 발견
- 웹 서버 소프트웨어 보안
- 웹 애플리케이션 방화벽
- 정리
- 확인문제
- 코드 검토에 대한 접근 방식
- 블랙박스와 화이트박스 테스트
- 코드 검토 방법론
- 일반적인 취약점 패턴
- 크로스사이트 스크립팅
- SQL 인젝션
- 경로 탐색
- 임의의 리다이렉션
- 운영체제 명령 인젝션
- 백도어 비밀번호
- 네이티브 소프트웨어 버그
- 소스코드 주석
- 자바 플랫폼
- 사용자가 제공한 데이터 확인
- 세션 상호 작용
- 잠재적으로 위험한 API
- 자바 환경설정
- ASP 닷넷
- 사용자가 제공한 데이터 확인
- 세션 상호 작용
- 잠재적으로 위험한 API
- ASP 닷넷 환경설정
- PHP
- 사용자가 제공한 데이터 확인
- 세션 상호 작용
- 잠재적으로 위험한 API
- PHP 환경설정
- 펄
- 사용자가 제공한 데이터 확인
- 세션 상호 작용
- 잠재적으로 위험한 API
- 펄 환경설정
- 자바스크립트
- 데이터베이스 코드 컴포넌트
- SQL 인젝션
- 위험한 함수 호출
- 코드 브라우징에 대한 도구
- 정리
- 확인문제
- 웹 브라우저
- 인터넷 익스플로러
- 파이어폭스
- 크롬
- 통합 테스트 도구
- 도구 작업 방법
- 테스팅 작업 흐름
- 인터셉팅 프록시의 대안
- 독립적 취약점 스캐너
- 스캐너에서 발견한 취약점
- 스캐너의 한계
- 스캐너가 직면할 기술적인 문제
- 현재 사용되는 웹 스캐너
- 취약점 스캐너 사용
- 기타 도구
- 윅토/닉토
- 파이어버그
- 히드라
- 맞춤형 스크립트
- 정리
- 일반적인 가이드라인
- 1. 애플리케이션 콘텐츠 맵 작성
- 1.1 화면상의 콘텐츠 검토
- 1.2 공개된 리소스 검색
- 1.3 숨은 콘텐츠 발견
- 1.4 기본 콘텐츠 발견
- 1.5 식별자 지정 함수 목록화
- 1.6 디버그 매개변수 검사
- 2. 애플리케이션 분석
- 2.1 기능 식별
- 2.2 데이터 입력 지점 검색
- 2.3 사용된 기술 식별
- 2.4 공격 취약 영역 맵 작성
- 3. 클라이언트 측 통제 검사
- 3.1 클라이언트에 의해 전달되는 데이터 검사
- 3.2 사용자 입력에 대한 클라이언트 측 통제 검사
- 3.3 브라우저 확장 컴포넌트 검사
- 4. 인증 메커니즘 검사
- 4.1 메커니즘 이해
- 4.2 비밀번호 강력도 검사
- 4.3 사용자명 목록화 검사
- 4.4 비밀번호 추측 공격 가능성 검사
- 4.5 계정 복구 기능 검사
- 4.6 자동 로그인 기능 검사
- 4.7 사용자 도용 기능 검사
- 4.8 사용자명 유일성 검사
- 4.9 자동 생성 자격 증명의 예측 가능성 검사
- 4.10 자격 증명의 안전 전달 검사
- 4.11 자격 증명의 안전 배포 검사
- 4.12 안전하지 않은 저장 검사
- 4.13 로직 결함 검사
- 4.14 다른 사용자의 권한을 얻기 위한 공격
- 5. 세션 관리 메커니즘 검사
- 5.1 메커니즘 이해
- 5.2 토큰의 의미 검사
- 5.3 토큰의 예측 가능성 검사
- 5.4 안전하지 않은 토큰 전송 검사
- 5.5 로그 내에 토큰 노출 검사
- 5.6 세션에 토큰 매핑 검사
- 5.7 세션 종료 검사
- 5.8 세션 고정 검사
- 5.9 XSRF 검사
- 5.10 쿠키 영역 검사
- 6. 접근 통제 검사
- 6.1 접근 통제 요구 이해
- 6.2 여러 계정으로 검사
- 6.3 제한된 접근으로 검사
- 6.4 안전하지 않은 접근 통제 방법 검사
- 7. 입력 기반 취약점 검사
- 7.1 모든 요청 매개변수 퍼징
- 7.2 SQL 인젝션 검사
- 7.3 XSS와 기타 응답 인젝션 검사
- 7.4 운영체제 명령 인젝션 검사
- 7.5 경로 탐색 검사
- 7.6 스크립트 인젝션 검사
- 7.7 파일 포함 검사
- 8. 특정 기능에 대한 입력 값 취약점 검사
- 8.1 SMTP 인젝션 검사
- 8.2 네이티브 소프트웨어 취약점 검사
- 8.4 LDAP 인젝션 검사
- 8.5 XPath 인젝션 검사
- 8.6 백엔드 요청 인젝션 검사
- 8.7 XXE 인젝션 검사
- 9. 로직 결함 검사
- 9.1 핵심 공격 취약 영역 식별
- 9.2 다단계 처리 검사
- 9.3 불완전한 입력 값 처리 검사
- 9.4. 신뢰 경계 구간 검사
- 9.5 처리 로직 검사
- 10. 공유된 호스팅 취약점 검사
- 10.1 공유된 환경에서 애플리케이션 분리 검사
- 10.2 ASP 호스팅된 애플리케이션 사이의 분리 검사
- 11. 웹 서버 취약점 검사
- 11.1 기본 자격 증명 검사
- 11.2 기본 콘텐츠 검사
- 11.3 위험한 HTTP 메소드 검사
- 11.4 프록시 기능 검사
- 11.5 가상 호스팅의 잘못된 설정 검사
- 11.6 웹 서버 소프트웨어 버그 검사
- 11.7 웹 애플리케이션 방화벽 검사
- 12. 기타 다양한 검사
- 12.1 DOM 기반 공격 검사
- 12.2. 로컬 프라이버시 취약점 검사
- 12.3 약한 SSL 암호 검사
- 12.4 동일 출처 정책 설정 검사
- 13. 정보 노출 추적
도서 오류 신고
정오표
정오표
[p. 362: 해킹 단계 10행]
추척 가능한 -> 추적 가능한