이미 소장하고 있다면 판매해 보세요.
|
지은이·감수자·옮긴이 소개 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
한선용의 다른 상품
|
예제 1-2는 트위터 웹 서버가 성공적인 인증 요청에 302 응답을 보낸 결과입니다. set-cookie 헤더의 auth_token은 hAPI_hacker라는 트위터 계정과 연결된 데이터에 대한 접근을 승인합니다. / 웹 서버는 요청에 응답할 때 응답 메시지와 함께 상태 코드를 보냅니다. 응답 코드는 웹 서버가 요청을 어떻게 처리했는지 나타내는 방법이며, 간단히 말해 클라이언트가 데이터에 접근할 수 있는지 없는지 나타냅니다. 또한 요청한 자원이 존재하지 않거나, 웹 서버에 문제가 있거나, 요청한 자원이 다른 위치로 이동했음을 나타내기도 합니다.
--- p.22 BOLA(broken object level authorization, 객체 수준 권한 부여 결함)는 API에서 가장 흔한 취약점 중 하나입니다. BOLA 취약점은 API 공급자가 접근 권한이 없는 데이터에 대한 접근을 허용할 때 발생합니다. API 엔드포인트에 객체 수준 접근 제어가 없다면 사용자가 권한 있는 데이터에만 접근하도록 제한할 수 없으므로 사용자 A가 사용자 B의 데이터를 요청할 수 있게 됩니다. / API는 이름이나 숫자로 일종의 값을 만들어 객체 식별에 사용합니다. 이런 객체 ID를 발견하면 인증되지 않은 상태, 또는 다른 사용자로 인증된 상태에서 그 자원에 접근할 수 있는지 확인해봐야 합니다. 예를 들어 클라우드 스트라이프(Cloud Strife)라는 사용자가 있다고 합시다. 클라우드가 https://bestgame.com/api/v3/users?id=5501에 GET 요청을 보내고 다음과 같은 응답을 받았습니다. --- p.63 버프 스위트(Burp Suite)는 포트스위거(PortSwigger)가 개발하고 관리하는 훌륭한 웹 애플리케이션 테스트 도구 모음입니다. 버프 스위트는 API 요청 캡처, 웹 애플리케이션 크롤링, API 퍼징 등 다양한 기능을 제공하므로 웹 애플리케이션 사이버 보안 전문가나 버그 현상금 사냥꾼, API 전문가라면 버프 스위트를 사용하는 법을 익혀야 합니다. (…) OWASP 커뮤니티 페이지에는 퍼징(fuzzing)을 ‘자동 버그 찾기’라고 표현한 글이 있습니다. 퍼징은 HTTP 요청에 다양한 타입의 입력이나 데이터를 보내 애플리케이션이 예상하지 못한 방법으로 응답하게 만들어 취약점을 드러냅니다. 예를 들어 API를 공격하다가 데이터를 보낼 수 있다는 걸 깨달았다면 여러 가지 SQL 명령어 전송을 시도할 수 있습니다. 공급자가 이런 입력에서 유효성 검사를 하지 않는다면 SQL 데이터베이스가 사용 중이라는 응답을 받을 수 있습니다. --- p.85 DVGA(Damn Vulnerable GraphQL Application)는 의도적으로 취약하게 만든 그래프QL 애플리케이션이며 돌레브 파르히(Dolev Farhi)와 코너 매키넌(Connor McKinnon)이 개발했습니다. 그래프QL의 인기가 나날이 올라가고 페이스북, 넷플릭스, AWS, IBM 같은 기업에서도 채택하고 있으므로 이 애플리케이션을 선택했습니다. 또한 그래프QL IDE가 얼마나 활발히 개발되는지 알면 놀랄 겁니다. 그래피클은 가장 널리 쓰이는 그래프QL IDE 중 하나입니다. --- pp.128~129 Nmap은 포트 스캔, 취약점 검색, 서비스 열거, 실제 호스트 발견 등을 돕는 강력한 도구입니다. (…) API를 발견하려는 목적인 경우 일반 탐지와 전체 포트 두 가지 방식으로 Nmap 스캔을 사용해야 합니다. Nmap의 일반 탐지 스캔은 대상에 대해 기본 스크립트와 서비스 열거를 실행하고 나중에 검토할 수 있도록 결과를 세 가지 형식으로 저장합니다. XML로 저장하려면 -oX를, Nmap으로 저장하려면 -oN을, grep으로 가공할 수 있는 형태로 저장하려면 -oG를, 세 가지 형식을 모두 저장하려면 -oA를 사용합니다. --- p.156 crAPI 인증 페이지로 돌아가 인증 절차를 공격해봅시다. crAPI의 인증 절차는 계정 등록, 비밀번호 리셋, 로그인 세 부분으로 이루어져 있습니다. 이 세 부분을 모두 철저히 테스트해야 합니다. (…) 버프 스위트가 열려 있고 폭시프록시가 버프 스위트로 트래픽을 가로채도록 설정되어 있는지 확인하십시오. 그리고 crAPI 공급자로 전달되는 요청을 가로채서 전달합니다. 이메일 주소와 비밀번호를 정확히 입력했다면 HTTP 200 응답과 소지자 토큰을 받습니다. / 지금쯤 소지자 토큰의 패턴이 눈에 보일 겁니다. 토큰은 마침표로 구분된 세 부분이며 첫 번째와 두 번째는 ey로 시작합니다. https://jwt.io나 jwt_tool을 사용해 JWT를 분석합니다. 그림 8-14는 JWT.io의 디버거 화면입니다. --- p.222 |
|
칼리 리눅스 실습과 함께 배우는 차세대 웹 보안 취약점 정복
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 취약점을 악용하기 |
|
API의 중요성이 점점 높아지는 최근 상황에서 API 보안과 테스팅의 거의 모든 것을 담은 책이라고 할 수 있습니다. 실습 위주로 구성되어 있어서 API 관련 기술을 효과적으로 습득하고 실무에 쉽게 활용할 수 있는 책입니다. - 최만균 (『디지털 트윈 개발 및 클라우드 배포』, 『어반 컴퓨팅』, 『사이버 보안』 역자)
|
|
책 제목 그대로 API를 해킹하는 방법을 정확히 다룹니다. 기본적인 정의에서 시작해 널리 알려진 API 약점 및 해킹 모범 사례, 그리고 그 배경 이론까지 망라하므로 공격자의 마인드셋을 갖추고 읽으면 좋습니다. 책은 여러 도구의 소개와 간단한 맛보기로 시작해, API 퍼징에서 복잡한 접근 제어 악용에 이르기까지 모든 걸 아주 효과적이고 간결하게 설명합니다. 디테일한 랩 실습, 팁과 트릭, 실무 예제로 무장한 이 책은 워크숍 과정을 완전히 책 한 권에 모두 넣었다고 해도 과언이 아닙니다. - 에레즈 얄론(Erez Yalon) (체크마크스(Checkmarx) 보안 연구 부장, OWASP API 보안 프로젝트 리더)
|
|
코리 볼은 API의 수명 주기를 생생하게 안내합니다. 이 책을 읽으면 호기심을 느낄 뿐만 아니라, 새로 배운 것을 시험해보고 싶어 안절부절못하게 될 겁니다. 개념, 예제, 도구 소개부터 세부 사항 시연에 이르기까지 빠짐없이 설명합니다. 이 책은 API 해킹의 왕도이므로 개발-보안-운영의 방법론을 진지하게 받아들이는 사람이라면 누구든 이 책을 가까이해야 합니다. - 크리스 로버츠(Chris Roberts) (vCISO 그룹 에토패스(Ethopass)의 전략 고문)
|
|
이 책은 침투 테스트에 입문하려는 사람에게 대단히 유용합니다. 특히 많은 최신 웹 애플리케이션의 약점이 된 API 보안 테스트를 시작할 수 있는 도구를 제공합니다. 또한 침투 싸움에서 승리하기 위한 유용한 자동화 팁이나 보안 우회 기법도 다양하게 설명하므로 경험 많은 보안 전문가라도 이 책에서 많은 것을 얻을 수 있을 겁니다. - 비키 리(Vickie Li) (『Bug Bounty Bootcamp』 저자)
|
|
이 책은 아직 자세히 알려지지 않은 API 해킹이라는 주제의 문을 열어줍니다. 가장 중요한 접근 제어 문제를 강조하여 설명하므로 API 보안의 모든 걸 이해할 수 있고, 큰 상금과 명예를 얻을 수도 있으며, 규모와 관계없이 모든 조직의 API 보안을 전체적으로 향상할 수 있습니다. - 아이넌 슈케디(Inon Shkedy) (트레이서블 AI(Traceable AI) 보안 연구원, OWASP API 보안 프로젝트 리더)
|
|
인터넷에는 사이버 보안에서 생각할 수 있는 모든 주제에 대한 정보가 가득하지만, 그럼에도 API 침투 테스트를 확실하게 성공하는 건 쉽지 않습니다. 이 책은 이런 수요를 완전히 만족시킵니다. 사이버 보안 분야의 초보자뿐만 아니라 경험 많은 전문가도 이 책의 도움을 받을 수 있습니다. - 크리스티 블라드(Cristi Vlad) (사이버 보안 분석가이자 침투 테스터)
|
|
API 로직의 결함은 사실상 제로 데이 취약점이며, 각 취약점은 API마다 다르게 나타납니다. 제대로 된 API 보안 테스트는 연속적이어야 하고 포괄적이어야 합니다. 1년에 한두 번 테스트하는 정도로는 새로운 위협을 방어할 수 없습니다. API 취약점을 발견하려면 새로운 기술, 새로운 도구, 새로운 접근법이 필요합니다. 세계는 그 어느 때보다 『API 해킹의 모든 것』을 필요로 합니다. - 댄 바라오나(Dan Barahona) (APIsec.ai 최고 전략 책임자)
|