책 소개
요약
취약점을 발견해 제보하고 포상금을 받는 제도인 버그 바운티(bug bounty)에 관한 책이다. 버그 바운티로 기업은 효율적으로 취약점을 찾을 수 있고, 해커는 금전적인 보상을 받을 수 있어 기업과 해커가 상생할 수 있다. 입문자는 실제 기업이 운영하는 서비스를 대상으로 버그를 발견하는 기술적인 경험이 부족할 수 있다. 버그 헌팅 경력자 또한 시간적 제약과 제한된 자료로 인해 다른 제보자들이 신고했던 버그와 관련된 정보를 얻기 쉽지 않다. 이러한 요구를 만족할 수 있도록 다양한 실전 버그 바운티 사례를 소개하는 한편, 취약점을 발견하고 기업에 제보하는 일련의 과정을 알려준다. 기업의 보안 담당자뿐만 아니라, 버그 바운티에 참여하는 화이트해커 모두에게 도움이 될 것이다.
추천의 글
이 글을 읽고 있다면, 여러분은 해커와 버그 사냥꾼이 되려는 호기심이 있을 것이다. 이 책이 당신의 인생에 있어 멋진 안내서가 될 것이라고 믿는다. 실제로 버그 포상금이 지급된 다양한 보안 취약점 보고서의 예제가 다수 수록돼 있으며, 저자이자 동료 해커인 피터 야로스키의 유용한 분석과 검토 결과 또한 살펴볼 수 있다. 저자는 여러분의 학습 동반자로서 굉장히 많은 도움을 줄 것이다. 이 책이 중요한 또 다른 이유는 윤리적 해커가 되는 방법을 중점적으로 다루고 있다는 점이다. 습득한 해킹 기법은 실전에 활용할 수 있는 강력한 기술이 돼 줄 것이다. 가장 성공적인 해커는 해킹 중에 합법과 불법 사이의 경계를 구분할 줄 안다. 다수의 해커는 해킹으로 파괴적인 행동을 할 수도 있으며 빠르게 돈을 벌기 위한 시도를 할 수 있다. 그러나 인터넷을 안전하게 만들고 전 세계의 회사들과 협력해 돈을 받을 수 있다고 상상해보자. 여러분은 수십억의 사람과 그들의 데이터를 안전하게 유지할 수 있는 잠재력을 갖고 있다. 이것이 바로 우리가 바라는 바다. 내가 처음 해킹을 시작할 때 이러한 유용한 자료가 있었다면 더 좋았을 것이다. 피터의 책은 흥미진진하며 해킹에 입문하는 데 필요한 정보를 다루고 있다. 재밌게 읽고 행복한 해킹을 하길 바란다! 그리고 책임감을 갖고 해킹하는 것을 잊어서는 안 된다.
— 해커원의 공동 창립자, 미힐 프린스(Michiel Prins)와 요버트 아브마(Jobert Abma)
이 책에서 다루는 내용
■ 인터넷의 작동 방법과 기본 웹 해킹 개념
■ 공격자가 웹 사이트를 장악하는 방법
■ 취약점과 관련된 기능을 식별하는 방법
■ 버그를 찾기 시작할 때 찾아봐야 할 지점
■ 효과적인 버그 바운티 프로그램 탐색과 취약점 보고서 제출 방법
이 책의 대상 독자
초보 해커를 염두에 두고 작성했다. 웹 개발자, 웹 디자이너, 가정을 꾸리고 있는 부모, 10살짜리 아이 또는 75세 퇴직자도 상관없다. 일부 프로그래밍 경험과 웹 기술에 익숙하면 도움이 될 수 있다. HTML(Hypertext Markup Language)이 구조를 정의하는 방법과 CSS(Cascading Style Sheets)가 모양을 정의하는 방법, 자바스크립트가 동적으로 상호작용하는 방법을 이해하면 취약점을 발견하고 발견한 버그의 파급력을 인지하는 데 도움될 것이다. 애플리케이션의 로직과 관련된 취약점을 발견하고 개발자가 실수를 저지르는 방법과 관련된 브레인스토밍을 할 때 프로그래밍 방법을 아는 것이 도움이 된다. 프로그래머 업계에 종사했거나 구현 방법을 추측할 수 있거나 (가능한 경우) 코드를 읽을 수 있다면 성공 확률이 높아진다.
이 책의 구성
‘1장: 버그 바운티 기본 사항’은 취약점과 버그 바운티가 무엇이며 클라이언트와 서버의 차이점을 설명한다. 또한 HTTP 요청, 응답 및 방법을 포함해 인터넷 작동 방식과 HTTP 상태 비저장(stateless)을 설명한다.
‘2장: 오픈 리디렉션’은 특정 도메인의 신뢰를 악용해 사용자를 다른 도메인으로 리디렉션하는 공격을 다룬다.
‘3장: HTTP 파라미터 오염’은 공격자가 HTTP 요청을 처리하는 방법을 다루며, 취약한 대상 웹 사이트에서 신뢰하지만 예기치 않은 동작을 유발하는 추가 파라미터를 주입한다.
‘4장: CSRF(Cross Site Request Forgery)’는 공격자가 악성 웹 사이트를 사용해 공격 대상 브라우저가 다른 웹 사이트에 HTTP 요청을 보내도록 하는 방법을 다룬다.
‘5장: HTML 인젝션(injection) 및 콘텐츠 스푸핑(spoofing)’은 악성 사용자가 자체적으로 설계한 HTML 요소를 공격 대상 사이트의 웹 페이지에 주입하는 방법을 설명한다.
‘6장: 캐리지 리턴 라인피드(Carriage Return Line Feed) 인젝션’은 공격자가 인코딩한 문자를 HTTP 메시지에 삽입해 서버, 프록시 및 브라우저가 문자 해석하는 방식을 변경하는 방법을 보여준다.
‘7장: 크로스 사이트 스크립팅(Cross Site Scripting, XSS)’은 공격자가 사이트에서 자체 JavaScript 코드를 실행하기 위해 사용자 입력을 검증하지 않는 사이트를 악용하는 방법을 설명한다.
‘8장: 템플릿 인젝션’은 템플릿에서 사용하는 사이트에서 사용자 입력을 검증하지 않을 때 공격자가 템플릿 엔진을 악용하는 방법을 설명한다. 이 장에는 클라이언트 및 서버 측 사례가 수록돼 있다.
‘9장: SQL 인젝션’은 데이터베이스 기반 사이트의 취약점으로 인해 공격자가 사이트 데이터베이스를 대상으로 예상 밖의 쿼리를 전달하거나 공격하는 방법을 설명한다.
‘10장: SSRF(Server Side Request Forgery)’는 침입자가 서버가 의도하지 않은 네트워크 요청을 수행하게 하는 방법을 설명한다.
‘11장: XML 외부 엔티티’는 공격자가 애플리케이션이 XML 입력의 구문 분석을 하고 입력 값에 외부 엔티티를 포함시켜 처리하는 방식을 악용하는 방법을 보여준다.
‘12장: 원격 코드 실행’은 공격자가 서버나 애플리케이션을 조작해 공격자의 코드를 실행하는 방법을 설명한다.
‘13장: 메모리 취약점’은 공격자가 애플리케이션의 메모리 관리를 조작해 공격자가 삽입한 명령 실행 및 의도하지 않은 동작을 일으키는 방법을 설명한다.
‘14장: 서브도메인 인수’는 공격자가 합법적인 도메인을 대신해 서브도메인을 제어할 수 있는 경우 서브도메인을 장악하는 방법을 보여준다.
‘15장: 레이스 컨디션(race condition)’에서는 공격자가 프로세스가 실행될 때 유효하지 않은 초기 조건을 기반으로 사이트의 프로세스가 완료될 때 상황을 조작하는 방법을 보여준다.
‘16장: 안전하지 않은 직접 객체 참조’는 공격자가 접근할 수 없는 파일, 데이터베이스 레코드 또는 계정과 같은 개체에 대한 참조를 접근하거나 수정할 수 있을 때 발생하는 취약점을 다룬다.
‘17장: OAuth 취약점’은 웹, 모바일 및 데스크톱 애플리케이션의 보안 권한을 단순화하고 표준화하도록 설계된 OAuth 프로토콜 구현 상의 버그를 다룬다.
‘18장: 애플리케이션 로직 및 구성 취약점’은 공격자가 코딩 로직 또는 애플리케이션 구성 실수를 조작해서 사이트에서 의도하지 않은 동작을 수행해 취약점을 유발하는 방법을 설명한다.
‘19장: 나만의 버그 바운티 찾기’는 저자의 경험과 방법론에 따라 취약점을 찾는 위치와 방법에 대한 팁을 알려준다. 이 장은 사이트 해킹에 대한 단계별 가이드가 아니다.
‘20장: 취약점 보고하기’는 버그 바운티 프로그램에서 버그를 거부하지 않도록 신뢰할 수 있고 유용한 취약점 보고서를 작성하는 방법을 설명한다.
‘부록 A: 도구’는 웹 트래픽 프록시, 하위 도메인 열거, 스크린샷 등을 포함하여 해킹을 위해 설계된 대중적인 도구를 설명한다.
‘부록 B: 추가자료’에는 해킹 지식을 더욱 폭넓게 확장시키기 위한 추가 자료를 나열했다. 여기에는 온라인 교육, 대중적인 바운티 플랫폼, 추천 블로그 등이 있다.
목차
목차
- 1장. 버그 바운티 기본 사항
- 취약점과 버그 바운티
- 클라이언트와 서버
- 웹 사이트 방문 시 발생하는 작업
- 1단계: 도메인 이름 추출
- 2단계: IP 주소 확인
- 3단계: TCP 연결 설정
- 4단계: HTTP 요청 보내기
- 5단계: 서버 응답
- 6단계: 응답 렌더링
- HTTP 요청
- 요청 메서드
- HTTP 상태 비저장
- 요약
- 2장. 오픈 리디렉션
- 오픈 리디렉션 작동 방식
- Shopify 테마 설치 오픈 리디렉션
- 시사점
- Shopify 로그인 열기 리디렉션
- 시사점
- 해커원 진입 페이지 리디렉션
- 시사점
- 요약
- 3장. HTTP 파라미터 오염
- 서버 측 HPP
- 클라이언트 측 HPP
- 해커원 소셜 공유 버튼
- 시사점
- 트위터 구독 취소 알림
- 시사점
- 트위터 웹 인텐트
- 시사점
- 요약
- 4장. CSRF
- 인증
- GET 요청 기반 CSRF
- POST 요청 기반 CSRF
- CSRF 공격에 대한 방어
- Shopify 트위터 연결 끊기
- 시사점
- Instacart 사용자 배송 지역 조작
- 시사점
- Badoo 전체 계정 장악
- 시사점
- 요약
- 5장. HTML 인젝션과 콘텐츠 스푸핑
- 문자 인코딩을 통한 코인 베이스 주석 주입
- 시사점
- 해커원에서 의도하지 않은 HTML 포함
- 시사점
- 해커원의 의도하지 않은 HTML 포함 수정 우회
- 시사점
- 위드인 시큐리티 보안 콘텐츠 스푸핑
- 시사점
- 요약
- 문자 인코딩을 통한 코인 베이스 주석 주입
- 6장. 캐리지 리턴 라인피드 인젝션
- HTTP 요청 밀수
- v.shopify.com 응답 분할
- 시사점
- 트위터 HTTP 응답 분할
- 시사점
- 요약
- 7장. 크로스사이트 스크립팅
- XSS의 종류
- Shopify 도매
- 시사점
- Shopify 통화 형식
- 시사점
- 야후! 메일 저장 XSS
- 시사점
- 구글 이미지 검색
- 시사점
- Google 태그 관리자에 저장 XSS
- 시사점
- 유나이티드 항공 XSS
- 시사점
- 요약
- 8장. 템플릿 인젝션
- 서버 측 템플릿 인젝션
- 클라이언트 측 템플릿 인젝션
- 우버 앵귤러JS 템플릿 인젝션
- 시사점
- 우버 플라스크 진자2 템플릿 인젝션
- 시사점
- 레일즈 동적 렌더링
- 시사점
- 유니큰 Smarty 템플릿 인젝션
- 시사점
- 요약
- 9장. SQL 인젝션
- SQL 데이터베이스
- SQLi 보안 대책
- 야후! 스포츠 블라인드 SQLi
- 시사점
- 우버 블라인드 SQLi
- 시사점
- 드루팔 SQLi
- 시사점
- 요약
- 10장. 서버 측 요청 위조
- SSRF 영향력 시연
- GET과 POST 요청 호출
- 블라인드 SSRF 수행
- SSRF 응답 기반 사용자 공격
- ESEA SSRF와 AWS 메타데이터 쿼리
- 시사점
- Google 내부 DNS SSRF
- 시사점
- 웹후크를 사용한 내부 포트 스캔
- 시사점
- 요약
- 11장. XML 외부 엔티티
- 확장 가능한 마크업 언어
- 문서 유형 정의
- XML 엔티티
- XXE 공격의 작동 방식
- 구글 읽기 취약점
- 시사점
- 마이크로소프트 워드를 이용한 페이스북 XXE
- 시사점
- Wikiloc XXE
- 시사점
- 요약
- 확장 가능한 마크업 언어
- 12장. 원격 코드 실행
- 셸 명령 실행
- 실행 기능
- 원격 코드 실행 권한 상승을 위한 전략
- Polyvore ImageMagick
- 시사점
- facebooksearch.algolia.com의 Algolia RCE
- 시사점
- SSH를 통한 RCE
- 시사점
- 요약
- 13장. 메모리 취약점
- 버퍼 오버플로
- 경계를 벗어난 읽기
- PHP ftp_genlist() 정수 오버플로
- 시사점
- 파이썬 Hotshot 모듈
- 시사점
- libcurl 경계를 벗어난 읽기
- 시사점
- 요약
- 14장. 서브도메인 인수
- 도메인 네임 이해
- 서브도메인 인수 방법
- Ubiquiti 서브도메인 인수
- 시사점
- 젠데스크를 지정하는 Scan.me
- 시사점
- Windsor 서브도메인 인수
- 시사점
- Snapchat Fastly 인수
- 시사점
- Legal Robot 인수
- 시사점
- 우버 센드그리드 메일 인수
- 시사점
- 요약
- 15장. 레이스 컨디션
- 해커원 초대 다중 수락
- 시사점
- Keybase 한도 초과 초대
- 시사점
- 해커원 지급 레이스 컨디션
- 시사점
- Shopify 파트너 레이스 컨디션
- 시사점
- 요약
- 해커원 초대 다중 수락
- 16장. 안전하지 않은 직접 객체 참조
- 간단한 IDOR 찾기
- 더 복잡한 IDOR 찾기
- Binary.com 권한 상승
- 시사점
- Moneybird 앱 생성
- 시사점
- Twitter Mopub API 탈취
- 시사점
- ACME 고객 정보 노출
- 시사점
- 요약
- 17장. OAuth 취약점
- OAuth 작업 흐름
- 슬랙 OAuth 토큰 훔치기
- 시사점
- 디폴트 비밀번호로 인증 전달
- 시사점
- 마이크로소프트 로그인 토큰 도용
- 시사점
- 페이스북 공식 액세스 토큰 전환
- 시사점
- 요약
- 18장. 애플리케이션 로직과 구성 취약점
- Shopify 관리자 권한 우회
- 시사점
- 트위터 계정 보호 우회
- 시사점
- 해커원 시그널 조작
- 시사점
- 해커원의 잘못된 S3 버킷 권한
- 시사점
- GitLab 이중 인증 우회
- 시사점
- 야후! PHP 정보 공개
- 시사점
- 해커원 Hacktivity 투표
- 시사점
- PornHub의 Memcache에 접근
- 시사점
- 요약
- Shopify 관리자 권한 우회
- 19장. 나만의 버그 바운티 찾기
- 정찰
- 서브도메인 열거
- 포트 스캐닝
- 스크린샷
- 콘텐츠 발견
- 이전의 버그
- 애플리케이션 테스트
- 기술 스택
- 기능 매핑
- 취약점 찾기
- 더 나아가기
- 작업 자동화
- 모바일 앱 살펴보기
- 새로운 기능 식별
- 자바 스크립트 파일 추적
- 새로운 기능에 대한 비용 지불
- 기술 학습
- 요약
- 정찰
- 20장. 취약점 보고서
- 정책 읽기
- 세부 사항 포함
- 취약점 재확인
- 여러분의 평판
- 회사에 대한 존경 표시
- 바운티 보상 어필
- 요약
관련 블로그 글
효율적인 웹 해킹 실무 가이드 <실전 버그 바운티>
버그 바운티(bug bounty)란 취약점을 발견해 제보하고 포상금을 받는 제도다.
기업은 효율적으로 취약점을 찾을 수 있고,
해커는 금전적인 보상을 받을 수 있어 기업과 해커가 상생할 수 있다.
지난 7월, 구글은 앞으로 10년 동안 오픈소스를 위한 버그 바운티에 집중하겠다고 발표했다.
인터넷 버그 바운티와 같은 기존 플랫폼의 확대를 돕고,
추가 플랫폼을 마련해 개발자들이 악성 코드를 모르고 사용하는 일을 줄여나갈 계획이다.
이를 위해 이미 지원하고 있는 오픈소스 버그 바운티 프로그램들의 지원책을 늘리고,
대상이 되는 오픈소스 요소들도 증대시키겠다고 한다.
구글은 다음 10년을 예측하며
“인공지능과 머신러닝을 활용한 코드 분석 및 취약점 탐지가 더 활성화 될 것”이라고 발표했다.
버그바운티 플랫폼인 버그크라우드(BugCrowd) 역시
“해커의 머릿속 2020(Inside the Mind of a Hacker 2020)”이라는 보고서로
“78%의 해커들이 인공지능을 통한 코드 분석 덕분에 계속해서 주도권을 쥘 수 있을 것”이라고 밝힌 바 있다.
구글 VRP 관리자인 얀 켈러(Jan Keller)는
“이제 버그바운티가 중요한 투자처라는 건 주요 기업들이 모두 깨닫고 있다”며
“취약점 익스플로잇을 통한 침해 공격이 하루에도 수천, 수만 번씩 일어나는 상황에서
취약점 연구를 활성화시키는 건 너무나 당연한 일”이라고 했다.
다양한 유형의 웹 취약점을 이해하는 데 도움이 될 만한 참고서인 이 책에서는
취약점을 찾는 방법, 보고 방법, 포상금을 받는 방법과 방어 코드를 작성하는 방법 등을 배운다.
또한 광범위한 윤리적 해킹이나 보안 취약점을 확실하게 발견하고
이를 애플리케이션 소유자에게 보고하는 절차를 알려준다.
성공적인 사례만을 다루는 게 아니라
저자가 겪은 실수와 교훈에 관해서도 다루고 있기 때문에
웹을 좀 더 안전하게 만들기 위한 첫걸음을 내딛을 수 있을 것이다.
*
이 책이 당신의 인생에 있어 멋진 안내서가 될 것이라고 믿는다.
실제로 버그 포상금이 지급된 다양한 보안 취약점 보고서의 예제가 다수 수록돼 있으며,
저자이자 동료 해커인 피터 야로스키의 유용한 분석과 검토 결과 또한 살펴볼 수 있다.
여러분은 수십억의 사람과 그들의 데이터를 안전하게 유지할 수 있는 잠재력을 갖고 있다.
이것이 바로 우리가 바라는 바다.
내가 처음 해킹을 시작할 때 이러한 유용한 자료가 있었다면 더 좋았을 것이다.
피터의 책은 흥미진진하며 해킹에 입문하는 데 필요한 정보를 다루고 있다.
재밌게 읽고 행복한 해킹을 하길 바란다!
그리고 책임감을 갖고 해킹하는 것을 잊어서는 안 된다.
미힐 프린스(Michiel Prins), 요버트 아브마(Jobert Abma)
해커원의 공동 창립자
ㅣ참고 기사 : 구글, “앞으로 10년은 오픈소스 버그바운티에 집중할 것”
Editor. 김다예(dykim@acornpub.co.kr)
실전 버그 바운티는 아래 인터넷서점에서 만나실 수 있습니다.
- YES24, 교보문고, 알라딘, 인터파크
크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.