목차
한국어판 서문 ... 5
저자 소개 ... 6
감사의 글 ... 7
옮긴이의 말 ... 8
옮긴이 소개 ... 10
들어가며 ... 34
01장 웹 애플리케이션 보안 ... 43
   웹 애플리케이션의 발전 ... 43
      일반적인 웹 애플리케이션 기능 ... 45
      웹 애플리케이션의 혜택 ... 46
   웹 애플리케이션 보안 ... 47
      "이 사이트는 안전합니다." ... 48
      보안 문제의 핵심: 사용자가 임의의 입력 값을 제공할 수 있다 ... 50
      주요 문제점 ... 52
      새 보안 경계선 ... 54
      웹 애플리케이션 보안의 미래 ... 55
   정리 ... 56
02장 핵심 방어 메커니즘 ... 57
   사용자 접근 처리 ... 55
      인증 ... 58
      세션 관리 ... 59
      접근 제어 ... 60
   사용자 입력 값 처리 ... 61
      다양한 입력 값 ... 62
      입력 값 조작에 대한 처리 방법 ... 63
      경계 검증 ... 65
      다단계 검증과 정규화 ... 68
   공격자 핸들링 ... 70
      에러 핸들링 ... 70
      감사 로그 관리 ... 71
      관리자에 경고 ... 73
      공격으로부터의 방어 ... 74
   애플리케이션 관리 ... 75
   정리 ... 76
   확인문제 ... 77
03장 웹 애플리케이션 기술 ... 79
   HTTP 프로토콜 ... 79
      HTTP 요청 ... 80
      HTTP 응답 ... 81
      HTTP 메소드 ... 82
      URL ... 84
      HTTP 헤더 ... 85
      쿠키 ... 87
      상태 코드 ... 88
      HTTPS ... 90
      HTTP 프록시 ... 90
      HTTP 인증 ... 91
   웹 기능 ... 92
      서버 측 기능 ... 92
      클라이언트 측 기능 ... 96
      상태와 세션 ... 100
   인코딩 스키마 ... 101
      URL 인코딩 ... 101
      유니코드 인코딩 ... 102
      HTML 인코딩 ... 103
      Base64 인코딩 ... 104
      Hex 인코딩 ... 104
   정리 ... 105
   확인문제 ... 105
04장 애플리케이션 지도 작성 ... 107
   컨텐츠와 기능 수집 ... 107
      웹 스파이더링 ... 108
      User-Directed 스파이더링 ... 111
      숨겨진 컨텐츠의 발견 ... 113
      애플리케이션 페이지와 기능 경로 ... 124
      숨겨진 변수의 발견 ... 126
   애플리케이션의 분석 ... 127
      사용자 입력이 가능한 곳 확인 ... 128
      서버 측 기술 확인 ... 130
      서버 측 기능 확인 ... 136
      핵심 공격 취약 영역 매핑 ... 140
   정리 ... 141
   확인문제 ... 142
05장 클라이언트 측 통제 우회 ... 145
   클라이언트를 통한 데이터 전송 ... 145
      숨겨진 폼 필드 ... 146
      HTTP 쿠키 ... 149
      URL 매개변수 ... 150
      리퍼러 헤더 ... 151
      변형된 데이터 ... 152
      ASP.NET ViewState ... 153
   사용자 데이터의 획득: HTML 폼 ... 158
      길이 제한 ... 158
      스크립트 기반 검증 ... 160
      비활성화된 요소 ... 162
   사용자 데이터의 획득: 씩 클라이언트 컴포넌트 ... 164
      자바 애플릿 ... 164
      액티브X 컨트롤 ... 173
      쇽웨이브 플래시 객체 ... 179
   클라이언트 측 데이터의 안전한 처리 ... 184
      클라이언트를 통한 데이터 전송 ... 184
      클라이언트가 생성한 데이터 검증 ... 185
      로깅과 경고 ... 186
   정리 ... 187
   확인문제 ... 187
06장 인증 무력화 ... 189
   인증 기술 ... 190
   인증 메커니즘에서 발견되는 설계상의 결함 ... 191
      나쁜 비밀번호 ... 191
      무차별 대입 공격이 가능한 로그인 ... 192
      불필요하게 상세한 로그인 실패 메시지 ... 195
      로그인 정보의 전송 취약성 ... 197
      비밀번호 변경 처리 ... 200
      비밀번호 분실 처리 ... 201
      "내 정보 기억하기"의 처리 ... 204
      신분 전환 처리 ... 205
      사용자 정보의 불완전한 검증 ... 207
      고유하지 않은 사용자명 문제 ... 208
      예측 가능한 사용자명 ... 210
      추측 가능한 초기 비밀번호 ... 210
      로그인 정보 전달 과정에서의 위험성 ... 211
   사용자 인증 구현상의 결함 ... 212
      장애 우회를 내포한 로그인 메커니즘 ... 212
      다단계 로그인 메커니즘의 결함 ... 214
      로그인 정보 보관상의 위험 ... 217
   안전한 사용자 인증 처리 ... 218
      안전한 로그인 정보의 사용 ... 219
      로그인 정보의 기밀 유지 ... 219
      로그인 정보의 제대로 된 검증 ... 220
      정보 유출 방지 ... 222
      무차별 대입 공격 차단 ... 224
      비밀번호 변경 기능의 악용 차단 ... 226
      계정 복구 기능 악용 차단 ... 227
      로그, 감시, 통지 ... 228
   정리 ... 229
   확인문제 ... 229
07장 세션 관리 공격 ... 231
   사용자의 상태에 대한 유지 필요 ... 232
      세션 대안 ... 235
   세션 토큰을 만드는 과정에서 발생하는 취약점 ... 236
      중요한 토큰 ... 237
      추측 가능한 토큰 ... 239
   세션 토큰을 처리할 때 발생하는 취약점 ... 248
      네트워크상의 토큰 노출 ... 248
      로그에서 토큰 노출 ... 252
      세션에 대한 취약한 토큰 매핑 ... 254
      세션 종료의 취약점 ... 256
      토큰 하이재킹에 대한 클라이언트 노출 ... 258
      개방적인 쿠키 범위 ... 259
   안전한 세션 관리 ... 263
      강력한 토큰 생성 ... 264
      토큰이 생성되고 나서 없어질 때까지 안전하게 보호 ... 265
      로그, 감시, 경고 ... 269
   정리 ... 270
   확인문제 ... 271
08장 접근 통제 공격 ... 273
   일반적인 취약점 ... 274
      보안 기능이 허술하게 돼있는 경우 ... 275
      식별자를 기반으로 한 기능 ... 277
      여러 단계에 걸친 보안 기능 ... 278
      정적 페이지 ... 279
      안전하지 않은 접근 통제 방법 ... 280
   접근 통제 공격 ... 281
   안전한 접근 통제 ... 286
      다계층 접근 통제 모델 ... 289
   정리 ... 292
   확인문제 ... 293
09장 코드 삽입 공격 ... 295
   인터프리터 언어 안에 공격 코드 삽입 ... 296
   SQL 내에 공격 코드 삽입 ... 298
      기본적인 취약점 공격 ... 300
      로그인 우회 ... 302
      SQL 인젝션 취약점 검색 ... 303
      인젝션에 이용되는 다양한 구문 ... 307
      UNION 연산자 ... 310
      데이터베이스에 대한 정보 수집 ... 316
      유용한 데이터 추출 ... 317
      ODBC 에러 메시지 해킹(MS-SQL에 한해) ... 324
      필터 우회 ... 329
      2차 SQL 인젝션 ... 334
      발전된 공격 ... 335
      SQL 인젝션을 넘어서: 데이터베이스 권한 상승 공격 ... 350
      SQL 문법과 에러 참조 ... 354
      SQL 인젝션의 방어 ... 361
   운영체제 명령 삽입 ... 366
      예제 1: Perl을 통한 삽입 ... 367
      예제 2: ASP를 통한 인젝션 ... 369
      운영체제 명령어 삽입 취약점 검색 ... 371
      운영체제 명령어 삽입 공격의 방어 ... 374
   웹 스크립트 언어 안에 공격 코드 삽입 ... 374
      동적 실행 취약점 ... 375
      파일 포함 취약점 ... 378
      스크립트 삽입 취약점의 방어 ... 380
   SOAP 안으로 공격 코드 삽입 ... 381
      SOAP 인젝션 취약점의 검색과 공격 ... 383
      SQL 인젝션의 방어 ... 384
   XPath 안으로 공격 코드 삽입 ... 385
      애플리케이션 로직 파괴 ... 386
      다양한 XPath 인젝션 ... 387
      블라인드 XPath 인젝션 ... 388
      XPath 인젝션 취약점 검색 ... 389
      XPath 인젝션의 방어 ... 390
   SMTP 안으로 공격 코드 삽입 ... 391
      이메일 헤더 조작 ... 391
      SMTP 명령어 삽입 ... 392
      SMTP 삽입 취약점 검색 ... 394
      SMTP 인젝션의 방어 ... 396
   LDAP 안으로 공격 코드 삽입 ... 396
      쿼리 속성 삽입 ... 397
      검색 필터 수정 ... 399
      LDAP 인젝션 취약점 검색 ... 400
      LDAP 인젝션 방어 ... 401
   정리 ... 401
   확인문제 ... 402
10장 경로 탐색 공격 ... 405
   일반적인 취약점 ... 405
   경로 탐색 취약점 검색 ... 407
      공격할 대상의 위치 검색 ... 407
      경로 탐색 취약점의 검색 ... 408
      탐색 공격에 대한 보안 대책 우회 ... 411
      경로 탐색 취약점의 공격 ... 416
   경로 탐색 공격 예방법 ... 417
   정리 ... 418
   확인문제 ... 419
11장 애플리케이션 로직 공격 ... 421
   로직 결함의 특징 ... 422
   현실적으로 존재하는 로직 결함 ... 423
      예제 1: 취약한 비밀번호 변경 함수 ... 423
      예제 2: 체크아웃을 위한 절차 ... 424
      예제 3: 보험 상품 위험성 ... 426
      예제 4: 은행 털기 ... 429
      예제 5: 감사 흔적의 삭제 ... 431
      예제 6: 비즈니스 기능 제한의 파괴 ... 433
      예제 7: 대량 구매 할인 시 존재하는 결함 ... 434
      예제 8: 이스케이프의 회피 ... 436
      예제 9: 검색 기능 악용 ... 437
      예제 10: 디버그 메시지의 착취 ... 439
      예제 11: 로그인 경쟁 ... 441
   로직 결함의 회피 ... 443
   정리 ... 445
   확인문제 ... 446
12장 애플리케이션 사용자 공격 ... 447
   크로스사이트 스크립팅 ... 448
      반사된 크로스사이트 스크립팅 취약점 ... 450
      저장된 크로스사이트 스크립팅 취약점 ... 457
      DOM 기반의 크로스사이트 스크립팅 취약점 ... 460
      실제적인 크로스사이트 스크립팅 공격 ... 462
      체이닝 크로스사이트 스크립팅과 다른 공격 ... 465
      크로스사이트 스크립팅 공격 페이로드 ... 466
      크로스사이트 스크립팅 공격 전달 매커니즘 ... 474
      크로스사이트 스크립팅 취약점 발견과 악용 ... 476
      HTTP 쿠키와 크로스사이트 트레이싱 ... 497
      크로스사이트 스크립팅 공격 예방 ... 500
   리다이렉션 공격 ... 506
      리다이렉션 취약점 발견과 악용 ... 506
      리다이렉션 취약점 예방 ... 511
   HTTP 헤더 인젝션 ... 512
      헤더 인젝션 취약점 공격 ... 513
      헤더 인젝션 취약점 예방 ... 516
   프레임 인젝션 ... 517
      프레임 인젝션 악용 ... 518
      프레임 인젝션 예방 ... 519
   요청 위조 ... 519
      온사이트 요청 위조 ... 519
      크로스사이트 요청 위조 ... 521
   JSON 하이재킹 ... 525
      JSON ... 526
      JSON에 대한 공격 ... 526
      JSON 하이재킹 취약점 발견 ... 529
      JSON 하이재킹 예방 ... 529
   세션 고정 ... 530
      세션 고정 취약점 발견과 악용 ... 532
      세션 고정 취약점 예방 ... 534
   액티브X 컨트롤 공격 ... 534
      액티브X 취약점 발견 ... 535
      액리브X 취약점 예방 ... 537
   로컬 프라이버시 공격 ... 538
      장기간 유지되는 쿠키 ... 538
      캐시된 웹 컨텐츠 ... 539
      검색 기록 ... 540
      자동 완성 기능 ... 540
      로컬 프라이버시 공격 예방 ... 541
   발전된 공격 기법 ... 542
      Ajax 공격
      안티 DNS 피닝 ... 546
      브라우저 공격 프레임워크 ... 549
   정리 ... 551
   확인문제 ... 551
13장 맞춤 공격 자동화 ... 555
   맞춤 자동화의 사용 ... 556
   유효한 식별자 수집 ... 557
      기본적인 접근 방법 ... 558
      힌트 찾기 ... 558
      공격 스크립트 ... 560
      JAttack ... 562
   유용한 데이터 대량 수집 ... 569
   일반적인 취약점 퍼징 ... 572
   공격 종합: 버프 인트루더 ... 577
      페이로드 위치 설정 ... 578
      페이로드 선택 ... 579
      응답 분석 설정 ... 580
      공격 1: 식별자 수집 ... 581
      공격 2: 정보 수집 ... 584
      공격 3: 애플리케이션 퍼징 ... 586
   정리 ... 588
   확인문제 ... 588
14장 정보 노출 공격 ... 591
   에러 메시지 공격 ... 591
      스크립트 에러 메시지 ... 592
      스택 추적 ... 593
      디버그 메시지 정보 ... 594
      서버와 데이터베이스 메시지 ... 596
      공개된 정보 이용 ... 597
      중요한 에러 메시지 엔지니어링 ... 598
   공개된 정보 수집 ... 599
   추론 이용 ... 600
   정보 노출 예방 ... 602
      일반적인 에러 메시지 사용 ... 602
      중요한 정보 보호 ... 603
      클라이언트 측의 정보 노출 최소화 ... 604
   정리 ... 604
   확인문제 ... 605
15장 컴파일된 애플리케이션 공격 ... 609
   버퍼 오버플로우 취약점 ... 610
      스택 오버플로우 ... 610
      힙 오버플로우 ... 611
      "off-by-one" 취약점 ... 612
      버퍼 오버플로우 취약점 탐색 ... 615
   정수 취약점 ... 617
      정수 오버플로우 ... 617
      부호 관련 문제 ... 618
      정수 취약점 탐지 ... 619
   포맷 스트링 취약점 ... 620
      포맷 스트링 취약점 탐지 ... 621
      정리 ... 621
      확인문제 ... 622
16장 애플리케이션 아키텍처 공격 ... 623
   계층적 아키텍처 ... 623
      다층 아키텍처 공격 ... 624
      계층화된 구조 보호 ... 628
   공유 호스팅과 애플리케이션 서비스 공급자 ... 631
      가상 호스팅 ... 631
      공유된 애플리케이션 서비스 ... 632
      공유된 환경 공격 ... 633
      공유된 환경 보호 ... 638
   정리 ... 640
   확인문제 ... 641
17장 웹서버 공격 ... 643
   웹서버 설정 취약점 ... 643
      디폴트 계정 ... 643
      디폴트 컨텐츠 ... 645
      디렉터리 목록 ... 649
      위험한 HTTP 메소드 ... 650
      프록시로서 웹서버 ... 652
      잘못 설정한 가상 호스팅 ... 654
      웹서버 설정 보안 ... 655
   웹서버 소프트웨어의 취약점 ... 656
      버퍼 오버플로우 취약점 ... 656
      경로 탐색 취약점 ... 658
      인코딩과 정형화 취약점 ... 659
      웹서버 취약점 발견 ... 661
      웹서버 소프트웨어 보안 ... 662
   정리 ... 664
   확인문제 ... 665
18장 소스코드 내의 취약점 발견 ... 667
   코드 검토에 대한 접근 방식 ... 668
      블랙박스와 화이트박스 테스트 ... 668
      코드 검토 방법론 ... 669
   일반적인 취약점 시그니처 ... 670
      크로스사이트 스크립팅 ... 671
      SQL 인젝션 ... 672
      경로 탐색 ... 673
      임의의 리다이렉션 ... 674
      운영체제 명령어 인젝션 ... 675
      백도어 비밀번호 ... 675
      네이티브 소프트웨어 버그 ... 676
      소스코드 주석 ... 678
   자바 플랫폼 ... 678
      사용자가 제공한 데이터 확인 ... 679
      세션 상호작용 ... 680
      잠재적으로 위험한 API ... 680
      자바 환경 설정 ... 684
   ASP.NET ... 685
      사용자가 제공한 데이터 확인 ... 685
      세션 상호작용 ... 686
      잠재적으로 위험한 API ... 687
      ASP.NET 환경 설정 ... 691
   PHP ... 692
      사용자가 제공한 데이터 확인 ... 692
      세션 상호작용 ... 695
      잠재적으로 위험한 API ... 695
      PHP 환경 설정 ... 701
   Perl ... 704
      사용자가 제공한 데이터 확인 ... 705
      세션 상호작용 ... 706
      잠재적으로 위험한 API ... 706
      Perl 환경 설정 ... 708
   자바스크립트 ... 709
   데이터레이스 코드 컴포넌트 ... 710
      SQL 인젝션 ... 710
      위험한 함수 호출 ... 712
   코드 브라우징에 대한 도구 ... 712
   정리 ... 713
   확인문제 ... 714
19장 웹 애플리케이션 해커의 도구상자 ... 717
   웹 브라우저 ... 717
      인터넷 익스플로러 ... 718
      파이어폭스 ... 718
      오페라 ... 720
   통합된 검사 스위트 ... 721
      도구 작동법 ... 722
      특징 비교 ... 734
      인터셉팅 프록시의 대안 ... 741
   취약점 스캐너 ... 743
      스캐너에서 발견한 취약점 ... 743
      스캐너의 한계 ... 745
      스캐너가 직면할 기술적인 문제 ... 747
      현재 사용되는 웹 스캐너 ... 749
      취약점 스캐너 사용 ... 751
   그 외의 도구 ... 753
      닉토 ... 753
      히드라 ... 753
      커스텀 스크립트 ... 754
   정리 ... 757
20장 웹 애플리케이션 해커의 공격 방법론 ... 759
   일반적인 가이드라인 ... 761
   1. 애플리케이션 컨텐츠 맵 작성 ... 763
      1.1. 화면상의 컨텐츠 검토 ... 763
      1.2. 공개된 리소스 검색 ... 764
      1.3. 숨은 컨텐츠 발견 ... 765
      1.4. 디폴트 컨텐츠 발견 ... 765
      1.5. 식별자 지정 함수 목록화 ... 766
      1.6. 디버그 매개변수 검사 ... 766
   2. 애플리케이션 분석 ... 767
      2.1. 기능 식별 ... 767
      2.2. 데이터 입력 지점 검색 ... 767
      2.3. 사용된 기술 식별 ... 768
      2.4. 공격 취약 영역 맵 작성 ... 768
   3. 클라이언트 측 통제 검사 ... 769
      3.1. 클라이언트에 의해 전달되는 데이터 검사 ... 769
      3.2. 사용자 입력에 대한 클라이언트 측 통제 검사 ... 770
      3.3. 씩 클라이언트 컴포넌트 검사 ... 771
   4. 인증 메커니즘 검사 ... 774
      4.1. 메커니즘 이해 ... 774
      4.2. 비밀번호 강력도 검사 ... 775
      4.3. 사용자 이름 목록화 검사 ... 775
      4.4. 비밀번호 추측 공격 가능성 검사 ... 776
      4.5. 계정 복구 기능 검사 ... 776
      4.6. 자동 로그인 기능 검사 ... 777
      4.7. 의인화 기능 검사 ... 778
      4.8. 사용자 이름 유일성 검사 ... 778
      4.9. 자동 생성되는 계정의 예측 가능성 검사 ... 779
      4.10. 사용자 계정 정보가 안전하지 않게 전달되는지 검사 ... 779
      4.11. 안전하지 않게 사용자 계정 정보가 배포되는지 검사 ... 780
      4.12. 로직 결함 검사 ... 780
      4.13. 다른 사용자의 권한을 얻기 위한 공격 ... 782
   5. 세션 관리 메커니즘 검사 ... 783
      5.1. 메커니즘 이해 ... 783
      5.2. 생성되는 토큰의 의미 검사 ... 784
      5.3. 토큰의 예측 가능성 검사 ... 785
      5.4. 안전하지 않은 토큰 전송 검사 ... 786
      5.5. 로그 내에 세션 토큰 노출 검사 ... 787
      5.6. 세션에 토큰 매핑 검사 ... 787
      5.7. 세션 종료 검사 ... 788
      5.8. 세션 고정 검사 ... 789
      5.9. XSRF 검사 ... 789
      5.10. 쿠키 영역 검사 ... 790
   6. 접근 통제 검사 ... 791
      6.1. 접근 통제 요구 이해 ... 791
      6.2. 여러 계정으로 검사 ... 792
      6.3. 제한된 접근으로 검사 ... 792
      6.4. 안전하지 않은 접근 통제 방법 검사 ... 793
   7. 입력 기반 취약점 검사 ... 794
      7.1. 모든 요청 매개변수 퍼징 ... 794
      7.2. SQL 인젝션 검사 ... 798
      7.3. XSS와 기타 응답 인젝션 검사 ... 800
      7.4. 운영체제 명령어 인젝션 검사 ... 803
      7.5. 경로 탐색 검사 ... 804
      7.6. 스크립트 인젝션 검사 ... 807
      7.7 파일 포함 검사 ... 807
   8. 특정 기능에 대한 입력 값 취약점 검사 ... 808
      8.1. SMTP 인젝션 검사 ... 808
      8.2. 네이티브 소프트웨어 취약점 검사 ... 809
      8.3. SOAP 인젝션 검사 ... 811
      8.4. LDAP 인젝션 검사 ... 812
      8.5. XPath 인젝션 검사 ... 813
   9. 로직 결함 검사 ... 814
      9.1. 핵심 공격 취약 영역 식별 ... 814
      9.2. 다단계 처리 검사 ... 814
      9.3. 불완전한 입력 값 처리 검사 ... 815
      9.4. 신뢰 경계 구간 검사 ... 816
      9.5. 처리 로직 검사 ... 816
   10. 공유된 호스팅 환경 취약점 검사 ... 817
      10.1. 공유된 환경에서 애플리케이션 분리 검사 ... 817
      10.2 ASP 호스팅된 애플리케이션 사이의 분리 검사 ... 818
   11. 웹서버 취약점 검사 ... 818
      11.1. 디폴트 자격 증명 검사 ... 819
      11.2. 디폴트 컨텐츠 검사 ... 819
      11.3. 위험한 HTTP 메소드 검사 ... 819
      11.4. 프록시 기능 검사 ... 820
      11.5. 가상 호스팅의 잘못된 설정 검사 ... 820
      11.6. 웹서버 소프트웨어 버그 검사 ... 821
   12. 그밖의 다양한 검사 ... 821
      12.1. DOM 기반 공격 검사 ... 822
      12.2. 프레임 인젝션 검사 ... 823
      12.3. 로컬 프라이버시 취약점 검사 ... 823
      12.4. 정보 노출 추적 ... 824
      12.5. 약한 SSL 암호 검사 ... 825
찾아보기 ... 826
닫기