Hacker Tweets Explained

2024 ж. 11 Мам.
157 337 Рет қаралды

Let me explain to you what you can learn from these tweets. Did you know the name trick?
Buy my terrible font (ad): shop.liveoverflow.com
Learn hacking (ad): hextree.io
Quote Tweet: / 1697869590569582932
Original Tweet: / 1696862832841916679
Critical Thinking Podcast: www.criticalthinkingpodcast.io/
XSS Origin Series: • The History of XSS
Chapters:
00:00 - Intro
00:37 - Tweets About Tricky XSS
01:24 - XSS Testbed Setup with php
03:45 - Exploring the XSS Context
05:24 - The window Object
06:46 - Tweet 1: Justin's XSS Explained
08:22 - Tweet 2: Mathias's Variant With Object
09:52 - Tweet 2: Mathias's Variant Creating Class
10:30 - The window.name Trick
12:00 - Closing Script Tag XSS
12:28 - Outro
=[ ❤️ Support ]=
→ per Video: / liveoverflow
→ per Month: / @liveoverflow
2nd Channel: / liveunderflow
=[ 🐕 Social ]=
→ Twitter: / liveoverflow
→ Streaming: twitch.tvLiveOverflow/
→ TikTok: / liveoverflow_
→ Instagram: / liveoverflow
→ Blog: liveoverflow.com/
→ Subreddit: / liveoverflow
→ Facebook: / liveoverflow

Пікірлер
  • This episode could have been 13m37s in length, surely...!

    @LoafyHarbinger@LoafyHarbinger7 ай бұрын
    • oooof.... missed opportunity

      @LiveOverflow@LiveOverflow7 ай бұрын
    • ​@@LiveOverfloweeh leet, leat, same thing

      @hyronharrison8127@hyronharrison81277 ай бұрын
    • It must be an AI. There is no way the Real liveoverflow would have ever let this slip, He cut it, he render it, he watch it He uploads it. Multiple occasions where an Actual human would have seen the magical number but not an AI.. For an AI it's just a number. Therefore Liveroverflow has replaced himself with an AI

      @nesieARK@nesieARK7 ай бұрын
    • could, but wans't

      @lukasjetu9776@lukasjetu97767 ай бұрын
    • @@lukasjetu9776 I think Leet + 9 seconds bonus is also cool. Nice video, now I'm hungry for more XSS.

      @GeorgeValkov@GeorgeValkov7 ай бұрын
  • Nice video explaining the issue. One thing that I think is good to mention is what is the underlying mistake. This makes it a better resource for devs and also for researchers. In my humble opinion this is due to the fact that the person implementing this tried to it's own filtering instead of using the native available functionality and/or standard package. The red flag beeing the specific list of characters used for filtering

    @efrkool@efrkool7 ай бұрын
  • PLEASE do more vids like these! I love the way you explained every bit.

    @xorlop@xorlop7 ай бұрын
  • This format is fun and useful, please do it again!

    @xB-yg2iw@xB-yg2iw7 ай бұрын
  • Great video and explanation, professional, and gets to the point. I think one main takeaway one can get, that would especially help guys who may feel overwhelmed by these injections, is that the core problem here to be spotted while you are testing is the lack of the encoding / filtering of the double quotes, which allows you to escape the context of the string where the contents of the parameter is being injected. After that is just a matter of playing around to see what you are allowed to inject and find a way to run code, which is what these injections are all about.

    @fededamian@fededamian7 ай бұрын
  • neat! these tricks go straight into my notes ! Nice video format too. I'd like to watch more of this kind

    @_hackwell@_hackwell7 ай бұрын
  • This was super interesting and fun to learn about. Great lesson! Hope to see more of your content, keep up the great work

    @KyoSawada1@KyoSawada17 ай бұрын
  • Great video! Really well explained and easy to understand. Would like more in this series to just explain a short exploit in a way that anyone can understand.

    @karlkastor@karlkastor7 ай бұрын
  • I like this as a reoccurring video. It is nice to be able to decipher what someone was referring to. Given everyone has different levels of knowledge, I would give it a 2 thumbs up. Keep ‘em coming!

    @fourtwizzy@fourtwizzy7 ай бұрын
  • This is not really JS problems as some people seems to think. Carelessly treating user's input would always lead to big problems. In general when developing FE applications we rarely set any user provided values in any context that could be evaluated like this. Concatenating user's input with code is just bad practice and big no-no. In general, interesting information, but highly theoretical: so many characters are disallowed while double quote still being allowed. I feel IRL, if such case would be allowed, would be either no input cleaning or stricter rules.

    @VxMxPx@VxMxPx7 ай бұрын
    • Sadly most websites stubbornly develop their own ways of providing rich text display methods instead of using standards, which generally just tends to expose users to exploits... I know that all too well. Been working on the frontend for a while (please kill me)

      @shapelessed@shapelessed7 ай бұрын
    • I have seen a lot of old codebase concatenating user's input with code, it really isn't that bad as long as you know what you are doing. Also in those applications you just can't rewrite the majority of the codebase just to fix a newly discovered XSS. Sorry I lied it was so damn bad that it has become a joke where the filter list just increases day by day. We slapped on a 5000$ IDS and IPS service and everyone pretends like everything is in control but deep inside we all know that the codebase is on fire. I know Robert had told me for a thousand time that concatenating user input with code is bad, but when deadline is chasing off my a** I just can't help but pray and do it anyway, I just want to go home. Sorry Robert, I swear it will be the last time I do it. Amen.

      @aa-fi9ks@aa-fi9ks7 ай бұрын
    • you are absolutely right. thats also almost always my first thought. but i have to throw that thought away for a moment because it gets more interessting if you think about all the existing websites who still could have flaws like this. and its also interesting just to see again how sh*tty and dirty compilcated and entangled javascript can be as a scripting language :D

      @BrotWurst@BrotWurst7 ай бұрын
    • it kind of is. javascript is dogshit and was made to do simple things when it was created but some clowns said "hold my beer" and other clowns took it seriously, then nodejs happened and embedded webshit posing as fully functional desktop applications known as electron came to be and it's at its worse. Thank God I don't ever was forced to dabble in this cesspool profesionally

      @furiat5981@furiat59817 ай бұрын
  • Wow thanks! It's so important for people to have a handle on this sort of thing so we can be aware of what we need to look out for when writing code.

    @WistrelChianti@WistrelChianti7 ай бұрын
  • Cool format, please more of this :)

    @forestcat512@forestcat5127 ай бұрын
  • I'm really into all kinds of quirks of js and I can't believe that knowledge finally paid off and I was able to fully follow a liveoverflow video 🎉

    @SoreBrain@SoreBrain7 ай бұрын
    • Yea its one of the more easy to follow videos for web soydevs like us :D

      @ChillerDragon@ChillerDragon6 ай бұрын
  • great video. learned a lot. would love to see more like it 👍

    @hydejel3647@hydejel36477 ай бұрын
  • Love this explanation. Would use this as a quick explanation for javascript injection methods in general

    @galopeian@galopeian7 ай бұрын
  • Super useful and interesting format. Thanks for sharing

    @seybsen@seybsen7 ай бұрын
  • Very insight and presented in a way you can understand. I had no idea about XSS or an and now I do.

    @staCats@staCats7 ай бұрын
    • same

      @lukasjetu9776@lukasjetu97767 ай бұрын
  • I would love to see more of this new format.

    @tweeko6903@tweeko69037 ай бұрын
  • It's such a weird filtering when you disallow ( ' and ` but allow " < and >

    @AntoshaPushkin@AntoshaPushkin7 ай бұрын
  • This is a really cool format. Had this recommended, never seen your channel. Ngl I thought it was gonna be clickbaity and surface level, but this was great! I subbed

    @exoZelia@exoZelia7 ай бұрын
  • this was an open tab for so long. greatly explained !!

    @HritikV@HritikV3 ай бұрын
  • Loved this one! Please, keep them coming :)

    @adrianoverona@adrianoverona7 ай бұрын
  • Man, I almost never do websec, so this was fascinating. I learned a ton, your content is always top notch! Thanks for this ❤

    @gergelykalman9822@gergelykalman98225 ай бұрын
  • awesome format! i learned so much

    @the6278@the62787 ай бұрын
  • very fun format! :) learnt a few tricks

    @FuzzyLitchi@FuzzyLitchi7 ай бұрын
  • Nice, we want more :) Thanks mate, as always.

    @ya_Ra28@ya_Ra287 ай бұрын
  • Not even a minute of reproduction and I can say "I love this series"

    @a.k.b.a.l.@a.k.b.a.l.7 ай бұрын
  • Loved it. Please continue.

    @a.for.arun_@a.for.arun_7 ай бұрын
  • I really liked the video and I hope to see more videos like this, they are very helpful

    @periclayton1282@periclayton12827 ай бұрын
  • Amazing, more of these type of videos!

    @heli_9@heli_97 ай бұрын
  • I love these videos. Insightful!

    @SteveLEKORodrigue@SteveLEKORodrigue7 ай бұрын
  • Super interesting video, liked this very much!

    @XPOnion@XPOnion7 ай бұрын
  • Super interesting. Thanks for the explanation.

    @JohnnyNilsson83@JohnnyNilsson837 ай бұрын
  • Love this format!

    @space_0027@space_00277 ай бұрын
  • super cool bug, and great explanation!

    @0xteknogeek@0xteknogeek7 ай бұрын
  • wow it's an awesome idea, I always took ton of researches to understand.

    @Sp3cia1m4n@Sp3cia1m4n7 ай бұрын
  • yes, this was both fun and useful! thanks liveoverflow

    @logicerror@logicerror7 ай бұрын
  • I really enjoyed this format

    @kalinunesferreira815@kalinunesferreira8157 ай бұрын
  • as always Xcelent Xplanation....

    @yuhanaatmaja@yuhanaatmaja7 ай бұрын
  • One of such video which I followed start to end!

    @TwoTeaTee@TwoTeaTee7 ай бұрын
  • That's a clean explanation!!!

    @lol-hz9mc@lol-hz9mc7 ай бұрын
  • Awesome content. Make more like this, please.

    @MrNevado@MrNevado7 ай бұрын
  • This was awesome. Lots of love.

    @aaravsinha6610@aaravsinha66107 ай бұрын
  • that was amazing, thanks for the video

    @nikensss@nikensss7 ай бұрын
  • This will be a great series

    @r3d_r078@r3d_r0787 ай бұрын
  • Good usage for the new Twitter logo 👏👏

    @ahmedMohamed-zu2qp@ahmedMohamed-zu2qp7 ай бұрын
  • Amazing, thank you for this!

    @carefulwithmoney4699@carefulwithmoney46997 ай бұрын
  • Love this series👌

    @chrysun9891@chrysun98917 ай бұрын
  • That's crazy creative. I'd be interested in learning how this could be mitigated. Better input sanitation?

    @catmage@catmage7 ай бұрын
  • Nice video series idea

    @ThaLiquidEdit@ThaLiquidEdit7 ай бұрын
  • This was utterly amazing

    @Roll4Combat@Roll4Combat7 ай бұрын
  • brilliant breakdown

    @navibongo9354@navibongo93547 ай бұрын
  • The longer I watched this the more upset I became at web development that 1. they're using direct string replace and 2. they didn't properly sanitize the input but then I became legitimately impressed with the use of the javascript uri the hex encoding, and the use of objects

    @antenna8836@antenna88367 ай бұрын
  • Most valuable piece of information I saw today

    @supergamerfr@supergamerfr7 ай бұрын
  • I absolutely love this!!!!!! You literally read my mind but I didnt have the guts to ask.

    @shayarand@shayarand7 ай бұрын
  • Amazing explanation ❤

    @abdulx01@abdulx017 ай бұрын
  • Great video, thanks!!

    @Haapavuo@Haapavuo7 ай бұрын
  • Thank you very much for this video

    @Th3Mag1c1an@Th3Mag1c1an7 ай бұрын
  • This is great, Insiteful as always @LiveOverflow, can this type of xss vulnerabilities be found in react applications as well ?

    @olaola-yh5ge@olaola-yh5ge7 ай бұрын
    • Yes

      @KimYoungUn69@KimYoungUn697 ай бұрын
    • if it runs javascript, it runs

      @SamuelLing@SamuelLing7 ай бұрын
  • More of this please!

    @thatcreole9913@thatcreole99137 ай бұрын
  • this is great, thank you

    @shitter@shitter7 ай бұрын
  • 9:00 Concatenation is executed first and the result is a string, which cannot be assigned to. It's essentially equivalent to writing 1 = 2

    @arkadiymel5987@arkadiymel59877 ай бұрын
    • No, because you get a syntax error ;)

      @LiveOverflow@LiveOverflow7 ай бұрын
    • @@LiveOverflow I guess nothing gets "executed" because of the syntax error, but JavaScript does know in what order to execute this: first the concatenation, then the assignment. It just so happens that the expression makes no sense using that order

      @Qbe_Root@Qbe_Root7 ай бұрын
    • @@LiveOverflow My bad, I meant parsed, not executed. What I was trying to say is that the reason the expression in the video results in a syntax error is that the addition is treated as the left side of the assignment and is not assignable, and that it is similar to the 1 = 2 case in that regard. I looked it up in the ECMAScript documentation to try to be more precise this time and it seems that the reason it results in a syntax error is that the left side of the assignment is not a valid LeftHandSideExpression (13.3) or because of the second bullet in (13.15.1). The fun thing is that I actually tested that with " true ? 0 : (1 = 2) " before writing the comment and it did fail with a syntax error instead of executing.

      @arkadiymel5987@arkadiymel59877 ай бұрын
  • Does the name trick also work in stored xss when another user doesnt set his window name to the xss-payload?

    @plippero7870@plippero78707 ай бұрын
  • Great stuff

    @memejeff@memejeff7 ай бұрын
  • you don't need to write , those tags are all optional and are inserted automatically

    @12...@12...7 ай бұрын
  • Please make more vids like this!

    @yassinesafraoui@yassinesafraoui7 ай бұрын
  • Как же круто ты объясняешь. Плохо знаю английский, но при этом всё понял

    @user-tn1uk2ug7b@user-tn1uk2ug7b7 ай бұрын
  • This video started my web hacking journey, Thank you!

    @sebscripts@sebscripts3 ай бұрын
  • This was awesome!

    @0xrudrapratap@0xrudrapratap7 ай бұрын
  • it is very fun and useful.

    @jasonv6303@jasonv63037 ай бұрын
  • This was insanely interesting!

    @hurrayboy1995@hurrayboy19957 ай бұрын
  • Thank you for the information

    @daem0n1ze@daem0n1ze7 ай бұрын
  • great video, thank you

    @slickis@slickis7 ай бұрын
  • Incredible vidéo, thanks !

    @MrEpphrodont@MrEpphrodont7 ай бұрын
  • would also work in this example

    @markusjohansson4949@markusjohansson49497 ай бұрын
  • The coolest part about this video was the intro.

    @notyou2235@notyou22357 ай бұрын
  • For the first solution, what about using square brackets to define an array instead of an object? For the second solution, I believe the "new class b" part can be deleted if you replace the equals after toString with a colon. Great video!

    @AssemblyWizard@AssemblyWizard7 ай бұрын
    • Agreed that the toString in object literal should work too.... maybe they're trying to be general as far as including the case that different characters are prohibited (for example the colon). I think your suggestion with the array gives a nice way of solving it if curly braces are prohibited too.

      @KirkWaiblinger@KirkWaiblinger7 ай бұрын
    • @@KirkWaiblinger this! if colon is available, might as well use the first example. If it isnt, but one of many whitespace/line terminator/multiline comment characters are, we can use the second example. [location=name] is a good point!

      @avlidienbrunn@avlidienbrunn7 ай бұрын
    • but in lua members of objects are referred to by square brackets as WELL as members of arrays because every variable is an object in lua and every variable is an object in JS

      @joechristo2@joechristo27 ай бұрын
  • keep making these videos

    @tanzeelsalfi@tanzeelsalfi7 ай бұрын
  • the hex encoding trick is impressive too.

    @bioblade87@bioblade877 ай бұрын
  • awesome! Thank you!

    @sergeipetrukhin79@sergeipetrukhin797 ай бұрын
  • Thank you

    @KaiaLoken@KaiaLoken7 ай бұрын
  • Tnx teacher

    @hamzahajjaj4106@hamzahajjaj41067 ай бұрын
  • This mean TypeScript devs won't find this vuln, as they type the func to accept only N number of args, and TS will throw runtime error if they try to use N+K args, but in build time there code will create this vuln.

    @thetrends5670@thetrends56707 ай бұрын
    • TS will not throw a runtime error if a function is called with extra arguments. At runtime it's just raw JS and anything goes.

      @KirkWaiblinger@KirkWaiblinger7 ай бұрын
    • @@KirkWaiblingertypescript is meant to PREVENT runtime errors from even happening

      @joechristo2@joechristo27 ай бұрын
    • @@joechristo2 yeah but it can only type check intentionally authored code. TS will be no help at runtime against injected code, since that's all long after the type-checking time

      @KirkWaiblinger@KirkWaiblinger7 ай бұрын
  • Would you be able to create an array, instead of an object?

    @AlissonNunes@AlissonNunes7 ай бұрын
  • A couple of questions: When does the evaluation of the parameter takes place? Right after the function call and before any part of the function takes place? Are there any possible mitigations for this kind of exploit? I mean if this code runs before anything else I don’t see any possibility of mitigations which is wild, but I might be missing something

    @roymoshe7822@roymoshe78227 ай бұрын
    • i have no idea what i’m talking about (as in the context of the video cuz i haven’t watched it) but JS might use C calling conventions in some cases i think (?) and with those, usually the parameters are passed to the function BEFORE the function gets “called” (as in the CALL assembly instruction) but it really doesn’t matter what the function “is” because it can be overrided to not even use the parameters in the first place but get called by the same name, which might be a security risk if some people don’t know what they’re doing

      @joechristo2@joechristo27 ай бұрын
    • @@joechristo2 well in the video it’s shown that parameters are evaluated pre call to the function which causes a security risk at a fundamental level since the parameter inserted may contain js code that will run before the call of the function Maybe having input checks before each function calll can be a solution but still it seems clunky and weird

      @roymoshe7822@roymoshe78227 ай бұрын
    • The assignment is evaluated before the function call. It has to because otherwise you couldn't use the return value of assignments in functions. The mitigation for this is to not have it in the first place e.g. sanitizing the userinput before placing it in the dom

      @xelspeth@xelspeth7 ай бұрын
  • Good work 👍

    @georgehammond867@georgehammond8677 ай бұрын
  • Hm does it make sense to cancel out name on top of each page (or can it CSPed?)

    @berndeckenfels@berndeckenfels7 ай бұрын
  • awesome!

    @procrast@procrast7 ай бұрын
  • It feels like it's a special case of DOM Clobbering, right? We are overwriting the names/definitions of defined variables/functions with our payloads so that they get executed when the page's code calls the overwritten function without knowing it.

    @ganeshdatha8240@ganeshdatha82407 ай бұрын
  • In the 'name' case, is it really an XSS, when you need to open the window with the page in a special way?

    7 ай бұрын
  • This video should have been "The Secret Step-by-step Guide to hacking: Deep Dive" 😂 Great video tho.

    @jacesec6484@jacesec64847 ай бұрын
  • Yes, this video was funny, it was useful, and now I find javascript even much more strange than it already was.

    @anion21@anion217 ай бұрын
  • But, is this like, preventable with input validation?

    @_chris_6786@_chris_67867 ай бұрын
  • If this amuses you, you have a lot to learn! And that's exciting

    @shinkurt@shinkurt7 ай бұрын
  • You should do this with John Carmack tweets!

    @DaveyPerron@DaveyPerron7 ай бұрын
  • Kickass!

    @furetosan@furetosan7 ай бұрын
  • This is awesome 😊

    @dannytutor6383@dannytutor63837 ай бұрын
  • As a Rust programmer, it blows my mind how messy Javascript has become. When a programming language gets obsessed with "convenience", it becomes impossible to keep track of changes. I think browsers should switch to simply running a WebAssembly runtime directly instead of Javascript.

    @rumplstiltztinkerstein@rumplstiltztinkerstein7 ай бұрын
    • people are gonna lose track of the difference between asmjs and wasm, thinking they are the same thing thus doing damage to the web as a whole

      @joechristo2@joechristo27 ай бұрын
  • very useful

    @steneostrain@steneostrain7 ай бұрын
  • About using the name variable, wouldn't that only work on your window? I can't see how the xss would do something nefarious on a targets browser.

    @fmaximus@fmaximus7 ай бұрын
    • You link them to your website, that redirects with the name "parameter"?

      @schwingedeshaehers@schwingedeshaehers7 ай бұрын
    • @@schwingedeshaehers thanks i was confused

      @brypleb5792@brypleb57926 ай бұрын
KZhead