Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Exploiting WebApp Race Condition Vulnerability 101

2.065 Aufrufe

Veröffentlicht am

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

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

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

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

×