목차
머리말 ... xvi
서론 ... xx
   우리는 안전하다, 우리는 방화벽을 갖추고 있다. ... xxii
      오류는 인간의 것이다. ... xxii
      벽에 쓰기(방화벽에 쓰기) ... xxii
   이 책의 구성 ... xxii
      각 부의 구성 ... xxii
      각 장의 구성 ... xxiv
   맺음말 ... xxvi
   감사의 글 ... xxvi
   기고가 ... xxvi
Part 1 E-커머스 영역 ... 1
   사례 연구 : Acme Art 주식회사, 해킹당하다!!! ... 2
   Chapter 1 웹 언어들 : 21세기의 바빌론 ... 11
      개요 ... 12
      웹의 언어들 ... 13
        HTML ... 13
        동적 HTML(DHTML) ... 16
        XML ... 16
        XHTML ... 17
        펄(Perl) ... 18
        콜드퓨전(ColdFusion) ... 25
        액티브 서버 페이지(Active Server Pages) ... 28
        CGI ... 34
        자바(Java) ... 39
      요약 ... 52
   Chapter 2 웹 서버와 데이터베이스 서버 ... 55
      개요 ... 56
      웹 서버들 ... 56
        아파치 ... 56
        마이크로소프트의 Internet Information Server(IIS) ... 63
      데이터베이스 서버들 ... 72
        마이크로소프트 SQL 서버 ... 74
        오라클 ... 82
      요약 ... 93
   Chapter 3 쇼핑 카트와 지불 통로 ... 95
      개요 ... 96
      상점의 혁명 ... 97
      온라인 쇼핑 ... 100
      쇼핑 카트 시스템들 ... 101
        온라인 쇼핑 카트의 범위와 수명 ... 101
        선택한 컴포넌트의 수집, 분석, 비교 ... 102
        전체 금액의 자취를 유지하기 ... 102
        생각의 변화 ... 102
        구매 처리 ... 102
      쇼핑 카트 애플리케이션의 구현 ... 104
        상품 카탈로그 ... 105
        세션 관리 ... 105
        데이터베이스 연동 ... 105
        지불 통로와의 통합 ... 106
      잘못 구현된 쇼핑 카트의 예들 ... 106
        카렐로(Carello) 쇼핑 카트 ... 106
        DCShop 쇼핑 카트 ... 106
        Hassan Consulting의 쇼핑 카트 ... 107
        Cart32와 여러 가지 다른 쇼핑 카트들 ... 107
      지불 처리 ... 107
        주문 마치기 ... 108
        지불 방법 ... 108
        검증과 사기 방지 ... 108
        주문 처리와 영수증의 생성 ... 108
      지불 처리 시스템의 개요 ... 109
        주문 확인 페이지 ... 109
        신용카드 사기와 싸우기 위한 획기적인 방법들 ... 109
        지불 통로 인터페이스 ... 111
        거래 데이터베이스 인터페이스 ... 111
      지불 통로와의 연동 - 예 ... 112
      지불 시스템 구현 논점들 ... 115
        통합 ... 115
        임시 정보 ... 115
        SSL ... 116
        사용자 프로필의 저장 ... 116
      PayPal - 개인이 온라인 지불을 받을 수 있도록 해주는 사이트 ... 116
        쇼핑 카트와 지불 통로와의 잘못된 통합으로 인한 취약점들 ... 117
      요약 ... 118
   Chapter 4 HTTP와 HTTPS : 해킹 프로토콜들 ... 119
      개요 ... 120
      웹의 프로토콜들 ... 121
        HTTP ... 121
        HTTPS(SSL을 통한 HTTP) ... 127
      요약 ... 132
   Chapter 5 URL : 웹 해커의 무기 ... 133
      개요 ... 134
      URL 구조 ... 135
        웹 해커의 심리 ... 137
      URL들과 파라미터 전달 ... 138
      URL 인코딩 ... 140
        메타 문자들 ... 140
        URL 문자열에서 특수 문자들 표시하기 ... 141
        메타 문자들과 입력 검증 ... 142
        유니코드 인코딩 ... 143
        해킹당한 Acme 아트 센터 ... 144
      URL 인코딩의 남용 ... 144
        유니코드의 취약점 ... 144
        유니코드 인코딩과 코드 레드의 쉘 코드 ... 145
        이중 해석 또는 과잉 해석으로 인한 취약점 ... 147
      HTML 폼 ... 149
        HTML 폼의 해부 ... 150
        입력 요소들 ... 152
        GET과 POST를 통한 파라미터 전달 ... 152
      요약 ... 158
Part 2 URL 해결되어지다 ... 161
   사례 연구 : 정찰대가 기업의 자산을 새어나가게 만든다 ... 162
   Chapter 6 웹 : 그 숨겨진 세계 ... 165
      개요 ... 166
      웹 애플리케이션의 컴포넌트들 ... 166
        프런트 엔드 웹 서버 ... 167
        웹 애플리케이션 실행 환경 ... 169
        데이터베이스 서버 ... 171
      컴포넌트 작성하기 ... 171
        기본적으로 주어지는 애플리케이션 처리 환경 ... 171
        웹 서버 API와 플러그인 ... 171
        URL 매핑과 내부의 프록시 설정 ... 173
        백-엔드 애플리케이션 서버와의 프록시 설정 ... 173
        설정 예들 ... 173
      데이터베이스 접속 ... 177
        각 언어가 제공하는 데이터베이스 API들의 사용 ... 178
        예들 ... 178
        해커들 중 가장 뛰어난 기술을 가진 해커 ... 179
        ODBC 사용 ... 181
        JDBC 사용 ... 182
      특수화된 웹 애플리케이션 서버들 ... 183
      URL로부터 웹 애플리케이션 컴포넌트들을 식별하기 ... 183
      기술을 식별하기 위한 기본사항들 ... 184
        예들 ... 186
        추가적인 예들 ... 188
      기술 식별을 위한 더 진보적인 방법들 ... 191
        예들 ... 191
      데이터베이스 서버들을 식별하기 ... 193
      대응책들 ... 195
        법칙 1 : HTTP 헤더를 통해 일어나는 정보의 누출을 최소화하라 ... 196
        법칙 2 : 브라우저로 전송되는 에러 정보를 차단하라 ... 196
      요약 ... 196
   Chapter 7 행간의 뜻을 알아내자 ... 197
      개요 ... 198
      HTML을 통한 정보 누출 ... 199
      브라우저가 여러분에게 보여 주지 않는 것이 무엇인가 ... 199
        넷스케이프 네비게이터 - View|Page Source ... 200
        인터넷 익스플로러 - View|Source ... 202
      살펴보아야 할 단서들 ... 203
      HTML 주석들 ... 203
        수정사항에 대한 이력 ... 204
        개발자 또는 저자에 대한 상세 정보 ... 204
        웹 애플리케이션의 다른 영역으로의 상호 참조 ... 204
        기억해야 할 사항들과 위치 지정자들 ... 205
        애플리케이션 서버들에 의해 삽입된 주석들 ... 206
        오래된 '주석 처리되어 작동하지 않는' 코드 ... 207
      내부 그리고 외부로 연결되는 하이퍼링크들 ... 207
      이메일 주소와 사용자명 ... 208
        UBE, UCE, 무의미한 메일, 그리고 스팸 메일 ... 209
      키워드와 메타 태그들 ... 209
      숨겨진 필드들 ... 210
      클라이언트측 스크립트들 ... 211
      자동으로 소스를 이동해 주는 기법들 ... 212
        wget의 이용 ... 213
        grep의 이용 ... 216
      Sam Spade, Black Widow, 그리고 Teleport Pro ... 218
      요약 ... 219
   Chapter 8 사이트 연계 분석 ... 221
      개요 ... 222
      HTML과 사이트 연계 분석 ... 222
      사이트 연계 분석을 위한 방법론 ... 223
      단계 1 : 웹 사이트 수집하기 ... 225
        수작업으로 사이트 수집하기 ... 225
        HTTP 응답 헤더를 더 자세히 살펴보기 ... 225
        사이트 연계를 분석하기 위한 몇 가지 대중적인 도구들 ... 226
        단계 1 정리 ... 230
        수집기들과 방향 재설정 ... 231
      단계 2 : 애플리케이션 구조 내에서 컴포넌트들의 논리적인 그룹 생성하기 ... 233
        단계 2 정리 ... 236
      단계 3 : 각각의 웹 리소스 분석하기 ... 236
        1. 확장자 분석 ... 237
        2. URL 경로 분석 ... 237
        3. 세션 분석 ... 238
        4. 폼 판단 ... 239
        5. 애플릿과 객체 식별 ... 239
        6. 클라이언트측 스크립트 평가 ... 240
        7. 주석과 이메일 주소 분석 ... 241
        단계 3 정리 ... 241
      단계 4 : 웹 리소스들의 목록 생성 ... 242
      요약 ... 243
Part 3 해커들은 어떻게 해킹을 하는가? ... 245
   사례 연구 : 어떻게 Boris가 Anna의 미술용품에 대한 요구를 충족시켜 주었는가? ... 246
   Chapter 9 사이버 낙서 ... 249
      개요 ... 250
      Acme 여행사 웹 사이트의 훼손 ... 250
        목표 대상 네트워크의 지도 만들기 ... 253
        프록시 서버를 역으로 사용하기 ... 255
        HTTP 인증을 강제 수행하기 ... 258
        디렉토리 탐색 ... 262
        훼손된 페이지들을 업로드하기 ... 266
      무엇이 잘못되었는가? ... 269
      HTTP 강제 인증 도구들 ... 272
        Brutus ... 272
        WebCracker 4.0 ... 274
      Acme 여행사가 당했던 해킹에 대한 대응책들 ... 276
        역프록싱을 하지 못하게 설정하기 ... 276
        더 강력한 HTTP 인증 비밀번호 사용하기 ... 277
        디렉토리 탐색을 하지 못하게 설정하기 ... 277
      요약 ... 278
   Chapter 10 E-Shoplifting ... 279
      개요 ... 280
      온라인 상점 구축하기 ... 281
        상품 소개 ... 282
        쇼핑 카트 ... 282
        결제 페이지 ... 283
        데이터베이스 ... 283
        모든 요소들의 통합 ... 283
      온라인 상점들의 혁명 ... 283
      Acme 패션 주식회사를 털다 ... 285
        Acme의 온라인 상점을 구축하다 ... 286
        문제점 추적 ... 287
        클라이언트측 검증을 지나치기 ... 294
        숨겨진 필드들을 살펴보기 위해 검색 엔진을 사용하기 ... 295
      www.acme-fashions.com을 정비하다 ... 301
        정비된 시스템에 새로운 문제점이 등장하다 ... 301
      이후의 재발 방지 대응책들 ... 307
        원격 명을 실행한 쇼핑 카트들 ... 308
      요약 ... 310
   Chapter 11 데이터베이스 접근 ... 311
      개요 ... 312
        직접적인 SQL 공격 ... 312
      중고차 매매 사이트가 해킹당하다 ... 315
        입력 정보 검증 ... 315
      대응책 ... 321
      요약 ... 322
   Chapter 12 자바 : 원격 명령 실행 ... 323
      개요 ... 324
      자바 기반 기술 ... 325
        자바 애플리케이션 서버들의 구조 ... 326
      자바 웹 서버 공격하기 ... 327
      자바 애플리케이션 서버의 헛점 식별하기 ... 329
        예 : 온라인 주식 거래 포탈 ... 329
        FileServlet 호출 ... 333
      대응책 ... 342
        자바 웹 서버를 강화하자 ... 342
        다른 개념적인 대응책들 ... 343
      요약 ... 345
   Chapter 13 다른 사람 훙내내기 ... 347
      개요 ... 348
      세션 가로채기(hijacking) : 도둑맞은 신원과 깨진 데이트 ... 348
        3월 5일 아침 7시 - Alice의 집 ... 348
        아침 8시 30분 - Alice의 직장 ... 350
        오전 10시 - Bob의 사무실 ... 351
        오전 11시 - Bob의 사무실 ... 353
        오후 12시 30분 - Alice의 사무실 ... 356
        저녁 9시 30분 - Bertolini 이탈리안 식당 ... 357
      세션 가로채기 ... 357
      세션 가로채기 공격의 해부 ... 360
      애플리케이션 상태 다이어그램 ... 360
      HTTP와 세션 추적 ... 362
      무상태 애플리케이션과 상태 유지 애플리케이션 ... 364
      쿠키와 숨겨진 필드들 ... 365
        유닉스 플랫폼에서 넷스케이프를 사용한 쿠키 제어 ... 366
        쿠키 ... 366
        숨겨진 필드들 ... 367
      세션과 상태 추적의 구현 ... 367
        세션 식별자는 유일해야만 한다 ... 367
        세션 식별자는 '추측 가능'하지 않아야 한다 ... 368
        세션 식별자는 독립적이어야 한다 ... 368
        세션 식별자는 클라이언트측 연결과 매핑되어야 한다 ... 368
      요약 ... 369
   Chapter 14 버퍼 오버플로 : 온-더-플라이 ... 371
      개요 ... 372
        예 ... 372
      버퍼 오버플로 ... 373
        버퍼 오버플로 : 가장 간단한 형태 ... 374
        버퍼 오버플로 : 예 ... 380
      사후의 대응책 ... 386
      요약 ... 386
Part 4 고차원적인 웹 쿵후 ... 389
   사례 연구 ... 390
   Chapter 15 웹 해킹 : 자동화된 도구들 ... 393
      개요 ... 394
      Netcat ... 394
      Whisker ... 396
        Brute Force ... 399
      Brutus ... 401
      Acilles ... 406
      Cookie Pal ... 408
      Teleport Pro ... 419
      보안 권고사항들 ... 420
      요약 ... 421
   Chapter 16 웜(Worms) ... 423
      개요 ... 424
      코드 레드 웜(Code Red Worm) ... 424
        2000년 1월 26일 ... 424
        2001년 6월 18일 : 첫 번째 공격 ... 425
        2001년 7월 12일 ... 425
        2001년 7월 19일 ... 427
        2001년 8월 4일 ... 428
        님다 웜(Nimda Worm) ... 429
        웜 진화와 싸우기 ... 431
        반응과 응답 ... 432
      요약 ... 432
   Chapter 17 IDS 패배시키기 ... 433
      개요 ... 434
      IDS 기본사항들 ... 434
        네트워크 IDS들 ... 435
        호스트 기반 IDS들 ... 435
      IDS 정확성 ... 436
      IDS 지나가기(Getting Past) ... 436
      보안 해킹 - SSL을 통한 해킹 ... 437
        예 ... 437
        SSL을 통한 공격 터널링 ... 440
        SSL을 통한 침입 탐지 ... 441
        SSL 트래픽 스니핑(Sniffing) ... 442
      다형의(Polymorphic) URL들 ... 445
        16진수 인코딩 ... 446
        잘못된 유니코드/과도한 인코딩 ... 447
        거짓 경로들을 추가하기 ... 448
        슬래시-닷-슬래시(/./) 문자열을 삽입하기 ... 448
        비표준 경로 구분자들의 사용 ... 449
        다중 슬래시들의 사용 ... 449
        다양한 기술들의 혼합 ... 450
      잘못된 긍정(False Positives)을 발생시키기 ... 450
      잠재적 대응책들 ... 451
        취약점 점검자로서 IDS 회피 ... 452
        SSL 해독 ... 452
        URL 디코딩 ... 453
      요약 ... 453
부록 A : 웹과 데이터베이스가 사용하는 포트 목록 ... 455
부록 B : HTTP/1.1과 HTTP/1.0의 요청 방식과 필드 정의들 ... 459
부록 C : 원격으로 명령 실행하는 예 ... 463
부록 D : 소스 코드, 파일, 그리고 디렉토리의 노출 속임수 표 ... 467
부록 E : 리소스들과 관련 링크들 ... 475
부록 F : 웹 관련된 도구들 ... 477
찾아보기 ... 481
닫기