How We Hacked a TP-Link Router and Took Home $55,000 in Pwn2Own

Sdílet
Vložit
  • čas přidán 17. 05. 2024
  • Learn tricks and techniques like these, with us, in our amazing training courses!
    flashback.sh/training
    In this video we will show you how we found and exploited a chain of vulnerabilities in the TP-Link Archer AC1750 to win $5,000 in Pwn2Own Tokyo 2019.
    We bagged a total of $55,000 hacking routers in this competition!
    00:00 Intro
    01:48 Finding debug interface
    04:35 Finding the vulnerability
    06:23 Vulnerability details
    15:20 Exploit demo
    16:33 Outro
    For in-depth details, refer to our advisories:
    www.flashback.sh/blog/lao-bom...
    www.flashback.sh/blog/mineswe...
    The two advisories complement each other. The first one describes the process we used to pwn this router in 2019, and the second one how we found in 2020 that TP-Link improperly patched the command injection. We used that knowledge to improve the exploit so that it works on old and newer "patched" firmware.
    The command injection described in this video is the improved one.
    The vulnerabilities exploited in this video are:
    - CVE-2020-10882
    - CVE-2020-10883
    - CVE-2020-10884
    - CVE-2020-28347
    All vulnerabilities have been fixed by TP-Link in current firmware versions.
    Intro material comes from the ZDI CZcams channel under CC-BY.
    Did you enjoy this video? Then follow us on Twitter, and subscribe to our channel for more awesome hacking videos.
    ~ Flashback Team
    flashback.sh
    / flashbackpwn
  • Věda a technologie

Komentáře • 356

  • @coreyfournier3345
    @coreyfournier3345 Před rokem +83

    As a software developer I would have liked to hear what could have been done to prevent this. Obviously not running everything as root to start with.

    • @FlashbackTeam
      @FlashbackTeam  Před rokem +134

      Several mistakes were committed:
      - running everything as root
      - mounting the root file system as read-write
      - hardcoding the encryption key
      - enabling a network service when it's not necessary (we hadn't configured this feature, it is enabled by default)
      But most importantly, input wasn't sanitised. Notice that it expects a MAC address, which has a very strict and well known format: aa:bb:cc:dd:ee:ff
      After copying to an intermediate buffer with a limited size (as they did correctly), they should have validated the MAC address before proceeding. This could have easily been done with a regex, such as: ^[a-fA-F0-9]{2}(:[a-fA-F0-9]{2}){5}$
      In addition, they could have introduced additional security controls, such as a properly configured firewall, sandboxing, etc.

    • @supermaster2012
      @supermaster2012 Před rokem +2

      @Ralph Reilly there's a reason for this, it saves manufacturing costs as they can just flash the same exact image over and over and let the device bootstrap when it's booted up for the first time.

    • @itzurabhi
      @itzurabhi Před rokem +2

      for the C, C++ devs : -Wall -Wextra -Wconversion -Werror

    • @TonyLee_windsurf
      @TonyLee_windsurf Před rokem +1

      @@supermaster2012 One can use public key encryption, at lease hide the private key. Harder for hacker to create diff encrypted pkt.

    • @thoriumbr
      @thoriumbr Před rokem +7

      @@TonyLee_windsurf You can't "hide" the private key, as the software will need it to decrypt the packet. Hard coding the key is terrible because every single router using the same firmware uses the same key. If the key was saved on a file, and checked and generated if the file was missing, it would not be possible to hack every router without physical access to it first.

  • @HritikV
    @HritikV Před 3 lety +134

    It wasn't rushed at all. A perfect explanation at a perfect pace.

    • @jaimedpcaus1
      @jaimedpcaus1 Před rokem

      What was "connected pin to line" what was that? What did he say?

  • @johntoterhi6293
    @johntoterhi6293 Před 3 lety +151

    Great work guys! Pedro’s explanation of the team’s process of auditing system calls is exceptional. This kind of breakdown is something I rarely see covered in detail.

  • @ryanduke6784
    @ryanduke6784 Před 6 dny +1

    My god. I think this is the best channel ive seen so far. These dudes are legit

  • @TheGrimSniper14
    @TheGrimSniper14 Před 3 lety +26

    We absolutely love these kinds of detailed breakdown of your thought process while looking at a target. Definitely continue doing these types of videos

  • @jacoblpeterson
    @jacoblpeterson Před 2 lety +3

    Excellent video. I couldn't stop laughing at the `echo urmom>d` hahaha

  • @Raintiger88
    @Raintiger88 Před rokem +3

    I just found your channel yesterday and I'm really enjoying your videos. The information and quality is unmatched!

  • @prox5784
    @prox5784 Před 3 lety +7

    That was fantastic and very well put together. Very educational. So excited to see more of this!

  • @myname-mz3lo
    @myname-mz3lo Před 10 měsíci +2

    the way you created a file one character at a time is so smart . i would have felt so stuck with the 13 characters .

  • @gauravhksharma5760
    @gauravhksharma5760 Před 3 lety +2

    Congratulations guys. Looking forward to learning more. Thank you for starting this channel 👍🏼👌🏽

  • @surferbum618
    @surferbum618 Před 3 lety +6

    This was awesome, and thanks for showing your thought process when discovering this vuln. Hope to learn more from you guys in the future

  • @sombramurk793
    @sombramurk793 Před rokem +3

    Awesome guys! What a video... very clear and objective. The exploit sending one char at a time was really dope

  • @thefastjojo
    @thefastjojo Před 3 lety +1

    explanation in the state of art! Brilliant, and waiting for more, congratulations!

  • @HK-sw3vi
    @HK-sw3vi Před 3 lety +4

    mad respect for you guys, what's better than learning from the bests.

  • @13DarkWolf
    @13DarkWolf Před 3 lety +1

    Really nice and clear breakdown guys and congrats on the bounty!

  • @kltr007
    @kltr007 Před rokem +1

    Thank for sharing this. I like the no-nonsense style. For your first video this is a great piece of work. Like your graphics - a picture says more than thousand words. Must have been a lot of work but it pays back.

  • @jahwni
    @jahwni Před 2 lety +1

    Loved it, great explanation with the reversing, thanks guys!

  • @paramatus3531
    @paramatus3531 Před rokem +1

    I like what you have done there. Very straight forward explenation, and I have to slightly disagree with you saying it was rushed. It was perfect. Longer videos are harder to follow and the amount you put in and the little backstories like being in Laos spiced it up a little. I am looking forward to more of your exploits.

  • @JK-pb3vj
    @JK-pb3vj Před 2 lety +2

    Blyat, this is the best router exploit video on CZcams by a long way! More of this guys ✌️

  • @somsiri9319
    @somsiri9319 Před 3 lety +1

    Great work! Looking forward to the next video.

  • @jvidsonyt
    @jvidsonyt Před rokem

    Awesome video! Great pace and explanation. The file buildup within the 13 char limit is genius haha. Well done!

  • @Harshitshukla88
    @Harshitshukla88 Před rokem +2

    You guys rocked🔥 lot of learning in a single video from hardware to binary, reverse engineering to maintaining access .....😃

  • @cq_YT
    @cq_YT Před 3 lety +1

    Awesome work! Wait for more and learn from you.

  • @JoshDavidLevy
    @JoshDavidLevy Před 3 lety +1

    Really enjoyed this explanation. Great job guys

  • @sven5666
    @sven5666 Před rokem +1

    Thank you guys. Absolutely awesome video! Really well structured and presented.

  • @orenishay4175
    @orenishay4175 Před 3 lety +2

    This video was amazing! Right to the point and I understood everything! thank you!

  • @thebrotherhood1675
    @thebrotherhood1675 Před 3 lety +5

    brilliant waiting for more!

  • @localman9341
    @localman9341 Před 3 lety +2

    Amazing content guys. Waiting for more🙃

  • @iikon69
    @iikon69 Před rokem +3

    Great work, love the thought behind constructing the final final in chunks due to the character limitation.

  • @wowimoldaf
    @wowimoldaf Před rokem +1

    This is very, very well graphiced exploit explanation. Huge thanks, there are million exploit explanations but i never seen like this one.

  • @brotatobrosaurus5411
    @brotatobrosaurus5411 Před rokem +1

    Nice exploit, even better explanation! Great work.

  • @davidbristoll195
    @davidbristoll195 Před rokem +2

    Very cleverly done. I really enjoyed watching 👍

  • @kevinnyawakira4600
    @kevinnyawakira4600 Před 3 lety +1

    That was pretty cool. I will like to see more videos like this one. Also a video of how someone can get started in hardware hacking, tools required will be appreciated

  • @aracystic28
    @aracystic28 Před 3 lety +1

    This is amazing. Good job guys!

  • @NetworkITguy
    @NetworkITguy Před rokem +1

    I never get tired of your voice ;)

  • @pincombe
    @pincombe Před rokem +1

    Great video, first time I've been aware of a reverse shell before really interesting stuff!

  • @geraldamasi1559
    @geraldamasi1559 Před 2 lety +1

    The explanation is quite good and making it seem easy. Good guys

  • @kshitijnalawade8554
    @kshitijnalawade8554 Před 3 lety +3

    idk what I should comment now.. Everything I wanted to say like 'this is awesome' and stuff has been said by everyone.. But I'm still commenting to let you guys know that we really need more of this great content from you guys!! Really appreciate it!!

  • @ninoivanov
    @ninoivanov Před rokem +1

    ... fiiiiinally an actually GOOD channel on such topics...

  • @Barqi
    @Barqi Před 3 lety +7

    You guys did an amazing job in explaining the exploitation process. For a next video I would love to see more on how you reverse engineer/decrypt the code and the process of analyzing it. Thanks for giving back to the community! You rock!

    • @FlashbackTeam
      @FlashbackTeam  Před 3 lety +4

      Thanks for the feedback!
      We will show that in detail in future videos. Bear in mind there was a serious reverse engineering effort behind all of this. Most functions in the binary were not even defined, and all symbols are our names (the binary had few symbols).

    • @Barqi
      @Barqi Před 3 lety +4

      @@FlashbackTeam I understand. But what for me personally would be super interesting to see, is how to start turning that binary code into code. I think that there are not that many videos on hardware > code > recognising exploitable functions.
      Again, thanks for giving back to the community!

    • @RafaelKarosuo
      @RafaelKarosuo Před rokem +1

      @@FlashbackTeam I was thinking "how on earth you got all those symbols if the code wasn't compiled for debugging", thanks for the clarification, a lot of effort indeed.

  • @rdarkmind
    @rdarkmind Před rokem +4

    Money well deserved! This was just beautiful. Thanks for sharing guys. I'd have to re-watch the reverse engineering part of the system calls a few times to understand what's happening though 😅

  • @DefconUnicorn
    @DefconUnicorn Před rokem +1

    Really nice work dudes, love the idea of building it one char at a time.

  • @murrij
    @murrij Před rokem +1

    Wow! Thank you so much for your work on this video. Explanations are great for someone starting out like me.

  • @neuronwave
    @neuronwave Před rokem +1

    Absolutely fantastic explanation. Really enjoyed it and understood it!

  • @th3p1tbulll
    @th3p1tbulll Před rokem +2

    Very nice job! Congratulations boys!!!

  • @marcos251
    @marcos251 Před 3 lety +1

    This is amazing! Great work

  • @EJohnson688
    @EJohnson688 Před 3 lety +3

    Nice work, thanks for the great deep dive! Keep up the great work on developing that specialty education platform :)

  • @pedroguillenoficial
    @pedroguillenoficial Před 3 měsíci

    Great video guay! Where do you get the arm articulated for connect the pins?

  • @anitsh
    @anitsh Před 3 lety +6

    Loved the experience watching the video. As a n00b, I'm thankful for the details presented and would request that even more videos with even more details would be much appreciated. And wish both of you the very best.Cheers,

  • @MarKac9090
    @MarKac9090 Před 3 lety +1

    awesome video! very interesting to watch because you explain it VERY well

  • @teslastellar
    @teslastellar Před rokem +1

    Thank you so much for explaining the process.

  • @thatguyinelnorte
    @thatguyinelnorte Před 3 lety +1

    Well done Flashback Team!

  • @bobbydedman5899
    @bobbydedman5899 Před rokem +1

    Great job guys. And great video.

  • @aaryanbhagat4852
    @aaryanbhagat4852 Před 2 lety +1

    Excellent explanation, super cool method of exploit!

  • @JBarszczu
    @JBarszczu Před 2 lety +2

    This is the best hardware hacking video I have seen in my life. Thank you!

  • @markooo4429
    @markooo4429 Před 3 lety +1

    Amazing, cant wait for next video

  • @hanshansli2238
    @hanshansli2238 Před 10 měsíci +1

    thank you guys, great video!

  • @simyaci12
    @simyaci12 Před 3 lety +1

    Very inspiring, you both are epic. Thank you for sharing.

  • @nsknyc
    @nsknyc Před 3 lety +1

    ah so late for this, but absolutely worth the watch. Congrats guys on this fantastic job. "Looks juicy" my new favorite phrase :p

  • @zillzone
    @zillzone Před 3 lety +1

    Excellent walkthrough thank you!!

  • @karolinajoachimczyk3168
    @karolinajoachimczyk3168 Před rokem +1

    Panowie, super robota, jako początkujący embeddeddev bardzo dziękuję za content!

  • @helmutzollner5496
    @helmutzollner5496 Před rokem +1

    Great stuff! Thank you for sharing.

  • @ruslanshuster9124
    @ruslanshuster9124 Před rokem +1

    Great video, enjoyed a lot! Clever exploit:)

  • @1337BR3AK
    @1337BR3AK Před 2 lety +2

    Great video and explanation!

  • @bonk1463
    @bonk1463 Před rokem +2

    "urmom" LOL, love how they the used the word in every part of the exploit

  • @machazard009
    @machazard009 Před rokem

    Nice work guys. Congratulations on the win. Have you always come across routers with root? What about routers with embedded microcontrollers.

  • @jamesrussell-ui6gd
    @jamesrussell-ui6gd Před rokem +1

    great breakdown!

  • @recepyoldas9894
    @recepyoldas9894 Před 3 lety +1

    was perfect exploit and explaning

  • @corneliusb2695
    @corneliusb2695 Před 3 lety +1

    Great vid can't wait to see more! Which plugins are you using on Ghidra?

    • @FlashbackTeam
      @FlashbackTeam  Před 3 lety +1

      We only use the Ghidra Hues plugin to have a dark theme. The original author deleted it, but here is a copy in Pedro's github repo:
      github.com/pedrib/ghidra.hues

  • @depth5322
    @depth5322 Před rokem +1

    It’s awesome guys. It’s very interesting. Thank you for explanation

  • @ivanprincipato
    @ivanprincipato Před 2 lety +1

    Thank you so much for sharing , I learned a lot from this video 🙏

  • @electrowizard2658
    @electrowizard2658 Před 14 dny +1

    great video loved it !!

  • @danielmonzon7396
    @danielmonzon7396 Před 3 lety +21

    Wow, impressive work guys, learnt so much in a single video. As feedback I would say that it would be cool to have a quick look on the exploiting writing process ;)

    • @FlashbackTeam
      @FlashbackTeam  Před 3 lety +8

      Thank you for your feedback! We will go into depth on that in the next videos!

    • @danielmonzon7396
      @danielmonzon7396 Před 3 lety +2

      @@FlashbackTeam u are welcome, can't wait to watch them :P

    • @KaleshwarVhKaleshwarVh
      @KaleshwarVhKaleshwarVh Před 3 lety +3

      @@FlashbackTeam yes, I guess, the length of the video doesn't matter for people who will wanna learn. So go for it.

  • @ogiogi2714
    @ogiogi2714 Před 3 lety +1

    Got damn it congrats flashback team !!!!

  • @saketsrv9068
    @saketsrv9068 Před rokem +1

    You guy's are insane, please release nore videos. Highly appreciated

  • @randomguy3784
    @randomguy3784 Před 3 lety +1

    Excellent work!

  • @florianmaetschke9054
    @florianmaetschke9054 Před rokem +1

    Great Job! Super good video! keep on

  •  Před 3 lety +1

    Awesome, thanks for sharing it!

  • @MagicPlants
    @MagicPlants Před rokem +3

    Printing one char at a time to a file due to the charlimit then executing the file was genius!

  • @der-andy2407
    @der-andy2407 Před rokem +1

    Great work guys

  • @DursunX
    @DursunX Před rokem +1

    non-programmer here
    i love this breakdown. i get to witness the mindset of successfully exploiting a vulnerability (within a 13 character limitation).
    i actually got it. most of it made sense even to an 'illiterate' bystander like myself.
    pwn bounty well deserved!

  • @ui4lh
    @ui4lh Před rokem +2

    Pure genius the writing to a shell script and then executing lol

  • @lucasamorim1300
    @lucasamorim1300 Před 3 lety +1

    Great explanation! Thank you!

  • @DrewMarold
    @DrewMarold Před rokem +1

    Very cool, nice job, guys.

  • @tyaprak
    @tyaprak Před rokem +1

    A perfect explanation. Great.

  • @greob
    @greob Před 3 lety +1

    Well done, no problem with the video. Thanks for sharing.

  • @neroux712
    @neroux712 Před rokem +2

    From a developer sight of view, it makes me now think twice about validation of strings from not trust able sources, as the exploit would break if any function in the call chain would check the input values fully also for injection. Very interesting how "easy" it is to gain access when you reach a specific level of knowledge, very nice video and remote Injection method of the remote shell!

  • @alreadyputitup
    @alreadyputitup Před rokem +1

    great presentation, very clearly communicated

  • @Ragekillen
    @Ragekillen Před rokem +1

    Your getting a sub from me I love how you go into full detail although I wish you told us what disassembler you used

  • @niczoom
    @niczoom Před rokem +1

    Great video, thanks for the tips.

  • @flinkiklug6666
    @flinkiklug6666 Před rokem +2

    Verry nice job. I don’t understand what you exactly does but it is so a nice idea. I want to learn this. Sooo nice

  • @trevorsmith5991
    @trevorsmith5991 Před rokem +1

    Worked , thanks a lot!

  • @outsiderlost
    @outsiderlost Před 2 lety +2

    Someone help me with a little "slap" on how to get the online interface login once I'm in it. 🤔 (I know the basics and the location of the hash required for encryption. But it has nothing to do with the online superficial passw)
    I had a lot of fun with the video anyway! Anyway, I had a great time with the video, let there be more of these tplink stuff..! ✔ 😎

  • @gcberto
    @gcberto Před 3 lety +1

    Great work!

  • @josephseed3393
    @josephseed3393 Před 9 měsíci

    Amazing video! You guys are convincing me to get into IoT and hardware hacking

  • @seiv-
    @seiv- Před 3 lety +1

    This is a fucking masterpiece ! Great job guys ! You totally worth it !

  • @renify_
    @renify_ Před rokem +1

    wow pretty straight forward explaination

  • @Bianchi77
    @Bianchi77 Před 11 měsíci +1

    Nice video, thanks for sharing :)

  • @MysterPotato70
    @MysterPotato70 Před rokem +1

    does this still work if the router was flashed with something like openwrt? or is this specific to the stock os? Anyways great job explaining!

  • @matthew423
    @matthew423 Před 3 lety +1

    Great stuff!