Steady Seller

(개정판) 웹 해킹 & 보안 완벽 가이드 [웹 애플리케이션 보안 취약점을 겨냥한 공격과 방어]

  • 원서명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
확인문제 해답 : https://media.wiley.com/product_ancillary/70/11180264/DOWNLOAD/WAHH2e-9781118175248.zip
요약

웹 해킹, 보안에 관심 있는 사람이라면 한 번쯤은 들어봤을 만한 버프 스위트(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장, ‘웹 애플리케이션 해커의 공격 방법론’은 이 책에서 설명한 전반적인 내용을 포함하는 새로운 방법론을 반영해 수정했다.

저자/역자 소개

저자 서문

이 책은 이론에 대해서만 설명하지 않고 높은 수준의 실제적인 내용을 중점으로 다룬다. 또한 웹 애플리케이션에 대한 취약점들을 이해할 수 있게 필요한 이론과 충분한 배경 지식을 설명하지만, 저자들이 원하는 주요 관심은 웹 애플리케이션에 침투하기 위해 익혀야 하는 실제 기술과 작업이다. 이 책을 통해 다양한 웹 애플리케이션 취약점을 찾기 위한 구체적인 과정과, 권한이 제한된 상태에서 이를 능가하는 권한을 얻을 수 있는 실제 공격 방법을 배울 수 있을 것이다. 또한 실세계의 다양한 예를 설명하고 저자들의 수년간 경험을 바탕으로 오늘날 웹 애플리케이션에 존재하는 여러 종류의 보안 결함들이 어떻게 발생하는지를 자세히 설명한다.

보안과 해킹은 보통 양날의 검으로 비유된다. 애플리케이션 개발자들은 공격자가 사용하는 기법들을 이해함으로써 애플리케이션을 개발할 때 보완해야 하는 점을 이해할 수 있고, 해커들은 애플리케이션이 효과적으로 방어하는 보안 방법을 알게 됨으로써 이를 이용해 다른 공격 방법을 찾을 수 있다. 이 책은 보안 취약점과 공격기술을 자세히 설명하고 있지만, 이와 같은 공격을 막기 위한 애플리케이션의 보안 대책도 설명한다. 이 책을 통해 웹 애플리케이션 침투 테스트를 수행하는 사람은 프로젝트의 애플리케이션 담당자에게 높은 수준의 개선 권고를 제공할 수 있는 지식을 쌓는 데 도움이 될 것이다.

저자 소개

데피드 스터타드(Dafydd Stuttard)

독립적인 보안 컨설턴트, 저술가, 소프트웨어 개발자다. 10년 넘게 보안 컨설턴트로 일하고 있으며, 컴파일 소프트웨어에 대한 취약점 연구와 웹 애플리케이션의 침투 테스트를 전문으로 한다. 금융권, 소매업체, 대기업을 대상으로 웹 애플리케이션의 보안을 향상시키기 위해 일하며, 제조업체나 정부기관에는 컴파일된 소프트웨어에 대한 보안을 향상시키기 위해 보안 컨설팅을 제공한다. 프로그래밍 언어에 능숙하고 보안과 관련된 소프트웨어 개발에 흥미가 많다. 블랙햇 보안 컨퍼런스에서 교육 과정을 개발하고 제공하며, ‘Port Swigger’에서 유명한 웹 애플리케이션 해킹 도구인 버프 스위트(Burp Suite)를 개발했다. 인터넷 보안 공격과 방어에 대한 컨설팅과 교육을 제공하는 MDSec의 공동 설립자다. 데피드는 전 세계에 걸친 다양한 보안 컨퍼런스에서 교육 프로그램을 보여주며, 정기적으로 기업과 정부에 교육, 훈련 코스를 제공한다. 옥스포드 대학교에서 석사와 박사 학위를 받았다.

마커스 핀토(Marcus Pinto)

인터넷 보안 공격과 방어에 대한 컨설팅과 교육을 제공하는 MDSec의 공동 설립자다. 금융권, 소매업체, 대기업을 대상으로 지속적으로 웹 애플리케이션 보안을 향상시키기 위해 보안 컨설팅을 제공한다. 11년 동안의 산업에 대한 컨설턴트와 실무자 관점을 고루 갖고 있으며, 이를 바탕으로 애플리케이션 보안의 기술적 측면에서 매우 심도 있는 지식과 경험을 쌓았다. 공격 기반의 보안 평가와 침투 테스트 전문가다. 금융 서비스 산업에 구현돼 있는 대규모 웹 애플리케이션에 대해서도 경험과 지식이 풍부하다. 2005년, 블랙햇 이후로 데이터베이스와 웹 애플리케이션 교육코스를 개발하고 훈련하며, 민간기관, 정부기관을 대상으로 교육한다. 캠브리지 대학교에서 물리학 석사 학위를 받았다.

옮긴이의 말

우리가 쉽게 접하는 수많은 웹사이트나 웹 애플리케이션이 악의적인 사용자에 의해 침해 당하고 있으며, 웹사이트에 있는 취약점을 통해 대량의 개인 정보가 유출되는 사고도 빈번히 발생하고 있다. 그리고 공격을 받은 웹 애플리케이션은 피싱이나 악성 프로그램의 유포지로 활용되는 등 2차적인 공격 용도로 사용되고 있다. 이제는 웹 애플리케이션 침해가 개인의 호기심을 넘어서 범국가적인 사이버 범죄에 활용되는 추세인 반면, 웹 애플리케이션에 대한 보안 대책은 체계적이지 못하고 중구난방 식으로 이뤄지고 있다. 그렇기 때문에 항상 웹 공격에 대한 위험성에 여전히 노출돼 있으며, 최근 발생한 대규모 개인정보 유출 사건처럼 큼직한 사건들이 발생하고 있는 것이 우리가 사용하는 인터넷의 현실이다.

실제 필드에서 일하는 저자들의 다양한 경험과 노하우를 담은 이 책은 지금까지 옮긴이가 접했던 웹 애플리케이션 해킹과 관련된 책 중에서 대표적인 바이블이라고 손꼽을 정도로 방대하고 자세한 내용을 담고 있다. 이 책은 체계적으로 크게 세 부분으로 나뉘어 1, 2, 3장은 현재 웹 애플리케이션의 현황과 앞으로의 전망에 대해 이야기하며, 4장부터 13장까지는 실제 웹 애플리케이션에 자주 발생하는 취약점에 대해 실례와 함께 저자의 노하우가 담긴 팁을 알려준다. 그리고 14장부터 20장까지는 웹 애플리케이션을 공격하기 위해 도움을 주는 툴이나 자동화 기법, 기타 기술들을 설명한다.

이 책을 번역하면서 가장 인상 깊었던 장은 21장, ‘해커의 공격 방법론’인데, 실제 앞에서 소개한 모든 장에 대해 청사진을 그려서 체계적으로 접근할 수 있게 한다. 이 책을 통해 보안 연구자나 취약점 분석가는 웹 애플리케이션에 존재하는 새로운 취약점을 발견하는 데 좋은 가이드가 될 수 있다. 실제 옮긴이의 후배 중 한 명은 이 책을 통해 국내에서 유명한 웹 보드의 신규 취약점을 찾아내고 애플리케이션 개발자에게 보안 권고문을 전달했다. 보안 관리자나 개발자, 그리고 웹 애플리케이션 설계자는 이 책을 통해 웹 애플리케이션의 보안 취약점을 이해하고 공격자의 공격 패턴을 파악해서 더욱 더 안전한 웹 애플리케이션을 설계하고 개발할 수 있을 것이라고 믿는다. 이 책을 합법적인 영역에서 활용해서 대한민국의 웹 애플리케이션이 더욱 안전한 세상이 되었으면 하는 바람이다.

옮긴이 소개

김경곤

현재 세계적인 글로벌 컨설팅 펌인 Deloitte에서 사이버 시큐리티(Cyber Security) 담당 매니저로 일하고 있으며, 주 업무는 사이버 시큐리티, 리스크 관리(Risk Management), 포렌식(Forensics)이다. 130여 개에 달하는 클라이언트를 대상으로 모의해킹과 보안 컨설팅을 진행했으며, 대기업과 금융업체, 학교 등에서 정보보안 관련 강의를 했다. 숭실대학교 컴퓨터학부를 졸업하고 고려대학교 정보보호대학원 석사를 수료했으며, A3 시큐리티 컨설팅 (Security Consulting)과 SK 인포섹에서 보안 컨설턴트로 일한 경험이 있다. 제1회 해킹방어대회에서 대상을 수상해 정보통신부 장관상을 수여했으며, 2007년도 세계 해킹 컨퍼런스인 데프콘에 아시아에서 유일하게 한국 팀 멤버로 참여하기도 했다. 그 외 EBS와 중앙일보에서 보안 컨설턴트에 대해 인터뷰를 하기도 했다. 저서로는 『정보보안 개론과 실습: 인터넷 해킹과 보안(개정판)』(2014)이 있다. 옮긴 책으로는 『와이어샤크를 활용한 실전 패킷 분석』(에이콘출판, 2007), 『웹 해킹 & 보안 완벽 가이드』(에이콘출판, 2008), 『윈도우 시스템 관리자를 위한 커맨드라인 활용 가이드』(에이콘출판, 2009), 『엔맵 네트워크 스캐닝』(에이콘출판, 2009)이 있다.

장은경

De La Salle University에서 영어교육학을 전공했으며, 2001년도에 개최한 제1회 여성해킹대회 본선에 진출하기도 했다. 국내 유수 보안 그룹에서 활약을 했으며, IT 분야에서 약 7년간의 경력을 쌓았다. 역서로 『웹 해킹 & 보안 완벽 가이드』(에이콘출판사, 2008), 『와이어샤크를 활용한 실전 패킷 분석』(에이콘출판사, 2007)이 있다.

이현정

서울여자대학교 컴퓨터공학과를 졸업하고, 성균관대학교 정보통신대학원에서 정보보호 석사를 졸업했다. A3 Security Consulting과 SK인포섹에서 금융권, 공공기관, 대기업 등 여러 기업을 대상으로 정보보호 컨설팅의 모의해킹 업무를 수행했으며, NCSoft 해외운영보안팀을 거쳐 현재 코스콤 정보보호센터(금융ISAC)에서 금융사 대상 취약점 점검 업무를 진행 중이다. CISA, ITIL, ISO27001 선임 심사원 자격증을 보유하고 있다. 역서로 『웹 해킹 & 보안 완벽 가이드』(에이콘출판사, 2008)가 있다.

목차

목차
  • 01장 웹 애플리케이션 보안
    • 웹 애플리케이션의 발전
      • 일반적인 웹 애플리케이션 기능
      • 웹 애플리케이션의 혜택
    • 웹 애플리케이션 보안
      • “이 사이트는 안전합니다.”
    • 보안 문제의 핵심: 사용자가 임의의 입력 값을 제공할 수 있다
    • 주요 문제점
    • 새 보안 경계선
    • 웹 애플리케이션 보안의 미래
  • 정리
  • 02장 핵심 방어 메커니즘
    • 사용자 접근 처리
      • 인증
      • 세션 관리
      • 접근 제어
    • 사용자 입력 값 처리
      • 다양한 입력 값
      • 입력 값 조작에 대한 처리 방법
      • 경계 검증
      • 다단계 검증과 정규화
    • 공격자 핸들링
      • 에러 핸들링
      • 감사 로그 관리
      • 관리자에 경고
      • 공격에 대해 반응
    • 애플리케이션 관리
    • 정리
    • 확인문제
  • 03장 웹 애플리케이션 기술
    • HTTP 프로토콜
      • HTTP 요청
      • HTTP 응답
      • HTTP 메소드
      • URL
      • REST
      • HTTP 헤더
      • 쿠키
      • 상태 코드
      • HTTPS
      • HTTP 프록시
      • HTTP 인증
    • 웹 기능
      • 서버 측 기능
      • 클라이언트 측 기능
      • 상태와 세션
    • 인코딩 스키마
      • URL 인코딩
      • 유니코드 인코딩
      • HTML 인코딩
      • Base64 인코딩
      • Hex 인코딩
      • 프레임워크 원격화와 직렬화
    • 정리
    • 확인문제
  • 04장 애플리케이션 지도 작성
    • 콘텐츠와 기능 수집
      • 웹 스파이더링
      • User-Directed 스파이더링
      • 숨겨진 콘텐츠의 발견
    • 애플리케이션 페이지와 기능 경로
      • 숨겨진 변수 발견
      • 애플리케이션 분석
      • 사용자 입력이 가능한 곳 확인
      • 서버 측 기술 확인
      • 서버 측 기능 확인
      • 핵심 공격 취약 영역 매핑
    • 정리
    • 확인문제
  • 05장 클라이언트 측 통제 우회
    • 클라이언트를 통한 데이터 전송
      • 숨겨진 폼 필드
      • HTTP 쿠키
      • URL 매개변수
      • Referer 헤더
      • 변형된 데이터
      • ASP 닷넷 ViewState
    • 사용자 데이터의 획득: HTML 폼
      • 길이 제한
      • 스크립트 기반 검증
      • 비활성화된 요소
    • 사용자 데이터의 획득: 브라우저 확장
      • 일반적인 브라우저 확장 기술
      • 브라우저 확장에 대한 접근
      • 브라우저 확장 트래픽 가로채기
      • 브라우저 확장 디컴파일
      • 디버거 붙이기
      • 네이티브 클라이언트 컴포넌트
    • 클라이언트 측 데이터의 안전한 처리
      • 클라이언트를 통한 데이터 전송
      • 클라이언트가 생성한 데이터 검증
      • 로깅과 경고
    • 정리
    • 확인문제
  • 06장 인증 무력화
    • 인증 기술
    • 인증 메커니즘에서 발견되는 설계상 결함
      • 안전하지 않은 비밀번호
      • 무차별 대입 공격이 가능한 로그인
      • 불필요하게 상세한 로그인 실패 메시지
      • 로그인 정보의 전송 취약성
      • 비밀번호 변경 기능
      • 비밀번호 복구 기능
      • ‘내 정보 기억하기’의 처리
      • 신분 전환 기능
      • 사용자 신원의 불완전한 검증
      • 고유하지 않은 사용자명 문제
      • 예측 가능한 사용자명
      • 추측 가능한 초기 비밀번호
      • 사용자 신원 정보의 안전하지 않은 배포
    • 사용자 인증 구현상의 결함
      • 장애 우회를 내포한 로그인 메커니즘
      • 다단계 로그인 메커니즘의 결함
      • 사용자 신원 정보의 안전하지 않은 보관
    • 안전한 인증
      • 강력한 사용자 신원 정보 사용
      • 사용자 신원 정보의 안전한 처리
      • 적절한 신원 정보 검증
      • 정보 유출 방지
      • 무차별 대입 공격 차단
      • 비밀번호 변경 기능의 악용 차단
      • 계정 복구 기능 악용 차단
      • 로그, 감시, 통지
    • 정리
    • 확인문제
  • 07장 세션 관리 공격
    • 상태에 대한 유지 필요
      • 세션 대안
      • 세션 토큰 생성 과정에서 발생하는 취약점
      • 중요한 토큰
      • 추측 가능한 토큰
      • 암호화된 토큰
    • 세션 토큰을 처리할 때 발생하는 취약점
      • 네트워크상의 토큰 노출
      • 로그에서 토큰 노출
      • 세션에 취약한 토큰 매핑
      • 세션 종료의 취약점
      • 토큰 하이재킹에 대한 클라이언트 노출
      • 개방적인 쿠키 범위
    • 안전한 세션 관리
      • 강력한 토큰 생성
      • 토큰이 생성되고 나서 없어질 때까지 안전하게 보호
      • 로그, 감시, 경고
    • 정리
    • 확인문제
  • 08장 접근 통제 공격
    • 일반적인 취약점
      • 접근 통제 기능이 허술하게 돼 있는 경우
      • 식별자 기반 기능
      • 다단계 기능
      • 정적 파일
      • 잘못 설정된 플랫폼
      • 안전하지 않은 접근 통제 방법
    • 접근 통제 공격
      • 다른 사용자 계정으로 테스트
      • 다단계 프로세스 테스트
      • 제한된 접근에 대한 테스트
      • 메소드에 대한 직접 접근 테스트
      • 정적 리소스에 대한 통제 테스트
      • HTTP 메소드에 대한 제한 테스트
    • 안전한 접근 통제
      • 다중 계층 접근 통제 모델
    • 정리
    • 확인문제
  • 09장 데이터 저장소 공격
    • 인터프리터 언어 안에 공격 코드 삽입
      • 로그인 우회
    • SQL 내에 공격 코드 삽입
      • 기본적인 취약점 공격
      • 인젝션에 이용되는 다양한 구문
      • SQL 인젝션 취약점 검색
      • 데이터베이스에 대한 정보 수집
      • UNION 연산자
      • 유용한 데이터 추출
      • UNION을 이용한 데이터 추출
      • 필터 우회
      • 2차 SQL 인젝션
      • 발전된 공격
      • SQL 인젝션을 넘어서: 데이터베이스 권한 상승 공격
      • SQL 공격 도구 사용
      • SQL 문법과 에러 참조
      • SQL 인젝션 방어
    • NoSQL에 인젝션
      • MongoDB에 인젝션
    • XPath에 인젝션
      • 애플리케이션 로직 파괴
      • 다양한 XPath 인젝션
      • 블라인드 XPath 인젝션
      • XPath 인젝션 취약점 검색
      • XPath 인젝션의 방어
    • LDAP에 인젝션
      • LDAP 인젝션 공격
      • LDAP 인젝션 취약점 검색
      • LDAP 인젝션 방어
    • 정리
    • 확인문제
  • 10장 백엔드 컴포넌트 공격
    • 운영체제 명령 인젝션
      • 예제 1: 펄을 통한 인젝션
      • 예제 2: ASP를 통한 인젝션
      • 동적 실행을 통한 인젝션
      • 운영체제 명령 인젝션 취약점 검색
      • 동적 실행 취약점의 발견
      • 운영체제 명령 인젝션 공격의 방어
      • 스크립트 인젝션 취약점의 방어
    • 파일 경로 조작
      • 경로 탐색 취약점
      • 파일 포함 취약점
    • XML 인터프리터 안으로 공격 코드 인젝션
      • XML 외부 엔티티 코드 삽입
      • SOAP 안으로 공격 코드 인젝션
      • SOAP 인젝션 취약점의 검색과 공격
      • SOAP 인젝션의 방어
    • 백엔드 HTTP 요청에 공격 코드 인젝션
      • 서버 측 HTTP 리다이렉션
      • HTTP 매개변수 인젝션
    • 메일 서비스를 통한 공격 코드 인젝션
      • 이메일 헤더 조작
      • SMTP 명령 인젝션
      • SMTP 인젝션 취약점 찾기
      • SMTP 인젝션의 방어
    • 정리
    • 확인문제
  • 11장 애플리케이션 로직 공격
    • 로직 결함의 특징
    • 현실적으로 존재하는 로직 결함
      • 예제 1: 오라클 요청
      • 예제 2: 취약한 비밀번호 변경 함수
      • 예제 3: 체크아웃 절차
      • 예제 4: 보험 상품 위험성
      • 예제 5: 은행 털기
      • 예제 6: 사업 기능 제한 파괴
      • 예제 7: 대량 구매 할인에의 결함
      • 예제 8: 이스케이프 회피
      • 예제 9: 입력 값 검증 우회
      • 예제 10: 검색 기능 악용
      • 예제 11: 디버그 메시지 착취
      • 예제 12: 로그인 경쟁
    • 논리적 결함 회피
    • 정리
    • 확인문제
  • 12장 사용자 공격: XSS
    • XSS의 다양성
      • 반사된 XSS 취약점
      • 저장된 XSS 취약점
      • DOM 기반의 XSS 취약점
    • XSS 공격
      • 실세계 XSS 공격
      • 크로스사이트 스크립팅 공격 페이로드
      • 크로스사이트 스크립팅 공격 전달 메커니즘
    • 크로스사이트 스크립팅 취약점 발견과 악용
      • 반사된 크로스사이트 스크립팅 취약점 발견과 악용
      • 저장된 XSS 취약점 발견과 공격
      • DOM 기반의 XSS 취약점 발견과 악용
    • 크로스사이트 스크립팅 공격 예방
      • 반사된 XSS와 저장된 XSS 예방
      • DOM 기반 크로스사이트 스크립팅 예방
    • 정리
    • 확인문제
  • 13장 사용자 공격: 기타 기법
    • 사용자 행동 유도
      • 요청 위조
      • UI Redress
    • 크로스도메인 데이터 수집
      • HTML 인젝션으로 데이터 수집
      • CSS 인젝션으로 데이터 수집
      • 자바스크립트 하이재킹
    • 동일 출처 정책의 재고
      • 동일 출처 정책과 브라우저 확대
      • 동일 출처 정책과 HTML5
      • 프록시 서버 애플리케이션으로 도메인 교차
    • 기타 클라이언트 측 주입 공격
      • HTTP 헤더 인젝션
      • 쿠키 인젝션
      • 오픈 리다이렉션 취약점
      • 클라이언트 측 SQL 인젝션
      • 클라이언트 측 HTTP 매개변수 오염
    • 로컬 프라이버시 공격
      • 영구적 쿠키
      • 캐시된 웹 콘텐츠
      • 브라우저 기록
      • 자동 완성 기능
      • 플래시 로컬 공유 객체
      • 실버라이트 독립 저장소
      • 인터넷 익스플로러 userData
      • HTML5 로컬 저장 메커니즘
      • 로컬 프라이버시 공격 방어
    • 액티브X 컨트롤 공격
      • 액티브X 취약점 발견
      • 액티브X 취약점 예방
    • 브라우저 공격
      • 키 스트로크 기록
      • 기록과 검색 쿼리 훔치기
      • 현재 사용된 애플리케이션 목록화
      • 포트 스캔
      • 기타 네트워크 호스트 공격
      • Non-HTTP 서비스 공격
      • 브라우저 취약점 악용
      • DNS 리바인딩
      • 브라우저 공격 프레임워크
      • 중간자 공격
    • 정리
    • 확인문제
  • 14장 맞춤 공격 자동화
    • 맞춤 자동화의 사용
    • 유효한 식별자 수집
      • 기본적인 접근 방법
      • 히트 찾기
      • 공격 스크립트
    • JAttack
    • 유용한 데이터 대량 수집
    • 일반적인 취약점 퍼징
    • 공격 종합: 버프 인트루더
      • 페이로드 위치 설정
      • 페이로드 선택
      • 응답 분석 설정
      • 공격 1: 식별자 수집
      • 공격 2: 정보 수집
      • 공격 3: 애플리케이션 퍼징
    • 자동화의 장벽
      • 세션 처리 메커니즘
      • CAPTCHA 컨트롤
    • 정리
    • 확인문제
  • 15장 정보 노출 공격
    • 에러 메시지 공격
      • 스크립트 에러 메시지
      • 스택 추적
      • 디버그 메시지 정보
      • 서버와 데이터베이스 메시지
      • 공개된 정보 이용
      • 중요한 에러 메시지 엔지니어링
    • 공개된 정보 수집
    • 추론 이용
    • 정보 노출 예방
      • 일반적인 에러 메시지 사용
      • 민감한 정보 보호
      • 클라이언트 측의 정보 노출 최소화
    • 정리
    • 확인문제
  • 16장 컴파일된 애플리케이션 공격
    • 버퍼 오버플로우 취약점
      • 스택 오버플로우
      • 힙 오버플로우
      • ‘off-by-one’ 취약점
      • 버퍼 오버플로우 취약점 탐색
    • 정수 취약점
      • 정수 오버플로우
      • 부호 관련 문제
      • 정수 취약점 탐지
    • 형식 문자열 취약점
      • 형식 문자열 취약점 탐지
    • 정리
    • 확인문제
  • 17장 애플리케이션 아키텍처 공격
    • 계층적 아키텍처
      • 다층 아키텍처 공격
      • 계층화된 구조 보호
    • 공유 호스팅과 애플리케이션 서비스 공급자
      • 가상 호스팅
      • 공유된 애플리케이션 서비스
      • 공유된 환경 공격
      • 공유된 환경 보호
    • 정리
    • 확인문제
  • 18장 애플리케이션 서버 공격
    • 웹 서버 설정 취약점
      • 기본 계정
      • 기본 콘텐츠
      • 디렉터리 목록화
      • WebDAV 메소드
      • 프록시로서의 애플리케이션 서버
      • 잘못 설정한 가상 호스팅
      • 웹 서버 설정 보안
    • 웹 서버 소프트웨어의 취약점
      • 애플리케이션 프레임워크 취약점
      • 메모리 관리 취약점
      • 인코딩과 정형화 취약점
      • 웹 서버 취약점 발견
      • 웹 서버 소프트웨어 보안
    • 웹 애플리케이션 방화벽
    • 정리
    • 확인문제
  • 19장 소스코드 내의 취약점 발견
    • 코드 검토에 대한 접근 방식
      • 블랙박스와 화이트박스 테스트
      • 코드 검토 방법론
    • 일반적인 취약점 패턴
      • 크로스사이트 스크립팅
      • SQL 인젝션
      • 경로 탐색
      • 임의의 리다이렉션
      • 운영체제 명령 인젝션
      • 백도어 비밀번호
      • 네이티브 소프트웨어 버그
      • 소스코드 주석
    • 자바 플랫폼
      • 사용자가 제공한 데이터 확인
      • 세션 상호 작용
      • 잠재적으로 위험한 API
      • 자바 환경설정
    • ASP 닷넷
      • 사용자가 제공한 데이터 확인
      • 세션 상호 작용
      • 잠재적으로 위험한 API
      • ASP 닷넷 환경설정
    • PHP
      • 사용자가 제공한 데이터 확인
      • 세션 상호 작용
      • 잠재적으로 위험한 API
      • PHP 환경설정
      • 사용자가 제공한 데이터 확인
      • 세션 상호 작용
      • 잠재적으로 위험한 API
      • 펄 환경설정
    • 자바스크립트
    • 데이터베이스 코드 컴포넌트
      • SQL 인젝션
      • 위험한 함수 호출
    • 코드 브라우징에 대한 도구
    • 정리
    • 확인문제
  • 20장 웹 애플리케이션 해커의 도구상자
    • 웹 브라우저
      • 인터넷 익스플로러
      • 파이어폭스
      • 크롬
    • 통합 테스트 도구
      • 도구 작업 방법
      • 테스팅 작업 흐름
      • 인터셉팅 프록시의 대안
    • 독립적 취약점 스캐너
      • 스캐너에서 발견한 취약점
      • 스캐너의 한계
      • 스캐너가 직면할 기술적인 문제
      • 현재 사용되는 웹 스캐너
    • 취약점 스캐너 사용
      • 기타 도구
      • 윅토/닉토
      • 파이어버그
      • 히드라
      • 맞춤형 스크립트
    • 정리
  • 21장 웹 애플리케이션 해커의 공격 방법론
    • 일반적인 가이드라인
    • 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.100 아래에서 3행 : '몇일'동안 -> 며칠동안

    정오표

    정오표

    [p. 362: 해킹 단계 10행]
    추척 가능한 -> 추적 가능한