Bug Bounty bootcamp // Get paid to hack websites like Uber, PayPal, TikTok and more

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
- We can actually find the user's password here in plain text. This is basically a beginners guide to all the vulnerabilities that are most common in web applications. - It's like trying to find the needle in the haystack type of thing, is that right? - Experience the thrill of being a hacker and a bug hunter. - Wow! Great reflexes. (upbeat music) - Hey everyone, David Bombal back with a very special guest. Vickie, welcome. - Hi everyone, thanks for having me on your show David. - If you don't know who Vickie is, she's the author of this book, Bug Bounty Bootcamp. Fantastic book if you want to get started in bug bounty. Vickie, I really love what you did with this book. You are starting for instance, talking about Bug Bounties, but you also like talk about the basics of how the web works, you talk about web vulnerabilities and so forth and we're gonna talk about one of those, just for everyone who's watching. We're gonna do a demo of IDOR. If you only interested in looking at the demo, then jump to this timestamp where Vickie demonstrates that. Vickie, tell me why did you write this book? - So just for a little bit of background, for people who don't know what the book is about, Bug Bounty Bootcamp is a book that teaches you how to hack web applications. - Is it for beginners, is that right? - I wrote it to prepare people with little to no experience in Bug Bounties to start participate in Bug Bounty programs. It's aimed at setting you up for success. So you will learn things like how to perform reconnaissance on a target, how to identify vulnerabilities, and then how to exploit them. So that part I find is useful for a lot of more advanced hackers as well, since even though you've been hacking for a while, you might not be familiar with all of the techniques presented in the book, but I did write it with the beginner in mind. And even if you have no experience in Bug Bounty's web security or programming, you can still use the book and you can still follow along pretty well. - I'm assuming you took a lot of the stuff that you learned over the years and then you put it into a book. - It's really a deep dive into what I learned over the years as a bug hunter. I didn't really start writing the content of Bug Bounty Boot Camp wanting to publish a book. I started writing content about web security and Bug Bounty on my blog first a few years ago, because I was, you know, trying to get into cyber security and Bug Bounties alone. You know, just sitting in front of my laptop all day hunting on different targets by myself, I got really lonely and I started to lose motivation. I wanted to connect more with people who have the same interests, and who also love to do bug bounties. So I started my blog to connect with people, and then over time I found that the contents on my blog as well as a lot of the notes that I was accumulating over the years from my own learning, I wanted to publish that so that I can help beginners get into bug bounties as well. - Yeah, I think it happens with some, with various authors that I've interviewed where they writing content to help themselves and also connect with the community, and then that gets turned into a book. Hey everyone, it's David Bumble back with a very special guest. He's the author of this book, of this book. Fantastic, fantastic book. Why did you decide to write this? - I thought, yeah sure, okay, I can find some tutorials online but didn't really find anything. - And I switched over into application security. I was really, really excited to join and there was no book that would kind of teach me. - And then I started taking notes, and I got to about 150 pages of notes, when I thought it through and decided, you know what, this is halfway to being a book, so why not? - What is Bug Bounty? Which company do you recommend, if any? Let's start with like the beginner stuff and then we'll get into the more ticky stuff. - So Bug Bounty programs are a way for companies to pay researchers and pay hackers to find vulnerabilities on their applications and then reward them monetarily or in turn of reputation for their findings, right? So it's really like a win-win situation for the company as well as the hackers. Bug Bounty is sort of like a method for companies to catch a security vulnerabilities that somehow end up escaping their in-house security capabilities. Let's say that you are a company, you've already had some security engineers working on your products and you already have staff analysis, code scanning going on, but there's always those vulnerabilities that somehow, slip outta your hands, right? Or there sometimes are novel vulnerabilities that tools and engineers just don't know about yet before the researcher reveals it to them. And so companies have an opportunity to find out about these vulnerabilities and then the hackers on the other hand can do what they love like, which is hunting on applications. Look for vulnerabilities, experience the thrill of being a hacker and a bug hunter. - Wow! Great reflexes. - And get rewarded monetarily as well. I really love Bug Bounty programs because it helped me learn a lot about web hacking and web application security in general. I think it's a really good place for beginners to get started in the field. It's one of those niche fields that have a lower barrier of entry. So I really recommend people who want to get into info side, well who want to sort of pivot into either penetration testing, into application security to give Bug Bounty a try. - You can do it part-time, right? - Yes. I think most bug bounty hunters probably started off doing it part-time, because it's one of those really flexible gigs, right? You just hunt on a program or a company when you have time, and so you get rewarded for your findings instead of the hours worked. - People who want to get into a field, the problem is how do you get experience without experience? Companies always want experience and then, like how do you get experience if they don't give you a job? And this is a nice way to do that. - Yeah, that's for sure. I think my experience with Bug Bounty, was kind of like that actually. So I started Bug Bounties when I was in college, and I was a student in computer science. I had no experience in application security or web security and with Bug Bounties I found a way to learn, slowly learn about the field, but while also gaining these like resume points, right? While I do it. So I got really lucky in Bug Bounties and that I experienced very early success. I think I pretty much found a bounty on my first night of hunting. It was a really low severity report and I didn't find bugs, for like I think six months or so after that. But it was enough to keep me going, right? Because that was such an amazing experience to be able to earn money as a student while I also learn about the cybersecurity field. - I love what you did there. You didn't wait till you, like we're in the workforce, you were gaining experience while you're still in college, and I think that's fantastic. You're gaining real world experience and that's what's different to CTS, right? Because you're working on real companies. - Yeah, that's for sure. It's really motivating to, to know that you, you can contribute to the industry or to the security of these big companies or these websites while you're still a student and while you don't have a full time or even part-time job in cyber security. Starting early as a student in Bug Bounties, really enabled me to start finding jobs in cyber security after I graduated university as well. - You got it. You got real world experience, like proper real world experience, not just simulations. Real world experience which enabled you to, you know, it allowed doors to open because you had the experience while you were still studying. So I love that, but I have to come back to the question, which Bug Bounty programs exist and which one would you recommend for a beginner? I recommend first reading about these vulnerabilities, either via my book or some other web security book, to get familiar with how web technology works and how these vulnerabilities works and then practice some hacking techniques like IDOR or Cross-Site Scripting on an online lab first. So a good one is PortSwigger Academy, is a really good training ground for learning how to use, some of the basic exploitation techniques. The examples on PortSwigger are really simple, and a lot of the times they don't really represent, what you actually see in websites because a lot of the complexities of real world vulnerabilities or applications are simplified for you. But nevertheless, it's a really good way to learn about the mechanics of what you're doing there. And then once you get very familiar with how these vulnerabilities work, I recommend going on some VDP's. So Vulnerability Disclosure Programs, just to try out hunting, right? If you search on hacker one, if you search on bug crowd or integrity, there are a lot of public programs that don't pay money and you can usually filter for these programs by searching for things like vulnerability disclosure, on background it's called Kudos only, and on integrity, I think it's called Responsible Disclosure. These programs because they don't pay, they're not as competitive as the paid programs. I think I got really lucky in that I got my start and I started learning about vulnerabilities before Bug Bounties got super competitive, but it is very competitive right now. And a lot of the times if you're a beginner and you are looking for the more simple vulnerabilities, you won't be able to find any because they're already found by other bug hunters, right? So I recommend starting with programs that have like a lower competition level, where not so many hunters are looking, train up your skills there. I got my start in a non-profit program and the engineers in that company in return for my reports, they really coach me on a lot of different web vulnerability skills and reporting skills, and just in general, acting kind of like a Bug Bounty mentor for me. So I'm really, really grateful for that program. If beginners can find a good non-paying program to participate in and build up your skills, build up your confidence, it will be a really good way to start transitioning into the paid programs. If you do wanna start making money with Bug Bounties. Another vulnerability platform that I found out recently is called huntr.dev. It rewards people for finding vulnerabilities in opensource repositories. So it's not just the big Bug Bounty programs, right? There are companies running their own programs, there are these open source programs. So there are many, many to choose from. I think as a beginner you really need to be creative as to where you hunt because you don't want to be in like the most competitive programs necessarily. - You know Ben, wrote the intro for this book. He said exactly the same thing. - Go hack on programs that are not being hacked on by the pros, by the top million dollar hackers, by the full-time Bug Bounty hunters. - If I'm a beginner and I'm trying to compete against Ben and there's many people like that, the chances of me catching it as a beginner are far lower. So I love that advice. Any other advice for beginners? - It's definitely getting harder to succeed in Bug Bounties, but it is possible. Something that I see very often is that beginners try to look for the same vulnerabilities, the same simplistic vulnerabilities in every single program they hunt for. You quickly realize that you are run into the same issues of not being the first person to find the vulnerabilities, and in the bug body world you don't get rewarded for your duplicate reports, right? - Not for you! - I think this is also something that NahamSec, really advocates is that in Bug Bounties you really need to find your niche. Your niche could be doing really good recon like Ben, and try to find out those really obscure places to hunt for bugs on a program. I always look for things like IDORs, business logic falls or access control issues, because I found that as I gained more experience looking for those issues, I started seeing the subtleties of the issues and I started thinking about more ways to bypass access control and prevention techniques, and that became my biggest winner. So I think beginners really need to try to find a niche instead of using all the popular techniques and hunting on all the popular programs, because everyone else would be doing the same thing. - Yeah, so become like an expert in a specific niche, right? - Right. That's for sure. It's a good idea to explore, you know, the vulnerability worlds more widely when you're first starting off, but don't expect all the things you do to be successful. Right? I think some people are just better at spotting business logic flaws. Some people are better at building automation for recon or some people are good at building, you know, fuzzing machines or automation apparatus for hunting for actual vulnerabilities. You don't want to be stuck in the beginner level for every single vulnerability that you work for. So explore widely, find out what you like, find out your hunting style and then just specialize in that. - Just thought about this and I don't how valid it is. Let's say you've found a bug and I found a bug after you, it would be declared duplicate, but if I want to get experience I could still put that on my resume, can't I? Because I found the bug. It's something to show employers, right? - Yes, that's for sure. The way I think about it is that duplicates are just, are valid bugs that are not paid. So that's how I like to think about it. When I was hunting I got a lot of duplicates, that's for sure. And it's still, you still worked for it, right? You still found a vulnerability that the company cared about. That's the most important thing. So even if that didn't end up with some monetary reward, you still get experience, you still get the learning and you still get the positive feedback that, yes you are doing something right and you indeed found a vulnerability, you proved yourself as a hacker. - To me it's like if I'm an employer, let's say, and I want to hire someone and they can show me they've done all of these attacks and they got recognition, even if they didn't get paid for it, it doesn't matter. It means that they found stuff, it means that they're proving their knowledge, which is fantastic. - Yeah, that's for sure. I totally agree. - Do you need lots of money to start this? - Not at all. That's what I think I really liked about Bug Bounties. Well all you need is your laptop, a browser and like a proxy software, let's say Burp community, it's free to download and that's like the very basic setups. A lot of Bug Bounty hunters I know, purchase a lot of advanced hardware, software, but that was really not needed to get started. So when I first got started in Bug Bounties, and even now, all I had was you know, a laptop, I use Firefox and then Burp community. - You need to have some knowledge of Linux, right? So I think you mentioned Kali in the book. - Yeah, it's helpful but it's not really necessary, I would say. And the good thing with Kali is that it comes with a lot of like pre-installed helpful tools. But I find that a lot of that is actually not necessary, for a lot of Bug Bounty hunters cause it really depends on what kind of bugs you specialize in. I actually don't use Kali, so it's helpful to know a little bit about how to use the command line, but again that's not necessary. Extremely helpful but not necessary. Programming too, I think it's extremely helpful to know how to program, but not necessary at the same time. - That was my next question, do I need to learn to code? - I know a lot of bug hunters who are successful and don't program. Learning programming is really useful for starting to learn how to automate a lot of the, you know, the tedious parts of bug hunting like reconning or scanning. - Any recommendations, is it JavaScript, is it Python? Is it go? What language do you recommend if I wanna learn one, which one would I start with? - So I recommend learning Python and Bash scripting, because these tend to be the most convenient for automation. And you can use any of the online tutorials really. I think I learned programming by using Code Cademy. There are so many resources online right now for learning programming. After you get used to like the syntax of a programming language, you can start building a small program to get really used to the language and start using it in a practical way. So in my book I have a chapter where I talk about how to build a really simple recon script, step by step. So that's like a really good example project to start off writing some code to automate hacking. And what I found was that after I implemented automation into my bug hunting regimen, it got so much more enjoyable and so much faster because I can actually automate away, a lot of the boring tasks. - Once you've learned to code you can't go back, cause of exactly that, right? You can create code that just saves you so much time. So I'm a firm believer in coding and python and I agree is a fantastic way to start. - That's for sure. And I think, after you start Bug Bounty hunting a while, you'll actually found that a lot of the tasks are quite repetitive. Like let's say that you are looking for a vulnerability called subdomain takeover. So what do you have to do for it? To find that vulnerability is that you have to scan the company's subdomains and you have to look for certain signatures on those pages to see if they're vulnerable to take overs. All of that is actually like automatable, right? Eventually I think I build like a, it is just a single Python script that was finding all these subdomain takeovers for me, and I didn't have to do anything. It would've been horrible if I had to look for thousands and and thousands of subdomains manually, right? And it's just not practical because someone else would have an automation script and someone else would find the vulnerability faster than you. That's the real advantage of also making your bug bounties. - Which sort of area do you think I should start at if I'm a beginner? - The vulnerability that we're demoing today, IDOR's, are a really, really good vulnerability for beginners to start to find. IDOR's are probably my favorite vulnerabilities to find because they are so simple, but they can be super impactful. They probably are like my most found vulnerabilities. I definitely experience a lot of success focusing on IDOR's and other access control issues. Definitely different bug hunters will have different personalities, right? I preferred IDOR's and business logic flaws. I really like business logic flaws as well because they often are not automatable by either the company or other hunters. They require some knowledge into how the application should work, right? And a lot of the times it's really hard to program that and so it requires a human actually looking into it. The duplication rates for these vulnerabilities are typically lower as well. A lot of other hunters have had success with other bug types. One of them is Cross-Site Scripting. So Cross-Site Scripting is like this super common issue that everyone scan for and every Bug Bounty hunter is looking for, right? But they're also a really complicated bug, that can have a lot of potential bypass techniques that you could use. So if you get really good at Cross-Site Scripting and using JavaScript then you can make a whole Bug Bounty career just with Cross-Site Scripting. I don't really like to work with this bug type, but I do know that a lot of people really enjoy it. I know APIs are also becoming a really big thing. A lot of the vulnerabilities I found recently, are actually API issues and hacking APIs are becoming this like whole different area of expertise, right? I know I watched your interview with Corey. - Historically when you're trying to go after the crown jewels of an organization, which is typically their data, you have to find a way into that network. Once you get into that, then you have to get past their firewall, then you have to find a landing point within a network where you can pivot around, maybe get domain admin and locate the data and exfiltrate it somehow. The big deal with APIs is they bypass nearly all of that. - He is like the expert in hacking APIs, right? He has a book in hacking APIs as well, which covers in depth how you would like fuzz an API, how you look for different issues in APIs. So I have it in that book as well. I think the big thing with API hacking is that a lot of your fundamental skills would naturally transfer into API hacking. So let's say that you read my book and you learn about SQL injection, you learn about IDORs, you learn about access control issues, you can then start learning a little bit about APIs by reading Corey's book and just naturally transfer the skills there, because a lot of the mechanisms under the hood actually works the same way. - When you learn a skill, it's not lost is it? I mean you can take it into different areas. I'm really keen to get to do a demo. Would you be able to show us an IDOR demo? - Sure, yeah. IDORs are my favorite vulnerability defined. - Like what is IDOR? Let's start with the basics. What is it? Why do we care? - So IDORs, the full name is called, Insecure Direct Object Reference and despite the long and sort of intimidating name, IDOR is actually a very simple vulnerability to understand. Essentially IDOR is missing access control. Let's say that example.com is a social media site that allows you to chat with other users and when you sign up you notice that your user ID on the website is 1, 2, 3, 4. This website has a page that allows you to view all of your messages with your friends. When you click on the view your messages button located on the homepage, you get redirected to messages, question mark, user ID equals 1, 2, 3, 4 where you can see all your chat messages with your friends on the website. Now what if you changed the URL in the URL bar to question mark, user ID equals 1 2 3 3. You notice that you can now see all the private messages between another user, user 1 2 3 3 and all of their friends. If so, you have found IDOR vulnerability. The reason that you were able to see the messages of another user is that there were no identity check in place before the server returns the private information of users, the server was not verifying that you were in fact user 1 2 3 3 or if you are an imposter, it simply returned the information as you have requested. IDORs happen when access control is not properly implemented and when the references to data objects like a file or a database entry are predictable. - Here we are at PortSwiggers Web Security Academy. So this is a lab that I really recommend for beginners. I do believe it's completely free to use and it sort of gives you a way to practice a lot of the basic vulnerability types. So once you've gotten familiar with the vulnerability types, the all OWASP top 10, the IDORs, the A5 vulnerabilities, you can then come here to this lab environment to for practice. I do have a list of labs and CTMS that I recommend for beginners. I'm gonna give you the list and then maybe David, you can post it under on the video. - Anyone who wants to see the recommendations, I'll put it below. - This particular lab on PortSwigger Academy is about IDORs specifically. They planted this IDOR vulnerability within this shopping site, and what I really like about this lab is that they don't really tell you where the vulnerabilities are. Instead they let you go through the regular hunting process of finding and discovering the vulnerability yourself. This website is like kind of simplistic, much more simplistic and the requests and responses are much more simplistic than you would find in a regular application, but nonetheless it's like really good practice for beginners. Usually when you hunt on a lab like this, you'll have to like poke around the website and sort of look for all the different requests, responses to look for the one IDOR. But for the sake of time, I've already done that beforehand and I know that in this particular lab the IDOR is located in the live chat functionality. So let's go there. So once we go into the live chat, you can see that there is live chat with like a message box right here. Let's try to send a message here. For some reason the send button is not really working here, but we could still go into where the IDOR is, where the vulnerability is in this application, because it's actually in this view transcript functionality right here. When I click view transcript here, you can see that, you know, something is downloaded and you can see that I've actually tried out this lab multiple times already, to make sure that this demo works properly. Here you can see that there's several files being downloaded. When I click view transcript and I think the latest one is this file. So three dot txt, was the file that we just downloaded. Just to test that hypothesis, let's go to Burp suite and turn on intercept. So now our Burp suite is intercepting the traffic from our Firefox browser and let's click on view transcript again. So this should make Burp Suite intercept our outgoing request so that it won't be sent to the server right away so that we can take a look at what our request is doing. And when we click on view transcript here, we can see that, yes, we did see some requests filling out here. What I would do usually is that, once I start using a functionality that I suspect, is vulnerable to IDOR, I would start looking at every single request that I'm sending out from my browser as well as coming back in from the server to scan for things like obvious user IDs, obvious resource IDs and start switching them out if possible. I would like to add that these resource IDs and users' IDs, they're not always that obvious, right? They're not always simple numerics, sometimes they are phase 64 strings or short strings that are derived from the user ID. So there are a lot of possibilities, but the key here is to look for anything that might be referring to the resource that we're looking for. If I am looking for an IDOR that potentially is gonna allow me to read another user's messages, I would look for things like numbers in the requests, weird strings that I don't know what it's for in the request as well as anything related to their user IDs, usernames, emails, and I would start to switch those out to see if I can access other people's resources. So just from a quick scan here, I don't think this request looks too suspicious. There isn't anything similar to a resource ID, besides maybe the session cookie here, but let's continue and see what we can find. So when we forward this request to the server, let's see what we get here. So these are not really related to the demo. Here we can see, this is another host request that is going out from my browser to the server, right? And I just skipped off a ton of requests because they're simply not related to this lab and you can tell based on this host header here. So this is another request, a get request to the endpoint called download transcript and it's downloading transcript four dot txt and it's an outgoing request from our browser to the server. If we continue to intercept requests and responses, we can find out what this request returned from the browser. What we can do here also is that if you don't wanna go through like all these requests, you just want to see this related request and response right away. You can right click on Burp and click send to repeater, and then this will just automatically populate the repeater with your request so that you don't have to use your proxy and then filter through all the unrelated requests, and you can see that nothing really happened. In this case, after we send the get request, the server does not actually return the file right away. There's probably another request facilitating this process here. Let's continue with the proxy, let's see what happens. I think something is downloaded. Okay. So something was downloaded there, I didn't quite attach the request, but let's see, open this file. This you can see was the file that we just downloaded from this server, this vulnerable server, and it just says disconnected, chat has ended. So I suspect that this is simply what the live chat is giving you. So I think this is basically a transcript for the live chat that we just did. And because we didn't really send any messages, and we didn't get any messages back from the site, this is all that's in the transcript, right? Disconnected, chat has ended. Nothing too exciting. But what I see here is that, at the request that we were just looking at, at repeater here, we can see that it's sending a request to the download transcript endpoint. Downloading something called four txd. What is this four dot txd, right? Can we possibly exchange this ID out, let's say change it to one dot txd, two dot txd, does that mean that we could access someone else's transcripts and see someone else's track messages? So that's what I wanna try here. Again we can use the repeater or you can use the proxy as well to intercept the request and then return it back to the browser. Let's do this again and we can turn on intercept again so that we're catching our request now from our browser, and then click view transcript here again and let's say click forward and then we can see this download transcripts request again. And we can see here like now the download transcript, endpoint is sending an endpoint to five dot txd. So that's even more indicative that the transcript IDs are being incremented. They're probably going like 1, 2, 3, 4, 5 and I'm, I just happen to be the fifth user who is using this functionality. Let's see if we can change it to one dot txd and see what happens, right? I'm not sure if this is actually gonna allow me to read someone else's messages or access someone else's resources, but you should always try out these suspicious endpoints and see if you can find anything. Sometimes it's just incremental based on your user ID and they tie your user ID to the resource that you can access. And in that case, the application is not vulnerable to IDOR. But you can never be sure until you try it out. Let's turn off incept now. So when we turn off intercept, we'll just send all the responses back to our browser. Let's see, it still says five dot txd, I think that didn't quite work. I'm gonna have to try again. You transcript again, sometimes this happens. So what I just did actually was that, I opened up my downloaded file, it says five dot txd and it's still showing me the same result, disconnected, chat has ended. So that means that I'm still just downloading a transcript for my user session, possibly the last one that I just did and that the IDOR actually did not go through. In this case I'm quite sure that the endpoint has an IDOR, right? So that means that there's something wrong with my execution. Maybe I modified the wrong request and that's not the actual request that is determining which file to return or the system detected something that I'm not the proper user and I'm not allowed to access that resource. Sometimes you have to maybe try and endpoint a few times, try a few different things, try messing with different requests that are going out from your browser for the same feature. To really pin down which resource or which endpoint you should really be tampering with. So we see this request right now again, right? Get download transcript six dot txd and we changed it to one dot txd the last time, but we immediately turned off intercept. We didn't have a chance to look at what's actually coming back from the server. So I'm gonna keep intercept on this time and do one dot txd. This time let's look more closely on what the server returns and see if there's anything else that we need to tamper with in order to get to our final results. So we click forward again, this is not related, not related. So here somehow the request is being sent again for six dot txd. I'm gonna change this to one dot txd again and then see what happens. I'm also going to, so something I really like to do is that I like to send all the suspicious requests to the repeater, so that I can try out the same thing over and over again. Once I'm in the repeater, right, I have this request fixed here instead of like a proxy where requests are coming and going, so I can start messing around with all these different fields like the cookie session field, the host field, the get field. So the repeater is like a really good place for in depth like experimentation. And the proxy and the repeater actually, are often the only two tools that I used in Burp community for my hunting, especially when I'm looking for things like access control issues or business logic errors. Let's click forward again, and let's see what's happening. So I see like the requests are not coming anymore. Does that mean that our file is already downloaded? Yes. And you can see that one dot txd is here. So we were actually messing with the wrong ID, when we did it the first time, and that's all right. I think if we have more time, it's worth going back and looking at those two different requests and see what the difference is there. And maybe from there we can deduce how the application is built, in like a real life application and in a real Bug Bounty scenario, we can sort of try to decode the application, how it's built from those requests, and then go back to sort of apply that to different endpoints as well. And so I'm gonna open up one dot txt here, drag this here and you can see that one dot txt, actually contains some information, right? It wasn't the same chat session that I was on earlier, and it's someone called how talking to someone else, who can actually find the user's password here, in plain text. So this is like a really classic, really simplistic case of IDOR where you can mess with the resource IDs and actually find out other people's sensitive files, and from there who knows what you can do, right? And this case you found a password. I've also had IDORs in the past where I've found different users chat messages with their friends or their private images. So IDORs are really simplistic but their potential impact is practically unlimited, right? It all depends on what kind of IDOR that you look for. And so IDORs can be a really, really powerful technique to learn and a really rewarding bug as well. - It's like trying to find the needle in the haystack type of thing, is that right? - Yeah, that's for sure. It's a really odd bug where the vulnerability is so, so simple, but at the same time a lot of sites don't really prevent it well enough. So the way to prevent IDORs is that you need to check the user session, right? You need to check the user's identity before granting access to resources. But a lot of websites don't do that well. This is like a huge vulnerability, right? And it is a huge privacy leak, in terms of Bug Bounty severity. this is probably a critical vulnerability, if you can see every single user's chat messages. - How common are IDORs? Is it still something you find? Is it still a bug that's worth pursuing? - I think a lot of people assume that IDORS are not super common just because of how simplistic they are, but from my experience they are super common, right? I'm consistently finding IDORs and so I did full-time Bug Bounty hunting for a few months, and during that time my most consistent bugs were always IDORs. It's one of those issues that applications do not protect against well. The main cause of IDORs is that the application is not checking whether you are authorized to download that file, but it simply hands you the file based on input value, right? This is all cause by applications maybe accidentally not checking user identity on a certain endpoint or a certain resource. One of the reasons that make it so hard to defend against is that it can happen in all sorts of pages, right? It can happen in pages that access private data, places where users modify their private information as well, like password change endpoints. And I've seen it a lot on API endpoints as well, where an API endpoint is not checking whether someone has a corresponding API token, before sending back all the sensitive information just based on the resource ID. Part of the reason why it's so hard to do well is that, you'll have to be very aware of where all of these access endpoints are, and you'll have to apply very consistent access control across all these endpoints. Going back to the API thing, API endpoints are probably the number one places that I'm finding IDORs at this point. You can look for API endpoints that returned user information based on, like user ID or session ID as input, and see if anyone can request that information. If you can access other users' information. So yeah, my top paying Bounties, were all related to IDORs. Some of them were API endpoints, that gave me access to a bunch of information. The example that we saw just now was super simplistic. It doesn't really have any protections in place. The resource IDs were just very simplistic numbers, but in the real world, IDORs don't always look like this. For the most part they don't look like this. A very common way that applications tend to protect against IDORs is to use IDs that are hard to guess. So sometimes you can see applications using really long strings of alpha numerics, and they think the randomness of that screen alone is going to prevent users from achieving IDOR, right? But that in itself is not a complete protection because you're still not checking the user's session ID or session information. Then if the user can predict or guess or somehow find out about the unique resource IDs, then they can still execute the IDORs, right? So in my book I actually talk about a lot of ways to bypass common protections against IDORs. So I think common protections against IDORs, they range from just encoding the resource IDs, to deriving the IDs from the user's information. So how you can combat that is that you can learn ways to predict user IDs or derive user IDs from what you learn from the application. Or sometimes you can also find leaked resource IDs on other parts of the application and then combine that with IDOR, and then suddenly you can access every single person's information. As long as the outer protection is not complete, there are so many things that you can try to bypass that protection. And that's something that really sets apart an outstanding Bug Bounty hunter from someone who can't find any bugs, is how creative are you and how many different ways of bypass do you know, when you are faced with an obstacle on a Bug Bounty program. - If you were starting today, what would you advise yourself to do? Is it like go and register on PortSwigger, like read your book? Give me like a path if I wanna get into this. - Yeah, for sure. I think the first thing that a beginner should do actually is to read my book. This is basically a beginners guide to all the vulnerabilities that are most common in web applications, so that it gives you a quick start to understanding about all the mechanics of what you're doing. And then we can do something like sign up for PortSwigger to test your skills out in a simplified environment and then go hunt on a public program that's also non-paying, so that you prevent getting frustrated by tons of duplicates and informatives on those really competitive programs. It's worth it to start investing time into automation as soon as you can. When I was first getting started was that, I did not automate until I was getting a lot of bounties and I wanted to scale. Before that point, I've already spent tons of time doing repetitive tasks, right? And that took up a lot of time that I could have spent hunting for other bug types that I could have spent exploring other parts of the program, and I could have spent learning about different vulnerabilities, different bugs, and different technologies. Start automating the boring tasks as soon as possible, would really pay dividends into your rewards for Bug Bounty hunting. - I think that's great advice. So you've still got an active blog where you publish, right? - Yes. Vickieli.dev, so that's V I C K I E L I dot D E V. I publish a lot about, mostly about web security but also different things. Like how do you navigate a career in InfoSec, how do you write better technical content? Every time I publish a blog post, I tend to announce it on Twitter anyway, and my Twitter handle is Vickieli7. So V I C K I E L I seven. You can always find whatever I'm up to in terms of InfoSec right there. - That's brilliant. So for everyone watching, please go and follow Vicky on Twitter. Go have a look at her blog, use the link below if you wanna buy the book. Otherwise go to no starch or wherever your favorite place is. Vickie, thanks so much for sharing and, you know, taking your knowledge and not just keeping it to yourself but like putting it on your blog, being involved in the community, sharing your knowledge on Twitter, but also for putting the book together. Really thank you for that. - Thank you so much and thank you so much for having me. (upbeat music)
Info
Channel: David Bombal
Views: 162,453
Rating: undefined out of 5
Keywords: idor, Insecure Direct Object References, bug bounty, bugbounty, hacking, cyber, security, bug bounties, cybersecurity, hack, hacker, web hacking, xss, cross site scripting, portswigger, jscript, javascript, xss bug bounty, idor bug bounty, jquery, kali linux, burp suite, pentest, pentesting, hackerone, bugcrowd, intigriti, bug bounty bootcamp, no starch, ethical hacking, pentest basics
Id: QqrK294l_oI
Channel Id: undefined
Length: 42min 19sec (2539 seconds)
Published: Sun Oct 02 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.