24. detectify
Why so few? #ohnoez
1. No secure access model.
“User X should only have access to A”
“User X that has access to A should only have access to B”
and so on…
25. detectify
Why so few? #ohnoez
2. Numeric IDs.
Enumerable/Sequential. Decrease value with 1 and try.
Easy to test. Easy to attack.
Do hashes instead! (Don’t just hash the numbers…)
26. detectify
Why so few? #ohnoez
3. Error messages show and tell.
“User X cannot view object owned by User Y”
“No access to this object”
vs
“Object does not exist”
27. detectify
Why so few? #ohnoez
4. Inconsistent ID sources.
/receipt/view/434
/receipt/?view=434
POST /receipt/view/ HTTP/1.1
receipt=434
29. detectify
Example – Twitter #bringpopcorn
Found
by
secgeek
(Ahmed
Aboul-‐Ela)
https://hackerone.com/reports/27404
Credit Card deletion from other users.
Sequential IDs when deleting cards.
Bounty $2,800
30. detectify
Example – Square
Update other users / Get user info
ID as hashes, but visible using Google.
No check if user was in another company.
Bounty $3,000
https://hackerone.com/reports/23126
31. detectify
Example – Zapier
Get log-history from other user’s Zaps.
Contained sensitive information such as
OAuth tokens / Credentials,
No access control for log entries.
Bounty $3,000
https://zapier.com/engineering/bug-‐bounty-‐program/
32. detectify
Example – WordPress
Get all users on a WordPress site.
blog.com/?author=1
WONTFIX by Wordpress
http://hackertarget.com/wordpress-‐user-‐enumeration/
36. detectify
Quick repetition #eatsleepraverepeat
1. Careful with string comparison
2. IDORs are bad. Easy to exploit. East to find.
Exploited as we speak – worth $$$
3. Numeric IDs vs Hashes
4. Generic access model
5. Review your code!