PHP ในปัจจุบันเป็นกระดูกสันหลังของเกือบทุก CMS ยอดนิยม ด้วยความเรียบง่ายและลักษณะ No License PHP เป็นตัวเลือกแรกสำหรับพัฒนาเว็บไซต์ไดนามิก อย่างไรก็ตาม เนื่องจากมาตรฐานการเขียนโค้ดที่แย่ ทำให้การเจาะเว็บไซต์ PHP กลายเป็นเรื่องง่ายขึ้น อินเทอร์เน็ตเต็มไปด้วยเธรดช่วยเหลือที่ผู้ใช้ร้องเรียนเรื่อง Custom PHP Website Hacked หรือ PHP Website Redirect Hack นำไปสู่ Publicity ที่เป็นลบสำหรับ PHP เอง ซึ่ง PHP ไม่ควรถูกBlame
ดังนั้น หาก PHP ไม่ได้รับ Blame สาเหตุของ PHP Website Redirect Hack คืออะไร? บทความนี้อธิบายช่องโหว่ความปลอดภัยที่ทำให้เว็บไซต์ PHP ถูกเจาะและวิธีป้องกัน
Custom PHP Website Hacked: ตัวอย่าง
เจ้าของเว็บส่วนใหญ่โฟกัสแค่ Development ไม่ใช่ Security ดังนั้นเมื่อเว็บ PHP ถูกแฮ็ก เจ้าของไม่มีที่ไหนไป เพราะจ้าง Developer แค่ Development ผู้ใช้ที่มีปัญหาหา Help ได้จาก Forums และอ่านบทความแบบนี้ นี่คือตัวอย่าง:
Custom PHP Website Hacked: อาการ
- Phishing Pages ปรากฏบนเว็บ PHP พยายามหลอก User ใส่ข้อมูลละเอียดอ่อน
- User คลิกลิงก์บนเว็บ จบอยู่โดเมนอื่น อาจจาก Misconfiguration หรือ PHP Website Redirect Hack
- Adblockers ติดป้ายและบล็อก Elements บางอย่างบนเว็บสำหรับ Crypto Mining
- Unknown PHP File Managers ปรากฏบนเว็บ และเว็บ PHP แสดง Malicious Ads
- PHP Files ถูกแก้ไขด้วยโค้ดไม่รู้จัก ก่อให้เกิด Redirects หรือสร้าง Backlinks สำหรับ Phishing Sites
- Gibberish Content ปรากฏบน Custom PHP Website อาจจาก Japanese Keyword Hack หรือ Pharma Hack ฯลฯ
- Account Suspension Warning ปรากฏขณะใช้ Third-party Hosting สำหรับ Custom PHP Sites
- Custom PHP Site แสดง Warning ถูก Blacklist โดย Google และ Search Engines อื่นๆ สำหรับ Malware Spam ฯลฯ
- phpMyAdmin แสดง Database Admins ใหม่และไม่รู้จัก
- Email ที่ส่งจาก Domain ของ Custom PHP Site ถูกติดป้าย Spam
- Unexpected Error Messages บนเว็บ และเว็บ PHP ช้าลงและไม่ตอบสนอง
Custom PHP Website Hacked: 13 เหตุผล
Server Configuration Errors
1. Weak File Permissions
File Permission ให้สิทธิ์แก้ไขไฟล์ PHP เฉพาะ User ประเภทหนึ่ง หาก File Permissions ไม่ถูกต้อง อาจอนุญาตให้โจมตีฉีดไฟล์ PHP ด้วย Malware Spam ฯลฯ
2. Default Passwords
การใช้รหัสผ่านอ่อนแอหรือใช้บ่อยเป็นสาเหตุทั่วไปของ Custom PHP Website Hacked Custom Dictionary ใช้ลองทุก Combination ของ Password หนึ่งครั้ง Compromised ตาม Attack Vector คือ FTP Brute Force หรือ cPanel Brute Force โจมตีเข้าถึง Admin Area ของ Custom PHP Site โจมตีอาจ Upload PHP Malware หรือ Backdoor
บทความเกี่ยวข้อง – วิธีลบ WordPress Backdoor?
3. Directory Indexing เปิดอยู่
Directory Indexing ที่เปิดอยู่ อนุญาตให้โจมตีอ่าน Sensitive PHP Files ได้ อาจเปิดเผยข้อมูล Server ให้โจมตี โจมตีใช้ข้อมูลนี้โจมตี Cyber Attacks บน Custom PHP Site
4. Open Ports
Open Ports อาจทำให้ Custom PHP Website Hacked ได้ อีกทั้ง Open Ports ใช้ Fingerprint Backend Services ของ PHP Site ด้วยข้อมูลนี้ โจมตีอาจเจาะ Core Services หรือ Open Ports เองด้วย Exploits
5. Poor Hosting
โดยทั่วไป Cheap PHP Hosting มาพร้อมราคาความปลอดภัยที่สูง Poor Hosting ตัด Security Operations ลดลงเพื่อทำให้บริการถูกกว่า ดังนั้นเมื่อ Infection เริ่มแพร่บน Server เหล่านี้ อาจเจาะหลายเว็บ รวมถึง PHP Site ของคุณ แม้ไม่ได้ถูก Target โดยตรง
Vulnerable PHP Code
6. PHP SQL Injection
PHP SQL Injection เกิดจากขาด Unsanitized User Input เนื่องจาก Coding Standards แย่ Unsanitized Input เข้าถึง Database Server โดยตรงและรัน สาเหตุหลัก SQLi ใน Custom PHP Pages:
- ขาด Filtering สำหรับ Whitespace Characters
- ใช้ Quotes Delimit Strings
- ส่ง Unauthorized User Input ไป Database
- Unicode Encoding Implementation ผิด
- Inter-mixing Code กับ Data
- Improper Type Manipulation
7. PHP Cross-Site Scripting
XSS เป็นสาเหตุถี่อันดับสองของ Custom PHP Sites Hacked หลัง SQL Injection ทั้งสองการโจมตีแพร่หลายบนเว็บ จนอยู่ใน OWASP Top 10 ทุกปี XSS ก็เกิดจากขาด User Input Sanitization ใน PHP Sites และโดยทั่วไป XSS Attacks หลัก 3 ประเภท:
- Stored XSS: พึ่งพา Web Admin คลิกลิงก์เฉพาะ โหลด Malicious Script ขโมย Cookies
- Reflected XSS: ดีเย็นพอสมควร พบใน PHP Sites ที่มี Forums, Discussions ฯลฯ Malicious Code ของ XSS นี้ Stored บน Server และรันทุกครั้งที่ User เยี่ยมชม PHP Page นั้น
- DOM-based XSS: อาจเป็นหนึ่งในสองข้างต้น แต่ Detection ยาก และอาจหลบพ้นหลัง Code Audit
Sites ที่อ่อนต่อ XSS มักเป็นเป้าหมาย PHP Website Redirect Hack หรือขโมย Admin Cookies
8. PHP Cross-Site Request Forgery
CSRF Attacks ทำให้ User ของ PHP Site ทำ Unwanted Actions หาก PHP Sites อนุญาต Registrations CSRF อาจให้ User ลบ Random Accounts หรือ Actions อื่นๆ แม้ Implications ของ Actions ไม่มองเห็นโดยโจมตีโดยตรง CSRF ลบ User จาก PHP Sites ลด Traffic
9. PHP Local File Inclusion
File Inclusion Vulnerability เกิดเมื่อโจมตีเข้าถึงไฟล์นอก Root Directory "www" สาเหตุหลักคือ Poorly Coded Scripts ที่รับ Filenames เป็น Parameters ช่องโหว่นี้ให้โจมตีอ่าน Config Files และ Password Files สensitive ของ Custom PHP Site ข้อมูลจากไฟล์เหล่านี้ใช้ Login ด้วย Admin Rights นำไปสู่ PHP Website Hacked
PHP Zero-Day Vulnerabilities
10. Buggy Plugins หรือ Themes
Buggy Plugins หรือ Themes ใน PHP เป็น Vulnerabilities อยู่บน Server รอถูก Exploit เคยมีกรณีโจมตี Target Buggy Plugins สำหรับ Mass Attacks บน PHP Sites หาก PHP Website ของคุณถูกแฮ็ก น่าจะมาจาก Plugin หรือ Theme ที่เขียนโค้ดแย่
11. Compromised PHP Package
เป็นไปได้ว่า PHP Libraries และ Packages รู้สึกอ่อนแอ เหตุการณ์เดียวกันอาจเกิดกับภาษาอื่น ไม่กี่วันมา PHP Package Manager PEAR ถูกเจาะโดยโจมตี โจมตีแทนที่ Original ด้วย Injected Code ที่ดาวน์โหลดโดยผู้ใช้ที่ไม่วิตกกังวล Package นี้ใช้โดยพวกเขาบน Sites สำหรับค้นหาและดาวน์โหลด Free Libraries ที่เขียนใน PHP 雖然這些情況很少見,但不能完全忽视因零日漏洞导致的自定义PHP网站被黑客入侵的可能性。
Social Engineering Attacks
12. Phishing
Admin ของ Custom PHP Site ได้รับอีเมลจาก Nigerian Prince ล่าสุดไหม? การโจมตีแบบนี้ออกแบบมาเพื่อหลอก Web Admins เปิดเผย Sensitive Info ของ PHP Site นำไปสู่ PHP Website Hacked ดังนั้น กรอง Phishing Emails ให้เข้าสู่ Domain ของ PHP Site!
13. Tailgating
Tailgating เป็นอีก Variant ของ Phishing Attacks ในการโจมตีนี้ โจมตีเจาะ Low-level User Account ก่อน แล้วใช้เพื่อเพิ่ม Privileges Tailgating ถูกสังเกตใน Case Study ของเรา และใช้หลบ Detection บ่อย ผลกระทบอาจจากขโมยข้อมูลจนถึง PHP Site Hacked
Custom PHP Website Hacked? ส่งข้อความใน Chat Widget เราช่วยซ่อม PHP Website ที่โดนแฮ็ก
Custom PHP Website Hacked: การรักษาความปลอดภัยเว็บไซต์
ตั้งค่า Permissions ให้ถูกต้อง
PHP มี 3 ฟังก์ชันตรวจสอบ File Permissions:
- is_readable (): Return true หาก User อนุญาตอ่าน PHP File
- is_writable (): Return true หาก User อนุญาตเขียน PHP File
- is_executable (): Return true หาก User อนุญาต Execute PHP File
เช่นเดียวกัน ฟังก์ชัน chmod() ของ PHP ใช้เปลี่ยน File Permissions ใส่ Filename กับ Permission เช่น "chmod($RandomFile, 0644);" ในภาพด้านล่าง มีรายการ File Permissions ครบและฟังก์ชัน เพิ่ม "0" นำหน้า Permission เพื่อบอก PHP Interpreter ว่า Input เป็น Octal
ตั้งค่า Secure Password
ให้แน่ใจ Password สำหรับ Custom PHP Site ของคุณปลอดภัย ผสม Numbers, Alphabets, Symbols นอกจากนี้ ก่อนตั้ง Password แนะนำตรวจ Popular Password Dictionaries เช่น Rockyou.txt ว่า Password ที่ตั้งไม่อยู่ในนั้น Linux Users ใช้ Grep Command ค้นหาในไฟล์ใหญ่ grep -i '* YourNewpass *' rockyou.txt นอกจากนี้ Online Tools อื่นๆ ใช้ได้ Random Secure Long Password
ปิด Directory Indexing
เพื่อปิด Indexing ใน Directory เฉพาะ เพิ่มโค้ดนี้ใน .htaccess (หากไม่มี .htaccess ให้สร้าง):
Options -Indexes
ใช้ Secure Hosting
โดยทั่วไปขณะหา Hosting Service ให้แน่ใจว่ามี Firewall หรือ Security Solution เช่น Astra กับ Integrated Hosting Partners นอกจากนี้ ให้แน่ใจว่า Subnet Isolate เว็บไซต์ของคุณจากเว็บอื่นบน Server เดียวกัน
PHP Code Audit
เมื่อ Custom PHP Site สร้างเสร็จ สร้างใหม่จากศูนย์ไม่คุ้มค่าทางเศรษฐกิจ ดังนั้น Code Audit คือวิธีดีที่สุดตรวจจับ PHP Vulnerabilities ก่อนโจมตี Astra มี Hacker Community ใหญ่ Audit และ Penetration Test ความปลอดภัยเว็บไซต์ของคุณ ไม่แค่ Code Audit Astra ช่วย Cleanup หาก PHP Website Hacked
ลอง Astra Demo ตอนนี้!