Cross-Site Request Forgery (CSRF) Explained

Поділитися
Вставка
  • Опубліковано 21 січ 2025

КОМЕНТАРІ • 270

  • @forceboxed
    @forceboxed 2 роки тому +79

    @4:53
    one of the important things to mention here is that the csrf token is good only as long as it is mapped to the user's session ID in the backend. Otherwise, the attacker might simply obtain a valid CSRF token by visiting the main website themself and inject it into the malicious requests.
    Tying the token to the user's session and validating that on the backend for each request is very important.

  • @hydr0nium_
    @hydr0nium_ 5 років тому +321

    Seriously cant say it enough. I freaking love your videos

    • @kvenk001
      @kvenk001 2 роки тому +2

      I second that notion

  • @justforyoutube1319
    @justforyoutube1319 5 років тому +73

    i came from LiveOverflow channel , i so glad to be here !
    your channel is interesting , love it . keep up the good work

  • @jammincoder
    @jammincoder 3 роки тому +11

    Man, I tried researching how CSRF attacks worked last year and I never got a solid grasp of it.
    This video changed that.
    As a cybersecurity enthusiast and web developer, this is super helpful!

  • @yasirhussain1875
    @yasirhussain1875 3 роки тому +10

    No words to describe how much informational these videos are.
    Thank you.

  • @dragonballZbigBang
    @dragonballZbigBang 5 років тому +116

    There's tens of thousands of videos on Csrf but you easily beat all of them. Yet the number of views you got aren't nearly as close as theirs. Niche youtubers like you are ahead of the time. I hope people like you are revered in coming 5 years

    • @PwnFunction
      @PwnFunction  5 років тому +38

      Yeah, late in the game, but it's totally fine, I'm just trying to give somethin back to the community.

    • @OviDB
      @OviDB 2 роки тому

      Look at it now ;)

    • @gerolori
      @gerolori Рік тому +2

      Damn, dude really planted the seed and let it grow

  • @a.yashwanth
    @a.yashwanth 4 роки тому +19

    I watched around 15 videos regarding csrf and you are the only one who explained it clearly. Also not everyone stressed on "the browser automatically sends the cookies".

    • @shreyanshdesai3152
      @shreyanshdesai3152 4 роки тому

      truuu

    • @kornelijekovac9793
      @kornelijekovac9793 4 роки тому +1

      I still don't understand it. What does it mean? What cookies? All the cookies from all the tabs opened in the browser are sent with all POST requests that are being made on whichever tab?

    • @bsmldy8681
      @bsmldy8681 4 роки тому

      @@kornelijekovac9793 All the cookies from one website will be sent to the server of that website on each request (with website I mean domain, not origin). The most important cookie is the one with the session id (SID), which identifies the user. More about this can be found if you search for "session management".

    • @kornelijekovac9793
      @kornelijekovac9793 4 роки тому +1

      @@bsmldy8681 But how can cookies from two different tabs intermingle?

    • @bsmldy8681
      @bsmldy8681 4 роки тому

      not sure what you mean by that

  • @sleepydev4700
    @sleepydev4700 3 роки тому +1

    the music and naration in the intro made me feel like I'm discovering a mistery in another new world, lol. great video

  • @MaysField
    @MaysField 4 роки тому +84

    "Cat-Site Request Forgery"

  • @T3chN0mad
    @T3chN0mad 3 роки тому +13

    Wow , I love the graphical explanatory video, really easy to follow and understand in concordance with explication

  • @sathvikmalgikar2842
    @sathvikmalgikar2842 2 роки тому +6

    we need more of these.
    literally a free service to everyone genuinely interested

  • @CYB3Rsynth
    @CYB3Rsynth 2 роки тому

    Third video of yours that came up, and perfectly described the concept. Subscribed

  • @rasikagayangunarathna
    @rasikagayangunarathna 4 роки тому +24

    I genuinely don't understand why you stop creating videos. Your style is so cool.

  • @miguelnunez1435
    @miguelnunez1435 5 років тому +3

    Just came by from watching LiveOverflow's video. I subbed and put on the bell notification on. This channel looks so cool

  • @danialabsolute688
    @danialabsolute688 2 роки тому

    I really enjoyed your theme of explanation and the background music. sounded adventurous

  • @theawless
    @theawless 3 роки тому +1

    Great content. I can't believe this is free!
    PS: I love your colour scheme

  • @mitchelline
    @mitchelline 5 років тому +6

    Incredibly amazing video as always. Very great explanation, and I love your color choices and how you draw/write everything

  • @JoshuaKisb
    @JoshuaKisb 4 роки тому +2

    was curious if tokens really work since you could just make a GET and read the token then post. glad you answered that question very quickly. awesome video. i will subscribe

  • @yashdeephinge
    @yashdeephinge 2 роки тому

    Great Video and your drawing is amazing bro that google logo and the adobe logo was so perfect.

  • @subhashsarangi
    @subhashsarangi 5 років тому

    You are just awesome man. Why doesn't UA-cam show such search results at the top. I couldn't find you when I needed but now I am happy. Thanks bro..

  • @krantisatyam
    @krantisatyam 3 роки тому

    This is one of the best channel I have encountered 😍

  • @nivelis91
    @nivelis91 5 років тому +15

    You definitely deserve more subs ;)

  • @kid_kulafu_1727
    @kid_kulafu_1727 4 роки тому

    Bruh you need to create more content like this. Also you give example are to fast but over all your the best. 11/10.

  • @berakoc8556
    @berakoc8556 2 роки тому

    You put lots of effort into your videos. Transitions are amazing. Wonderful production.

  • @joshuz101
    @joshuz101 2 роки тому

    I often find it hard to focus on educational videos like this, but somehow your videos have all of my attention. Not sure what voodoo you're using but it's working!

  • @aminvogue
    @aminvogue 4 роки тому

    Wunderbar...................U r one awsme teacher. Hats off to the effort you put in, for us mere novices.

  • @aayushkubitkar4827
    @aayushkubitkar4827 5 років тому

    Came from Stök's channel. Absolutely loving it now! Subscribed and belled👏

  • @farzadsole3784
    @farzadsole3784 3 роки тому +1

    Amazing content as always, big fan of your videos and tutorials, thank you so much ;D

  • @itsfarseen
    @itsfarseen 3 роки тому +2

    Love the style of explanation!

  • @ph0sgene967
    @ph0sgene967 10 місяців тому

    As someone who pioneered csrf in 2007 this is a great video

  • @mosesegboh
    @mosesegboh 4 роки тому

    you concept and style of teaching is lovely!..keep it up

  • @casual-corner-k8s
    @casual-corner-k8s 5 років тому +4

    This is very well explained, appreciated

  • @nickdaone
    @nickdaone 2 роки тому

    You need more likes. Your work is needed for every developer.

  • @darklord555X
    @darklord555X 2 роки тому

    the best channel, thanks brother for the knowledge

  • @ekaterinazakharenkova5826
    @ekaterinazakharenkova5826 Рік тому

    Best explanation I've ever heard!

  • @stanpeng5931
    @stanpeng5931 3 роки тому

    Such a good video. I love the voice as well: cute and reliable

  • @samuelk3076
    @samuelk3076 6 місяців тому

    Very nice video, I love the explanation!

  • @MinusFourmn
    @MinusFourmn 2 роки тому +4

    As I understand it, fetch and XHR require `useCredentials` to send the cookies along with the request which needs to be explicitly stated on the CORS header Access-Control-Allow-Credentials. Otherwise cookies are not being sent and the CSRF fails.

  • @fairchild9able
    @fairchild9able 3 роки тому

    Thanks for making this. Really nice!

  • @zb2747
    @zb2747 3 роки тому

    Great video, to the point and thoroughly explained the main concept.

  • @eshaan7_
    @eshaan7_ 5 років тому +4

    Thankyou for your videos. I would very much like to see a video on Insecure CORS and ways to escalate it :)

  • @king998100
    @king998100 Рік тому

    probably the best explanation out there

  • @MrVinaybhandari
    @MrVinaybhandari 5 років тому

    Videos are so interesting and clear with basic to advance. Keep going 😀

  • @zTech300
    @zTech300 5 років тому

    Great explanation bro, Keep up the good work.
    Wish ya da best.

  • @venkaraj
    @venkaraj 2 роки тому

    Crystal clear explanation. Thanks a ton

  • @VietnamSteven
    @VietnamSteven 6 місяців тому

    incredibly informative!

  • @ETbutforreal
    @ETbutforreal 4 роки тому

    You explained this better than the skillsoft guys, that's for sure

  • @staynjohnson4221
    @staynjohnson4221 4 роки тому +4

    12:47
    I dont understand why the json data + the content type header are first passed through a redirect(?) then to the vulnerable site?

    • @peterfarhat5767
      @peterfarhat5767 4 роки тому +2

      Because simply flash will forward the request as string and then the site will convert it into header and “ key = value “ type so that it would be readable by the API of vuln.com!

    • @youarethecssformyhtml
      @youarethecssformyhtml Місяць тому

      Because the redirect can send cookies

  • @gamingwolf3385
    @gamingwolf3385 Рік тому

    Amazing 😅 , i learn a lot of new concepts in one video , but i think i will re-watch it later , some of them seem confusing !

  • @paulcalinovici8808
    @paulcalinovici8808 4 роки тому +11

    Before sending the delete request, isn't the browser sending a preflight OPTIONS request to the server which will return an error and the delete request won't happen anymore ?

    • @aakashthakur1415
      @aakashthakur1415 3 роки тому +2

      I was thinking the same. Ideally CORS would have stopped this.

    • @aakash18in
      @aakash18in 3 роки тому

      yes. In case of Ajax request , SOP will stop the request as the preflight will return error

    • @ororabrian7106
      @ororabrian7106 2 роки тому

      yeah. Just as a note, It seems that you can actually send a simple request to the server and the request will go through but you won't be able to read the response due to cors. namely if you don't have any headers on your request but then again that means you won't have any cookies and won't be carrying any state so pretty useless all in all.

    • @SunPodder
      @SunPodder 2 роки тому

      As cors is just client sided, for a hacker this isn't difficult to bypass it

    • @spicybaguette7706
      @spicybaguette7706 2 роки тому

      @Orora Brian You can still do CSRF for non-authenticated requests, such as an anonymous message on a blog post or something, which is not entirely harmless

  • @mahirmolai3834
    @mahirmolai3834 3 роки тому +2

    Was watching live overflows vid a month ago, and look at me now, watching each video of yours everyday

  • @a.yashwanth
    @a.yashwanth 4 роки тому

    I get this as response headers but I still get the chrome cross origin error.
    access-control-allow-headers: Content-Type
    access-control-allow-origin: localhost
    content-length: 0
    content-type: text/html; charset=UTF-8
    date: Mon, 16 Mar 2020 15:52:28 GMT
    server: Apache
    status: 200

  • @soufianeabbad887
    @soufianeabbad887 5 років тому +3

    Awesome video. I hope that you explain some bugs like vulnerable flash files, JSONP and email spoofing

  • @matthewdraevich4214
    @matthewdraevich4214 5 місяців тому

    Great explained, thanks🔥

  • @Gigolas88
    @Gigolas88 5 років тому +2

    wtf you deserve way more likes on this

  • @susovangarai6731
    @susovangarai6731 4 роки тому

    your channel is a gold mine !!

  • @dougthefiddler
    @dougthefiddler 3 роки тому

    Very clear explanation. Thanks!

  • @playboicartihey
    @playboicartihey 2 роки тому

    this is the best. freaking cool

  • @Meleeman011
    @Meleeman011 4 роки тому

    this made me rethink my web security holy shit.

  • @shivamyadav1283
    @shivamyadav1283 2 роки тому +1

    Is it true that SOP allows to send request cross domain but not read the responses? Why would even a request be even triggered by the browser if there is a SOP?

  • @mitchelline
    @mitchelline 5 років тому

    I found a CSRF on a large website with > 500k members, so it's more common than you think! It allowed me to send their coins to my account, and those coins were bought with real money, so it was a decently critical flaw

  • @princepatwari365
    @princepatwari365 4 роки тому

    Great videos.........Thank you for posting them

  • @kds-2049
    @kds-2049 4 роки тому

    Explained well, props to you

  • @xa3da4
    @xa3da4 3 роки тому

    I Love PwnFunction Video's ILLUSTRATION🔥🙌⚡😍

  • @yeshwanth.alampalli
    @yeshwanth.alampalli 5 років тому +2

    Basic question 😐=> If the same origin policy blocks the request from different domain, how can cat.com make request on behalf of vulnerable.com? 🤔

    • @PwnFunction
      @PwnFunction  5 років тому +2

      Thats an example of Cross Origin Request, you can make requests to any website, but the response can't be read due to SOP unless the site let's you explicitly.

  • @khoroshoigra8388
    @khoroshoigra8388 Рік тому

    most of the cases of being bypassed by other domains for a kind of request is by using */wildcard in CORS

  • @yuvalozeri3142
    @yuvalozeri3142 5 років тому

    Amazing video, so clear!
    thank you

  • @kesogonzaga2671
    @kesogonzaga2671 4 роки тому +7

    4:00 how did cat.com get my session id?

    • @esquilax5563
      @esquilax5563 4 роки тому +6

      The attacker who created cat.com never needs to know your session ID. The javascript in cat.com makes a POST request to vulnerable.com, the browser sees that it's contacting vulnerable.com, and it automatically includes the cookies (including session id)

    • @dalewatson3978
      @dalewatson3978 4 роки тому +1

      @@esquilax5563 sorry, so after i make request from vulnerable.com, and then i browsing another domain, and somehow open cat.com, the cat.com still can access my previous vulnerable.com cookies ? is it across the tab browser? what if i re-open the browser, will the request from cat.com still including the vulnerable.com cookies ?
      then cat.com really needs to know our history browser, so cat.com knows what was the useful cookies before ?
      does opening from private/incognito browser prevent csrf ?

    • @esquilax5563
      @esquilax5563 4 роки тому +12

      ​@@dalewatson3978 It goes like this:
      browser: hey vulnerable.com server, can you send me your content?
      vulnerable.com: sure, here it is, and please remember "session=123"
      ...later...
      browser: hey cat.com, can you send me your content?
      cat.com: sure, here it is (snigger)
      browser: hmm, the content says I should also ask vulnerable.com to do x, y, and z
      browser: hey vulnerable.com, can you do x, y, and z? And BTW you told me earlier "session=123"
      vulnerable.com: session ID checks out, OK, I'll go ahead and do x, y, and z.
      The browser knows *all* its cookies for *all* sites. When it makes a request to a site, it will only send the cookies for that site.
      Incognito mode can help in some cases. When you start off in incognito mode, you have no cookies, and they'll all be cleared when you close the incognito window. But you can still set cookies in the meantime. So if you're in private mode and you log into vulnerable.com, the same thing can happen. If you're only logged into vulnerable.com in your regular, non-private browser, then you can go to cat.com in private mode and this attack won't work.
      About closing and re-opening the browser, it all depends on when the relevant cookie is cleared. It can be set to expire when you close the browser, or to expire after a certain amount of time, or it can stay around forever. The server specifies how long the cookie should stay around when it sets the cookie. That's why many sites can decide to let you stay logged in even after the browser is closed and re-opened.

    • @trishulbhuyar181
      @trishulbhuyar181 4 роки тому

      Won’t CORS will restrict the call, when delete request initiated from cat.com to vulnerable.com ?

  • @raulherbert
    @raulherbert Рік тому

    Awesome explanation! Tks!

  • @jenniferwood4916
    @jenniferwood4916 5 років тому +1

    Love your videos! Please make more :3

  • @MohaDou
    @MohaDou 4 роки тому

    That's crazy explanation, Thanks a lot

  • @behnkenj
    @behnkenj 4 роки тому

    Well done sir, keep them coming! :)

  • @harshitjoshi3082
    @harshitjoshi3082 2 роки тому

    This is awesome !

  • @chimithras4746
    @chimithras4746 2 роки тому

    Great Explanation ✅

  • @timon5851
    @timon5851 3 роки тому

    4:08 why is cat-website allowed to send a cookie which is not his own? Where else does it now the sessionID to give a valid answer to the server? Sorry im kinda lost

    • @ororabrian7106
      @ororabrian7106 2 роки тому

      Sometimes it's warranted. sometimes one site depends on you being authorized on another website.

  • @HarujiCat
    @HarujiCat 10 місяців тому

    You saved me. Thank you so much

  • @artemislwof9264
    @artemislwof9264 5 років тому

    Fucking A . i had to do couple of days of deep research to understand some of those concepts in order to have some idea about where the exploits would be . you just explained it PERFECTLY in simple terms and visuals and confirmed some of my thoughts :D . u did share some valuable and accurate information despite supid youtube terms n policies. Thank you sir for the clues XD

  • @kuro_royale
    @kuro_royale 4 роки тому +1

    I love your videos there amazing , professional ! but I guess slow down a little bit for new people,
    other than that your the best I have ever being taught

  • @nolongeravailable111
    @nolongeravailable111 2 роки тому

    Nice video thanks for the amazing content

  • @mk9834
    @mk9834 4 роки тому

    love your videos this is a god's work

  • @chaosknight3175
    @chaosknight3175 Рік тому

    Ok, good stuff. Subscribed.

  • @vitorgouveia5378
    @vitorgouveia5378 3 роки тому +1

    but doesn't CORS prevent this?

  • @eLab43
    @eLab43 3 роки тому +2

    Question: Why not just use postman and set the headers?
    Thanks

    • @ororabrian7106
      @ororabrian7106 2 роки тому +1

      You can.... If you want to hack only yourself.

  • @brod515
    @brod515 3 роки тому +1

    let me get this right, if cat.com sends a request to vulnerable.com the browser automatically sends cookies of vulnerable.com with the request but cat.com can't read the response right. they crucial part is that cat.com can't read the response.

    • @vanjavk
      @vanjavk 3 роки тому

      I feel like you're correct

  • @ghost91827
    @ghost91827 4 роки тому

    Just amazing content!

  • @atharvakadlag1937
    @atharvakadlag1937 3 роки тому

    You're videos are awesome

  • @oussamasethoum1665
    @oussamasethoum1665 8 місяців тому

    Can cors prevent this request when credentials are included and the cookie is http only?

  • @Odys42
    @Odys42 4 роки тому

    Awesome ! Thank you !

  • @karansh491
    @karansh491 4 роки тому

    Hey @PwnFuncrion why you're not uploading any videos now 😐

  • @kivuosark2088
    @kivuosark2088 4 роки тому

    Yes! We cannot access external website within but what about window.postMessage() ?

  • @indientis6003
    @indientis6003 2 роки тому +1

    *Sees **11:42*
    *Cries with Respect*

  • @miss-sw3qu
    @miss-sw3qu 4 роки тому

    Your videos are amazing. Clean, informational, and perfect. I should have found your channel earlier.

  • @mohitpal1505
    @mohitpal1505 6 місяців тому

    But isn't the cookie domain-specific? When we click the cat site(evil) would it still send the cookie(containing sensitive data like sessionId), though it is not associated to hat cat's domain?

    • @rulzz2581
      @rulzz2581 5 місяців тому

      You are right, cookies are domain-specific. If you have two different websites opened in your browser, they will not know the Cookies of each other.
      But the thing is that your BROWSER knows them. And it's your browser that automatically sends them with every request to the website. Otherwise, you were supposed to re-login into the website every time you wanted to make any action.

  • @wispawelwis38
    @wispawelwis38 2 роки тому

    how is this csrf_token stored so it is not send together with cookies?

  • @jimmyliu2982
    @jimmyliu2982 3 роки тому

    But how is it possible to post json via html form, where entry is urlencoded?

  • @Latajacaryba
    @Latajacaryba 2 роки тому

    I don't get it. If a hacker needs a token, why can't he simply make a get request in order to get some token and then send post with given token?

  • @zxuiji
    @zxuiji 3 роки тому

    3:49, uh but there's an origin parameter there, that means the server should be the one responsible for checking the origin has authorisation prior to carrying out any command it has sent

    • @ororabrian7106
      @ororabrian7106 2 роки тому

      I'm not sure about this I think that the server can decide to check this at the own descretion however this video is in the context of "what the browser does". I guess this video is about the security from the browser point of view.

  • @thomaseaso
    @thomaseaso 5 років тому

    Excellent Explanation

  • @dadogwitdabignose
    @dadogwitdabignose Рік тому

    is there any way of capturing static csrf tokens by taking a payload sent by a pre-existing csrf vulnerability then capturing the response and copying it along with the headers

  • @re43p3raod3
    @re43p3raod3 3 роки тому

    you should make more cyber security videos i LOVE them!!!