Injection Vulnerabilities(Draft)

P.Lert
1 min readJun 4, 2021

--

เป็นหนึ่งในช่องโหว่ที่มีความร้ายแรงมาก โดย 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’

รูปประกอบจาก: https://avinetworks.com/glossary/sql-injection-attack/

ทำให้ไม่ว่าจะเช็คยังไงผลลัพธ์ก็จะออกมาจริงเสมอ ส่งผลให้สามารถเข้าสู่ระบบได้เลยโดยไม่ต้องตรวจสอบอะไรและในกรณีที่เลวร้ายกว่านั้นข้อมูลสำคัญจากฐานข้อมูลโดนแก้ไข, ถูกโจรกรรม, หรือแม้กระทั่งควบคุมทั้ง Server เลยก็ได้

Ref:

--

--