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

จาก วิธีตรวจสอบเว็บไซต์ที่โดน Hack #7 : การตรวจสอบ Windows Server ที่ถูก Hack ด้วย PowerShell ซึ่งเป็นกระบวนการตรวจสอบ Windows Server ซึ่งโดนเจาะด้วยช่องโหว่ JCE ของ Joomla ก็มีคนถามว่า จะมีกระบวนการแก้ไขป้องกัน เหมือนกับที่ทำกับ Apache ซึ่งแสดงใน วิธีตรวจสอบเว็บไซต์ที่โดน Hack #12 : เทคนิคการตั้งค่า Apache Web Server เพื่อให้ปลอดภัยจากช่องโหว่ ตอนนี้มีคำตอบแล้วครับ เทคนิคนี้ ใช้ผ่าน Internet Information Services (IIS) Manager โดยการแก้ไข Request Filtering ในระดับ Web Server เลย โดยดำเนินการตามวิธีการต่อไปนี้ เรียก Command ด้วย การกดปุ่ม Windows + R แล้ว พิมพ์ inetmgr แล้วกดปุ่ม Enter คลิกเว็บเซิร์ฟเวอร์ของเครื่องที่ต้องการใน Connection Tab (ตัวอย่างในภาพ คลิกที่ WUNCAWEBSEC) ต่อไป ภายใต้หัวข้อ IIS ให้ Double-Click ที่ Request Filtering คลิกที่ Rules tab เพิ่มกฏสำหรับ JCE Bot ซึ่ง ไม่ต้องการให้ PHP ทำงานภายใต้ URL ซึ่งมีข้อความว่า “images/stories” โดย ไปที่ Action ด้านขวามือ แล้ว คลิกที่ Add Filtering Rules … แล้วใส่ข้อมูลตามภาพ แล้วคลิกปุ่ม OK เพิ่มกฏสำหรับ Upload โฟลเดอร์ ซึ่ง ไม่ต้องการให้ PHP ทำงานภายใต้ URL ซึ่งมีข้อความว่า “upload” โดย ไปที่ Action ด้านขวามือ แล้ว คลิกที่ Add Filtering Rules … แล้วใส่ข้อมูลตามภาพ แล้วคลิกปุ่ม OK ผลที่ได้ใน Rules tab ทดสอบผลการทำงาน สมมุติเดิมโดนวางไฟล์ Backdoor ไว้ที่ http://localhost/corin/images/stories/backdoor.php แต่เมื่อตั้ง Rules ดังกล่าวแล้ว จะทำให้ Hacker ไม่สามารถเรียกใช้งาน PHP ที่วางไว้ใน images/stories ได้ โดยจะได้ Error เช่นนี้ วิธีนี้มีข้อดีคือ สามารถป้องกันการใช้งาน PHP ใน images/stories (และใน upload โฟลเดอร์) แต่ยังสามารถเรียกไฟล์ภาพและไฟล์อื่นๆได้ตามปรกติ เช่น http://localhost/corin/images/stories/clownspin.gif ลองใช้งานดูครับ 😉

Read More »

ความเข้าใจในการสร้าง virtualhost ของ apache2 web server บน ubuntu 14.04 server ฉบับ workshop

ถ่ายทอดความเข้าใจในการสร้าง virtualhost ของ apache2 web server บน ubuntu 14.04 server ฉบับ workshop พร้อมตัวอย่างติดตั้ง phpmyadmin และ joomla site เป็น virtualhost -:เกรินนำ:- การเปลี่ยนจาก ubuntu 12.04 server ไปเป็น ubuntu 14.04 server เมื่อเร็วๆนี้ ส่งผลให้มีการเปลี่ยนแปลงวิธีการ config virtualhost บน Apache2 web server เพราะว่า Apache2 web server (2.4.x ขึ้นไป) เช่น 2.4.7 ที่มาพร้อม ubuntu 14.04 server จะมีการจัดการเรื่อง Document root ที่แตกต่างจากเวอร์ชั่นที่ต่ำกว่า เช่น Document root จะอยู่ที่ /var/www/html แทนที่จะเป็น /var/www เหมือนเดิม ดังนั้นเมื่อทำ virtualhost จึงต้องมีการเลือกวางไดเรกทอรีของเว็บเพจที่จะติดตั้ง ตามความคิดเห็นของผมคิดว่าสามารถเลือกวางได้เป็น 2 แบบ แบบที่ 1 วางไว้ที่ /var/www/html/ หรือ แบบที่ 2 วางไว้ที่ /var/www/ มาดูกันครับว่าจะต้องทำอย่างไรบ้าง เริ่มต้นที่หลังจากติดตั้ง ubuntu 14.04 server เสร็จ พร้อมทั้งได้ติดตั้ง packages LAMP หากไม่แน่ใจก็ตรวจสอบ/ติดตั้งเพิ่มด้วยคำสั่ง sudo tasksel ในบทความนี้มีการอ้างถึง editor ที่ใช้แก้ไขไฟล์ชื่อ vi (ผู้เขียนถนัดและชอบ) หากไม่คุ้นเคยวิธีใช้ก็ให้เปลี่ยนเป็น editor ชื่อ nano ซึ่งจะเป็น full screen editor หากต้องการทดสอบทำตามไปด้วย ให้ดาวน์โหลด LSA-router.ova จาก http://ftp.psu.ac.th/pub/psulab/LSA-II/ แล้วนำไป import เข้าโปรแกรม Oracle VM VirtualBox จากนั้น Start VM LSA-router (IP ที่ใช้คือ 10.0.100.1 เป็นทั้ง NAT router, DNS server และ DHCP server) แล้วก็สร้าง New VM ขึ้นมา 1 ตัว โดยตั้งค่า Network เป็นแบบ Internal network และมีค่า name คือ intnet พร้อมทั้งติดตั้ง Ubuntu 14.04 server ให้เสร็จ โดยตั้งค่า IP 10.0.100.9 1.แบบใช้ NameVirtualHost -:การตรวจสอบความพร้อมของ apache2 web server:- เข้าไปที่ไดเรกทอรี mama@ubuntu:$ cd /var/www/html/ เริ่มต้น apache2 web server จะมีไฟล์ index.html มาให้ mama@ubuntu:/var/www/html$ ls index.html ทดสอบด้วยคำสั่ง w3m ได้ mama@ubuntu:/var/www/html$ w3m http://127.0.0.1 เห็นหน้าเว็บเพจ default แสดงข้อความ Apache2 Ubuntu Default Page It work! กด Ctrl+c เลิกดู ลองสร้างไฟล์ test.php mama@ubuntu:/var/www/html$ sudo vi test.php เพิ่มบรรทัด 1 บรรทัด <?php phpinfo() ?> ผลลัพธ์จะมีไฟล์เพิ่มขึ้น

Read More »

วิธีตั้งค่า Apache web server 2.4.x แตกต่างจาก 2.2.x

เก็บตกจากวันวานเปิดอบรม Workshop Linux System Administration II (WS-LSA2) ที่ศูนย์คอมฯ 2 วัน ผมเตรียมเอกสาร workshop วิธีตั้งค่าหลายๆเรื่องบน ubuntu 12.04 แต่พอดีกับที่ ubuntu 14.04 ออกมาแล้ว จึงนำ ubuntu 14.04 มาให้ผู้เรียนใช้ติดตั้ง มันก็ไม่มีอะไรแตกต่างไปจาก ubuntu 12.04 ตั้งแต่เริ่มต้น installation จนกระทั่งมาถึงเรื่องที่เราจะตั้งค่าเกี่ยวกับ Apache web server ซึ่งทำให้ต้องแก้ไขเอกสารประกอบการสอนกันสดๆตอนนั้นเลย (ฮา) เพราะว่า Apache Web Server ที่อยู่ในแผ่น ubuntu 14.04 นั้นเป็นเวอร์ชั่น 2.4.7 ซึ่งมี Default Document Root อยู่ที่ /var/www/html ต่างจาก Apache Web Server เวอร์ชั่นก่อนหน้านี้ (2.2.x) ที่มี Default Document Root อยู่ที่ /var/www เป็นต้น พอจะสรุปได้ดังนี้ Apache Web Server 2.2.x ทำแบบนี้ 1.พื้นที่ default ของ Apache Web Server คือไดเรกทอรี /var/www หากจะติดตั้ง Joomla CMS เราจะเตรียมพื้นที่สำหรับติดตั้ง joomla ไว้ที่ไดเรกทอรี /var/www/testjoomla ด้วยคำสั่ง sudo mkdir -p /var/www/testjoomla 2.website config file จะอยู่ที่ไดเรกทอรี /etc/apache2/sites-available จะมีไฟล์ชื่อ default และ default-ssl มาให้ และหากจะสร้าง VirtualHost pma.example.com เราก็สร้าง config file ที่มีชื่อไฟล์อย่างไรก็ได้ เช่น /etc/apache2/sites-available/pma หลังจากนั้นเราก็ enable VirtualHost นี้ จาก config ที่เราสร้างขึ้นใหม่ โดยการใช้คำสั่ง sudo a2ensite pma แล้วก็สั่ง restart apache 3.เมื่อเข้าไปดูในไฟล์ default DocumentRoot จะอยู่ที่ /var/www 4.Apache2 config file จะอยู่ที่ /etc/apache2/conf.d สมมติว่าต้องการเพิ่มการป้องกัน joomla web server ด้วย config file ชื่อ jce จะต้องทำดังนี้ สร้างไฟล์ที่จะมีชื่ออย่างไรก็ได้ เช่น /etc/apache2/conf.d/jce แค่นี้ก็ได้แล้ว แล้วก็สั่ง restart apache และเมื่อจะไม่ใช้ config file jce นี้แล้ว ก็แค่ลบไฟล์นี้ทิ้ง แต่สำหรับ Apache Web Server 2.4.x วิธีการจะแตกต่างไป ดังนี้ 1.พื้นที่ default ของ Apache Web Server คือไดเรกทอรี /var/www/html หากจะติดตั้ง Joomla CMS เราจะต้องเตรียมพื้นที่สำหรับติดตั้ง joomla ไว้ที่ไดเรกทอรี /var/www/html/testjoomla ด้วยคำสั่ง sudo mkdir -p /var/www/html/testjoomla 2.website config file จะอยู่ที่ไดเรกทอรี /etc/apache2/sites-available จะมีไฟล์ชื่อ 000-default และ default-ssl มาให้ (ต่างจาก 2.2.x) และหากจะสร้าง VirtualHost pma.example.com เราก็ต้องสร้าง config file ที่มี

Read More »

วิธีการตั้งค่า CNAME และ TXT เพื่อ Verification กับ Google Site

Google Site เป็บบริการหนึ่งของ Google ซึ่งให้เราสร้างเว็บไซต์ได้อย่างง่ายๆ เหมาะสำหรับการงานที่ต้องการความรวดเร็วในการสร้าง และสามารถประสานกับเครื่องมือต่างๆของ Google ได้มากมาย เช่น จะสร้างแบบฟอร์มรับสมัครเข้าร่วมโครงการ, ทำรายงานผู้ที่ชำระเงินแล้ว, ผนวกกับ Google Map เพื่อแสดงตำแหน่งที่จัดงาน และสถานที่ท่องเที่ยว หรือ อื่นๆอีกมากมาย (วิธีการสร้าง จะกล่าวในบทความต่อๆไป)  ในบทความนี้ เป็นการสร้าง เว็บไซต์ของงาน ประชุมสภาข้าราชการ พนักงานและลูกจ้างแห่งประเทศ (ปขมท) ๒๕๕๗ และเน้นที่ การเชื่อม Domain Name ของมหาวิทยาลัย ซึ่งใช้ Bind DNS เข้ากับ Google Site โดย Google Site ที่แสดงในตัวอย่าง สร้างที่ https://sites.google.com/site/cuast57/ ซึ่ง ชื่อจะจำได้ยาก จึงขอใช้ Domain Name สั้นๆชื่อ cuast57.psu.ac.th วิธีการมีดังนี้ 1. ไปที่ Setting > Manage Site 2. คลิกที่ Web Address แล้วใส่ cuast57.psu.ac.th จากนั้นคลิกปุ่ม Add 3. จะขึ้น error ด้านบน “You have not verfified domain ownership with Google. please follow these instructions” ให้คลิกที่ “these instructions”  4. เลื่อนลงไปล่าสุดของหน้าจอ คลิกที่ “Webmaster Tools home page” (สมมุติว่าท่านเคยใช้งาน Google Webmaster Tools อยู่แล้ว) 5. คลิกที่ Add A Site ให้ใส่ Domain Name ที่ต้องการ ในที่นี้คือ cuast57.psu.ac.th แล้วคลิก Continue 6. คลิกที่ Alternate Methods > Domain name provider แล้วเลือก อันล่างสุด คือ other เพราะ Google Site ไม่เปิดให้เรา Upload File ขึ้นไป, ไม่สามารถแก้ไข Header หรืออะไรทำนองนั้นได้ จึงต้องใช้วิธีการนี้ ซึ่งจะต้องอธิบายตรงนี้เพื่อความเข้าใจ  ในการที่เราคุม Domain Name แต่ใช้ Google Site นั้น สิ่งที่ต้องทำคือ สร้าง CNAME ไปยัง Google Site และ ทำการ Verification 6.1 สร้าง CNAME ไปยัง ghs.googlehosted.com. เพื่อบอกว่า cuast57.psu.ac.th จะใช้บริการของ Google Site 6.2 ต้องทำการ Verification โดยสามารถทำได้ 2 วิธีคือ 1) ถ้าเราได้ Delegate Zone มา ก็จะสามารถใส่ TXT Record ลงไปได้ โดยใช้ค่าดังภาพ  2) แต่ถ้าเราไม่ได้ Delegate Zone ก็จะต้องสร้าง CNAME ให้คลิกที่ “Add a CNAME record” ดังภาพ ให้เลือกวิธีการเอา แต่ในตัวอย่างนี้ เลือกวิธีการ 2) เพราะไม่ Delegate Zone มา และไปทำข้อ 7. ก่อน แล้วจึงกลับมาคลิกปุ่ม Verify

Read More »

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

บทความนี้ จะกล่าวถึง วิธีการปิดช่องโหว่ของ Apache ที่ให้บริการ Web Hosting เลย เผื่อมีผู้ใช้ ติดตั้ง Joomla และมี JCE รุ่นที่มีช่องโหว่ จะได้ไม่สร้างปัญหา และ แนะนำวิธีสำหรับผู้พัฒนาเวปไซต์เองด้วย ที่เปิดให้มีการ Upload ไฟล์โดยผู้ใช้ผ่านทาง Web ด้วย … เพราะหน้าที่นี้ ควรเป็นของ Web Server Administrator ไม่ใช่ของ Web Master หรือ Web Author ครับ จากปัญหาช่องโหว่ของ JCE Exploited ของ Joomla ที่อธิบายไว้ใน วิธีตรวจสอบเว็บไซต์ที่โดน Hack #3 ที่อธิบายขั้นตอนการเจาะช่องโหว่, วิธีตรวจสอบเว็บไซต์ที่โดน Hack #4 ซึ่งเป็นวิธีการตรวจสอบค้นหา และทำลาย Backdoor และ วิธีตรวจสอบเว็บไซต์ที่โดน Hack #11  วิธีการ Incremental Backup ซึ่งสามารถช่วยกู้ไฟล์ได้และรู้ว่า มีไฟล์แปลกปลอมอะไรเกิดบ้าง ซึ่งเป็นการแก้ปัญหาปลายเหตุทั้งสิ้น ส่วน วิธีตรวจสอบเว็บไซต์ที่โดน Hack #5 กล่าวถึงการตรวจสอบว่า Software ที่ใช้งานอยู่มีช่องโหว่อะไรบ้าง ด้วยการตรวจสอบ CVE เป็นต้น สำหรับ JCE Exploited จะพบว่า การวางไฟล์ Backdoor จะเริ่มวางไว้ที่ไดเรคทอรี่ images/stories ที่ แกล้งเป็นไฟล์ .gif แล้วเอาโค๊ด PHP เข้ามาใส่ แล้วเปลี่ยนนามสกุลเป็น .php ภายหลัง ดังนั้น หาก Apache Web Server สามารถ ปิดกั้นตั้งแต่จุดนี้ได้ กล่าวคือ ต่อให้เอาไฟล์มาวางได้ แต่สั่งให้ทำงานไม่ได้ ก็น่าจะปลอดภัย และ หากพัฒนาเวปไซต์เอง หรือ ผู้ใช้ของระบบต้องการให้ Upload ไฟล์ไว้ในไดเรคทอรี่ใดได้ ก็ต้องแจ้งให้ Web Server Administrator รับทราบ และเพิ่มเติมให้ น่าจะทำให้ปลอดภัยมากขึ้นได้ สมมุติฐานคือ ติดตั้ง OS และ Apache Web Server ใหม่ ติดตั้ง Joomla ใหม่ หรือ เอา Web Application ที่ปลอดช่องโหว่อื่นๆ/Backdoor มาลง โดย Joomla ที่มีที่วางไฟล์ภาพไว้ที่ images/stories ส่วน Web Application อื่นๆ ขอสมมุติว่าตั้งชื่อไดเรคทอรี่ว่า uploads สำหรับ Apache2 บน Ubuntu Apache 2.2 นั้น มีโครงสร้างไดเรคทอรี่ดังนี้ /etc/apache2/ |– apache2.conf |       `–  ports.conf |– mods-enabled |       |– *.load |       `– *.conf |– conf.d |       `– * |– sites-enabled         `– * เมื่อ Apache เริ่ม (Start) ก็จะไปอ่าน /etc/apache2/apache2.conf ในนั้น จะกำหนดภาพรวมของระบบ ได้แก่ ใครเป็นคน Start (APACHE_RUN_USER/APACHE_RUN_GROUP), การกำหนดชื่อไฟล์ .htaccess ที่เปิดให้ผู้ใช้ปรับแต่ง Apache ที่แต่ละไดเรคทอรี่ของตนได้, กำหนดว่า จะเรียกใช้ Module อะไรบ้าง โดยการ Include *.load, *.conf

Read More »