vBulletin เป็น CMS ชื่อดังที่มักถูกนำมาใช้สร้าง web community หรือ webboard ต่างๆ โดยล่าสุดพบช่องโหว่ Remote Code Execution ใน vBulletin ทำให้ Hacker สามารถยึดจากระยะไกลได้

โดยช่องโหว่ RCE ดังกล่าว, ผู้โจมตีไม่จำเป็นต้อง Authenticated ก่อน ซึ่งช่องโหว่นี้เกิดที่ตัวแปล routestring ใน index.php ที่มีการตรวจสอบไม่ดีพอ ขั้นตอนการเรียก function เป็นดังนี้

จากภาพจะพบว่าเมื่อมีการเรียกไปที่ index.php ตัว Frontend_Application::init() จะถูกนำมาใช้งาน แล้วไปสร้าง routing โดยการเรียก setRoutes() ซึ่งอยู่ภายใต้ /includes/vb5/frontend/routing.php หาก routing ไม่ได้มีการเขียนนามสกุลเป็น  ‘.gif’, ‘.png’, ‘.jpg’, ‘.css’ or ‘.js’ และภายในชื่อไม่มีตัวอักษร ‘/’ ตัว vBulletin จะมีการเรียก legacy() จะมีไปเรียก /includes/vb5/frintend/controller/relay.php ต่ออีกที ซึ่งใน function legacy() ก็จะมีการไปเรียก  relay() จาก /include/api/interface/collapsed.php อีกที ซึ่งมีการเรียกงานใช้ function require_once() อยู่ ก็จะกลายเป็น include file content ไฟล์เข้าไปนั่นเอง

ซึ่งหาก vBulletin เป็น Linux เราไม่สามารถทำ ../../ ได้ เพราะมันจะติดเงื่อนไขห้ามมี ‘/’ แต่หากเป็น vBulletin ที่ติดตั้งบน Windows เราสามารถกระทำ directory traversal โดยใช้เป็น \..\..  แทนได้ ซึ่งทำให้หากเราสร้าง access log ที่มี php code ไว้ เมื่อนำไป include เข้าไปในไฟล์ ก็จะทำให้กลายเป็นการรัน php code นั้นๆได้นั่นเอง

ระบบที่ได้รับผลกระทบ:: vBulletin version 5
ผลกระทบ:: Remote Code Execution
วิธีการแก้ไข:: เข้าไปแก้ไข function setRoutes() ให้ป้องกันการใช้งาน \ ด้วย หรือรอการ update จาก vendor อีกที

Source:: SecuriTeam