Breaking News
AMR | Citrix Webinar: The Next New Normal

เผยวิธีขโมย Account Facebook ด้วย XSS ผ่านไฟล์ .png ผู้ค้นพบรับรางวัลจาก Facebook ไปแล้ว 7,500 เหรียญ

Jack Whitton ที่ปรึกษาทางด้านความปลอดภัยจากอังกฤษได้ค้นพบบั๊กบน Facebook ที่เปิดให้ทำ Cross-Site Scripting (XSS) ผ่านทางไฟล์ภาพนามสกุล .png เพื่อขโมย Account ของผู้ใช้งาน Facebook รายอื่นๆ ได้ พร้อมรับรางวัลจากโครงการ Facebook Bug Bounty ไปเรียบร้อยแล้ว 7,500 เหรียญ และทาง Facebook ก็ได้ทำการอุดช่องโหว่นั้นไปแล้วภายในเวลาเพียง 6 ชั่วโมงหลังจากทราบเรื่อง จน Jack Whitton ได้ออกมาเปิดเผยถึงวิธีการที่เขาค้นพบเอาไว้ดังนี้

Credit: ShutterStock.com
Credit: ShutterStock.com

จุดเริ่มต้นคือ Whitton ค้นพบว่าเครื่องหมาย > ที่อยู่ในไฟล์ .srt สำหรับทำหน้าที่เป็น Subtitle สำหรับวิดีโอบน Facebook ที่วางอยู่บน akamaihd.net หรือ fbcdn.net นั้นไม่ได้ถูก encode เอาไว้ เขาเลยเชื่อว่าถ้าหากพิสูจน์ได้ว่าเครื่องหมาย < สามารถใช้ได้ด้วย ก็แปลว่าพอจะมีหนทางในการแทรกโค้ด HTML เพื่อเอาไปวางไว้บน Facebook ได้ และถ้าหาทางเรียกไฟล์เหล่านั้นแบบ text/html ได้ ก็น่าจะนำไปใช้โจมตีคนอื่นๆ ได้

เป้าหมายที่เขาเริ่มค้นหาก็คือไฟล์ภาพและวิดีโอบน Facebook ที่สามารถเรียกอ่านแบบ text/html ได้ก่อน และพบว่าไฟล์ภาพใน Facebook Advert นั้นไม่มีการใส่ Hash ใน URL ทำให้สามารถเปลี่ยนนามสกุลของไฟล์ในขณะที่เรียกไฟล์นั้นๆ ได้นั่นเอง สิ่งที่ต้องมองหาต่อไปคือจะใส่ HTML ลงไปในไฟล์ภาพได้อย่างไร

ไฟล์ภาพบน Facebook นั้นมีการ Strip ส่วนของ Exif ออกจาก JPEG และ Strip iTXt chunk ออกจาก PNG แต่สิ่งที่ Whitton เจอก็คือการ Encode ข้อมูลลใน IDAT chunk ของ PNG แทน และวิธีการนี้ก็ทำให้การอัพโหลดไฟล์ PNG ที่มีการแทรกโค้ดลงไปนั้นสามารถอัพโหลดขึ้นไปได้อย่างสวยงาม และยังคงมีทั้งเครื่องหมาย < และ > ให้ใช้ได้อย่างครบถ้วน พร้อมโจมตีด้วย XSS จากไฟล์ PNG แล้ว

จากนั้น Whitton ก็ทำการสร้าง String ชุดที่หลังจากถูกบีบอัดด้วย DEFLATE แล้วจะแสดงผลเป็นคำสั่งที่ต้องการใช้ในการทดสอบเป็น <SCRIPT SRC=//FNT.PE></script> ด้วยวิธีการ Brute Force จนได้ชุดของ String นั้นมา และทำการสร้างไฟล์ PNG ขึ้นมาจาก String ชุดนั้น แล้วทำการอัพโหลดขึ้นไปยังระบบ Facebook Advert

facebook-xss-5
Credit: https://fin1te.net/articles/xss-on-facebook-via-png-content-types/

ขั้นถัดไปก็คือต้องหลบ Facebook Link Shim ระบบตรวจสอบ URL ต้องสงสัยไปให้ได้ ซึ่ง CDN URL นั้นก็ไม่ถูกระบบเหล่านี้ตรวจ จึงผ่านไปได้ง่ายๆ และต่อไปก็ถึงส่วนของการหาว่าจะให้ผู้ใช้งานเรียกจาก URL ไหนดี ซึ่งทาง Whitton ก็ไป dig มาจนพบว่าสามารถใช้ photo.facebook.com แทน URL ที่เป็น Akamai ได้ และเขาก็ลองเปิด URL ที่ชี้ไปยังรูปที่เขาอัพโหลดขึ้นไปนั้นด้วยนามสกุล .html และพบว่า Script ที่แทรกเอาไว้ทำงานได้ผลดี

facebook-xss-9
Credit: https://fin1te.net/articles/xss-on-facebook-via-png-content-types/

ถัดมาคือการพยายามเข้าถึง Session Cookie ให้ได้ ซึ่งจากการที่ Domain ยังคงเป็น photo.facebook.com นี้ ก็ทำให้ไม่สามารถเข้าถึง Session Cookie ที่ถูกกำหนดไว้เป็นแบบ HTTPOnly ได้ แต่ด้วยการที่ photo.facebook.com นั้นเป็นโดเมนลูกภายใต้ facebook.com เขาจึงใช้การตั้งค่า document.domain ตั้งให้ชี้ไปที่ facebook.com ที่เป็น Parent Domain นั่นเอง

แต่เขาก็ต้องหาหน้าของ Facebook ที่ตรงตามเงื่อนไขที่ผ่านมา และไม่ได้ตั้งค่าของ X-Frame-Options เอาไว้ให้เป็น DENY หรือ SAMEORIGIN ซึ่งเขาก็พบว่า Plugin หลายตัวของ Facebook ที่ยอมให้นำไปใช้ได้แบบ iframe นั้นเข้าข่ายนี้ทั้งหมด และตัดสินใจใช้ Page Plugin ที่มีทั้งการตั้งค่า document.domain ให้เป็น facebook.com และมี fb_dtsg ซึ่งเป็น CSRF Token ที่ Facebook ใช้

ด้วยข้อมูลที่มีทั้งหมดนี้ ก็ทำให้ Whitton สามารถสร้างไฟล์ PNG ที่ทำการอัพโหลดขึ้นไปสามารถเรียก Page Plugin และดึงข้อมูล CSRF Token ของผู้ใช้งานขึ้นมาได้ และทำให้สามารถกระทำการต่างๆ โดยอ้างตัวตนเป็นผู้ใช้งานคนนั้นได้ทันทีที่ผู้ถูกโจมตีเรียกไฟล์ PNG จาก URL ที่ส่งให้

facebook-xss-11
Credit: https://fin1te.net/articles/xss-on-facebook-via-png-content-types/

Facebook แก้ไขปัญหานี้อย่างรวดเร็วที่สุด ด้วยการเอา Forward DNS Entry ของ photo.facebook.com ออกทันที

สำหรับรายละเอียดเต็มๆ อ่านได้ที่ https://fin1te.net/articles/xss-on-facebook-via-png-content-types/ เลยนะครับ ยาวและอ่านเพลินอยู่เหมือนกันครับ

และข่าวนี้ค่อนข้างยาว หากมีจุดไหนผิดพลาดหรืออธิบายไม่ดี และอยากให้แก้ไขก็แจ้งทีมงานมาได้เลยที่ info@techtalkthai.com ครับผม

ที่มา: http://www.haktuts.in/2016/01/xss-vulnerability-discovered-in-facebook.html



About techtalkthai

ทีมงาน TechTalkThai เป็นกลุ่มบุคคลที่ทำงานในสาย Enterprise IT ที่มีความเชี่ยวชาญทางด้าน Network, Security, Server, Storage, Operating System และ Virtualization มารวมตัวกันเพื่ออัพเดตข่าวสารทางด้าน Enterprise IT ให้แก่ชาว IT ในไทยโดยเฉพาะ

Check Also

[Video Webinar] Protection Everywhere – Protect Users On/Off-network with One Unified by McAfee Web Security Gateway

สำหรับผู้ที่ไม่ได้เข้าฟังการบรรยาย McAfee Webinar เรื่อง “Protection Everywhere – Protect Users On/Off-network with One Unified by McAfee …

[Video Webinar] พลิกโฉมสถาปัตยกรรม SD-WAN สู่ยุค Cloud ด้วย Dell EMC

สำหรับผู้ที่ไม่ได้เข้าฟังการบรรยาย Geton Webinar เรื่อง “พลิกโฉมสถาปัตยกรรม SD-WAN สู่ยุค Cloud ด้วย Dell EMC” พร้อมเรียนรู้ข้อจำกัดของเทคโนโลยี WAN ในปัจจุบัน ทำไม …