Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Exploiting WebApp Race Condition Vulnerability 101

2 039 vues

Publié le

จากงาน 2600 Thailand Meeting #19
วันที่ 6 มิถุนายน 2557

Video: https://www.youtube.com/watch?v=9rsKSSERYXw

Publié dans : Logiciels
  • Soyez le premier à commenter

Exploiting WebApp Race Condition Vulnerability 101

  1. 1. Race Condition 101 ชองโหวที่แขงกับเวลาและเงื่อนไข Copyright © 2015 by Pichaya Morimoto. แจกจายหรือนําไปใชไดเต็มที่ไมตองขอแคลงเครดิตไวก็พอ Mr. Pichaya Morimoto June 5, 2015
  2. 2. ที่มา: https://cwe.mitre.org/data/definitions/362.html Race Condition คือ?
  3. 3. การทํางานตามลําดับของโคดสวน A ที่(อาจ) ทํางานรวมกับโคดสวนอื่น ซึ่ง อาจใช ทรัพยากร (ไฟล, ขอมูล, อุปกรณ ฯลฯ) รวมกัน แตในระหวาง "เวลา" ที่โคด A กําลังทํางานตามลําดับอยูนั้น ถา ทรัพยากร ถูกแกไขจากโคดหรือโปรแกรม อื่นที่ทํางาน ในขณะเดียวกันจะอาจทําใหทํางานผิดพลา ดได ถาโคดสวน A ไมไดคํานึงถึงปญหานี้ไว Race Condition คือ?
  4. 4. งงแพบ Race Condition คือ?
  5. 5. ตัวอยาง: ถอนเงินในบัญชี สมศรี สมชาย เงินเดือน เดือนนี้ออกแลวว เอามาฝากที่เคากอน เดี๋ยว โอนใหใชวันละ 50 บาทนะ #หะ ถาใชแลวเหลือกลับ บานมาหยอดกระปุก ดวยนะ
  6. 6. ตัวอยาง: ถอนเงินในบัญชี สมศรี โอนเงินแพบ เงินคงเหลือ ในบัญชีสมศรี 15,000 บาท 14,950 บาท เงินคงเหลือ ในบัญชีสมชาย 0 บาท 50 บาท
  7. 7. ตัวอยาง: ถอนเงินในบัญชี สมศรี โอนเงินแพบ เงินคงเหลือ ในบัญชีสมศรี 15,000 บาท 14,950 บาท เงินคงเหลือ ในบัญชีสมชาย 0 บาท 50 บาท Timing Window Code Sequence == การโอนเงิน 1. ตองถอนจากบัญชีสมศรี 2. แลวโอนเขาบัญชีสมชาย Shared Resource == เงินในระบบ
  8. 8. ตัวอยาง: ถอนเงินในบัญชี เงินคงเหลือ ในบัญชีสมชาย Total: 50 บาท สมชาย 50 บาท...ใชไงใหพอเนี่ย เรียนสอนแฮกเว็บแบบแมว ๆ มาแลว ลองหนอยดีกวา.. สิ่งที่เกิดขึ้นตอนถอนเงิน?
  9. 9. ตัวอยาง: ถอนเงินในบัญชี สิ่งที่คนกดเงินคิด ฉันมีเงินในบัญชี 50 บาท ฉันนําออกมาใช 50 บาท ฉันเหลือเงิน 0 บาทในบัญชี
  10. 10. ตัวอยาง: ถอนเงินในบัญชี สิ่งที่โปรแกรมเมอรคิด var เงินที่จะถอน = 50; var เงินในบัญชี = 50; if (เงินในบัญชี >= เงินที่จะถอน) f_ถอนเงิน(50){ t_ลบเงินในบัญชี(50); t_เงินออกจากตู(50); } } Thread 1, 2 ทําพรอมกัน
  11. 11. ตัวอยาง: ถอนเงินในบัญชี สิ่งที่แฮกเกอรคิด var เงินที่จะถอน = 50; var เงินในบัญชี = 50; if (เงินในบัญชี >= เงินที่จะถอน) f_ถอนเงิน(50){ t_ลบเงินในบัญชี(50); t_เงินออกจากตู(50); } } ใชเวลา 3 วินาที วิ 1 วิ 2 วิ 3 Thread 1, 2 ทําพรอมกัน
  12. 12. ตัวอยาง: ถอนเงินในบัญชี สิ่งที่แฮกเกอรคิด var เงินที่จะถอน = 50; var เงินในบัญชี = 50; if (เงินในบัญชี >= เงินที่จะถอน) f_ถอนเงิน(50){ t_ลบเงินในบัญชี(50); t_เงินออกจากตู(50); } } วิ 1 วิ 2 วิ 3 จะเกิดอะไรขึ้น ถาวินาทีที่ 2 ถอนเงินอีกตู จากบัญชีเดียว กันพรอม ๆ กัน?
  13. 13. ตัวอยาง: ถอนเงินในบัญชี สิ่งที่แฮกเกอรคิด var เงินที่จะถอน = 50; var เงินในบัญชี = 50; if (เงินในบัญชี >= เงินที่จะถอน) f_ถอนเงิน(50){ t_ลบเงินในบัญชี(50); t_เงินออกจากตู(50); } } var เงินที่จะถอน = 50; var เงินในบัญชี = 50; if (เงินในบัญชี >= เงินที่จะถอน) f_ถอนเงิน(50){ t_ลบเงินในบัญชี(50); t_เงินออกจากตู(50); } } var เงินที่จะถอน = 50; var เงินในบัญชี = 50; if (เงินในบัญชี >= เงินที่จะถอน) f_ถอนเงิน(50){ t_ลบเงินในบัญชี(50); t_เงินออกจากตู(50); } } วินาทีที่ 1 ถอนเงินตู 1 วินาทีที่ 2 ถอนเงินตู 2 วินาทีที่ 2 ถอนเงินตู 3
  14. 14. ตัวอยาง: ถอนเงินในบัญชี สิ่งที่แฮกเกอรคิด วินาทีที่ 1 ถอนเงินตู 1 โจร 1 ไดเงิน 50 บาท วินาทีที่ 2 ถอนเงินตู 2 โจร 2 ไดเงิน 50 บาท วินาทีที่ 2 ถอนเงินตู 3 โจร 3 ไดเงิน 50 บาท
  15. 15. ตัวอยาง: ถอนเงินในบัญชี สิ่งที่แฮกเกอรคิด มีเงินในบัญชี 50 บาท ถอน 3 ครั้งพรอม ๆ กันไดเงิน 150 บาท!!!
  16. 16. ตัวอยาง: ถอนเงินในบัญชี ที่มา: http://thehackernews. com/2012/10/1-million-dollar-hacked- in-60-seconds.html, http://www.fbi. gov/sandiego/press- releases/2012/fourteen-charged-in- million-dollar-gone-in-60-seconds- bank-fraud
  17. 17. ตัวอยาง: ถอนเงินในบัญชี ที่มา: http://thehackernews.com/2012/10/1-million-dollar-hacked-in-60-seconds.html, http://www.fbi. gov/sandiego/press-releases/2012/fourteen-charged-in-million-dollar-gone-in-60-seconds-bank- fraud ใชเวลา 60 วินาที กวาระบบธนาคาร จะอัพเดทวาเงินถูกถอนเงินไปแลว
  18. 18. Race Condition กรณีอื่น ๆ ? C, C++Privilege Escalation
  19. 19. VMware Local Privilege Escalation using Race Condition (CVE-2010-4295)
  20. 20. VMware Local Privilege Escalation using Race Condition (CVE-2010-4295) User Root User LongCat ใช vmware-mount ทํางาน !@#$%^&( บายโมง 10 นาที 20 วินาที => สราง /tmp/vmxxx.sh => ใสโคด => รันดวยสิทธิ์ root => ลบไฟลออก => จบการทํางาน Server: Company A
  21. 21. VMware Local Privilege Escalation using Race Condition (CVE-2010-4295) User Root User LongCat ใช vmware-mount ทํางาน !@#$%^&( บายโมง 10 นาที 20 วินาที => สราง /tmp/vmxxx.sh => ใสโคด => รันดวยสิทธิ์ root => ลบไฟลออก => จบการทํางาน Server: Company A บายโมง 10 นาที 19 วินาที เขียนสคริปทวนลูป ใสโคด “sudo usermod -aG sudo longcat” เขาไปในไฟล /tmp/vmxxx. sh รัว ๆ!! อิอิกํา
  22. 22. กลับมาดูที่ฝงเว็บ! โฆษณาคั่น: https://www.facebook.com/longhackz
  23. 23. ที่มา: Josip Franjković http://josipfranjkovic.blogspot.com/2015/04/race-conditions-on-facebook.html ชองโหว Race Condition ใน Facebook ระบบรีวิวของ แฟนเพจ
  24. 24. ที่มา: Josip Franjković http://josipfranjkovic.blogspot.com/2015/04/race-conditions-on-facebook.html ชองโหว Race Condition ใน Facebook เฟซบุกจายคาหาชองโหวเจอให 3000 USD (1 แสนกวาบาท)
  25. 25. ที่มา: Josip Franjković http://josipfranjkovic.blogspot.com/2015/04/race-conditions-on-facebook.html ชองโหว Race Condition ใน Facebook เปลี่ยนชื่อ
  26. 26. ชองโหว Race Condition ในเว็บ Digital Ocean ที่มา: Josip Franjković http://josipfranjkovic.blogspot.com/2015/04/race-conditions-on-facebook.html
  27. 27. ชองโหว Race Condition ในเว็บ Digital Ocean ที่มา: Josip Franjković http://josipfranjkovic.blogspot.com/2015/04/race-conditions-on-facebook.html ใช Promo Code 1 อัน แลวยิงเขาไปพรอมกันในเสี้ยววินาทีเดียวเปนสิบ ๆ thread เพื่อเติม Promo Code ในระบบทําใหจากเดิมกดไดครั้งเดียวเปนหลายครั้ง ปมเงิน!
  28. 28. ดรามา Race Condition ในระบบ StarBucks Gift Card ที่มา: Egor Homakov http://sakurity.com/blog/2015/05/21/starbucks.html, http://arstechnica. com/security/2015/05/researcher-who-exploits-bug-in-starbucks-gift- cards-gets-rebuke-not-love/
  29. 29. ดรามา Race Condition ในระบบ StarBucks Gift Card ที่มา: Egor Homakov http://sakurity.com/blog/2015/05/21/starbucks.html, http://arstechnica.com/security/2015/05/researcher- who-exploits-bug-in-starbucks-gift-cards-gets-rebuke-not-love/
  30. 30. ★ Ghost in the ShellCode 2015 ★ Name: aart ★ Category: Web ★ Points: 200 LongCat Voting System ที่มา: http://ghostintheshellcode.com/
  31. 31. LongCat Voting System ★ สมัคร User Account ได ★ ล็อคอินได (แตบอกไมใชแอดมิน) ★ สงลิ้งรูปกับชื่อรูปมาที่หนาแ รกได ★ หนาแรกไมจํากัดรูปที่ถูกสง มา (ตอนหลังจํากัดเปน 1000 แลวก็ 100 รูปลาสุดแทนเพราะคนเลนเ ยอะ) ★ แตละรูปสามารถโหวตคะแน นขึ้นหรือลงได
  32. 32. LongCat Voting System
  33. 33. LongCat Voting System
  34. 34. LongCat Voting System
  35. 35. LongCat Voting System
  36. 36. Recap: VMware Race Condition User Root User LongCat ใช vmware-mount ทํางาน !@#$%^&( บายโมง 10 นาที 20 วินาที => สราง /tmp/vmxxx.sh => ใสโคด => รันดวยสิทธิ์ root => ลบไฟลออก => จบการทํางาน Server: Company A บายโมง 10 นาที 19 วินาที เขียนสคริปทวนลูป ใสโคด “sudo usermod -aG sudo longcat” เขาไปในไฟล /tmp/vmxxx. sh รัว ๆ!! อิอิกํา
  37. 37. LongCat Voting System
  38. 38. LongCat Voting System [1.01] สมัคร! [1.011] ล็อคอิน! [1.03] ใสสิทธิ์ user ธรรมดา ล็อคอินตอนที่ ขั้นตอนสมัครแคใส user/pass เขาไปในฐานขอมูล user แตยังไมไดใสสิทธิ์เ ปน user ธรรมดา! [1.02]
  39. 39. LongCat Voting System flag{rac4c0nd1t1on} Write-up จาก https://kitctf.de/writeups/gits2015/aart/
  40. 40. Pwner !!
  41. 41. Pwner !!
  42. 42. LongCat Voting System Down !!
  43. 43. ปองกัน Race Condition? ★ Atomicity ○ Transaction ○ Locks ○ Roll-back ○ Double-Check

×