เป็นหนึ่งในช่องโหว่ที่มีความร้ายแรงมาก โดย Hacker จะอาศัยช่องโหว่ของเว็บแอปพลิเคชันที่ไม่มีการดักจับหรือตรวจสอบ Input ที่ป้อนเข้ามาทำให้ Hacker สามารถป้อนคำสั่งต่างๆหรือส่งข้อมูลที่เป็นอันตรายต่อเว็บแอปพลิเคชันผ่านทาง Input แล้วทางเว็บแอปพลิเคชันก็จะประมวลผล Input ที่เป็นอันตรายเหล่านี้ การกระทำของเหล่า Hacker ทำเพื่อหวังทำลายเว็บแอปพลิเคชันหรือโจรกรรมข้อมูลสำคัญออกมาจากฐานข้อมูล
Injection Vulnerabilities เป็นการโจมตีที่ถูกพบได้บ่อยมากที่สุด และจะพบช่องโหว่นี้ในเว็บไซต์เป็นส่วนใหญ่ โดยทั่วไปช่องโหว่นี้เกิดจากการที่เหล่า Developer ไม่ได้ทำการตรวจสอบ Input ที่เข้ามาว่าเป็นรูปแบบไหนและส่งไปทำงานต่อโดยที่ไม่ได้ตระหนักเลยว่า Input ที่ถูกส่งไปนั้นอาจจะเป็นคำสั่งที่สามารถกระทำกับฐานข้อมูลได้เช่น INSERT, UPDATE, DELETE, DROP หรืออาจจะเป็นซอร์สโค้ดที่อันตรายต่อเว็บแอปพลิเคชัน
ช่องโหว่ประเภทนี้สามารถพบได้ทุกแพลตฟอร์มแต่มักจะพบได้บ่อยในพวก SQL, NoSQL, Object Relational Mapping(ORM), LDAP, Expression Language (EL) หรือ Object Graph Navigation Library (OGNL) แม้กระทั่ง OS command ก็สามารถพบเจอได้เช่นกัน
ตัวอย่าง SQL Injection 1 ในปรเภทของ Injection:
SELECT UserID
FROM User
WHERE UserName = ‘$userName’
AND Password = ‘$password’
โดยผู้ใช้ทั่วๆไปก็จะใส่ UserName และ Password ตามปกติตามที่เว็บไซต์ต้องการเพื่อนำไปตรวจสอบกับฐานข้อมูล ถ้าข้อมูลมีอยู่จริงและถูกต้องก็สามารถเข้าสู่ระบบได้ตามปกติ แต่การทำ Injection ผู้ใช้จะใส่ข้อมูลที่ผิดแปลกไปจากปกติโดยอาจจะใส่
UserName: 1’ = OR ‘1 = 1
Password: 1’ = OR ‘1 = 1
เมื่ออยู่ในรูปแบบของ SQL Code ก็จะได้
SELECT UserID
FROM User
WHERE UserName = ‘1’ = OR ‘1 = 1’
AND Password = ‘1’ = OR ‘1 = 1’
ทำให้ไม่ว่าจะเช็คยังไงผลลัพธ์ก็จะออกมาจริงเสมอ ส่งผลให้สามารถเข้าสู่ระบบได้เลยโดยไม่ต้องตรวจสอบอะไรและในกรณีที่เลวร้ายกว่านั้นข้อมูลสำคัญจากฐานข้อมูลโดนแก้ไข, ถูกโจรกรรม, หรือแม้กระทั่งควบคุมทั้ง Server เลยก็ได้
Ref: