이미 소장하고 있다면 판매해 보세요.
|
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에 접근 ____시사점 __요약 19장. 나만의 버그 바운티 찾기 __정찰 ____서브도메인 열거 ____포트 스캐닝 ____스크린샷 ____콘텐츠 발견 ____이전의 버그 __애플리케이션 테스트 ____기술 스택 ____기능 매핑 ____취약점 찾기 __더 나아가기 ____작업 자동화 ____모바일 앱 살펴보기 ____새로운 기능 식별 ____자바 스크립트 파일 추적 ____새로운 기능에 대한 비용 지불 ____기술 학습 __요약 20장. 취약점 보고서 __정책 읽기 __세부 사항 포함 __취약점 재확인 __여러분의 평판 __회사에 대한 존경 표시 __바운티 보상 어필 __요약 |
Peter Yaworski
이진호의 다른 상품
김현민의 다른 상품
|
이 책에서 다루는 내용
■ 인터넷의 작동 방법과 기본 웹 해킹 개념 ■ 공격자가 웹 사이트를 장악하는 방법 ■ 취약점과 관련된 기능을 식별하는 방법 ■ 버그를 찾기 시작할 때 찾아봐야 할 지점 ■ 효과적인 버그 바운티 프로그램 탐색과 취약점 보고서 제출 방법 이 책의 대상 독자 초보 해커를 염두에 두고 작성했다. 웹 개발자, 웹 디자이너, 가정을 꾸리고 있는 부모, 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: 추가자료’에는 해킹 지식을 더욱 폭넓게 확장시키기 위한 추가 자료를 나열했다. 여기에는 온라인 교육, 대중적인 바운티 플랫폼, 추천 블로그 등이 있다. 지은이의 말 공개된 취약점 보고서를 읽고 일부 해커가 수령하는 포상금을 보면 해킹이 쉽고 빠르게 부자가 되는 방법이라고 생각할 수 있다. 하지만 현실은 그렇지 않다. 해킹은 보람을 있을 수 있지만 그 과정에서의 실패를 다룬 이야기는 찾기 힘들다(이 책에서는 예외적으로 개인적인 굉장히 난처했던 경험을 공유할 것이다). 해킹에 성공한 것은 대부분 전해들을 수 있기 때문에 해킹에 관해 비현실적인 기대를 품을 수 있다. 여러분은 굉장히 빠르게 성공할 수도 있다. 그러나 버그를 발견하는 것은 굉장히 어렵기 때문에 계속해서 발견하려고 시도하자. 개발자는 항상 새로운 코드를 작성하며 버그는 항상 프로덕션 환경으로 전달될 것이다. 많이 시도할수록 버그를 탐색하는 과정은 더욱 쉬워질 것이다. 트위터 @yaworsk 계정으로 자유롭게 메세지를 보내고 진행 상황을 알려주기를 바란다. 비록 실패했더라도, 나는 여러분의 이야기를 듣고 싶다. 고군분투하고 있다면 버그를 찾는 일은 외로운 작업일 수 있다. 하지만 서로 축하하는 것은 좋은 일이며, 이 책의 다음 판에 포함시킬 만한 버그를 찾을 수도 있을 것이다. 옮긴이의 말 기업의 서비스 및 제품을 해킹해 취약점을 찾은 해커에게 포상금을 주는 제도인 ‘버그 바운티(bug bounty)’의 대표적인 플랫폼으로 해커원(HackerOne.com)이 있다. 해커원에서는 글로벌 기업들과 제휴를 맺고 웹 취약점을 접수해 심사를 거쳐 포상금을 지급하고 있다. 해커원 사이트에 등록된 버그를 살펴보면 수준 높은 웹 해킹 기술로 취약점을 발견한 사례도 있지만, 개발자들이 예상치 못한 허점을 발견해 두둑한 포상금을 챙겨가는 경우도 볼 수 있다. 이러한 버그를 찾는 것은 생각보다 진입 장벽이 있어 버그 헌팅에 입문한 많은 도전자들이 금방 포기하거나 전혀 소득을 올리지 못한다. 버그를 찾기 위해 가장 중요한 것은 바로 실전 경험과 노하우다. 이러한 실전 경험을 습득하기 위해 많은 시간과 노력을 들여 해커원에 등록된 취약점 분석 보고서를 확인해가며 웹 해킹 기법과 노하우를 배워야 한다. 이 책에서는 버그 바운티에 입문하는 화이트 해커를 위해 대표적인 웹 취약점을 유형별로 포상금을 지급한 취약점 보고 사례로 설명한다. 이 책을 통해 다양한 유형의 취약점에 대한 기본 개념과 함께 실제 취약점을 발견하는 방법을 배울 수 있을 것이다. 또한 이 책은 웹 해킹 학습을 위한 연습용 환경을 다루는 것이 아닌, 실제 기업들이 운영하는 홈페이지에서 취약점을 보고해 포상금을 챙긴 사례를 다룬 책이다. 특히 인터넷에 공개된 수많은 취약점에 대한 설명뿐만 아니라, 취약점을 찾는 과정을 자세히 설명한 유일한 서적일 것이다. 이를 통해 여러분은 취약점을 찾는 과정과, 찾은 후 제보하는 과정 및 포상금을 받는 과정까지 습득하며 버그 헌터로서 성장할 수 있는 기본기를 마련할 수 있을 것이다. 실제 홈페이지의 취약점 발견 과정을 배움으로써 실전 웹 해킹 기술을 습득할 때에도 큰 도움을 줄 것이다. 수년간 활동해온 버그 헌터이자 보안전문가로서 버그 헌팅 입문자에게 이 책을 읽어볼 것을 강력히 추천한다. |
|
이 글을 읽고 있다면, 여러분은 해커와 버그 사냥꾼이 되려는 호기심이 있을 것이다. 이 책이 당신의 인생에 있어 멋진 안내서가 될 것이라고 믿는다. 실제로 버그 포상금이 지급된 다양한 보안 취약점 보고서의 예제가 다수 수록돼 있으며, 저자이자 동료 해커인 피터 야로스키의 유용한 분석과 검토 결과 또한 살펴볼 수 있다. 저자는 여러분의 학습 동반자로서 굉장히 많은 도움을 줄 것이다.
이 책이 중요한 또 다른 이유는 윤리적 해커가 되는 방법을 중점적으로 다루고 있다는 점이다. 습득한 해킹 기법은 실전에 활용할 수 있는 강력한 기술이 돼 줄 것이다. 가장 성공적인 해커는 해킹 중에 합법과 불법 사이의 경계를 구분할 줄 안다. 다수의 해커는 해킹으로 파괴적인 행동을 할 수도 있으며 빠르게 돈을 벌기 위한 시도를 할 수 있다. 그러나 인터넷을 안전하게 만들고 전 세계의 회사들과 협력해 돈을 받을 수 있다고 상상해보자. 여러분은 수십억의 사람과 그들의 데이터를 안전하게 유지할 수 있는 잠재력을 갖고 있다. 이것이 바로 우리가 바라는 바다. 내가 처음 해킹을 시작할 때 이러한 유용한 자료가 있었다면 더 좋았을 것이다. 피터의 책은 흥미진진하며 해킹에 입문하는 데 필요한 정보를 다루고 있다. 재밌게 읽고 행복한 해킹을 하길 바란다! 그리고 책임감을 갖고 해킹하는 것을 잊어서는 안 된다. - 미힐 프린스(Michiel Prins)와 요버트 아브마(Jobert Abma) (해커원의 공동 창립자) |