พบการเปิดเผยโค้ดการโจมตีแบบ Proof-of-Concept สำหรับช่องโหว่ SQL Injection (SQLi) ที่มีความรุนแรงระดับ Critical ใน Fortinet FortiWeb ซึ่งสามารถถูกนำไปใช้เพื่อเรียกใช้โค้ดที่เป็นอันตรายจากระยะไกล (Remote Code Execution) บนเซิร์ฟเวอร์ที่มีช่องโหว่ได้โดยไม่ต้องผ่านการยืนยันตัวตน (pre-authenticated)
FortiWeb คือ Web Application Firewall (WAF) ที่มีหน้าที่ป้องกันเว็บแอปพลิเคชันจาก HTTP traffic ที่เป็นอันตราย และภัยคุกคามต่าง ๆ
ช่องโหว่ดังกล่าวได้รับคะแนนความรุนแรง 9.8/10 และมีหมายเลข CVE-2025-25257 โดย Fortinet ได้ออกแพตช์แก้ไขเมื่อสัปดาห์ที่ผ่านมาใน FortiWeb เวอร์ชัน 7.6.4, 7.4.8, 7.2.11, 7.0.11 และเวอร์ชันที่ใหม่กว่า
Fortinet ระบุว่า "ช่องโหว่ 'SQL Injection' [CWE-89] เกิดจากการจัดการอักขระพิเศษในคำสั่ง SQL ที่ไม่เหมาะสมใน FortiWeb โดยอาจทำให้ผู้โจมตีที่ไม่ผ่านการยืนยันตัวตนสามารถเรียกใช้โค้ด หรือคำสั่ง SQL ที่ไม่ได้รับอนุญาต ผ่านการ requests แบบ HTTP หรือ HTTPS ที่สร้างขึ้นมาเป็นพิเศษได้"
ช่องโหว่ดังกล่าวถูกพบโดย Kentaro Kawane จากบริษัท GMO Cybersecurity ซึ่งก่อนหน้านี้ก็เป็นผู้เปิดเผยช่องโหว่ hardcoded password ใน Cisco ISE เมื่อเดือนที่ผ่านมา
จากช่องโหว่ SQLi ไปสู่ช่องโหว่ RCE โดยไม่ต้องผ่านการยืนยันตัวตนใน FortiWeb
บริษัทด้านความปลอดภัยทางไซเบอร์ WatchTowr และนักวิจัยที่ชื่อ "faulty *ptrrr" ได้เปิดเผยบทวิเคราะห์ทางเทคนิค และโค้ดสำหรับการโจมตีแบบ proof-of-concept ที่สามารถใช้เปิด reverse shell หรือฝัง web shell บนระบบที่มีช่องโหว่ได้
ช่องโหว่ดังกล่าวถูกพบในส่วน Fabric Connector ของ FortiWeb ซึ่งเป็นซอฟต์แวร์ที่ทำหน้าที่ synchronizes ข้อมูลการยืนยันตัวตน และข้อมูล policy ความปลอดภัยระหว่างผลิตภัณฑ์ต่าง ๆ ของ Fortinet
ในซอฟต์แวร์ดังกล่าวมีช่องโหว่ SQL Injection แบบที่ไม่จำเป็นต้องผ่านการยืนยันตัวตน อยู่ในฟังก์ชัน get_fabric_user_by_token() ซึ่งใช้โค้ดตามด้านล่างในการเรียกใช้คำสั่ง MySQL:
โค้ดดังกล่าว ไม่ได้ตรวจสอบความถูกต้องของค่า "bearer token" ที่ถูกส่งมาใน header ของ HTTP request อย่างเหมาะสม ทำให้ผู้โจมตีสามารถแทรกคำสั่ง SQL ที่ต้องการเข้าไปใน header ได้ เพื่อนำไปสู่การโจมตีแบบ SQL Injection
ผู้โจมตีสามารถใช้ช่องโหว่นี้ได้โดยการส่ง HTTP request ไปยัง endpoint "/api/fabric/device/status" พร้อมกับแทรกคำสั่ง SQL เข้าไปในส่วนของ Authorization header (เช่น Bearer AAAAAA'or'1'='1) ซึ่งจะทำให้ผู้โจมตีสามารถ bypass ขั้นตอนการยืนยันตัวตนไปได้
นักวิจัยสามารถยกระดับการโจมตีจาก SQL Injection ไปสู่การเรียกใช้โค้ดที่เป็นอันตรายจากระยะไกล (Remote Code Execution) ได้ โดยใช้ช่องโหว่ SQLi นี้เพื่อเรียกใช้คำสั่ง SELECT … INTO OUTFILE ของ MySQL ที่ทำให้สามารถสร้างไฟล์ใด ๆ ก็ได้บนอุปกรณ์ของเป้าหมาย เทคนิคนี้ทำให้นักวิจัยสามารถเขียนไฟล์ Python ที่มีนามสกุล .pth ลงในไดเรกทอรี site‑packages ได้สำเร็จ
เนื่องจากไฟล์ .pth จะถูกโหลด และเรียกใช้โดยอัตโนมัติทุกครั้งที่ Python เริ่มทำงาน นักวิจัยจึงค้นพบสคริปต์ CGI ที่เป็นของ FortiWeb เอง และเขียนด้วยภาษา Python (/cgi-bin/ml‑draw.py) ที่สามารถใช้เป็นจุดเริ่มต้น เพื่อสั่งให้โค้ดอันตรายที่อยู่ในไฟล์ .pth ทำงาน และบรรลุเป้าหมายในการเรียกใช้โค้ดที่เป็นอันตรายจากระยะไกลได้สำเร็จ
เนื่องจากขณะนี้โค้ดสำหรับการโจมตีได้ถูกเผยแพร่ต่อสาธารณะ และหาได้โดยทั่วไปแล้ว จึงขอแนะนำให้ผู้ดูแลระบบเร่งดำเนินการติดตั้งแพตช์แก้ไขโดยเร็วที่สุด เพื่อป้องกันไม่ให้เซิร์ฟเวอร์ถูกโจมตีได้
ในขณะนี้ ยังไม่มีหลักฐานว่าช่องโหว่ดังกล่าวถูกนำไปใช้ในการโจมตีจริง แต่ก็มีความเป็นไปได้สูงที่จะมีการนำช่องโหว่ดังกล่าวมาใช้ในเร็ว ๆ นี้
ที่มา : bleepingcomputer
You must be logged in to post a comment.