Upload
pichaya-morimoto
View
1.031
Download
0
Embed Size (px)
Citation preview
Race Condition 101ชองโหวที่แขงกับเวลาและเงื่อนไข
Copyright © 2015 by Pichaya Morimoto. แจกจายหรือนําไปใชไดเต็มที่ไมตองขอแคลงเครดิตไวก็พอ
Mr. Pichaya MorimotoJune 5, 2015
การทํางานตามลําดับของโคดสวน A ที่(อาจ)ทํางานรวมกับโคดสวนอื่น ซึ่ง อาจใช ทรัพยากร (ไฟล, ขอมูล, อุปกรณ ฯลฯ) รวมกัน แตในระหวาง "เวลา" ที่โคด A กําลังทํางานตามลําดับอยูนั้น ถา ทรัพยากรถูกแกไขจากโคดหรือโปรแกรม อื่นที่ทํางานในขณะเดียวกันจะอาจทําใหทํางานผิดพลาดได ถาโคดสวน A ไมไดคํานึงถึงปญหานี้ไว
Race Condition คือ?
ตัวอยาง: ถอนเงินในบัญชี
สมศรี สมชาย
เงินเดือน เดือนนี้ออกแลวว เอามาฝากที่เคากอน เดี๋ยวโอนใหใชวันละ 50 บาทนะ #หะ
ถาใชแลวเหลือกลับบานมาหยอดกระปุกดวยนะ
ตัวอยาง: ถอนเงินในบัญชี
สมศรี
โอนเงินแพบเงินคงเหลือในบัญชีสมศรี
15,000 บาท
14,950 บาท
เงินคงเหลือในบัญชีสมชาย
0 บาท
50 บาท
ตัวอยาง: ถอนเงินในบัญชี
สมศรี
โอนเงินแพบเงินคงเหลือในบัญชีสมศรี
15,000 บาท
14,950 บาท
เงินคงเหลือในบัญชีสมชาย
0 บาท
50 บาท
Timing Window
Code Sequence == การโอนเงิน 1. ตองถอนจากบัญชีสมศรี 2. แลวโอนเขาบัญชีสมชาย
Shared Resource == เงินในระบบ
ตัวอยาง: ถอนเงินในบัญชี
เงินคงเหลือในบัญชีสมชาย
Total: 50 บาท
สมชาย
50 บาท...ใชไงใหพอเนี่ยเรียนสอนแฮกเว็บแบบแมว ๆ มาแลว ลองหนอยดีกวา..
สิ่งที่เกิดขึ้นตอนถอนเงิน?
ตัวอยาง: ถอนเงินในบัญชี
สิ่งที่คนกดเงินคิด
ฉันมีเงินในบัญชี 50 บาทฉันนําออกมาใช 50 บาทฉันเหลือเงิน 0 บาทในบัญชี
ตัวอยาง: ถอนเงินในบัญชี
สิ่งที่โปรแกรมเมอรคิด
var เงินที่จะถอน = 50;var เงินในบัญชี = 50;
if (เงินในบัญชี >= เงินที่จะถอน) f_ถอนเงิน(50){ t_ลบเงินในบัญชี(50); t_เงินออกจากตู(50); }} Thread 1, 2 ทําพรอมกัน
ตัวอยาง: ถอนเงินในบัญชี
สิ่งที่แฮกเกอรคิด
var เงินที่จะถอน = 50;var เงินในบัญชี = 50;
if (เงินในบัญชี >= เงินที่จะถอน) f_ถอนเงิน(50){ t_ลบเงินในบัญชี(50); t_เงินออกจากตู(50); }}
ใชเวลา 3 วินาที
วิ 1
วิ 2
วิ 3
Thread 1, 2 ทําพรอมกัน
ตัวอยาง: ถอนเงินในบัญชี
สิ่งที่แฮกเกอรคิด
var เงินที่จะถอน = 50;var เงินในบัญชี = 50;
if (เงินในบัญชี >= เงินที่จะถอน) f_ถอนเงิน(50){ t_ลบเงินในบัญชี(50); t_เงินออกจากตู(50); }}
วิ 1
วิ 2
วิ 3
จะเกิดอะไรขึ้นถาวินาทีที่ 2ถอนเงินอีกตูจากบัญชีเดียวกันพรอม ๆ
กัน?
ตัวอยาง: ถอนเงินในบัญชี
สิ่งที่แฮกเกอรคิด
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
ตัวอยาง: ถอนเงินในบัญชี
สิ่งที่แฮกเกอรคิด
วินาทีที่ 1ถอนเงินตู 1
โจร 1 ไดเงิน 50 บาท
วินาทีที่ 2ถอนเงินตู 2
โจร 2 ไดเงิน50 บาท
วินาทีที่ 2ถอนเงินตู 3
โจร 3 ไดเงิน50 บาท
ตัวอยาง: ถอนเงินในบัญชี
สิ่งที่แฮกเกอรคิด
มีเงินในบัญชี50 บาท
ถอน 3 ครั้งพรอม ๆ กันไดเงิน 150
บาท!!!
ตัวอยาง: ถอนเงินในบัญชี
ที่มา: 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
ตัวอยาง: ถอนเงินในบัญชี
ที่มา: 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 วินาที กวาระบบธนาคารจะอัพเดทวาเงินถูกถอนเงินไปแลว
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
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 รัว ๆ!! อิอิกํา
ที่มา: Josip Franjkovićhttp://josipfranjkovic.blogspot.com/2015/04/race-conditions-on-facebook.html
ชองโหว Race Condition ใน Facebook
ระบบรีวิวของแฟนเพจ
ที่มา: Josip Franjkovićhttp://josipfranjkovic.blogspot.com/2015/04/race-conditions-on-facebook.html
ชองโหว Race Condition ใน Facebook
เฟซบุกจายคาหาชองโหวเจอให 3000 USD (1 แสนกวาบาท)
ที่มา: Josip Franjkovićhttp://josipfranjkovic.blogspot.com/2015/04/race-conditions-on-facebook.html
ชองโหว Race Condition ใน Facebook
เปลี่ยนชื่อ
ชองโหว Race Condition ในเว็บ Digital Ocean
ที่มา: Josip Franjkovićhttp://josipfranjkovic.blogspot.com/2015/04/race-conditions-on-facebook.html
ชองโหว Race Condition ในเว็บ Digital Ocean
ที่มา: Josip Franjkovićhttp://josipfranjkovic.blogspot.com/2015/04/race-conditions-on-facebook.html
ใช Promo Code 1 อัน แลวยิงเขาไปพรอมกันในเสี้ยววินาทีเดียวเปนสิบ ๆ thread เพื่อเติม Promo Code ในระบบทําใหจากเดิมกดไดครั้งเดียวเปนหลายครั้ง ปมเงิน!
ดรามา Race Condition ในระบบ StarBucks Gift Card
ที่มา: Egor Homakovhttp://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/
ดรามา Race Condition ในระบบ StarBucks Gift Card
ที่มา: Egor Homakovhttp://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/
★ Ghost in the ShellCode 2015★ Name: aart★ Category: Web ★ Points: 200
LongCat Voting System
ที่มา: http://ghostintheshellcode.com/
LongCat Voting System
★ สมัคร User Account ได★ ล็อคอินได
(แตบอกไมใชแอดมิน)★ สงลิ้งรูปกับชื่อรูปมาที่หนาแ
รกได★ หนาแรกไมจํากัดรูปที่ถูกสง
มา (ตอนหลังจํากัดเปน 1000 แลวก็ 100 รูปลาสุดแทนเพราะคนเลนเยอะ)
★ แตละรูปสามารถโหวตคะแนนขึ้นหรือลงได
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 รัว ๆ!! อิอิกํา
LongCat Voting System
[1.01]สมัคร!
[1.011]ล็อคอิน!
[1.03]ใสสิทธิ์ user
ธรรมดา
ล็อคอินตอนที่ ขั้นตอนสมัครแคใส user/pass เขาไปในฐานขอมูล userแตยังไมไดใสสิทธิ์เปน user ธรรมดา!
[1.02]