สวัสดีอีกครั้งครับ วันนี้เราจะพามารู้จักกับ Business logic vulnerability โดยวันนี้จะยกตัวอย่างของ ช่องโหว่ Excessive trust in client-side controls ที่เป็น Lab ของ https://portswigger.net เว็บของ Pentest Tools ช่องดังนั่นก็คือ Burp Suite นั่นเอง
หน้าตาของ Website ของ Lab จะเห็นว่าเป็น website ซื้อขายของ e-commerce ธรรมดา
หลังจากนั้นดำเนินการ Login เข้าไปยัง website
หลังจากดำเนินการ Login เข้าไปที่ Website ก็จะสามารถ Add Product เข้าไปยัง รถเข็นได้
ตรวจสอบสินค้าในรถเข็นว่ามีรายการเข้ามาหรือไม่
ดำเนินการเปิด Burp Suite เพื่อดู Activity ย้อนหลังที่ทำรายการ สังเกตที่ /cart คือ Activity ที่เราได้ดำเนินการในรถเข็น
จากนั้นคลิกขวา เลือก send to reperter ก็จะเห็น request ว่า Web Application ดำเนินการส่ง request ไปยัง webserver ด้วย parameter ว่าอะไรบ้าง โดยสังเกตุที่ price ว่าเราสามารถแก้ราคาได้หรือไม่
ลองแก้ price = 5 ว่าสามารถเปลี่ยน parameter ได้หรือไม่
หลังจากนั้นกลับมาดูที่หน้า cart ว่า summary เป็นอย่างไร และดำเนินการเพิ่ม qty = 2 ว่ามีการคำนวนใหม่หรือไม่ และดำเนินการ place order
จังสังเกตได้ว่า place order สำเร็จ และ Total = $0.10 ผิดกับราคาที่กำหนดไว้คือ ชิ้นลำ $1337.00 และ WebServer มีการตัดเงินไปจาก Store Credit เรียบร้อย
สรุป
ดังที่กล่าวมาข้างต้น ช่องโหว่ที่นี้เป็นช่องโหว่ที่มีการเชื่อถือ Client มากเกินไปโดยไม่ได้มีการตรวจสอบ Verify parameter ที่ฝั่ง Server อีกทีจึงทำให้มีการสั่งซื้อสินค้าได้ในราคาที่ไม่ควรจะเป็น และช่องโหว่ของ Business Logic ยังพบได้กับเกม Online หลายๆเกม เช่นล่าสุด เมื่อ 2 เดือนที่แล้วเป็นของเกม Cookie run Kingdom
เมื่อผู้เล่นดำเนินการเติมเงินและเปิดกาชา เพื่อรับตัวละครนั้น หากได้รับตัวละครซ้ำเมื่อปลดล็อกดาวทั้งหมดแล้ว ผู้เล่นจะได้รับ ค่าไมล์เลจเพื่อนำไปสุ่มตัวละครได้อีก โดย Senario จะเป็นดังนี้ ซ้ำ -> ได้ไมล์เลจ ->แลกพิมพ์ตัด -> สุ่มตัวละครใหม่ -> ได้ไมล์เลจ ->แลกพิมพ์ตัด -> สุ่มตัวละครใหม่ แบบนี้ไปเรื่อย ๆ จนกลายเป็นการสุ่มแบบไม่มีขีดจำกัด