
ถอดรหัส XSS: เมื่อการป้องกันไม่สมบูรณ์และบริบทคือกุญแจ
ในโลกดิจิทัลที่เชื่อมโยงกัน ช่องโหว่ด้านความปลอดภัยยังคงเป็นภัยคุกคามสำคัญ หนึ่งในนั้นคือ XSS หรือ Cross-Site Scripting ซึ่งช่วยให้ผู้โจมตีสามารถฉีดโค้ดอันตรายเข้าไปในหน้าเว็บที่ผู้อื่นเข้าชม ทำให้โค้ดนั้นทำงานบนเบราว์เซอร์ของผู้ใช้ได้
XSS คืออะไร? ภัยร้ายที่ต้องระวัง
ที่เราจะพูดถึงคือ Reflected XSS ซึ่งเกิดขึ้นเมื่อแอปพลิเคชันนำข้อมูลผู้ใช้ไปแสดงผลบนหน้าเว็บทันที โดยไม่มีการกรองที่เพียงพอ ผู้โจมตีสามารถขโมย Session Cookie เพื่อยึดครองบัญชี หลอกเปลี่ยนเส้นทาง หรือดักจับข้อมูลการพิมพ์ เพียงผู้ใช้หลงเชื่อและคลิกลิงก์ที่สร้างขึ้นอย่างประสงค์ร้าย
การค้นพบช่องโหว่ที่ไม่ธรรมดา
การค้นหาช่องโหว่มักเริ่มจากการสำรวจระบบที่รับอินพุต การตรวจสอบช่อง “ชื่อ” ในระบบ ERP เป็นจุดที่มุ่งเป้า ได้มีการลองใส่ Payload พื้นฐานอย่าง <script>alert(document.domain)</script> แต่ระบบกรองอักขระพิเศษ โดยเปลี่ยนเป็น HTML Entities ทำให้โค้ดไม่ทำงานโดยตรง การโจมตีแบบ HTML Injection จึงไม่สำเร็จ
บริบท JavaScript: กุญแจสู่การโจมตี
แม้การป้องกัน HTML Injection จะมี แต่เมื่อตรวจสอบ Source Code พบว่า ข้อมูลที่กรอกถูกนำไปใส่ในตัวแปร JavaScript ของแอปพลิเคชันแทน นี่คือจุดสำคัญ เพราะในบริบท JavaScript การกรองแบบ HTML Entities ไม่ได้ช่วยป้องกันเลย ผู้โจมตีจึงต้องปรับ Payload ให้เหมาะสม
Payload ที่ใช้สำเร็จคือ ';alert(document.domain);// โดย:
- Single Quote (
') ปิด String ที่แอปพลิเคชันสร้าง alert(document.domain)คือคำสั่ง JavaScript ที่จะถูกรัน//คอมเมนต์ส่วนที่เหลือของบรรทัด JavaScript เดิม ป้องกันข้อผิดพลาด
ด้วยวิธีนี้ คำสั่ง JavaScript อันตรายจึงทำงานได้บนเบราว์เซอร์ของผู้ใช้ที่เข้าชมลิงก์ที่มี Payload นี้
บทเรียนเพื่อความปลอดภัยที่สมบูรณ์
ช่องโหว่ Reflected XSS นี้มีความเสี่ยงสูง ผู้โจมตีสามารถสร้างลิงก์ที่มี Payload และเมื่อผู้ใช้ที่เข้าสู่ระบบแล้วคลิก สคริปต์อันตรายจะทำงานภายใต้สิทธิ์ของผู้ใช้ทันที นำไปสู่ความเสียหายร้ายแรง การค้นพบนี้ถูกแจ้งไปยังผู้พัฒนา ได้รับการแก้ไข และกำหนดรหัส CVE-2026-37750
เรื่องราวนี้เน้นย้ำความสำคัญของการตรวจสอบช่องโหว่ให้ละเอียดถี่ถ้วน ไม่ยึดติดกับวิธีการโจมตีแบบเดิมๆ การทำความเข้าใจ “บริบท” ที่ข้อมูลถูกใช้งานสำคัญมาก สำหรับนักพัฒนา ควรใช้ฟังก์ชันที่เหมาะสมในการเข้ารหัสหรือหลีกเลี่ยงอักขระพิเศษเสมอ ส่วนผู้ใช้งาน ควรระมัดระวังในการคลิกลิงก์ที่ไม่รู้จัก เพื่อป้องกันตนเอง