เจาะลึก Web Application Security ( ตอนที่1 ), Knowledge Hackers Vs. Web Application Programmer
by A.Pinya Hom-anek, CISSP,CISA
ACIS Professional Team
Hacker ในอดีตแตกต่างจาก Hacker ในปัจจุบันและอนาคต เนื่องจาก Hacker ในอดีตนั้น มักจะเป็นผู้ที่มีความเชี่ยวชาญด้าน TCP/IP protocol suite หรือการเขียนโปรแกรมภาษา C อย่างลึกซึ้ง Hacker มักจะใช้ Exploit หรือ โปรแกรมเจาะระบบ เจาะผ่านทาง Port ต่างๆ ที่เปิดให้บริการบน Server ของเรา เช่น FTP Server จะเปิด Port 20 และ 21, Sun RPC บน Solaris Platform เปิด Port “Sun RPC” 111 เป็นต้น โดย Hacker นิยมเจาะระบบ Unix ผ่านทาง Port RPC โดยใช้ Exploit ของ Port 111 ซึ่งปกติจะเป็น Port Default ของ Solaris อยู่แล้ว (ข้อมูลเพิ่มเติมอ่านได้ที่ www.sans.org/top20)
แต่ในปัจจุบัน Hacker จำเป็นต้องมีการเปลี่ยนแปลงพฤติกรรมในการเจาะระบบเนื่องจาก ระบบส่วนใหญ่มีการป้องกันโดยใช้ Firewall และ มักจะปิด Port ต่างๆ ที่ไม่จำเป็น ตลอดจนปิดแม้กระทั่ง ICMP ซึ่งจะทำให้ Hacker ไม่สามารถใช้คำสั่ง PING มายังเครื่องของเราได้ โดยเราจะเปิด Port สำหรับการใช้งานผ่านทาง Web เท่านั้น คือ Port HTTP 80 และ HTTPS 443 (SSL) จะเห็นได้ว่า Hacker นั้นไม่สามารถเจาะระบบโดยใช้ Exploit เดิมๆ เพราะ Port ต่างๆ ถูกปิดโดย Firewall เรียบร้อยแล้ว ดังนั้น จึงเป็นที่มาของ การ Hack ในแนวใหม่ (Next Generation Hacking) ก็คือ “Web Application Hacking” เจาะเฉพาะ Port 80 และ Port 443 (เพราะ Firewall ของทุกองค์กรยังไงก็ต้องเปิด Port 80 เพื่อให้คนภายนอกเข้ามาเยี่ยมชม Website)
Hacker ในปัจจุบันจึงจำเป็นต้องมีความรู้ด้านการเขียนโปรแกรม Web Application ด้วย ถ้าเป็น Windows Platform ก็ต้องศึกษาเกี่ยวกับ IIS Web Server, Active Server Page (ASP) หรือถ้าใช้ Unix/Linux Platform ก็ต้องศึกษาเกี่ยวกับ Apache Web Server, mod_SSL, PERL หรือภาษายอดนิยม PHP และ Java Server Page (JSP) เป็นต้น
แน่นอนว่า Web Application นั้นถูกเขียนโดย Web Programmer ส่วนใหญ่มักจะมีความเชี่ยวชาญในการเขียนภาษา ASP หรือ PHP บางคนก็ชอบใช้ Content Management System เช่น PHPnuke (www.phpnuke.org) หรือ PHPbb (www.phpbb.com) ซึ่งล้วนแต่มีช่องโหว่ให้กับ Hacker โดยปกติแล้ว Web Programmer มักจะไม่ได้สนใจเรื่องของ Security โดยตรง จะมีเพียงบางคนที่ศึกษาเรื่องนี้อย่างจริงจัง ดังนั้นการเขียน Web Application ที่ไม่ได้คำนึงถึงด้าน Web Application Security นั้น จึงเป็นการเปิดช่องให้กับ Hacker ในการเจาะระบบ ผ่านทาง Port 80 หรือ Port 443 ได้อย่างง่ายดาย โดยที่ Firewall ไม่สามารถที่จะป้องกันได้เลยการเจาะระบบผ่านทาง Port 80 หรือ 443 นั้น ไม่ยากอย่างที่เราคิด ลองตรวจสอบระบบของเราเองดู ด้วยวิธีการที่เรียกกันในกลุ่มคนที่ทำงานด้าน Information Security ว่า “Vulnerability Assessment” โดยใช้โปรแกรมจำลองการเจาะระบบ ตัวอย่างเช่นโปรแกรม N-Stealth จาก Website http://www.nstalker.com เราจะพบว่า Web Server ของเรา ไม่ว่าจะเป็น IIS หรือ Apache ล้วนมีช่องโหว่ที่ Hacker สามารถมองเห็นโดยโปรแกรมจะวิเคราะห์ช่องโหว่ใน CGI Script, PERL Script ตลอดจน ASP, PHP, Cold Fusion และ JSP Script ด้วย
ช่องโหว่ใน Web Application นั้น มีหลายประเภทเช่น Hidden Manipulation, Cookie Poisoning, Buffer Overflow, SQL Injection, Cross Site Scripting (XSS) Flaws (ซึ่งผมจะกล่าวรายละเอียดในฉบับต่อไป)
ถามว่าวันนี้เรามีทั้ง Firewall และ IDS ในระบบของเราแล้วเราจะปลอดภัยจากการโจมตีของ Hacker หรือไม่ คำตอบก็คือ ไม่ได้ 100% เพราะยังไงเราก็ต้องเปิด Port ให้คนเข้ามาที่ Web Server ของเราอยู่ดี และ Web Application Programmer ส่วนใหญ่ก็ไม่ได้มีความรู้ในระดับของ Hacker ตลอดจนงานพัฒนาโปรแกรมนั้นก็มักจะเป็นงานที่เร่งรีบเสียจนไม่มีเวลาที่จะมาตรวจสอบ Source Code เพื่อความปลอดภัยของระบบ
ดังนั้นทางแก้ไขแบบบูรณาการก็คือ เราต้องถ่ายทอดความรู้ด้าน “Web Application Security” ให้กับโปรแกรมเมอร์ เพื่อโปรแกรมเมอร์จะได้มีความตระหนักถึงการจู่โจมของ Hacker เรียกว่าสร้าง “Security Awareness”ตลอดจนมีการนำ Source Code มาตรวจสอบทั้งแบบ Manual และ Automated โดยใช้ Tools ที่มีอยู่มากมายใน Internet ก็สามารถจะช่วยลดความเสี่ยงที่เกิดขึ้นกับ Web Application ของเราได้กว่า 50 %
ในฉบับหน้าผมจะนำรายละเอียดของ “Web Application Hacking” มาเล่าสู่กันฟังอย่าลืมติดตามนะครับ
จาก : หนังสือ eWeekThailand
Update Information : 17 กรกฎาคม 2546