วันอังคารที่ 31 พฤษภาคม พ.ศ. 2554

การโจมตีแบบเอสคิวแอล อินเจคชัน (SQL Injection Attacks)

การโจมตีแบบเอสคิวแอล อินเจคชัน (SQL Injection Attacks)

การ โจมตีแบบเอสคิวแอล อินเจคชัน ผมได้ลองศึกษาและทำงานวิจัยนี้ พบว่ามีขอบเขตน่าสนใจ และเป็นการโจมตีที่เข้าตามตรอก ออกตามประตูอย่างแท้จริงๆ หมายความว่า หากเว็บแอพพลิเคชั่นคุณเปิดให้บริการ แน่นอนคุณต้องเปิดพอร์ต 80 เพื่อให้บริการเว็บ แต่พอร์ต 80 นี้เอง เป็นช่องทางในการโจมตีได้ และผมได้ทดลองกับเว็บจริงๆ พบว่าหลาย ๆ เว็บแอพพลิเคชั่นที่ให้บริการบนอินเทอร์เน็ตปัจจุบัน ยังมีรูรั่วด้านนี้ เป็นจำนวนมาก อาจเนื่องมาจากนักพัฒนามุ่งเนื้องานจนลืมนึกถึง Non Function ของระบบ จึงหวังว่าบทความนี้อาจช่วยให้ท่านรอดพ้นจากการโจมตีในรูปแบบนี้ได้

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




ภาพที่ 1. ภาพรวมของการโจมตีแบบเอสคิวแอล อินเจคชัน

การพัฒนา ระบบงานในลักษณะเว็บแอพพลิเคชั่น นักพัฒนาส่วนใหญ่จะมุ่งเน้นที่การพัฒนาระบบงานโดยอาจละเลยหรือไม่ได้ให้ความ สนใจในเรื่องความปลอดภัยเท่าที่ควร ทำให้ผู้ไม่ประสงค์ดีสามารถโจมตีเว็บแอพพลิเคชั่น ในขั้นตอนการตรวจสอบการเข้าสู่ระบบ (Authentication) หรือป้อนคำสั่งโจมตีผ่านทางฟอร์มกรอกข้อมูลต่าง ๆ ผ่านเว็บบราวเซอร์ แสดงดังภาพที่ 2



ภาพที่ 2 แสดงการป้อนคำสั่งเอสคิวแอล อินเจคชัน ผ่านทางหน้าจอการเข้าระบบ

การ พัฒนาระบบงานในลักษณะเว็บแอพพลิเคชั่น นักพัฒนาส่วนใหญ่จะมุ่งเน้นที่การพัฒนาระบบงานโดยอาจละเลยหรือไม่ได้ให้ความ สนใจในเรื่องความปลอดภัยเท่าที่ควร ทำให้ผู้ไม่ประสงค์ดีสามารถโจมตีเว็บแอพพลิเคชั่น ในขั้นตอนการตรวจสอบการเข้าสู่ระบบ (Authentication) หรือป้อนคำสั่งโจมตีผ่านทางฟอร์มกรอกข้อมูลต่าง ๆ ผ่านเว็บบราวเซอร์ แสดงดังภาพที่ 3



ภาพที่ 3 แสดงการป้อนคำสั่งเอสคิวแอล อินเจคชัน ผ่านทางหน้าจอการเข้าระบบ

ผู้ ไม่ประสงค์ดีสามารถบิดเบือนคำสั่งเอสคิวแอล สำหรับการเข้าสู่ระบบได้ โดยป้อน ‘or 1=1– ในช่องรหัสผู้ใช้ เมื่อเว็บแอพพลิเคชั่นได้รับคำสั่งเอสคิวแอล จะนำคำสั่งไปรวมกับชุดคำสั่งในภาษาต่าง ๆ เช่น ภาษาเอเอสพี (ASP) ภาษาเจเอสพี (JSP) โดยแสดงตัวอย่างฟังก์ชั่นโปรแกรมภาษาจาวาที่ตรวจสอบสิทธิ์การเข้าใช้ระบบงาน (Authentication) ดังภาพที่ 4




ภาพที่ 4 แสดงฟังก์ชั่นตรวจสอบสิทธิ์การเข้าใช้ระบบงานในภาษาจาวา

ใน ภาพที่ 5 แสดงการเปรียบเทียบคำสั่งเอสคิวแอลปกติกับคำสั่งเอสคิวแอลที่ถูกบิดเบือน ในส่วนของคำสั่งเอสคิวแอลปกติ เมื่อผู้ใช้งานเข้าใช้ระบบงาน โดยทำการป้อนรหัสผู้ใช้ คือ admin แต่ผู้ไม่ประสงค์ดีสามารถบิดเบือนคำสั่งเอสคิวแอลปกติ เป็นคำสั่งเอสคิวแอล อินเจคชัน โดยป้อนคำสั่ง ‘ OR 1=1 — ลงในช่องรหัสผู้ใช้แทนรหัสผู้ใช้ admin และสามารถป้อนรหัสผ่านเป็นค่า ใด ๆ ได้เนื่องจากเมื่อฐานข้อมูลประมวลผลคำสั่งเอสคิวแอล อินเจคชัน โดยเมื่อพบคำสั่ง “–” ฐานข้อมูลจะไม่ประมวลผลคำสั่งอื่น ๆ ต่อจากคำสั่ง “–” เนื่องจากเป็นคำสั่งคอมเมนต์ (Comment) ที่ฐานข้อมูลอนุญาติให้นักพัฒนาระบบงานเขียนสิ่งต่าง ๆ นอกเหนือจากคำสั่งเอสคิวแอลได้




ภาพที่ 5 การเปรียบเทียบคำสั่งเอสคิวแอลที่รวมเข้ากับภาษาอื่นระหว่างคำสั่งเอสคิว แอลปกติกับคำสั่งเอสคิวแอลที่ถูกบิดเบือนด้วยคำสั่งเอสคิวแอล อินเจคชัน

คำ สั่งเอสคิวแอลที่ถูกบิดเบือนด้วยคำสั่งเอสคิวแอล อินเจคชันนั้น จะพยายามเปลี่ยนแปลงเงื่อนไขคำสั่งเอสคิวแอลให้มีสถานะเป็นจริง (True) เช่น คำสั่งเรียกดูรายชื่อผู้ใช้ระบบที่มีชื่อว่า admin หรือ 1=1 (1=1 สถานะเป็นจริง) ซึ่งทำให้ฐานข้อมูลประมวลผลผิดพลาดและแสดงความผิดพลาดกลับมาสู่เว็บบราว เซอร์ ดังภาพที่ 2-6 โดยจะแสดงถึงเทคโนโลยีที่ใช้ในเชื่อมต่อฐานข้อมูล รวมทั้งชื่อฐานข้อมูล ชื่อฟิลด์ที่ใช้ รวมทั้งแสดงข้อผิดพลาดอื่น ๆ ซึ่งเป็นข้อมูลที่เป็นประโยชน์ของผู้ไม่ประสงค์ดีในการโจมตีเว็บแอพพลิเค ชั่นต่อไป




ภาพที่ 6 ผลลัพท์ที่เกิดขึ้นจากการโจมตีแบบเอสคิวแอล อินเจคชัน

จาก ภาพที่ 6 แสดงให้เห็นถึงเทคโนโลยีที่ใช้ในการเชื่อมต่อฐานข้อมูล และชนิดของฐานข้อมูล ซึ่งจากภาพที่ 6 เว็บแอพพลิเคชั่นใช้ฐานข้อมูลไมโครซอฟต์ ซีควอลเซิร์ฟเวอร์ ดังนั้นหากผู้ไม่ประสงค์ดีต้องการโจมตีในรูปแบบเอสคิวแอล อินเจคชัน เพื่อหยุดการทำงานของฐานข้อมูล สามารถใช้คำสั่ง ‘ OR 1=1 ; exec master..xp_cmdshell ‘iisreset /stop’– ลงในช่องรหัสผู้ใช้แทนรหัสผู้ใช้ admin โดยภายในคำสั่งเอสคิวแอล อินเจคชันนี้ได้บังคับให้ฐานข้อมูลเรียกใช้คำสั่ง iisrest /stop ในระบบปฏิบัติการ (OS) ซึ่งเป็นคำสั่งหยุดการทำงานของเว็บแอพพลิเคชั่น ทำให้ผู้ใช้งานไม่สามารถเข้าระบบได้ ผลลัพท์ที่ได้แสดงดังภาพที่ 7



ภาพที่ 7 แสดงผลลัพท์จากคำสั่งหยุดการทำงานของเว็บแอพพลิเคชั่น
แครดิตไม่รู้ของ ใคร หาไม่เจอ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น