목차 일부
한국어판 서문 ... 5
저자 소개 ... 6
감사의 글 ... 7
옮긴이의 말 ... 8
옮긴이 소개 ... 10
들어가며 ... 34
01장 웹 애플리케이션 보안 ... 43
웹 애플리케이션의 발전 ... 43
일반적인 웹 애플리케이션 기능 ... 45
웹 애플리케이션의 혜택 ... 46
웹 애플리케이션 보안 ... 47...
더보기
목차 전체
한국어판 서문 ... 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
더보기 닫기