เราห่างหายจากการนำเรื่องที่มีประโยชน์ไปนานมาก วันนี้ได้โอกาสเลยขอเสนอเรื่องราวเกี่ยวกับ security ในphp+MySQL ที่เกี่ยวพันกับพวกเราโดยตรงครับ
อย่างแรกคือ Input Validation attack ซึ่งจะนำมาซึ่ง Attack อื่นๆ ไม่ว่าจะเป็น shell,cross site scripting ผ่านโปรแกรมยอดนิยมPHP หรือ CGI จะขอสาธยายให้ฟังเท่าที่พอจะมีความรู้ว่ามันคืออะไร ปกติ การเรียกโปรแกรมphp ให้มันทำงานผ่านหน้าเวป เราจะคุ้นๆ กันดีว่า สามารถเรียกผ่านaddress bar ของ browser ได้เลย เช่น ถ้าจะเปลี่ยนภาษาก็เพียงแต่เรียก index.php?name=thai ก็จะเปลี่ยนเป็นภาษาไทยเลย อธิบายอย่างนี้ง่ายที่สุด นะ
ในการเขียน script ทุกครั้งโปรแกรมเมอร์จะต้องมีการกรองให้เฉพาะ input ที่พึงประสงค์ เช่นตัดคำบางคำที่จะเป็นการเรียกสคริปต์ หรือไฟล์ที่ URL อื่น หรือแม้กระทั่งการรัน CGI command หรือการสอดไส้ จาวาสคริปต์ที่มีการเรียบเรียงโค้ดมาอย่างดี พอเกิดการคีย์ให้รันผ่านทางหน้าเวป จะมีการเรียกสคริปต์ ก่อให้เกิดการเปลี่ยนแปลง เช่นมีการสร้าง user ใหม่ การเข้าเชลล์ของ apache ได้ เป็นต้น ผมยกตัวอย่างยอดฮิทสองสามอันใน phpNUKE ที่เจอบ่อยมากนะครับ อันแรกที่เจอและโดนกันมามากคือ การกรองคำที่ไม่ดีพอในระบบการให้คะแนนarticle ทำให้สามารถมีการกรอก จาวาให้มาเปลี่ยนหน้าข่าว หรือแม้กระทั่งเปลี่ยนหน้าเวปเลย อันที่สองคือระบบเวปเมลattachment ใน phpNUKE ที่เล่นถึงขนาดสามารถดึงไฟล์ configของเราออกไปได้เลย จนล่าสุด เวอร์ชั่น7 ถอดเอาเวปเมลออกไปเรียบร้อย อีกอัน ที่เพิ่งเจอมาสด ๆ ร้อนๆ คือ security ใน my_egallery ที่สามารถเรียกหน้าเวป พร้อมรันชุดคำสั่ง CGI จาก remote URL และเข้าไปแก้ไขไฟล์ ส่งไฟล์ หรือแม้แต่ใช้ shell command ได้เลยครับ ท่านที่ต้องการติดตามความเคลื่อนไหวต่างๆ ต้องติดตามแทบทุกวัน
อย่างที่สอง สำคัญพอๆ กัน และเกี่ยวกับอันแรกคือ บางครั้งเมื่อมีการกรองคำที่ไม่ดีพอ ทำให้แฮคเกอร์ สามารถเรียกคำสั่ง query ที่จัดเรียงมาอย่างดี เข้าควบคุมการทำงานของ MySQL และสร้างผลร้ายแรงหลายอย่างที่เกี่ยวข้องกับ phpNUKE เช่นการสร้างadmin User ใหม่ เปลี่ยนเนื้อความ เป็นต้น เราเรียกว่า sql injection
ติดตามsecurity alertใหม่ๆที่นี่ securityspace