목차 일부
머리말 ... xvi
서론 ... xx
우리는 안전하다, 우리는 방화벽을 갖추고 있다. ... xxii
오류는 인간의 것이다. ... xxii
벽에 쓰기(방화벽에 쓰기) ... xxii
이 책의 구성 ... xxii
각 부의 구성 ... xxii
각 장의 구성 ... xxiv
맺음말 ... xxvi...
더보기
목차 전체
머리말 ... 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
더보기 닫기