Foreword |
|
xvii | |
|
|
Acknowledgments |
|
xix | |
Introduction |
|
xxi | |
Who Should Read This Book |
|
xxii | |
How to Read This Book |
|
xxii | |
What's in This Book |
|
xxiii | |
A Disclaimer About Hacking |
|
xxv | |
|
|
1 | (10) |
|
Vulnerabilities and Bug Bounties |
|
|
2 | (1) |
|
|
2 | (1) |
|
What Happens When You Visit a Website |
|
|
3 | (4) |
|
Step 1 Extracting the Domain Name |
|
|
3 | (1) |
|
Step 2 Resolving an IP Address |
|
|
3 | (1) |
|
Step 3 Establishing a TCP Connection |
|
|
4 | (1) |
|
Step 4 Sending an HTTP Request |
|
|
4 | (1) |
|
|
5 | (1) |
|
Step 6 Rendering the Response |
|
|
6 | (1) |
|
|
7 | (2) |
|
|
7 | (1) |
|
|
8 | (1) |
|
|
9 | (2) |
|
|
11 | (8) |
|
|
12 | (1) |
|
Shopify Theme Install Open Redirect |
|
|
13 | (1) |
|
|
14 | (1) |
|
Shopify Login Open Redirect |
|
|
14 | (1) |
|
|
15 | (1) |
|
HackerOne Interstitial Redirect |
|
|
15 | (2) |
|
|
16 | (1) |
|
|
17 | (2) |
|
3 HTTP Parameter Pollution |
|
|
19 | (10) |
|
|
20 | (2) |
|
|
22 | (1) |
|
HackerOne Social Sharing Buttons |
|
|
23 | (1) |
|
|
24 | (1) |
|
Twitter Unsubscribe Notifications |
|
|
24 | (1) |
|
|
25 | (1) |
|
|
25 | (2) |
|
|
27 | (1) |
|
|
27 | (2) |
|
4 Cross-Site Request Forgery |
|
|
29 | (12) |
|
|
30 | (1) |
|
|
31 | (1) |
|
|
32 | (2) |
|
Defenses Against CSRF Attacks |
|
|
34 | (2) |
|
Shopify Twitter Disconnect |
|
|
36 | (1) |
|
|
37 | (1) |
|
Change Users Instacart Zones |
|
|
37 | (1) |
|
|
38 | (1) |
|
Badoo Full Account Takeover |
|
|
38 | (2) |
|
|
40 | (1) |
|
|
40 | (1) |
|
5 Html Injection And Content Spoofing |
|
|
41 | (8) |
|
Coinbase Comment Injection Through Character Encoding |
|
|
42 | (2) |
|
|
44 | (1) |
|
HackerOne Unintended HTML Inclusion |
|
|
44 | (2) |
|
|
46 | (1) |
|
HackerOne Unintended HTML Include Fix Bypass |
|
|
46 | (1) |
|
|
47 | (1) |
|
Within Security Content Spoofing |
|
|
47 | (1) |
|
|
47 | (1) |
|
|
48 | (1) |
|
6 Carriage Return Line Feed Injection |
|
|
49 | (6) |
|
|
50 | (1) |
|
v.shopify.com Response Splitting |
|
|
51 | (1) |
|
|
52 | (1) |
|
Twitter HTTP Response Splitting |
|
|
52 | (2) |
|
|
54 | (1) |
|
|
54 | (1) |
|
|
55 | (16) |
|
|
58 | (3) |
|
|
61 | (1) |
|
|
62 | (1) |
|
Shopify Currency Formatting |
|
|
62 | (1) |
|
|
63 | (1) |
|
|
63 | (2) |
|
|
65 | (1) |
|
|
65 | (1) |
|
|
66 | (1) |
|
Google Tag Manager Stored XSS |
|
|
66 | (1) |
|
|
67 | (1) |
|
|
67 | (3) |
|
|
70 | (1) |
|
|
70 | (1) |
|
|
71 | (10) |
|
Server-Side Template Injections |
|
|
72 | (1) |
|
Client-Side Template Injections |
|
|
72 | (1) |
|
Uber AngularJS Template Injection |
|
|
73 | (1) |
|
|
74 | (1) |
|
Uber Flask Jinja2 Template Injection |
|
|
74 | (2) |
|
|
76 | (1) |
|
|
76 | (2) |
|
|
77 | (1) |
|
Unikrn Smarty Template Injection |
|
|
78 | (2) |
|
|
80 | (1) |
|
|
80 | (1) |
|
|
81 | (14) |
|
|
82 | (1) |
|
Countermeasures Against SQLi |
|
|
83 | (1) |
|
|
84 | (3) |
|
|
87 | (1) |
|
|
87 | (3) |
|
|
90 | (1) |
|
|
90 | (3) |
|
|
93 | (1) |
|
|
93 | (2) |
|
10 Server-Side Request Forgery |
|
|
95 | (12) |
|
Demonstrating the Impact of Server-Side Request Forgery |
|
|
96 | (1) |
|
Invoking GET vs. POST Requests |
|
|
97 | (1) |
|
|
97 | (1) |
|
Attacking Users with SSRF Responses |
|
|
98 | (1) |
|
ESEA SSRF and Querying AWS Metadata |
|
|
98 | (2) |
|
|
100 | (1) |
|
|
100 | (4) |
|
|
104 | (1) |
|
Internal Port Scanning Using Webhooks |
|
|
104 | (1) |
|
|
105 | (1) |
|
|
105 | (2) |
|
|
107 | (12) |
|
Extensible Markup Language |
|
|
107 | (1) |
|
Document Type Definitions |
|
|
108 | (2) |
|
|
110 | (1) |
|
|
111 | (1) |
|
|
112 | (1) |
|
|
112 | (1) |
|
Facebook XXE with Microsoft Word |
|
|
112 | (3) |
|
|
114 | (1) |
|
|
115 | (2) |
|
|
117 | (1) |
|
|
117 | (2) |
|
|
119 | (10) |
|
|
119 | (2) |
|
|
121 | (1) |
|
Strategies for Escalating Remote Code Execution |
|
|
122 | (1) |
|
|
123 | (2) |
|
|
125 | (1) |
|
Algolia RCE on facebooksearch.algolia.com |
|
|
125 | (2) |
|
|
127 | (1) |
|
|
127 | (1) |
|
|
128 | (1) |
|
|
128 | (1) |
|
13 Memory Vulnerabilities |
|
|
129 | (10) |
|
|
130 | (3) |
|
|
133 | (1) |
|
PHP ftp_genlist() Integer Overflow |
|
|
134 | (1) |
|
|
134 | (1) |
|
|
135 | (1) |
|
|
135 | (1) |
|
Libcurl Read Out of Bounds |
|
|
136 | (1) |
|
|
136 | (1) |
|
|
136 | (3) |
|
|
139 | (10) |
|
Understanding Domain Names |
|
|
139 | (1) |
|
How Subdomain Takeovers Work |
|
|
140 | (1) |
|
Ubiquiti Subdomain Takeover |
|
|
141 | (1) |
|
|
142 | (1) |
|
Scan.me Pointing to Zendesk |
|
|
142 | (1) |
|
|
142 | (1) |
|
Shopify Windsor Subdomain Takeover |
|
|
142 | (1) |
|
|
143 | (1) |
|
|
143 | (1) |
|
|
144 | (1) |
|
|
144 | (1) |
|
|
145 | (1) |
|
Uber SendGrid Mail Takeover |
|
|
145 | (2) |
|
|
146 | (1) |
|
|
147 | (2) |
|
|
149 | (8) |
|
Accepting a HackerOne Invite Multiple Times |
|
|
150 | (2) |
|
|
151 | (1) |
|
Exceeding Keybase Invitation Limits |
|
|
152 | (1) |
|
|
152 | (1) |
|
HackerOne Payments Race Condition |
|
|
153 | (1) |
|
|
154 | (1) |
|
Shopify Partners Race Condition |
|
|
154 | (2) |
|
|
155 | (1) |
|
|
156 | (1) |
|
16 Insecure Direct Object References |
|
|
157 | (10) |
|
|
158 | (1) |
|
Finding More Complex IDORs |
|
|
158 | (1) |
|
Binary.com Privilege Escalation |
|
|
159 | (1) |
|
|
160 | (1) |
|
|
160 | (1) |
|
|
161 | (1) |
|
Twitter Mopub API Token Theft |
|
|
161 | (2) |
|
|
163 | (1) |
|
ACME Customer Information Disclosure |
|
|
163 | (2) |
|
|
164 | (1) |
|
|
165 | (2) |
|
|
167 | (10) |
|
|
168 | (3) |
|
Stealing Slack OAuth Tokens |
|
|
171 | (1) |
|
|
171 | (1) |
|
Passing Authentication with Default Passwords |
|
|
171 | (2) |
|
|
172 | (1) |
|
Stealing Microsoft Login Tokens |
|
|
173 | (1) |
|
|
174 | (1) |
|
Swiping Facebook Official Access Tokens |
|
|
174 | (2) |
|
|
175 | (1) |
|
|
176 | (1) |
|
18 Application Logic And Configuration Vulnerabilities |
|
|
177 | (14) |
|
Bypassing Shopify Administrator Privileges |
|
|
179 | (1) |
|
|
179 | (1) |
|
Bypassing Twitter Account Protections |
|
|
180 | (1) |
|
|
180 | (1) |
|
HackerOne Signal Manipulation |
|
|
180 | (1) |
|
|
181 | (1) |
|
HackerOne Incorrect S3 Bucket Permissions |
|
|
181 | (2) |
|
|
183 | (1) |
|
Bypassing GitLab Two-Factor Authentication |
|
|
183 | (1) |
|
|
184 | (1) |
|
Yahoo! PHP Info Disclosure |
|
|
184 | (2) |
|
|
186 | (1) |
|
HackerOne Hacktivity Voting |
|
|
186 | (2) |
|
|
187 | (1) |
|
Accessing PornHub's Memcache Installation |
|
|
188 | (1) |
|
|
189 | (1) |
|
|
189 | (2) |
|
19 Finding Your Own Bug Bounties |
|
|
191 | (12) |
|
|
192 | (1) |
|
|
192 | (1) |
|
|
193 | (1) |
|
|
194 | (1) |
|
|
195 | (1) |
|
|
196 | (1) |
|
|
196 | (1) |
|
|
196 | (1) |
|
|
197 | (1) |
|
|
198 | (2) |
|
|
200 | (1) |
|
|
200 | (1) |
|
|
200 | (1) |
|
Identifying New Fuctionality |
|
|
201 | (1) |
|
Tracking JavaScript Files |
|
|
201 | (1) |
|
Paying for Access to New Functionality |
|
|
201 | (1) |
|
|
201 | (1) |
|
|
202 | (1) |
|
|
203 | (6) |
|
|
204 | (1) |
|
Include Details; Then Include More |
|
|
204 | (1) |
|
Reconfirm the Vulnerability |
|
|
205 | (1) |
|
|
205 | (1) |
|
Show Respect for the Company |
|
|
206 | (1) |
|
|
207 | (1) |
|
|
208 | (1) |
|
|
209 | (8) |
|
|
210 | (1) |
|
|
211 | (1) |
|
|
212 | (1) |
|
|
213 | (1) |
|
|
213 | (1) |
|
|
214 | (1) |
|
|
214 | (1) |
|
|
215 | (1) |
|
|
216 | (1) |
|
|
217 | (8) |
|
|
217 | (2) |
|
|
219 | (1) |
|
|
220 | (2) |
|
|
222 | (1) |
|
|
222 | (3) |
Index |
|
225 | |