Logan brilliantly exposes how architectural shortcuts in session management turn authentication tokens into universal master keys. This is a textbook reminder that security fails when logic precedes verification.
Deep Dive
Prerequisite Knowledge
- No data available.
Where to go next
- No data available.
Deep Dive
Live IDOR/BAC Hunting on a Real TargetAdded:
In this video, I'm going to be testing for ID door and broken access control in this live hunting session. If you don't know who I am, my name is Logan Sack.
I've been a bug bounter for the last nine months now. I've submitted over 30 reports on hacking when alone. I recently got my first belly bug on the Canadian government. Also, join the private list if you want the JS Recon animation when it drops. I'm seeing it there first. Link in the description below. Basically, what the JS Recon is is what we've been going over recently.
I've been running this horror recon.py Pi and it's been compiling to get us these results right here. So it created the JS directory, GF out and then some other things like LF out and SF out which is just secret finder and link finder stuff. And now I've been going further and actually getting some results which is what I'm going which is how we're going to be testing for idle and broken access control. This is something I've never done before but I actually think this is a really really good way of doing it. So right here is no hit paths. These are paths that they were in they were found in JavaScript.
However, they were not found when I had Okay, so these are these are paths that were not hit in my HTTP history. The reason I know this is because I actually used the application like a regular user for about six to 10 now about two to six hours. I just used the application and I had my Kaido HTTP history on and it's been just been capturing requests. So the next thing I did is I loaded up claude code and I had it um use the my Kaido skill and check for every single path and because all the important paths I put here in this folder called LF notes every single important path is here. So I said cloud code look through look at all these paths and then look at my HTTP history and whatever ones you don't see in there put them in here the no no hit paths and then from there these are going to be the paths I want to focus on because these are the ones that are less less likely to show up in the UI because I didn't see them when I was doing my manual reconnaissance. So this is we're going to be looking for broken access control and IDOR.
So let's get started. Pass from LF notes. I haven't really read this yet cuz I I was really excited to do this. I actually want to do this um live so you guys can see it as well. So we have internal settings, notifications, hit pass. Let's see what's I want to look for stuff developers web hooks invite.
Okay, this is going to be good flow.
Note was hit. Note token was hit.
Specific token in history. Okay, let's just start invite because this is an interesting one. We can do lots of ID door stuff here. We have like recent, email, pending, user, verification. And I still have no idea what validator is.
No idea. So, what I'm going to do is I don't like to take my notes in here. So, I'm going to go back. Actually, I'll just create another one. Oh crap. I don't like it that way.
Control shift T. And then I'm going to go back. I'm going to take my notes in the manual recon.
Okay, now I'm just gonna I don't want to do like that. So, okay. Yeah, inside here.
That means I'm going to have to have two PS codes open, which is a little annoying, but it's okay.
So, findings.
All these findings aren't really anything big. That could have been something but session because I would have no idea how to get the the token that required to make that something. So I guess I'll just here it is. Invite function. Let's just start here.
Okay.
Okay. So this was for the second account. So first let's just log in to the second account. Okay.
which would be here it is.
Okay. Incorrect email or password, of course.
Um Huh.
Try it one more time.
Nope. Okay. So, I forgot. Wait. No, no, no, no, I didn't. No, I didn't.
There you go. Okay. Now, this is kind of annoying how it has you do the phone number thing every single time.
But, you know, it is what it is.
Okay.
Okay. So, we're in this account has not been verified yet.
The verify account thing is really just doing this because it already did have me verify my account. It's just wants to set this up as well.
So turn on sandbox said to do all testing in sandbox. And I already have my match and replace rule set up which they told you to have right here. Header bug crowd thing on. Yep.
Now we want to go to settings. We're going to go to team members and roles and see here how I've invited the another account. This one as a viewer.
So for now, first thing I want to do is I want to check out the oh right here. So we have merchants portal invite resend pending user. So I just want to start first I want to start by hitting these endpoints I haven't hit before. First thing it would just be easier just to delete user. And actually that's curious. What request am I going to see when that when I do that? See so I'm going to cue it. Oh no no no.
I I forgot to turn on um forgot to turn on the proxy. Okay, that's fine. We we're gonna get to that.
Okay, so I guess we'll just start with invite member. Oh, and now I'm queuing, aren't I? Yep. Okay, so full name. Let's go test email address. We're just going to do the same one.
We go. And now let's assign it a viewer role. And I just want to see what these requests are looking like.
Can we invite multiple users at the same time? Would there would it be different to invite multiple users at the same time?
Would like the request be different?
That's that's a good hypothesis right there. Okay. Wrong one. Okay.
Testing the invite members functionality.
Okay. Whoops. Is it the same to invite multiple users?
Let's say members members at the same time as just doing one because there's difference. What would the difference be? And it's an exploitable.
So, okay, let's see. So, this is what one looks like. You have the email here, roll basic full name. He has this capture token thing.
Uh, I'm pretty sure they have this token.
Where is this token? I wonder if this token leaks anywhere because I believe that is the token that's like genuinely affecting like everything that's going on.
Like I'll I'll show you guys. I believe it is. Let's just forward. Look, let's look at the request real quick. So status pin.
Can I change the test status from pin to like something else?
Let's see. Is permission block false.
Roll basic. Roll basic.
Okay.
All right. These findings are just all GraphQL stuff.
So for now, just invite successfully sent.
So that leads us to the Oh, right. One more thing. I want to try the add user thing. Is it different if you do two at the same time? Test two. Test two.
Email address. I'm just going to make them random. Random login.com.
Roll. Let's just say compliance admin.
Test three. Test three. Email address random two. Three, I guess. Whatever.
Logan sec login sack.com whatever this is whatever and we're going to make this one make this an admin now we're going to turn back on again and see what we get I I know I said we're setting ID broken control that's exactly what we're doing just got to set up by understand what's going on with the functionality first so users user is that different from how this looked No, I'd say it's the same.
B1 B1. Okay.
Okay. So, doesn't appear to be the same.
Now, let's just Now, let's look at the request.
Success. Random. Pending.
And then you have the second one right here.
Okay.
It appears to be the same.
Appears to be.
Maybe with something like they'll receive the same email though. If I'm going to test the same email, I need to do real ones. But anyway, I want to see what happens next.
It's like when I delete one, when I delete a user and perfect thing to do that on is on fake accounts.
Okay, it's the same one as before. Just this has been changed from post to delete.
And all I need to do is put the email.
Okay, I got watch this.
Actually, I have a hypothesis now. I believe that the only thing stopping me from getting a basic ID door would just be knowing this token. If I can know this token, I believe I can do this cross account.
Let's let me remove the token and see what happens.
Where' the token go? Oh, here it is.
Just remove it.
Forward. See bad request. Merchant portal invalid session.
Is that token set on session or is it mean to drop?
Oh gosh, I just got something so laggy.
I wonder if the it's going to change now that it's logged me out.
That actually would be annoying. So, this token should be exactly the same.
Now I just want to know like what the does the token change because if the token um will change on session like log out then that's going to be not very persistent persistence won't really be there but if the ID is always the same then then that becomes interesting and then it's all about just how do I get the token because I can get the token then and it works cross account then that's like that's good night like that is a bug Okay, so I'm back in sandbox back on settings team members. All accounts are still here. Okay, now let me just try to do a dangerous action so I can just see that again.
Delete.
Let's see. I hope token stays the same.
Nope, the token has completely changed.
Yeah. Okay.
Okay.
So we know that without the token you will be logged out. Okay, let me actually start taking notes on this stuff now. So let's name it like important because this is kind of just more global stuff.
Token is a required header for requests.
Without it, if without it, if you try sending a request, you will be logged out.
However, on logout token previous token will be invalidated.
And actually, we don't know if that's true or not. All we know is that the token has changed. Is the previous token invalidated? We don't know. So, that's next thing we're going to I'm going to test. I can test that really really really quickly. Just go here. Get this old token because this was a valid token. So we do know that. So this is like this. Oh, right here. First I door test first. We're just trying Wait, does this count as an IDOR test? Broken access control. I don't know. I mean, we're swapping an ID. So hey, I didn't say I was a teacher. This is me bug hunting. Okay, this is how I do it. Call this whatever you want. So I grab the old token. The old token that used to be valid. Now I'm using it here. What happens?
So yes, they do invalidate the token.
And now I should be logged out again.
Exactly. Yep.
But what if I try the same action again?
Cuz I was trying a different action.
What if that was the only reason? Cuz I I don't believe that will be the reason.
But you need to test for all scenarios.
Like maybe it really is if I was doing it the same way like post I'm sending a basic I could do that with the same token and delete just uses a different token. I don't know that. So I'm going to log back in and try it with the exact same request.
Okay.
Haven't started any cross account stuff.
I just want to get a better understanding of how on one account works.
I just want to I really believe recon is the secret to becoming a really really good bug bounty hunter. And the more information you can get about a target, the more you understand, the faster you are, the more efficient you become at learning things and doing good risk reconnaissance, I truly believe that will make you a way better hunter.
Okay, so try again. Name it um hacker hack.
Oh, my bad.
Hack at hack.com.
Okay. Roll viewer. Now we're going to see. Look at the token. I completely expect it to be a different token.
Where is? Yep, different token. We're going to do go replay. Get the same old token, but this was the exact same request.
Let's get that old token right here and plug it in.
Okay. Yep. Still failing.
Operation ID.
That's not the token, is it? That's not the correct token, right?
No.
All right. Now, I do it the other way.
Okay.
I don't believe so.
No. Okay.
Okay. So we can now clear cleanly say that token is required is a required header for requests at least sensitive ones and without it if you try sending requests you will be logged out. However on log out previous token will be invalidated.
Therefore let's say you're an attacker and you find a way to get a a token. As soon as the user logs out the token will no longer be valid. So you continue you would continue needing to get the new token. if you want to perform sensitive actions. However, we have not tested whether cross account works yet. So, that's the very next thing we're going to do is make sure cross account works with a correct token.
I believe so, but we're going to test to make 100% sure.
So, that's what this is. I still use Burp here just because it's easier, but maybe I should use Firefox on my Chromebook. I don't know why I said Chrome. This is a computer. But um because Firefox has allows you to have this thing called multi-containers. So you can have two different sessions.
It's like two different session cookies and all that in the same browser which makes testing so much easier. Well, testing item and broken access control so much easier. So if you use Firefox, like let me just show you guys this real quick. So if you use Firefox, get this extension. This one right here, the Firefox multi- account containers. Like look at this. Now I'm in account A.
Now I'm in user B. These are two different sessions. So you can have you can be logged into two different accounts on these things. And then you still have the main one here. Yeah, they they don't have like they don't have anything like that for Chrome though.
Anyway, I got to set up the target and scope. It's It should mostly just be one thing though, right? Dashboard.rapid.
I'll just add API.rapid.net as well as well just in case. And then remember, don't include subdomains. Not for this.
And this the other one is called API, right? Let me check.
Yeah, API.
This is the only one that's paying um the high this this is the one the only one that's tier three premium.
I wonder where API is cuz I don't know.
Oh, wait. No, don't include subdomains.
Okay, now we just need to log in.
And what account I'm going to use? I'm going use Logan sec plus one.
Bugcrowdninja.com.
Maybe I should click stay signed in because like I do this so much.
Okay. So now on this account I am going to try to use a token from account three on account two.
First off, turn this on.
Settings.
Oh, wrong one.
And now we're going to do some invite member stuff. Going to delete this one cuz testing kind of became corrupted with that one. I was doing some other things and now I'm just not sure if whatever I do on there is cross count or not. So, okay. So, log back in here.
Do the same thing again.
Okay, logged in.
Team members and we're just going to going to add somebody invite member.
Oh, does it change after that? That another thing another thing. Does the token change after every request or is it per session? I believe it's per session, but let's see. That's another I just got to test these things. Okay, actually I don't even need to create a user. I'm just going to test that. Let me just look.
I just like to do intercept because it's faster to me than um looking back HTTP history. I just need to do is forward and I did not look at the token. Does the token appear again in here?
No.
No, it doesn't.
Some operation ID stuff though.
Let me just look here. Okay. Delete.
What's the token?
Is this the token? Is this just going to be the token for everything or is that the token for a single request?
Delete. Okay, now let me just do it again.
See if token's the same.
Match token's the same. It's the same on delete though. Let's just drop that. I don't care. I leave that. And I'mma add another account. See? So, let's name it youu email you yo loansack.com.
roll viewer. I'm just going to see if token's the same again.
Oh, oops.
I added it twice.
So, token's the same. So, it is per session.
I don't want to invite that guy. So, okay. So, now we know what token is.
I've already controlled it. So, control seed it. So, um I'm go here. Going to invite a member. Name this guy. Um let's name him Fred. Fred Bob. Email Fred.
Fred Boblogan.com.
Roll. No options.
How come there are no options, bro? What?
What you mean no options?
Why have I been blocked?
I literally didn't do anything.
What?
It just logged me out. Why?
I I don't know.
Um, what what are we What is going on here?
sec at bugcrowdninja.com.
Let me check my email. What is going on?
That's That's strange.
Um, yeah, just got the only thing that's been sent to is just email invite that we did at the very beginning.
I was just using this information.
Okay. I forgot password.
Oh my. Okay. Go email. If an account with this email address exists, you'll receive an email.
Okay, that looked like an error for some reason.
What is going on?
Um, bro, you guys saw that I was just in that account.
Can I say like that account didn't exist?
What?
I'm literally checking all mail right now. Checking trash. Checking spam.
Bro, it's nowhere.
What in the world just happened? Let's try phone.
because it does it does exist.
Okay, we're just on the verge of testing something. Come on. Not don't don't have them here right now.
Okay. Yeah, they choose right now. Okay, whatever. Whatever. I have more accounts.
I just use the main one for this purpose for purpose we're using it and for right now it's fine.
I just like spelled bug crowd wrong. I don't know.
Okay.
Okay. What's going on? What's going on right now? Now I'm actually like, what's going on?
Logan secbugcrowd ninja.
Like that is the email.
Let me go here and check. Yeah. Logan sack bug crowd ninja.
Logan sack bug crowd ninja.
Why?
Why are we having these problems?
Is it something going on with Cali?
Oh, whoops.
I mean to do that.
Let's go and let's try dashboard again.
Let's try to log in. Let's do this account, too.
Yeah, this account is fine.
Let me try any of the other accounts.
I We were just in this one, bro. What? You saw that? I I tried the exact same password.
Why? Why is that happening?
Oh, you know, this is why like actually I was about to blame Burp and say this is why I don't use burp. That had absolutely nothing to do with burp. So, whoops.
Okay. Um, why did I get two codes for Oh, yeah. Okay. Um, now I'm just going to use Chrome Dev Tools to look at the token. Who cares? It looks a little bit more annoying to me. It's fine.
Whatever. I don't care.
Oh, wait. No, I can't do that cuz I can. It's just I don't like it.
What's going on with Cali, bro?
I just like, bro. Okay.
Is what it is. Which Which account is this? This one. Okay. Settings. Team members is what I need to do. Go inspect and you need to go network all and then just create some random bobber burger email address boblogan sack.com roll viewer and now I wish I could like stop it from sending but I don't know how to do that. So I just get the token.
Okay. So now I need a specific one that contains the token.
Yeah, this is the response. I think that's the right response. Yeah.
Now I just need the header because I need the token.
Here it is. This is the token.
So now I'm going to do it the other way.
Instead like this. Grab it.
Go back here. Oh, wait. No, it's still in here. Just here. And now we're going to go back and run to test it. See if I can.
Okay.
Okay. Okay. Should be fine because the other account is still signed in.
I Okay, let me tell you this. Testing for Idor is not usually this hard.
Usually accounts will just log in and then when you log them in, they stay logged in.
That was Yeah, who knows? Maybe I did type in it wrong. Yeah, that's what I typed in wrong.
What is going Okay.
Okay. So, I'm going to assume that the problem is you're not allowed to have two different login accounts using the same um IP.
Genuinely, I don't know. Like, let me try one more time. Maybe it's just bugging.
Like, hopefully this video isn't like this live isn't just super boring, but this is genuinely what's going on right now. So, okay.
Now, we're going to go back to Cali and try it here. Let me just see if I can just I reset my cookies. Maybe that'll help.
Delete.
Delete all session cookies. Just delete them all.
I said delete all.
Okay. Hopefully I did it.
I'm just going to reopen it.
Come on, bro.
Okay. It was not this hard to have two accounts before.
What account even is this, bro? I don't even remember.
So, this is account two.
Okay. Yeah. So, this is plus two.
Yeah. Okay.
password.
Okay, I just need to um just need to verify why why is there no button genuinely?
What is going on?
Here you go. Here you go. Turn off the proxy for a bit.
Yeah. um password.
There you go.
Finally got the code.
Guys, I genuinely don't know what to say.
Why is it not logging me in? I I I don't know. I Okay, we don't give up so easily though.
No, we're going to do now. I've just I went into one of those containers I was talking about. Now, this is a new session. This is a session that's never been on this website before password Bro, for security reasons, your account is temporarily locked. Please try signing in later or contact support.
Of course, of course it is. Of course it is. Okay, one second, guys. Let me check my email.
See if I got an email I can show you guys.
Like actually, I'm not even receiving emails. You're just going to temporarily lock the account and not send me an email like, "Yo, by the way, your account's been locked." Or anything?
Nothing?
This isn't important. This isn't all mail. This isn't in spam. This is nowhere.
Why?
Okay, so that account has been temporarily banned. Am I even still logged in here?
At this point, I don't even trust this.
Okay, so I am Let me write down that token before I forget it. I was supposed to use it right away.
What? Okay, here's the token. It's only going to be a valid for as long as the session is valid.
And none of my accounts seem to want to work. I just go right back up here and try this again.
Maybe if I try turn putting on a VPN.
Maybe that'll work. Okay, this doesn't work here. I'm going try a VPN.
Oh, wait. This kind of just been temporarily banned.
Okay, that's fine.
Oh, wait. No, wrong password.
Okay. Block banan that account too.
Okay.
This account. Okay. I'm I'm logged in on this one. I am logged in.
Wait. No. No. This is This is plus one.
Oh, so I was trying to log in the plus two, but I just Why is it banned? What if I just make it something random? 55.
This account isn't locked.
What is this? What is going on?
Okay, we're going Dev Tool. This was supposed to be an ID door video.
What is this? Why?
For security reasons, your account is temporarily locked. Please try sign in later or contact support link not opener class.
Contact support, bro.
Genuinely, why?
Okay.
Okay, I'm going to try to turn on a VPN.
Okay, just turned on a VPN.
Now we're going to try again. Just got to clean clear the session first.
And then after clearing, I'm just going to like open again.
here we go.
All right.
Okay. Now, now the moment of truth. It doesn't log me in here.
and I get logged in.
Okay, finally, finally, finally, finally. Is this one still logged in? It's been such a long time.
Okay, this one's still logged in. Let me check one more time by saying another one of these to make sure that the token has remained the same or does it switch after a certain amount of time? Guess we're about to see.
Where's it at? Users. Okay. Now, all I want is the header token. Token token.
Believe the token is the same.
Okay, I did it wrong.
What am I doing, bro? Oke.
How did I capture the to Oh my goodness.
Okay. Why is everything just like going awkwardly?
Okay, token same.
Okay, now I can finally test the one thing I've been wanting to test this entire time.
Invite member tester. Bob Bobby O Bobby at login.com roll viewer queuing.
Finally.
Now, all we need to do is change this token and see what happens. That's all I wanted to do this whole time.
Okay, let's see what happens.
200. Okay, success.
ID Bobby pen.
Okay, so it does work, but it should not be here.
See, Bobb's not here.
Refresh it.
Bobb's still here. So, yeah, Bobby went over to the other section section.
Look at this.
Yep, Bobby. Okay, so we have confirmed after about 30 minutes of complications, we have confirmed that all you need is the token to perform sensitive actions. Well, at least we know to do the create. Is that a bug in and of itself?
Maybe. But how do you get the token?
Especially because bug crowd is so big on impact that without it, I don't know.
So let me write that down with especially because the token is session scoped. It's tied to the session as well with only token only the header token. Let me put this in these um attacker can perform CRUD.
What does it call it? CRUD operations on invite functionality probably more probably works across entire application. I should probably just put app but application makes me sound more intelligent.
Okay, so now we have something. Now, if anything, we just want to escalate. How do I how do we steal tokens? How do we find tokens? So, the very first thing I'm thinking is when do the tokens get issued in the signin process. That would probably be the easiest place to steal a token or if we can find XSS, which I have never been able to find in my entire life except for Port Swigger Labs. So, just going to write this as next question. Guess you can also call it chaining. This is what you'd call chaining. When you find a vulnerability that isn't on its own alone isn't enough to be a bug. However, this I guess would you even call this a vulnerability? I don't know. But I find one edge case. If I can find another edge case alone, both those aren't anything. But to combine together, now you have a valid vulnerability. That would be chaining. What we are trying to do now, how can an attacker gain access to a victim's token while it is still validated?
If we can answer this question with something other than like steal their email or something that's not that's not actually like middleman, don't need to be there. know social engineering then we'd have a valid book.
Okay, so first off, let's look at the flow. It's going to be so annoying to log back out after I got in, but it is what it is.
It's all for the content, bro. All for the content. I did the incognito.
Wrong logout. Okay, it's fine. Whatever.
Okay. So, we need to map the flow of login to see where this token is issued.
All right. So, go here password.
Is this even IDOR if I'm being honest?
Have we been No. No. That was cross account stuff right there. So, that is IDOR. And now we're broken access control. Whatever. Whichever one you want to call it. I'm just trying to find the chain to complete it.
So forward, there's like this really big JavaScript file that if I end up getting here, it would just freeze Kaido. So I have to make sure I avoid that.
And now you've seen the password right here, but whatever. I'll just change passwords later. Um, so you have a few cookies. A token shouldn't already be here.
see um user agent origin.
Okay, now we're going to forward go through these requests. We're looking to see where the token gets issued because if the token actually got issued here before we even did the um the phone OTP, then that would also be like final creds issued too soon, which is also a bug.
It's like for example, if you type in your email, wait, is that the token?
Is that the token?
Oh man. Is that token token?
Um, what if I were to turn that off, too?
That's something I Oh my goodness.
Is that the token?
Oh gosh.
What was I saying? So, basically, okay, let me finish explaining. So, let's say you log in and the only thing you've typed in so far is you've typed in the victim's email. If you get the final credits, like you get the cookies, you get the headers or whatever you need for authenticated stuff before typing in the password, then you have au you have bypassed authentication and you now have access to the account before you've actually finished authenticating, which is a bug.
So basically I'm just seeing like can you do that without having to do the OTP which is required because in that case that's how I got the token.
Okay. Yeah. This just I know that's not what I want. This is what I want. OTP code.
So that's the token.
Okay. So do they issue a different token or they just keep it the same?
What do you mean bad request?
I typed it in just as I saw it.
Okay, turn it off. Whatever. No, I do want to see that. I want to see the successful one.
I don't know why this is being so difficult right now.
Just work.
Okay, there you go. So, I'm pretty sure the token just stayed the same. But is there anything here?
Nothing there. But, um, bro, why' you have to leak my entire phone number?
Oh my goodness. I'm going to need to go back and blur that. But anyway, is this the same token or they issue a different token?
You guys probably won't see this whole thing because it would just be annoying for me to blur a small tiny piece. So, I just blur like the whole thing.
Okay, token's the same. Now, the only thing is does it get changed or does it stay the same?
It's just forward.
See what's going on. Which one is it?
This one. Okay.
Now, once again, we do not want to get that stuff. That's the I think that's stuff that crashes my computer. Not the computer, just Kaido. But, okay, here he goes. Post users login token.
Ah.
Oh, here we go. Look at this. This is that same token.
Making sure.
Getting rid of that. Putting this in.
Yes, that is the same token. Could we skip not this is not idle at all but could we skip the OTP the phone OTP and skip right to this request and put in the token right here.
That is actually a very plausible attack method. Very plausible. And see the only thing here in the post is just plugin registration prams null. Like that is light work.
Okay, that is definitely going down as an attack method. That is a that is a really good attack vector. Okay, this is not related at all. So, let's just create something called OMD uh authentication attack vectors like that is a really really good idea. Endpoint Okay. Whoops. Here.
Okay. And then just header required token header.
And that's that's it. And now that that is it.
And then um attack attack vector.
Um after typing in email plus password user uh no response will contain token.
use this token on this endpoint.
Skip OTP and go here.
If if this logs user user in attacker will have successfully bypassed phone OTP.
Part of me hopes it works, but part of me hopes it doesn't so I can upload this video today because now we went from like a lot of annoying issues to this is actually some cool stuff. But I mean, I want to pop bugs. So, y'all going to have to wait if this is a bug. So, uh, let's see. First off, oh, what am I doing here? Just go back here. But, um, back here. I've waited so long at this point. It should be fine, though. So, forward 200. Okay. And now does it issue a different token? No, no, no, no, no, no, no.
Why? Why? This is the really wrong. This is the really long request. I need to capture this request.
I need to see what this is. I I need to know. Does the token change?
What's the access key? I don't know, but I need to see this, bro. Yeah. Oh, no. No. No. This it.
Bro, I need to get my control A. I need to get this stuff. Please, please. We're going to have to wait. We're going to have to wait. I don't know how long this is going to wait. This is going to take.
So, oh my goodness. But we need to get this. We need to get this. Okay. I think hopefully, look at this. I think I was able to copy it. Now, I think that's JSON. So, I'm just going to go here and type in um response. I mean, I'll know cuz this is not something I usually do.
JSON.
Come on. Please. Please.
You did not put it all in a single line.
Okay. How do I um format document?
Let's go. Let's go. Lay slow. Let's go.
It's all here. I mean, this is super super long. I kind of only need to see the beginning.
Yeah. Let me just close burp. I mean Kaido because that's just gonna freeze my computer like crazy. I just closed the whole thing. I'll just reopen it in a second.
So that's just gonna stand up. All right. Now we can finally look at it.
Let's see.
So via x param set cookie operation ID.
Let's look at this.
Let's go here.
I go here. Shouldn't be the same as that. No. Okay, that's okay.
I've never gotten to look at this cuz it always freezes. Alias not applicable.
ID.
This is super long. Why is it so long?
Why is a JSON body so so long? Access key. What does access key provide value to?
That's actually like I'm about to put some Claude code up too and just see what's going on because why is the response so long?
Yeah, I'mma got to see organization access key.
Is sandbox available? False. Catching that is true.
Okay, I don't really see anything all that.
This has to be something of grave value for it to be such a long response body.
Why would the response body to log in be so long?
Access control allow credentials. True.
Access control allow origin. This is the only origin we're allowing.
Why is it red though? I think that just means one problem is in this file. It's just really a large file. I think that's all it is. Okay, I'm about to actually put clog code on that. But first, I just want to see log open backup Kaido. And I just want to see if the access tok if the token is the same because if so, then we have a bug. And then I got to I got to investigate why the response is just so long.
But okay.
It should finish loading though.
Be honest.
I can't even complain. That That's fair.
Like that's that's valid. So now I'm just going to get the token. We've already seen everything. So I'm just going to get the token, look at what the token is, and then from there just finish the login. Okay.
Okay, bro. I need the um I need the verification thing, though. Come on.
Oh, it just logged me in. That's cool.
I just need to see like what is the token. Please say the invite token is the same. Come on. Come on. Fred Freddy email redster at Logan Sack.com.
View roll viewer. Let's see what's that token. What's that token?
Come on. Come on.
It looks the same.
It looks the same.
But is it the same?
The token has remained the same.
That is the exact same token as after we had entered the email password had not done the phone OTP yet. And this is the same token that finishes the login for logging you in. So now we know this is how you get the token. Now that leads to new questions. I like I said in past videos, don't get lazy and report too soon. First off, we could have just reported after figuring out all you need is a token to get the cross cross account. Now, but then instead what we decided to do is we decided to wait and see if there was a way we could access the token. And now we know just that but just by knowing the victim's email and password. You know that's a lot. Let me let me straight up honest that is a lot to know. We just need to know that and then we can get the token verify. But we can skip one of Rapid's other verification things that they do have, which is they require every single user, unless you turn it off, I believe, to have to enter a phone password to finish your login. If we can use this token to bypass that, or maybe we can just use this token to still do things on the back end using the um using Burp request responses, we can still use stuff. then we've basically gained access to another person's account without having access to their phone, which is supposed to be the final line of security defense.
Okay, so at this point, this should be a bug. This should be a bug. But first, let me just make sure like this this function worked.
We just forward 200. Okay, let's go.
This is good. This is good.
successfully sent.
Okay, that is good. That is good.
So, we do have a few things to test now.
We do have some things to test first. Obviously, write that down. Write that down for sure.
Okay, let's start here, though.
So this was just a note but just going to write note.
All right. So confirmed.
We put like a the when attacker types victim email plus password.
The response will contain the token.
This token will not change after OTP verification or on final.
End final path login.
Oh, I hate when it's like that.
Token can be used for all the invitation functionality.
probably works for all functionality has not been verified though.
So now we just want to know can we skip OTP?
That is now the big question. If this logs user in attacker will have successfully bypassed phone OTP which is the next thing we want to figure out.
So, have I sent Did I send that request to response?
I have so many of these online. Yeah, here it is. I'm just going to delete all of these. Like, what the That is a lot. Okay, now I just want to see this. That's it.
That's it.
So, we're going to log out and see this.
If we have this, then that is a bug. And I'm probably not going to report it yet cuz I think I can get like some mass eye going on. Okay, I'm glad I didn't do this in the morning. I decided to get this get this live because this is this is big. This is big.
Okay, make sure testing is completely good. I'm go back in here. Make sure I reset the cookies.
Clear. Clear.
Okay, refresh.
Okay, verify.
And now we're gonna try it.
Oh, I wish I kept some of the I can find them. It's fine. I But I was going to say I wish I kept some of the requests from um like invite delete users. That way if I don't log in the UI, I can test like backend stuff.
Okay, this will obviously work.
And now we have the new token and it sent me the phone OTP. So you can't turn off phone OTP because it's already sent after the request is sent, not after response. But maybe you could bypass it just by changing that. I don't know. But probably not. So let's go token.
Just name this test. And now uh token.
Yeah, that's the new token.
Now we can just forward.
We can turn off queuing for a minute.
And now here I have an idea. It's a little interesting. So what I'm going to do, I'm just going to type in a random random code.
I did not verify was human first. Oh, I can just do it now. Okay, nice. So, and then this would be the request. What I'm going to do is I'm going to go to replay. Instead, I'm just going to grab this.
I'm just going to put it in here.
Just completely change this request.
And I just need to change the token to the one we just got.
There we go. There's only one space, right?
Yes. One space. Okay. And now for the moment of truth.
400 bad requests.
Did not work.
Huh.
Interesting. Interesting. Interesting.
Okay.
I mean, I'm not going to like take that.
Just, you know, I'm just going to remove a few things. Let's see what happens.
Okay, here's a login token.
Did it just No.
No way. Right. No.
Yeah. Another bad request.
Let me just These are probably all going to return 400. Yeah. So, I'm just going to end queuing.
Okay. So, that did not work.
Okay.
So, maybe I can't change it to change it to um change it like that. Okay. Maybe I just need to do it in the replay. I'm not giving up yet.
Not giving up yet.
So, try it again. Wrong one. Wrong email.
Turn this back on.
Okay, we got that one first. It's not usual, but okay. This one forward.
Get that token.
Got the token.
Going to forward.
I keep queuing on. Why not?
I'm going to try to replay it here instead.
Oh, maybe it's cuz it has the old it had the old cookies. Let get some new cookies.
Okay. Yeah, let me get these new cookies.
Cookies are kind of smaller.
Oh. Huh.
I'm just going to see what happens though.
Got a bad request. Is it Is it because the cookies?
Do you receive more cookies after you put in the OTP?
Incorrect OTP.
Does this have more cookies?
No, less cookies.
Okay.
Okay.
I think I know what's going on.
So, you do get the token. However, you can't log in cuz you receive more cookies and those cookies are required for you to then you have enough cookies to actually do that request is what I believe is going on. So now I'm going to put in the correct code and I'm going to see if it issues more cookies.
Oh yeah, I'm looking at the phone number again. Okay, one second. Okay, so I don't see where it's issuing more cookies.
And then this is just the final one.
Looks the same.
How are these cookies different?
What's different? What's different?
Why did mine not work?
Yeah, cookies are now smaller.
Let me use the same token again.
How does it know?
Is this going to work?
Yeah. How does it know? How did it know that I have now completed the OTP?
Does this not freeze my computer? Doing here is not freeze computer.
But how did it know that I filled in the OTP? These are the same cookies, correct? Yeah, same cookies.
Same token.
How did it know?
How did it know?
I don't understand.
I don't get it.
Okay.
Yeah. I don't know.
I don't know. Okay. So, that at least that is off the table.
Okay. So, failed.
Did not log user in.
But you can still check backend commands. Will those work? So that's the next thing to try. So it's pretty much going to be the last thing to try for this um for this live.
We still do have something. You have to remember that. I mean, we still have the uh way to get tokens. Oh, wait. No, no.
I'm testing to actually work right now.
My bad. My bad. So if this fails, then we got nothing. So let's see. Invite member. Let's name him um Sarah.
Sarah Jones.
Oh yeah. Sarah um Jones goes here. Yeah.
Yeah. You're just John's. Whatever.
Okay. Um Sarah Sar Logan.
How come? Okay.
Viewer.
All we need to do is just capture this and then just put in the repeater.
It's going to replay now. I just recapture the recapture token. Really shouldn't matter at all, right?
Can I remove and it still works?
Let's see.
Okay. So, the recapture token is needed.
Yeah. Error. Google recapture validation failed.
Okay.
Can you reuse the same token again though?
That's all I want to know. Let's just change to Jesse and this to Jesse.
And now just use the same recapture token. False. Okay. So recapture token can only be used once.
Okay. So, put that under important can only be used once. Okay. So, I will need a second account to test this because I'm going to need that second account's recapture token. Oh, we should already be logged in here. Never mind.
Never mind.
Okay, but we're good because Okay, I just need to think about I'm going to test this.
So, we test We just need to get the token. That's it. We just need to get the token.
So, I can do this here. Okay. So, now that I have Wait, where the heck is the token? Okay. No, token's in here.
Token's in here.
First one failed, but this one succeeded. Okay, first error. And therefore, we have the token. Where's the token?
Right here. Okay.
So, what we're going to do is we're going to sign out.
Did I never turn that off? Okay.
And now we're going to go to our other browser here. This incognito one and we're going to need to use inspect.
That's fine.
Cuz I'm like the goat with dev tools.
Trust. So here password log in.
Why did it take me here? I just got to find the login. I just need to look at the response. There it is. There's the token.
I just grab that token.
I go over now. I'm just going to log into different account.
Okay. I don't want to see anything go wrong right now. Oh, hopefully I didn't just jinx something. That would suck.
Oh my good. Oh my gosh. Oh my goodness.
Okay. Oh, I just dropped my phone like I typed the code. Why are we doing this once again though? I am right about to test something.
Bro, come on. Of all the times to like have these dumb errors, bro.
Just log me in. I'm like, actually, bro, it's genuinely going to be like this right now. It's genuinely going to be like that.
like, oh my, bro. Okay, I'm going to try the whole VPN thing again. Okay, now let's try it.
Like genuinely, we are on we right on to something. Now is like the worst time to be running into the same login errors.
Like actually, bro, why did it just open up Dev Tools out of nowhere?
Did I write down the token? No, it's fine. It should be my copy thing.
just work. That's it. We are right. We are at the finale. We are at the climax.
Okay, I got the login. That is so weird.
But okay, so now finally go set. Oh, we need to turn sandbox.
All right. Now, go settings, team members, roles, invite member, Houston. Spelled horribly. Houston spelled wrong as well. I don't even care at this point. You yo at logan.com.
Roll viewer.
It's finally time to see.
Will this work?
change the token.
Whoops.
Here we go. This is what everything we've done today has come to.
invalid session.
But maybe we got blind XSS.
That's all I can hope for is blind XSS.
This will be the very last thing I check is whether this worked or not.
Okay, we are now playing on blind XSS.
Even though it said it failed, did it actually succeed?
Here we go. I'm in. Oh, turn sandbox on.
Did not succeed.
Okay. So when attacker let me update my notes.
When attacker types victim email plus password the response will will contain the token. This token will not change after OTP verification or on final post path thing. Token can be used for all invitation functionality. Probably works for all functionality.
However, before OTP verification token is not valid.
OTP verification must be completed before token becomes valid.
Okay.
And I know I said to end it right here, but I'd like to get Chad's well Claude's um opinion on this. So token is required in request the same. Okay, I'm just going to this all my board notes should be right here.
So let me just see if I can just go right to cloud and see what it has to say. Try control seed it.
Okay.
Uh thoughts until it thoughts.
Okay.
What do you think?
Personally, I don't know. This is It's definitely something, but all I have is the fact that you can do cross account actions with just a token. And I found a way to get the valid token. However, the token doesn't become valid until the user is actually logged in, which you know, we have stuff. We also have some roadblocks in between it. This is a solid finding.
Let me break down what you've got in the severity implications.
What you found core issue. The token header is essentially a session token that is returned in the login response before OTP verification completes. Does not rotate after OTP verification. Does not rotate after the final login step.
grants full CRUD across the invite functionality and likely the whole app with just this one header. So then there's the attack chain key vulnerabilities token pre-issuance before MFA completion token shouldn't exist or be usable until the flow until the full offflow completes issuing it preotp is the root design flaw however remember it's not usable yet though token non-rotation token should rotate at each off stage missing token binding no IP binding no device fingerprint or other contextual validation on the token.
That might be true. This might actually it might have something. I don't know. I don't believe so. Probably not. Next question. You're asking, "How can attacker gain access to victim's token while it is still valid? Possible angles to explore and document credential stuffing.
Tagger has cred token pre OTP." No, that's not good. Like, no, because it's still not valid till after you type in OTP. Response interception middleman.
Okay, that's not that's not um allowed.
XSS, that's that's allowed. Logresponse leakage, which would probably be the best way of finding it. Refer header leakage, another good one. Account sharing flow. Invite mechanism itself leaking tokens. These are some good ones.
Severity assessments is likely high or critical because bypasses MFA entirely if attacker has credentials. No, it doesn't. What wasn't it in there that it doesn't like bro? Okay. Report framing tips leave with okay chain it.
Okay. Um no even though it issues token preotp completion completion.
The token does not become valid until after all caps the OTP verification is completed successfully.
Let's see what it says because this is the main thing is this.
Okay, there we go. Good clarification.
This changes the picture. Let's reassess. So, the real bug is token non-rotation. The token issued preotp is the same token that becomes valid post OTP. It should be replaced with a new token after successful MFA completion.
the actual attack scenario. For this to be exploitable, the attacker needs known victim's credentials. See, like that's that's a pretty big thing. And then initiate the login to capture the pre-OOTP token. Wait for the victim to log in themselves and complete OTP. That same pre-capture token is now valid.
Yeah, this is a essentially a race/ session fixation style issue. The attacker fixes the token. Victim unknowingly unactivates it. Revised severity still high but exploitability condition is narrower. Attacker must already have credentials. Must be able to initiate login before victim does.
Victim must then log in and complete OTP. The key question for your report.
Does initiating login with attackers request invalidate or interfere with victim's own session/lo flow? Yeah, I'd say most likely no. Most likely the answer to this is going to be no. But hey, we can test it really fast. So, let's see.
Just log out of this account real quick.
I know we said we were just we were going to end it, but like I just got to test that real quick.
So, all we need to do is just I don't even need to use burp. Just use network tab. Just that is still.
All right.
Here is the login response.
That is the token. Now we just need to see if the same token when I do a different login.
Let's see.
Why is it changing me over to sources? I guess it doesn't really matter.
Okay, token is excuse me token is now 2917 and token here is 9055. So the answer is no. Okay, doesn't invalidate or interfere?
No, just tested.
Okay.
So that is now no longer probable. That is now no longer a probable attack vector. We have now know that that is false. Okay.
Okay. That's confirmation you needed.
This is a clean session fixation bug.
Why this is severe? The MFA is completely neutralized as a security control because the attacker never needs to touch the OTP. Victim has no indication anything is wrong.
Okay. Does logging out on victim's side invalidate the attacker's token? Yes.
On log out previous will be invalidated, but that's the victim's logout, not the attackers. Worth testing.
Change this fair to impacting report.
Okay. So, let's just log in on both and see what happens.
Okay.
Now we're just testing session fixation books, which is pretty much I guess what we've been doing the whole time.
Oh, it's weird.
Try the other one now.
Okay, let's um let's try that now.
Oh, that's what it takes you.
Oh my goodness, it's been an hour and a half now. Okay, log in on two different accounts.
See if it logs me out anymore.
We are not back to this. We are now back to this where it's going to act like this and do all that crap. Okay. Um yeah, I'm just going to assume I'm just going to end the video here. I'll continue testing this later. Be honest, I don't believe this test is going to work. But so all we have verified in this video is that if you are somehow able to gain access to the token without doing things like middleman or social engineering, you will be able to perform actions cross account. If you like this video, make sure you subscribe. Make sure you also fill out the form in the description if you want to be if you want access early access to the the script I have the JS script JS automation script that I have and probably some other things I'm also going to add to that that link will be in the description for that as well and I'll see you
Related Videos
OpenHuman VS Hermes AI: Who Wins?
JulianGoldieSEO
285 views•2026-05-29
Long-Running Agents — Build an Agent That Never Forgets with Google ADK
suryakunju
142 views•2026-05-30
5 Mind Blowing Omni Uses Cases
PaulJLipsky
1K views•2026-06-02
This computer is made from real human brain cells. And you can buy it.
Talktmsmedia
3K views•2026-05-28
BREAKING: Microsoft’s New Image Generating Model Beat Out GPT 1.5 and Nano Banana 2
aimmediahouse
122 views•2026-06-03
I Made the Same Anime Fight Scene in Every AI Video Generator
NobleGooseAnime
295 views•2026-05-30
Nvidia Bets Big On AI PCs | New Chip To Power Windows Laptops | Technology | AI Updates | N18S
cnnnews18
3K views•2026-06-01
I Tested NEW Opus 4.8 on Four Projects (Updated LLM Leaderboard)
AICodingDaily
298 views•2026-05-29











