10 วิธี เจาะระบบ Web Application Hacking ของ Hacker
239
10 วิธี เจาะระบบ Web Application Hacking ของ Hacker
10 วิธี เจาะระบบ Web Application Hacking ของ Hacker
ทุกวันนี้ คงไม่มีบริษัทใดที่ไม่มี Website เป็นของตัวเอง บางบริษัทอาจจะเช่า Web Hosting อยู่ หรือ บางบริษัทอาจมี Web Site เป็นของตนเองอยู่ในระบบเครือข่ายของบริษัท โดยมีการต่อเชื่อมเครือข่ายของบริษัทด้วย Frame Relay, ADSL หรือ Leased Line เข้ากับระบบเครือข่ายของ ISP ซึ่งส่วนใหญ่ก็จะมีการจัดซื้อ Firewall มาใช้ป้องกันระบบเครือข่ายภายในของบริษัท กับ ระบบอินเทอร์เน็ตจาก ISP และ มีการเปิดให้คนภายนอกสามารถเข้ามาเยี่ยมชม Web Site ได้ โดยเปิด Port TCP 80 (http) และ Port TCP 443 (https) ในกรณีที่ใช้โปรโตคอล SSL ในการเข้ารหัสข้อมูลเพื่อเพิ่มความปลอดภัยมากยิ่งขึ้น ปัญหาก็คือ ในเมื่อทุกบริษัทต้องเปิดทางให้มีการเข้าชม Web Site ทั้งแบบ Plain text traffic (Port 80) และแบบ Encrypted text traffic (port 443) ทำให้แฮกเกอร์สามารถจู่โจม Web Site ของเราโดยไม่ต้องเจาะผ่าน Firewall เนื่องจากเป็น Port ที่ Firewall มีความจำเป็นต้องเปิดใช้อยู่แล้ว ในโลกของ E-Commerce มีอัตราการใช้งาน Web Server ที่เพิ่มขึ้นทุกวัน (ดูข้อมูลจากwww.netcraft.com) และ จากข้อมูลของ UNCTAD (http://www.unctad.org) พบว่า Web Server ทั่วโลก มีทั้งแบบที่เข้ารหัสด้วย SSL แล้ว และ แบบไม่เข้ารหัสด้วย SSL ก็ยังคงมีใช้กันอยู่ ในเมื่อแฮกเกอร์มองเห็นช่องที่เรามีความจำเป็นต้องเปิดใช้งานผ่านทาง Web Server และ Web Application แฮกเกอร์ในปัจจุบันจึงใช้วิธีที่เรียกว่า ?Web Application Hacking? ในการเจาะเข้าสู่ระบบขององค์กรต่างๆ ทั่วโลก ขณะนี้มีการจู่โจมระบบโดยกลุ่มแฮกเกอร์ที่ต้องการทำสถิติ ในการเจาะ Web Site ดูรายละเอียดได้ที่ http://www.zone-h.org ดังนั้น ผู้ที่มี Web Site อยู่ และ โดยเฉพาะผู้ที่ต้องการหันมาทำธุรกิจในลักษณะของ E-commerce ซึ่งต้องมี Web Site ที่ใช้ Web server ที่เชื่อถือได้ และมีการเขียน Web application โดยคำนึงถึงเรื่อง ?Security? เป็นหลัก จึงมีความจำเป็นอย่างยิ่งที่ต้องเรียนรู้ช่องโหว่ (Vulnerability) ของ Web application ที่แฮกเกอร์ชอบใช้ในการเจาะระบบ Web application ของเราซึ่งรวบรวมได้ทั้งหมด 10 วิธีด้วยกัน (Top 10 Web Application Hacking) ตลอดจนเรียนรู้วิธีการป้องกันที่ถูกต้อง เพื่อที่จะไม่ให้ตกเป็นเหยื่อของเหล่าแฮกเกอร์ที่จ้องคอยเจาะระบบเราอยู่ ผ่านทาง Web Site ที่ยังไงเราก็ต้องเปิดให้เข้าถึง และ ยังมี Virus Worm ตัวใหม่ๆ ที่เขียนขึ้นเพื่อจู่โจม Port 80 (HTTP)และ Port 443 (SSL) โดยเฉพาะอีกด้วย รายละเอียดของ Top 10 Web Application Hacking มี 10 วิธี ดังนี้
1.Unvalidated Input
หมาย ถึง การที่ข้อมูลจากฝั่ง client ที่ส่วนใหญ่แล้ว จะมาจาก Internet Explorer (IE) Browser ไม่ได้รับการตรวจสอบก่อนถูกส่งมาประมวลผลโดย Web Application ที่ทำงานอยู่บน Web Server ทำให้แฮกเกอร์สามารถดักแก้ไขข้อมูลในฝั่ง clientก่อน ที่จะถูกส่งมา ยังฝั่ง server โดยใช้โปรแกรมที่สามารถดักข้อมูลได้ เช่น โปรแกรม Achilles เป็นต้น ดังนั้น ถ้าเรารับข้อมูลจากฝั่ง client โดยไม่ระมัดระวัง หรือ คิดว่าเป็นข้อมูลที่เราเป็นคนกำหนดเอง เช่น เทคนิคการใช้ Hidden Field หรือ Form Field ตลอดจนใช้ข้อมูลจาก Cookies เราอาจจะโดนแฮกเกอร์แก้ไขข้อมูลฝั่ง client ด้วย โปรแกรมดังกล่าวแล้วส่งกลับมาฝั่ง server ในรูปแบบที่แฮกเกอร์ต้องการ และมีผลกระทบกับการทำงานของ Web Application ในฝั่ง web server
วิธีการป้องกัน เรา ควรจะตรวจสอบข้อมูลที่รับมาจากทั้ง 2 ฝั่ง คือ ข้อมูลที่รับมาจาก client ผ่านทาง Browser และข้อมูลที่รับมาประมวลผลที่ web server โดยตรวจสอบที่ web server อีกครั้งก่อนนำไปประมวลผลด้วย Web application เราควรมีการฝึกอบรม Web Programmer ของเราให้ระมัดระวังในการรับ input จากฝั่ง client ตลอดจนมีการ Review Source code ไม่ว่าจะเขียนด้วย ASP, PHP หรือ JSP Script ก่อนที่จะนำไปใช้งานในระบบจริง ถ้ามีงบประมาณด้านรักษาความปลอดภัย ก็แนะนำให้ใช้ application level firewall หรือ Host-Based IDS/IPS ที่สามารถมองเห็น Malicious content และป้องกันในระดับ application layer
2. Broken Access Control
หมาย ถึง มีการป้องกันระบบไม่ดีพอเกี่ยวกับการกำหนดสิทธิของผู้ใช้ (Permission) ที่สามารถจะ Log-in /Log-on เข้าระบบ Web application ได้ ซึ่งผลที่ตามมาก็คือ ผู้ที่ไม่มีสิทธิเข้าระบบ (Unauthorized User) สามารถเข้าถึงข้อมูลที่เราต้องการป้องกันไว้ไม่ให้ Unauthorized User เข้ามาดูได้ เช่น เข้ามาดูไฟล์ข้อมูลบัตรเครดิตลูกค้าที่เก็บอยู่ใน Web Server หรือ เข้าถึงไฟล์ข้อมูลในลักษณะ ฏDirectory Browsing โดยเห็นไฟล์ทั้งหมดที่อยู่ใน web Server ของเรา ปัญหานี้เกิดจากการกำหนด File Permission ไม่ดีพอ และ อาจเกิดจากปัญหาที่เรียกว่า "Path Traversal" หมายถึง แฮกเกอร์จะลองสุ่มพิมพ์ path หรือ sub directory ลงไปในช่อง URL เช่น http://www.abc.com/../../customer.mdb เป็นต้น นอกจากนี้อาจเกิดจากปัญหาการ cache ข้อมูลในฝั่ง client ทำให้ข้อมูลที่ค้างอยู่ cache ถูกแฮกเกอร์เรียกกลับมาดูใหม่ได้ โดยไม่ต้อง Log-in เข้าระบบก่อน
วิธีการป้องกัน พยายามอย่าใช้ User ID ที่ง่ายเกินไป และ Default User ID ที่ง่ายต่อการเดา โดยเฉพาะ User ID ที่เป็นค่า default ควรลบทิ้งให้หมด สำหรับปัญหา Directory Browsing หรือ Path Traversal นั้น ควรมีการ set file system permission ให้รัดกุม เพื่อป้องกัน ช่องโหว่ที่อาจถูกโจมตี และ ปิด file permission ใน sub directory ต่างๆ ที่ไม่ได้ใช้ และ ไม่มีความจำเป็นต้องให้คนภายนอกเข้า เพื่อป้องกันแฮกเกอร์สุ่มพิมพ์ path เข้ามาดึงข้อมูลได้ และควรมีการตรวจสอบ Web Server log file และ IDS/IPS log file เป็นระยะๆ ว่ามี Intrusion หรือ Error แปลกๆ หรือไม่
7. Improper Error Handling หมายถึง มีการจัดการกับ Error message ไม่ดีพอ เวลาที่มีผู้ใช้ Web Application หรืออาจจะเป็นแฮกเกอร์ลองพิมพ์ Bad HTTP Request เข้ามาแต่ Web Server หรือ Web Application ของเราไม่มีข้อมูล จึงแสดง Error message ออกมาทางหน้า Browser ซึ่งข้อมูลที่แสดงออกมาทำให้แฮกเกอร์สามารถใช้เป็นประโยชน์ ในการนำไปเดาเพื่อหาข้อมูลเพิ่มเติมจากระบบ Web Application ของเราได้ เนื่องจากเมื่อการทำงานของ Web application หลุดไปจากปกติ ระบบมักจะแสดงค่า Error Message ออกมาแสดงถึงชื่อ user ที่ใช้ในการเข้าถึงฐานข้อมูล, แสดง File System Path หรือ Sub Directory Name ที่ชี้ไปยังไฟล์ฐานข้อมูล ตลอดจนทำให้แฮกเกอร์รู้ว่าเราใช้ระบบอะไรเป็นฐานข้อมูลเช่น ใช้ MySQL เป็นต้น
9. Denial of Service หมาย ถึงระบบ Web Application หรือ Web Server ของเรา อาจหยุดทำงานได้เมื่อเจอกับ Bad HTTP Request แปลกๆ หรือ มีการเรียกเข้ามาอย่างต่อเนื่องจำนวนมาก ทำให้เกิดการจราจรหนาแน่นบน Web Server ของเรา โดยปกติ Web Server จะจัดการกับ Concurrent session ได้จำนวนหนึ่ง ถ้ามี HTTP Request เข้ามาเกินค่าที่ Web Server จะสามารถรับได้ ก็จะเกิด Error ขึ้น ทำให้ผู้ใช้ไม่สามารถเข้า Web Site เราได้ นอกจากนี้ อาจจะทำให้เครื่องเกิด CPU Overload หรือ Out of Memory ก็เป็นรูปแบบหนึ่งของ Denial of Service เช่นกัน