สวัสดีครับ วันนี้ ผมอยากนำความรู้ในการแก้ปัญหาเรื่องเว็บ โดนแทรก script ต่างๆ
ลงไปครับ ซึ่งปัจจุบันพวก CMS ต่างๆ ที่เราจัดการ permission ไม่ดี จะโดนเรื่องพวกนี้
กันเยอะมากครับ วิธีป้องกันตั้งแต่แรกก็คือ ดูเรื่องการ set permission ของ dir และ file
ให้ถูกต้องเหมาะสม แล้วก็หมั่น scan virus ที่เครื่องที่ใช้ upload file ให้ดี เพราะว่า
ตัวโปรแกรมที่ใช้ FTP เอง ก็มีส่วนเกี่ยวข้องในปัญหาเรื่องการแทรก script ได้ ..
สำหรับลักษณะการแทรก script พวกนี้ หลักๆ เท่าที่เจอก็คือ
1.ไปแก้ file .htaccess เสียเลย ซึ่งวิธีนี้ ทำให้มีผลครอบคลุมกับทั้งเว็บ
แต่วิธีนี้ ก็แก้ง่ายนิดนึงคือไปดูที่ .htaccess ที่เดียว
2.ไปเขียนทับ file .php ต่างๆ ที่มี permission ที่สามารถเขียนได้ แทบทุก file
แบบนี้ จะยากหน่อยเพราะว่าต้องไปเปิดหากันทุก file และสมัยนี้ พวก hacker
ใช้วิธีที่แยบยลขึ้น คือมีการเข้ารหัส script ที่แทรกอีกที ทำให้แกะยากกว่าเดิม
ไม่เขียนในลักษณะตรงๆ ให้เรา search หาได้ ..
ส่วนลักษณะการทำงานของ script พวกนี้ก็เท่าที่เจอ มีอยู่ไม่กี่อย่างคือ
1.เป็น iframe เรียกเว็บต่างๆ ที่เป็นเป้าหมาย เพื่อประโยชน์ในบางอย่าง
ไม่ว่าจะเป็นการเอา traffic การทำลายเป้าหมาย ตลอดจนการโกงโหวตต่างๆ
2.เป็น script สั่ง redirect ไปยัง server ปลายทางที่กำหนด แต่จะมีการเชค
Agent ที่เข้ามาด้วย ถ้าเป็นพวก bot ต่างๆ ก็จะไม่มีผล แต่ถ้าเป็น browser ธรรมดา
ก็จะมีการ redirect ไปยังเว็บเป้าหมาย ..
เคสที่ผมเจอในวันนี้ก็คือ มีเว็บของรุ่นพี่ที่ทำงาน ใช้ WordPress 3.xx อยู่
เวลา search จาก Google เจอว่าคือเว็บนั้นถูกต้อง แต่ถ้าทำการคลิก จะมีการ
redirect ด้วย php header ไปยังเว็บอื่น ซึ่งผมเองลองปลอม agent เป็น bot
ต่างๆ จะไม่มีการ redirect แต่จะกลายเป็นหน้าขาวๆ แทน แสดงว่าจะต้องมี
หน้า page ที่ถูกแทรก script ให้ check agent และทำการ redirect ไปยังเว็บ
เป้าหมาย ซึ่งถ้าเป็นแบบนี้จริง ก็ไม่ยากอะไร แค่ search หาชื่อเว็บจาก file
ต่างๆ ที่มีอยู่ทั้งหมด ก็น่าจะได้ แต่ไม่ง่ายอย่างที่คิด เพราะมีการเข้ารหัส code อีกที ..
ตัวอย่างเวลา search ด้วย Google จะเห็น link ต่างๆ ปกติ
แต่หน้าที่ redirect ไปกลับไม่ปกติ
จากเหตุการณ์เหล่านี้ ทำให้ผมสนใจว่า จะต้องมี script แทรกอยู่ที่ file หลักๆ สักที่
โดยผมสังเกตว่า มีความผิดปกติในเรื่องของมีการแทรก eval(base64_decode(‘xxx’));
อยู่เยอะมาก แต่ว่าอ่านไม่ออกว่ามันคือคำสั่งอะไร ก็เลยลองให้ echo ค่านี้ออกมา
ซึ่งค่าที่ได้ จากการ echo ออกมามันตรงกับการทำงานของ script ที่สงสัยพอดี ..
จากนั้นผมก็เอาคำพวกนี้ ไป search หาครับ พบว่าเป็นกับ theme ของ WP ก็เลย
ทำการเอา backup ขึ้นแล้วทำการ แก้ไขเรื่อง permission ครับ คำสั่งที่ใช้ในการ
หา script ที่โดนแทรก ก็คือ
# find . -name “*.php” -exec grep “ZXJyb3JfcmVwb3J0aW” {} \; -print
เท่านี้ก็สามารถแก้ปัญหาเรื่องโดนแทรก script ได้แล้วครับ แต่ถ้าไม่มี backup อยู่
ก็ต้องมานั่งลบ code ที่ถูกแทรกนี้กันทุก file เลยทีเดียวครับ ..
ต้องขอขอบคุณ พี่นุ้กเจ้าของ blog และ เซียนกอล์ฟแห่ง PacketLove.com ด้วยครับ
ที่มี backup เก็บไว้ตลอดเวลา ไม่งั้น งานนี้ ใช้เวลานานกว่านี้แน่ครับ


