วิธีตรวจสอบเว็บไซต์ที่โดน Hack #4

(ตอนนี้ จะเน้นการตรวจสอบ Joomla เป็นหลักครับ) จาก “วิธีตรวจสอบเว็บไซต์ที่โดน Hack #3” ซึ่ง เป็นการตรวจสอบเบื้องต้นว่า มีการบุกรุกผ่านช่องโหว่ต่างๆของ Web Server เข้ามาวาง Backdoor หรือไม่ ซึ่ง ตั้งสมมุติฐานว่า Hacker จะเอาไฟล์ .php มาวางไว้ในไดเรคทอรี่ images/stories เท่านั้น แต่ความจริงแล้ว … ไม่ใช่เช่นนั้น เพราะ Hacker ต้องคิดต่อไปอีกขั้นหนึ่ง คือ ต้องวางไฟล์ Backdoor ไว้ในที่อื่นๆด้วย รวมถึง พยายามแก้ไขไฟล์ .php ของ Joomla เพื่อไม่ให้ผิดสังเกต และเป็นช่องในการกลับเข้ามาในภายหลัง ในบทความนี้ เป็นแนวทางปฏิบัติที่พึงดำเนินการ เพื่อการสืบสวน ค้นหา และทำลาย Backdoor ที่อื่นๆ รวมถึง เสนอแนวทางปฏิบัติ เพื่อผู้ดูแลระบบจะได้ทราบว่า มีไฟล์ใดบ้างที่เปลี่ยนแปลง ในอนาคต ภาพรวมขั้นตอนการปฏิบัติ 1. ทำการตรวจสอบไฟล์ .php ใน images/stories แล้วเก็บเป็น List เอาไว้ 2. ดึงไฟล์ Backdoor ที่พบ มาเก็บไว้ก่อน ด้วยคำสั่ง tar 3. ค้นหาไฟล์ ที่เกิดขึ้นหรือถูกแก้ไข ในเวลาใกล้เคียงกันกับ Backdoor นั้นๆ แล้วเก็บเป็น List เอาไว้ 4. ดึงไฟล์ ต้องสงสัย มาเก็บไว้ก่อน แล้ว ตรวจสอบ เป็นรายไฟล์ 5. ลบไฟล์ Backdoor จาก List ในข้อ 1. 6. ลบไฟล์ ต้องสงสัย หลังจากการตรวจสอบในข้อ 4. 7. ตรวจสอบ Web User คือใคร 8. ค้นหา Directory ที่ Web User จากข้อ 7. ที่สามารถเขียนได้ 9. ค้นหา Backdoor พื้นฐานเพิ่มเติม รายละเอียดการปฏิบัติ คำสั่งต่อไปนี้ อยู่บนพื้นฐานที่ว่า Document Root ของ Web Server อยู่ใน /var/www/ ของแต่ละผู้ใช้ ดังนั้น ขอให้ปรับเปลี่ยนตามระบบของท่าน 1. ทำการตรวจสอบไฟล์ .php ใน images/stories แล้วเก็บเป็น List เอาไว้ ใช้คำสั่งต่อไปนี้ find /var/www/ -name “*.php” -type f | grep ‘images/stories’ > /tmp/backdoor.txt 2. ดึงไฟล์ Backdoor ที่พบ มาเก็บไว้ก่อน ด้วยคำสั่ง tar เพื่อให้ในการตรวจสอบ และภายหลัง cat /tmp/backdoor.txt | xargs tar -cvf /tmp/backdoor.tar ลองตรวจสอบว่า คำสั่งดังกล่าว เก็บไฟล์ได้จริงหรือไม่ ด้วยคำสั่งต่อไปนี้ tar -tvf /tmp/backdoor.tar 3. ค้นหาไฟล์ ที่เกิดขึ้นหรือถูกแก้ไข ในเวลาใกล้เคียงกันกับ Backdoor นั้นๆ แล้วเก็บเป็น List เอาไว้ ให้สร้างไฟล์ ชื่อ findbackdoor.sh แล้วใส่เนื้อหาตามนี้ #!/bin/sh BD=”/tmp/backdoor.txt” TMP01=”/tmp/otherbackdoor.txt” DMROOT=”/var/www/” for f in $(cat $BD) ; do     echo “:: $f ::”

Read More »

How to: install Owncloud (Easy method)

สำหรับ Ubuntu 12.04 เท่านั้น เปิด terminal พิมพ์คำสั่ง (ไม่ต้องพิมพ์ $) $wget -q -O – http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_12.04/Release.key|sudo apt-key add – wget -nv https://download.owncloud.org/download/repositories/stable/xUbuntu_12.04/Release.key -O Release.key apt-key add – < Release.key ต่อด้วย $sudo sh -c “echo ‘deb http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_12.04/ /’ >> /etc/apt/sources.list.d/owncloud.list” sh -c “echo ‘deb http://download.owncloud.org/download/repositories/stable/xUbuntu_12.04/ /’ >> /etc/apt/sources.list.d/owncloud.list” apt-get update apt-get install owncloud ปิดท้าย $sudo apt-get update $sudo apt-get install -y owncloud ต่อด้วยคำสั่ง $sudo /etc/init.d/apache2 restart เปิดเว็บ http://localhost/owncloud เพื่อสร้าง user ที่เป็น admin ชื่ออะไรก็ได้ตามสะดวก และตั้งรหัสผ่านให้เรียบร้อย คลิก Advanced เพื่อดูค่าอื่นๆ เช่น โฟลเดอร์ที่ใช้เก็บข้อมูล การตั้งค่าฐานข้อมูลว่าจะใช้อะไร แบบง่ายนี้ขอใช้ sqlite ไปก่อนเพื่อความรวดเร็ว คลิก Finish Setup ระบบจะล็อคอินเป็น user ที่สร้างให้คนแรกโดยอัตโนมัติ ที่เหลือ … ขอให้สนุกครับ ที่มา http://software.opensuse.org/download/package?project=isv:ownCloud:community&package=owncloud https://download.owncloud.org/download/repositories/stable/owncloud/

Read More »

SQL Server All about DataTime data type

Function GETDATE() AND SYSTEMDATETIME() GETDATE แสดงข้อมูลระดับ miliseconds SYSDATETIME แสดงข้อมูลระดับ nanoseconds. ::select GETDATE() >> “2013-11-14 10:25:24.337” ::select SYSDATETIME() >> “2013-11-14 10:26:14.4002569” การเปรียบเทียบ DataTime data column จะมีปัญหาให้ปวดหัวทุกที่จะทำอย่างไร ถึงจะสะดวกและ Performance ดีที่สุด ตัวอย่างทางเลือกที่ผมใช้งานครับ Convert ให้เป็น INT ไปเลยครับ ดังตัวอย่างนี้ครับ cast(convert(char(8), d.DocCreateDate, 112) as int) between 20130601 and 20131031 GETDATE สามารบวก ลบ วันได้ ::select GETDATE() + 10 >> เป็นการดึงวันที่ปัจจุบันแล้วบวกไปอีก 10 วัน การประยุกษ์ เช่นต้องการหาข้อมูลที่วันเวลาปัจจุบันเป็นฐานการดึงข้อมูล เป็นการ Filter แบบ Dynamic Filter เช่น select Column between getdate() – 100 and getdate + 100

Read More »

ทำไม PSU Webmail ส่ง email ที่มีไฟล์แนบเป็น Microsoft Word ง่ายๆ ไปให้คนอื่น แล้วเขาไม่ได้รับ

วันนี้ มีผู้ใช้โทรศัพท์มาสอบถามปัญหา : ทำไมส่ง email ที่มีไฟล์แนบเป็น Microsoft Word ง่ายๆ ไปให้คนอื่น แล้วเขาไม่ได้รับ ตรวจสอบเบื้องต้น พบว่าส่งไม่ได้จริงๆ จึง เดินไปดูหน้างาน (คณะทันตะ) พบว่า ผู้ใช้ใช้ Firefox ในการใช้งาน PSU Webmail, เมื่อผู้ใช้ Compose จดหมายใหม่ แล้วเลือก Browse เพื่อเลือกไฟล์ นามสกุล .doc แล้วกดปุ่ม Add เพื่อแนบไฟล์ ก็จะได้ผลว่า ระบบมองเป็น text/xml ดังภาพ เป็นผลให้ ระบบกรอง email ทำงานผิดพลาด และไม่ยอมให้ส่ง ทดลองเปลี่ยนไฟล์ สร้างไฟล์ใหม่ ปิด Antivirus แล้ว ก็ยังเป็นเหมือนเดิม, เปลี่ยนไป Login ด้วย Account อื่นแล้ว ก็ยังเป็นเหมือนเดิม จึงทดลองส่ง email แบบไม่แนบไฟล์ ก็พบว่า ส่งได้ จากนั้น จึงเอาไฟล์เดียวกัน แต่ใช้งานผ่าน PSU Webmail ด้วย IE แล้วทำการแนบไฟล์แบบเดิม พบว่า ระบบมองเป็น application/msword ถูกต้อง ดังภาพ ลองทดสอบกับ Chrome แล้ว ก็ได้ผลถูกต้องเช่นกัน จึงน่าจะเป็นปัญหาอะไรสักอย่างของ Firefox จึงลองดูการตั้งค่าต่างๆ พบว่า ใน Firefox ที่เมนู Tools > Options > Application มีการตั้งค่า “เอกสาร Microsoft Word 97-2003” มีอยู่ 3 บรรทัด และบรรทัดสุดท้าย บอกว่า text/xml เปิดด้วย Use XML Editor อยู่ ซึ่งต่างกับการตั้งค่าใน IE ที่ใช้ Word อยู่ ดังภาพ วิธีการแก้ไข: จึงตั้งค่าดังกล่าวเป็น “Use Microsoft Word” เช่นกัน แล้วทดสอบใหม่ ปรากฏว่า ส่งได้ถูกต้อง แก้ปัญหาได้

Read More »

ทำไมเวลาที่ส่ง email ผ่าน PSU Webmail แล้วมันเพี้ยนจากเวลาจริง

วันนี้ มีผู้ใช้แจ้งว่า ส่ง email จาก PSU Webmail เมื่อเวลา 13:12:18แต่ พอเปิดใน INBOX.Sent พบว่า ส่งเมื่อเวลา  02:13:06 จึง เดินไปดูหน้างาน (คณะทันตะ)  ตรวจสอบเบื้องต้น พบว่า เวลาของเครื่อง ก็ตรง และถูกต้อง แต่ เวลาที่ปรากฏอยู่ด้านซ้ายมือ มันเป็นเวลา 02:22 am ดังภาพ  ทดลองส่ง email ถึงตัวเอง ก็พบว่า เป็นเวลา ตรงกับเวลาที่ปรากฏด้านซ้ายมือ ของ PSU Webmail แสดงว่า เป็นปัญหาที่การตั้งค่าของผู้ใช้  จึงไปที่เมนู Options > Personal Information จึงพบว่า Timezone Options ตั้งเป็น America/Boa_Vista ดังภาพ ซึ่งเป็นเวลา GMT -4 ส่วนของไทยเราควรจะเป็น Asia/Bangkok ซึ่งเป็น GMT +7 ซึ่ง เวลาห่างกัน = (|-4| + |7| ) = 11 ชั่วโมง ซึ่งก็ตรงกับสิ่งที่เกิดขึ้น คือ เวลา 13:00 ถอยหลังไป 11 ชั่วโมงก็คือ 02:00 นั่นเอง การแก้ไข ก็แค่แก้ Timezone เป็น Asia/Bangkok แล้วกดปุ่ม Submit เท่านี้ เวลาก็ตรงตามความเป็นจริงแล้ว

Read More »