도서상세
장바구니에 상품을 담았습니다.
바로가기
  1. 도서정가제
  2. 소득공제
API 해킹의 모든 것 : REST와 그래프QL 웹 API 기초부터 보안 취약점, 해킹 툴, 퍼징 등 공격 실습까지
제이펍 2023.08.11
일시재고부족
33,000원
29,700원
10%
최대 적립 포인트
1,950 원
  • 구매 적립
    적립금 안내
    • 상품 적립금
    • 상품 적립금은 고객님이 웬디북에서 상품을 구매하실 경우 이에 대한 마일리지 개념으로 구매금액의 일부를 적립해 드리는 제도이며 사용은 예치금과 같이 현금처럼 사용가능하십니다.
    • 멤버십 적립금
    • 멤버십 적립금은 고객님의 멤버십(고객)등급에 따라 도서 구매액의 1 ~ 4%에 해당하는 적립금이 추가로 적립되며 적립금은 다음 주문시 현금처럼 사용이 가능합니다.
    • 다만 적립금은 예치금과는 달리, 현금으로 환불하실 수 없고 적립금의 적립일로 부터 12개월 이내에 사용하시지 않으면 자동으로 소멸됩니다.
  • 상품 적립금
    1,650원
  • 리뷰 적립
  • 최대 리뷰 적립금
    300원
29,700원
· 쿠폰 및 적립금은 결제 시 적용해 주세요
바로구매
장바구니 담기
일시재고부족
이 책을 구입하신 분들이 산 책
상세 이미지 더보기
상세 이미지
목차 더보기
목차
지은이·감수자·옮긴이 소개 xiii
옮긴이 머리말 xiv
베타리더 후기 xv
추천사 xvii
추천 서문(댄 바라오나) xix
감사의 글 xxii
이 책에 대하여 xxiv

PART I 웹 API 보안이 작동하는 방식

CHAPTER 0 보안 테스트 준비 3
0.1 권한 받기 4
0.2 API 테스트의 위협 모델링 4
0.3 테스트해야 할 API 기능 7
__0.3.1 API 인증 테스트 7
__0.3.2 웹 애플리케이션 방화벽 7
__0.3.3 모바일 애플리케이션 테스트 8
__0.3.4 API 문서 감사 8
__0.3.5 속도 제한 테스트 9
0.4 제한과 제외 10
__0.4.1 클라우드 API 보안 테스트 11
__0.4.2 DoS 테스트 12
0.5 보고와 개선 테스트 12
0.6 버그 현상금 범위에 관한 노트 13
요약 14

CHAPTER 1 웹 애플리케이션이 작동하는 방법 17
1.1 웹 애플리케이션 기초 17
__1.1.1 URL 18
__1.1.2 HTTP 요청 19
__1.1.3 HTTP 응답 20
__1.1.4 HTTP 상태 코드 22
__1.1.5 HTTP 메서드 23
__1.1.6 HTTP의 상태 24
1.2 웹 서버 데이터베이스 26
__1.2.1 SQL 26
__1.2.2 NoSQL 28
1.3 API의 역할 29
요약 29

CHAPTER 2 웹 API의 구조 31
2.1 웹 API가 작동하는 방식 31
2.2 표준 웹 API 타입 34
__2.2.1 RESTful API 35
__2.2.2 그래프QL 39
2.3 REST API 명세 43
2.4 API 데이터 교환 형식 44
__2.4.1 JSON 44
__2.4.2 XML 47
__2.4.3 YAML 48
2.5 API 인증 49
__2.5.1 기본 인증 49
__2.5.2 API 키 50
__2.5.3 JSON 웹 토큰 52
__2.5.4 HMAC 53
__2.5.5 OAuth 2.0 54
__2.5.6 인증 없음 56
2.6 API 실전: 트위터 API 살펴보기 56
요약 59

CHAPTER 3 일반적인 API 취약점 61
3.1 정보 누출 62
3.2 BOLA 63
3.3 사용자 인증 결함 65
3.4 데이터 과다 노출 66
3.5 리소스 부족과 속도 제한 67
3.6 BFLA 68
3.7 대량 할당 70
3.8 보안 설정 오류 71
3.9 주입 74
3.10 부적절한 자원 관리 76
3.11 비즈니스 로직 취약점 77
요약 78

PART II API 테스트 실험실 구축

CHAPTER 4 API 해킹 시스템 81
4.1 칼리 리눅스 81
4.2 개발자 도구로 웹 애플리케이션 분석 82
4.3 버프 스위트로 요청 캡처와 수정 85
__4.3.1 폭시프록시 설정 86
__4.3.2 버프 스위트 인증서 추가 87
__4.3.3 버프 스위트 모듈 88
__4.3.4 트래픽 가로채기 90
__4.3.5 침입자에서 요청 변경 92
4.4 포스트맨에서 API 요청 생성 96
__4.4.1 요청 생성기 97
__4.4.2 환경 100
__4.4.3 컬렉션 102
__4.4.4 컬렉션 실행기 106
__4.4.5 코드 조각 106
__4.4.6 테스트 패널 107
4.5 버프 스위트와 포스트맨의 조합 108
4.6 보충 도구 110
__4.6.1 OWASP 어매스로 사전 조사 110
__4.6.2 카이트러너로 API 엔드포인트 발견 111
__4.6.3 닉토로 취약점 검색 113
__4.6.4 OWASP ZAP으로 취약점 검색 114
__4.6.5 W퍼즈와 퍼징 115
__4.6.6 아르준으로 HTTP 매개변수 발견 117
요약 118
실험실 #1: REST API에서 사용자 계정 열거 118

CHAPTER 5 취약한 API 대상 설정 123
5.1 리눅스 호스트 생성 124
5.2 도커와 도커 컴포즈 설치 124
5.3 취약한 애플리케이션 설치 125
__5.3.1 crAPI 125
__5.3.2 픽시 126
__5.3.3 OWASP 주스 숍 127
__5.3.4 DVGA 128
5.4 기타 취약한 애플리케이션 추가 129
5.5 트라이핵미와 핵더박스에서의 API 해킹 130
요약 131
실험실 #2: 취약한 API 발견 132

PART III API 공격

CHAPTER 6 발견 139
6.1 수동적 사전 조사 140
__6.1.1 수동적 사전 조사 절차 140
__6.1.2 구글 해킹 141
__6.1.3 프로그래머블웹의 API 검색 디렉터리 143
__6.1.4 쇼단 146
__6.1.5 OWASP 어매스 147
__6.1.6 깃허브에 노출된 정보 150
6.2 능동적 사전 조사 153
__6.2.1 능동적 사전 조사 절차 154
__6.2.2 Nmap을 통한 기본 스캔 156
__6.2.3 Robots.txt에서 숨겨진 경로 발견 157
__6.2.4 크롬 개발자 도구로 민감한 정보 발견 157
__6.2.5 버프 스위트로 API 검사 162
__6.2.6 OWASP ZAP과 URI 크롤링 162
__6.2.7 고버스터를 사용한 URI 무차별 대입 165
__6.2.8 카이트러너로 API 콘텐츠 검색 166
요약 168
실험실 #3: 블랙 박스 테스트를 위한 능동적 사전 조사 169

CHAPTER 7 엔드포인트 분석 175
7.1 요청 정보 찾기 176
__7.1.1 문서에서 정보 찾기 176
__7.1.2 API 명세 임포트 180
__7.1.3 API 리버스 엔지니어링 182
7.2 포스트맨에 API 인증 요건 추가 185
7.3 기능 분석 187
__7.3.1 의도에 맞는 사용인지 테스트 188
__7.3.2 권한이 필요한 작업 수행 189
__7.3.3 API 응답 분석 191
7.4 정보 누출 191
7.5 보안 설정 결함 192
__7.5.1 자세한 에러 메시지 192
__7.5.2 빈약한 전송 암호화 193
__7.5.3 문제가 있는 설정 193
7.6 데이터 과다 노출 194
7.7 비즈니스 로직 결함 195
요약 196
실험실 #4: crAPI 컬렉션 구축과 데이터 과다 노출 발견 196

CHAPTER 8 인증 공격 201
8.1 고전적 인증 공격 202
__8.1.1 비밀번호 무차별 대입 공격 202
__8.1.2 비밀번호 리셋과 다중 인증 무차별 대입 공격 203
__8.1.3 비밀번호 스프레이 205
__8.1.4 무차별 대입 공격에 base64 인증 포함 208
8.2 토큰 위조 209
__8.2.1 수동 분석 210
__8.2.2 실시간 캡처 분석 212
__8.2.3 예측 가능한 토큰 무차별 대입 213
8.3 JWT 악용 216
__8.3.1 JWT 분석 216
__8.3.2 none 공격 219
__8.3.3 알고리즘 스위치 공격 219
__8.3.4 JWT 크랙 공격 221
요약 221
실험실 #5: crAPI JWT 서명 크랙 222

CHAPTER 9 퍼징 225
9.1 효과적인 퍼징 225
__9.1.1 퍼징 페이로드 선택 227
__9.1.2 이상 감지 229
9.2 넓은 퍼징과 깊은 퍼징 231
__9.2.1 포스트맨과 넓은 퍼징 232
__9.2.2 버프 스위트와 깊은 퍼징 235
__9.2.3 W퍼즈와 깊은 퍼징 237
9.3 W퍼즈로 요청 메서드 테스트 241
9.4 입력 유효성 검사를 우회하는 ‘더 깊은’ 퍼징 242
9.5 퍼징과 디렉터리 순회 244
요약 244
실험실 #6: 부적절한 자원 관리 취약점 퍼징 245

CHAPTER 10 권한 공격 249
10.1 BOLA 찾기 249
__10.1.1 ID 탐색 250
__10.1.2 A-B 테스트 252
__10.1.3 부채널 BOLA 252
10.2 BFLA 찾기 253
__10.2.1 A-B-A 테스트 254
__10.2.2 포스트맨에서 BFLA 테스트 254
10.3 권한 부여 해킹 팁 257
__10.3.1 포스트맨의 컬렉션 변수 257
__10.3.2 버프 스위트의 찾아 바꾸기 257
요약 258
실험실 #7: 다른 사용자의 자동차 위치 발견 258

CHAPTER 11 대량 할당 265
11.1 대량 할당 대상 발견 265
__11.1.1 계정 등록 266
__11.1.2 권한 없는 접근 266
11.2 대량 할당 변수 발견 267
__11.2.1 문서에서 변수 발견 267
__11.2.2 알 수 없는 변수 퍼징 268
__11.2.3 맹목적 대량 할당 공격 269
11.3 아르준, 버프 스위트 침입자로 대량 할당 공격 자동화 270
11.4 BFLA와 대량 할당 조합 271
요약 272
실험실 #8: 온라인 상점의 아이템 가격 변경 273

CHAPTER 12 주입 279
12.1 주입 취약점 발견 280
12.2 사이트 간 스크립팅(XSS) 281
12.3 API 간 스크립팅(XAS) 282
12.4 SQL 주입 284
__12.4.1 메타 문자 직접 전송 285
__12.4.2 SQL맵 286
12.5 NoSQL 주입 288
12.6 운영 체제 명령어 주입 290
요약 292
실험실 #9: NoSQL 주입을 사용한 쿠폰 위조 293

PART IV 실전 API 해킹

CHAPTER 13 우회 기술과 속도 제한 테스트 299
13.1 API 보안 컨트롤 우회 300
__13.1.1 보안 컨트롤의 작동 방식 300
__13.1.2 API 보안 컨트롤 탐지 301
__13.1.3 버너 계정 사용 302
__13.1.4 우회 기술 303
__13.1.5 버프 스위트로 우회 자동화 305
__13.1.6 W퍼즈로 우회 자동화 307
13.2 속도 제한 테스트 309
__13.2.1 느슨한 속도 제한에 대한 노트 310
__13.2.2 경로 우회 312
__13.2.3 출처 헤더 위조 313
__13.2.4 버프 스위트에서 IP 주소 순환 314
요약 318

CHAPTER 14 그래프QL 공격 319
14.1 그래프QL 요청과 IDE 320
14.2 능동적 사전 조사 321
__14.2.1 스캐닝 321
__14.2.2 브라우저에서 DVGA 사용 323
__14.2.3 개발자 도구 사용 323
14.3 그래프QL API 리버스 엔지니어링 325
__14.3.1 그래프QL 엔드포인트에 디렉터리 무차별 대입 325
__14.3.2 쿠키 변조를 통한 그래피클 IDE 활성화 328
__14.3.3 그래프QL 요청 리버스 엔지니어링 330
__14.3.4 스키마 확인을 통한 그래프QL 컬렉션 리버스 엔지니어링 332
14.4 그래프QL API 분석 333
__14.4.1 그래피클 문서 탐색기를 통한 요청 작성 333
__14.4.2 버프 스위트 애드온 InQL 335
14.5 명령어 주입을 위한 퍼징 338
요약 344

CHAPTER 15 데이터 침해와 버그 현상금 345
15.1 침해 346
__15.1.1 펠로톤 346
__15.1.2 USPS Informed Visibility API 348
__15.1.3 T-모바일 API 침해 349
15.2 현상금 351
__15.2.1 API 키의 가격 352
__15.2.2 비공개 API 권한 부여 문제 353
__15.2.3 스타벅스: 전례 없는 침해 355
__15.2.4 인스타그램 그래프QL BOLA 357
요약 359

마치며 360

부록 A API 해킹 체크리스트 362
부록 B 추가 자료 364
찾아보기 368
저자 소개
저자 : 코리 볼 (Corey Ball)
모스 애덤스(Moss Adams)의 사이버 보안 관리자로 침투 테스트 서비스를 책임지고 있다. IT 분야에서 10년 이상 일하며 항공 우주, 농업, 에너지, 핀테크, 정부 서비스, 의료 등 다양한 영역에서 사이버 보안 경험을 쌓았다. 캘리포니아 주립대학교 새크라멘토에서 영문학과 철학 학사 학위를 받았고 OSCP, CCISO, CEH, CISA, CISM, CRISC, CGEIT 자격증을 갖고 있다.

역자 : 한선용
자바스크립트에 관심 많은 번역가. 2008년부터 웹 관련 일을 해 왔으며, ‘HTML5 명세’, ‘WCAG 2.0을 위한 일반적 테크닉’ 등의 문서를 번역해 웹에 게시했습니다. 번역서로는 『프론트엔드 개발자를 위한 자바스크립트 프로그래밍』, 『처음 배우는 jQuery』, 『HTML5 & CSS3』, 『에릭 마이어의 CSS 노하우』, 『한 권으로 끝내는 Node & Express(개정판)』, 『나의 첫 파이썬(2판)』, 『파이썬으로 웹 크롤러 만들기(2판)』, 『자바스크립트를 말하다』, 『데이터 시각화를 위한 데이터 인사이트』, 『모던 웹을 요리하는 초간편 HTML5 Cookbook』, 『Head First jQuery』, 『jQuery Mobile』, 『자바스크립트 성능 최적화』, 『CSS 완벽 가이드』, 『CSS 핵심 실용 가이드』 등이 있습니다.
저자 소개 더보기
출판사 서평 더보기
출판사 서평
칼리 리눅스 실습과 함께 배우는 차세대 웹 보안 취약점 정복

API 대상 공격은 해마다 크게 증가하고 있고, 2022년에는 모든 공격의 과반을 넘어섰다는 보고서도 나왔다. API는 전체 인터넷 트래픽의 80% 이상을 차지할 정도로 사용량이 폭발적으로 증가했지만, 상대적으로 보안이 미비하여 확장된 공격 표면이 공격자들의 손쉬운 표적이 되고 있다.

API 보안의 중요성이 높아지는 가운데, API 해킹의 이론과 실제를 포괄적으로 정리한 것이 이 책이다. 1부에서는 웹 애플리케이션 작동 원리, REST/그래프QL 웹 API의 구조, 그리고 정보 누출, BOLA, BFLA, 대량 할당, 주입(인젝션) 등 널리 알려진 API 취약점들을 살펴보며 보안 기초를 쌓는다. 2부에서는 실습을 위해 가상 머신에 칼리 리눅스를 설치하고 공격 및 대상 시스템을 구축한다. 버프 스위트와 포스트맨 등 주요 해킹 툴을 소개하고, 대상 시스템에는 crAPI나 DVGA 등 취약한 애플리케이션을 설치해 실습을 준비한다.

3부는 앞에서 소개한 툴들을 사용해 발견, 사전 조사, 엔드포인트 분석, 인증/인가 공격, 퍼징(fuzzing) 등 실제로 API 공격을 실습한다. 거의 모든 공격 단계에서 쓰이는 버프 스위트와 포스트맨 외에 어매스, Nmap, 닉토, ZAP, 고버스터, 카이트러너, W퍼즈, 아르준 등 각종 툴을 어떤 공격 단계에서 어떻게 사용하는지 익힐 수 있다. 무차별 대입, JWT 악용, XSS, SQL 주입 등 고전적인 공격에 익숙하다면 이들이 API 세계에서 어떻게 응용되는지도 흥미로울 것이다. 4부는 API 보안 컨트롤 및 속도 제한 우회, 그래프QL 공격, 그리고 기업들의 실제 침해 혹은 버그 현상금(바운티) 사례를 살펴본다.

매뉴얼 성격의 딱딱함이 아니라 어떻게든 조그마한 빈틈을 찾아내고 파고들려는 공격자의 치밀함이 돋보이는 책이다. 알려진 모든 유형의 API 공격을 다룬다는 점에서 실무자에게는 더할 나위 없는 레퍼런스가 될 테고, 보안 테스트와 웹 애플리케이션의 기초도 다루기 때문에 초보자도 순서대로 정독하기만 한다면 API 해킹에 뛰어들 수 있을 것이다.

주요 내용

-웹 애플리케이션의 작동 방식을 이해하고 웹 API를 해부해서 들여다보기
-해커의 관점에서 최상의 API 취약점 마스터하기
-가장 효과적인 해킹 도구들 익히기
-수동적, 능동적 API 사전 조사로 API를 발견하고, 노출된 비밀을 찾고, API 기능을 분석하기
-API와 상호작용하며 퍼징(fuzzing)의 위력을 테스트하기
-다양한 공격을 퍼부어 찾아낸 API 취약점을 악용하기
리뷰(0)
0 / 5.0
리뷰 작성
•
리뷰를 작성하시면 소정의 적립금을 드립니다.
•
도서의 첫번째 리뷰부터 10번째 리뷰까지는 기본 적립금의 2배를 적립해 드리며, 이후 리뷰부터는 기본 적립금이 적립됩니다.
리뷰 혜택 및 유의사항
배송방법

배송은 CJ대한통운(전화 : 1588-1255)을 이용해서 보내드리고 있습니다.

3만원 이상 구매시 무료배송 가능하며, 3만원 미만의 경우 2500원의 배송비가 발생합니다.

배송기간

15시 이전에 입금확인된 주문까지는 당일날 발송하며, 일반적인 경우 다음날 책을 받아보실 수 있습니다.

주말 또는 공휴일이 있거나 시기적으로 배송이 많은 기간인 경우는 지역에 따라 1~2일이 더 소요될 수 있습니다.

주문 후, 5일이 경과해도 책이 도착하지 않는 경우에는 웬디북 고객센터(전화 : 1800-9785)로 전화를 주시거나 고객센터 > 1:1 문의를 통해 문의글을 남겨주시면 확인 후 신속히 조치하도록 하겠습니다.

묶음배송

묶음배송 원하시는 모든 주문서의 상태가 "입금대기" 또는 "결제완료" 상태일 경우에만 처리가 가능하며, 고객센터 > 1:1 문의에서 신청 할 수 있습니다.

반품안내

변심반품의 경우 도서주문일로부터 15일이내에 반품접수가 가능하며, 반품 배송비는 고객님 부담입니다.

부분 반품의 경우, 3만원 이상 주문으로 무료배송 받았으나 일부 상품 반품으로 주문금액이 3만원이 안될 경우, 이전 주문의 배송비를 포함한 왕복 배송비를 부담하셔야 합니다.

반품절차는 고객센터의 반품교환신청 페이지에서 신청을 해주시면 웬디북 고객센터에서 지정택배사에 회수요청을 하고, 방문한 택배기사님을 통해 반품도서를 보내주시면 됩니다.

운송 중 책이 손상되지 않도록 포장을 해주신 후, 포장 겉면에 “반품도서”라고 기재해주시기 바랍니다. 회수된 상품은 요청해주신 환불방법에 따라 적립 또는 환불 진행해드립니다.

(특히 팝업북 등은 조그만 충격에도 책이 손상될 수 있으므로 주의해 주시기 바랍니다.)

• 반품이 불가한 경우
  • 1. 고객에게 책임 있는 사유로 상품(띠지 또는 더스트커버 포함)이 멸실 또는 훼손된 경우
  • 2. CD 나 소프트웨어 포함, 포장이 되어 있는 모든 상품의 포장 개봉
  • 3. 만화책 및 단시간 내에 완독이 가능한 잡지
  • 4. 상품과 함께 발송된 추가사은품이 분실되거나 훼손된 경우
  • 5. 고객의 사용 또는 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우
  • 6. 명시된 반품가능 기한이 지난 경우
  • 7. 세트상품중 일부 반품
교환안내

파본도서 혹은 오배송으로인한 교환은 도서주문일로부터 15일 이내에 신청하셔야 하며 이 경우 배송비는 웬디북에서 부담합니다.

(단, 팝업북과 CD가 세트인 책은 책의 특성상 7일 이내에 해주셔야 합니다.)

교환절차는 고객센터의 반품교환신청 페이지에서 신청을 해주시면 웬디북에서 새 책을 보내드리고 새 책을 받으실 때 교환도서와 맞교환 하시면 됩니다.

교환은 동일도서에 한하며, 다른 도서로 교환은 불가합니다.

운송도중 책이 손상되지 않도록 포장을 해주신 후, 포장 겉면에 “반품도서”라고 기재해주시기 바랍니다.

(특히 팝업북 등은 조그만 충격에도 책이 손상될 수 있으므로 주의해 주시기 바랍니다.)

• 교환이 불가한 경우
  • 1. 고객에게 책임 있는 사유로 상품이 멸실 또는 훼손된 경우
  • 2. 포장 상품의 포장을 해체한 경우
  • 3. 고객의 사용 또는 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우
  • 4. 물품 수령 후, 15일이 경과한 경우
  • 5. 동일상품으로 교환하신 후, 다시 교환하시고자 할 경우 (이 경우에는 환불처리 해드립니다.)
신고하기
신고사유 선택
도서 입고 알림 신청
입고알림 신청하셨습니다.
입고시 {{tel}}로 문자 발송됩니다

바로 확인 하시겠습니까?
예

휴대폰 번호, 이메일 주소는

마이 페이지 > 회원정보수정에서 확인해 주세요.

관심 시리즈 신간 알림 신청
시리즈명:{{ series_name }}
관심 시리즈 신간 입고 알림 신청하셨습니다.
입고시 {{ tel }}로 문자 발송 또는
앱푸시, 이메일 등으로 알려드리겠습니다.

바로 확인 하시겠습니까?
예

휴대폰 번호, 이메일 주소는

마이 페이지 > 회원정보수정에서 확인해 주세요.

입고 알림 수신 방법 변경은

마이 페이지 > 알림 > 알림 설정에서 확인해 주세요.

푸시 알림이 오지 않을 시,

스마트폰 설정 > 알림 > 웬디북 앱 설정을 확인해 주세요

관심 작가 신간 알림 신청
작가명:{{ series_name }}
관심 작가 신간 입고 알림 신청하셨습니다.
입고시 {{ tel }}로 문자 발송 또는
앱푸시, 이메일 등으로 알려드리겠습니다.

바로 확인 하시겠습니까?
예

휴대폰 번호, 이메일 주소는

마이 페이지 > 회원정보수정에서 확인해 주세요.

입고 알림 수신 방법 변경은

마이 페이지 > 알림 > 알림 설정에서 확인해 주세요.

푸시 알림이 오지 않을 시,

스마트폰 설정 > 알림 > 웬디북 앱 설정을 확인해 주세요

{{title}}
{{content}}
{{title}}
{{content}}