เจาะลึก Web Application Security ตอนจบ Cross-Site Scripting Attack
by A.Pinya Hom-anek, GCFW, CISSP, CISA
ACIS Professional Team
เทคนิคการเจาะ Web Application ของเหล่า Hacker นั้น มีหลายวิธีดังที่ได้กล่าวไปแล้วในฉบับก่อนหน้านี้ เช่น “Hidden Manipulation” และ “Cookie Poisoning” เป็นต้น อีกเทคนิคที่ Hacker ชอบใช้เป็นประจำ ได้แก่ “Cross-Site Scripting” หรือที่เรียกกันในนาม XSS หรือ CSS
จะเกิดขึ้นเมื่อเวลาที่เราป้อนค่าเข้าไปใน Web Browser เพื่อส่งให้กับ Web Server เช่น การป้อน Username และ Password หรือ การคีย์ข้อมูลลงใน Web Board หลังจากที่เรากดปุ่ม Submit หรือกดปุ่ม Enter เพื่อส่งข้อมูลให้ Web Server ทาง Web Server จะสร้าง Web Page ตอบกลับมายัง Web Browser ของเราในลักษณะที่เป็น Dynamic Content เช่น ถ้าเราป้อนชื่อผิด Web Server ก็จะแจ้งว่าชื่อนั้นไม่มีในระบบ เป็นต้น
หาก Web Server มีการนำข้อมูลที่เราป้อนใส่ลงไปใน Web Page กลับมาแสดงเป็นผลลัพธ์ให้เราเห็นหลังจากที่เราได้ป้อนข้อมูลลงไป แล้ว Hacker สามารถป้อนข้อมูลที่ไม่ใช่ข้อมูลปกติลงไปในช่อง Input เช่น ป้อนข้อมูลเข้าไปในรูปแบบของ JAVA Script ซึ่งสามารถ ทำงานตามที่ Hacker ต้องการได้ เช่น สามารถขโมย Cookie ที่อยู่ในเครื่อง PC ของเราส่งกลับไปหา Hacker ได้
ช่องโหว่ในลักษณะ Cross-Site Scripting นี้ เราจะเห็นได้บ่อยๆใน Search Engine ที่มีการทวน Search Keyword ที่เราป้อนลงไป หรือใน Web Site ที่มีการทวน String ของข้อมูลที่เราป้อนลงไป ในลักษณะของ error message หรือ รูปแบบของ Web Form ที่มีการทวนข้อมูลหลังจากที่เราคีย์เข้าไปในตอนแรก และ พวก Web Board ที่อนุญาตให้ User สามารถเข้ามา POST ข้อมูลได้เป็นต้น
เมื่อ Hacker พบว่า Web Site มีช่องโหว่ให้สามารถทำ Cross-Site Scripting ได้ Hacker ก็จะเขียน Script ที่สามารถดูดข้อมูลส่วนตัว ของเราที่เก็บไว้ในเครื่องเราเองในลักษณะที่เป็น Cookie ส่งกลับไปหา Hacker ให้ Hacker สามารถดูข้อมูลของเราได้อย่างง่ายดาย หรือ ส่งพวก Malicious Script แปลกๆ มา Run บนยังเครื่องเราตามที่ Hacker ต้องการก็สามารถที่จะทำได้หาก Web Browser ของเรานั้น อนุญาตให้ Run Script ต่างๆได้ เช่น JAVA Script เป็นต้น
การแก้ปัญหา XSS Flaw นั้น ต้องมีการร่วมมือกันของหลายฝ่าย ได้แก่ ฝ่ายผู้พัฒนาโปรแกรม (Web Application Developer), ผู้ดูแลระบบ (Server Administration) และ ผู้ผลิต Web Browser (Browser Manufacturer)
สำหรับผู้พัฒนาโปรแกรม ควรจะมีการกรองข้อมูลขาเข้าจากทาง Client Side โดยอย่าคิดว่า User จะป้อนข้อมูลธรรมดาๆ กลับมาที่ Web Server เสมอไป ควรต้องมีการตรวจเช็คข้อมูลขาเข้าทุกครั้งที่รับกลับมายัง Web Server ตลอดจน เวลาจะส่งข้อมูลกลับไปยัง Web B rowser ที่ควรแปลงพวก “Non-alphanumeric data” ให้กลายเป็น HTML character เสียก่อน เช่น เครื่องหมายน้อยกว่า “<” ควรถูกแปลงเป็น “& l t ;” เป็นต้น
จะเห็นว่า Web Application Developer ต้องมาไล่ตรวจสอบ Source Code ที่เขียนด้วย ASP, JSP หรือ PHP ว่ามีช่องโหว่ดัง ลักษณะที่กล่าวมาหรือไม่ เวลานี้เราสามารถใช้ Tool ในการช่วยวิเคราะห์ Source Code ของเราได้ โดยไม่ต้องเหนื่อยกับกา รตรวจสอบทีละบรรทัด แต่เราต้องเสียทรัพย์ในการจัดซื้อ TOOL พวกนี้ เช่น WebInspect จาก SPI Dynamics หรือ AppScan จาก Sanctum Inc. ซึ่ง TOOL เหล่านี้มีราคาแพงพอสมควร หากเราได้ฝึกอบรมให้กับผู้พัฒนา Web Application ให้เข้าใจปัญหาต่างๆ เหล่านี้ TOOL ที่ใช้ในการตรวจสอบ Source Code ก็คงไม่มีความจำเป็นเท่าใดนัก
สำหรับ End user การป้องกันตัวก็ทำได้ง่ายๆ โดยการ Disable Scripting Language ที่ Web Browser ของเรานั่นเอง แต่เราก็จะเล่นลูกเล่นต่างๆใน Web Site ไม่ได้เต็มที่ หรือ เวลาที่เราจะเข้า Web Site ก็ให้พิมพ์ชื่อลงในช่อง URL อย่า Click Link ที่มากับ e-mail โดยไม่ตรวจสอบให้รอบคอบเสียก่อน หรือ อย่า Click Link ที่อยู่ตาม Web Board ต่างๆ เพราะ Link เหล่านั้นอาจมีการแอบแฝง Script ตลอดจน Malicious URL ต่างๆไว้รอคุณอยู่ ดังนั้นการแก้ไขปัญหาที่ง่ายที่สุด คงอยู่ที่ตัวเราเอง ต้องเลือกเข้า Web Site ที่น่าเชื่อถือ ตลอดจนระมัดระวังเวลาที่จะ Click อะไรก็ตามที่เป็น Link อยู่บน Web Browser ของเรานะครับ
ข้อมูลเพิ่มเติมเกี่ยวกับการ Hack และ การป้องกันช่องโหว่ใน Web Server และ Web Application ท่านผู้อ่านสามารถเข้าฟัง สัมมนา “Cyber Defense Initiative Conference ครั้งที่ 3” ในวันที่ 4-5 กันยายนนี้ โดยเป็นความร่วมมือระหว่าง 4 หน่วยงาน ได้แก่ NECTEC (ThaiCERT), สำนักงานตำรวจแห่งชาติ, สำนักข่าวกรองแห่งชาติ และ ACIS Professional Center ในงาน สัมมนาจะกล่าวถึงปัญหาและการแก้ไขเกี่ยวกับ Web Application Security โดยละเอียด ติดตามข้อมูลใหม่ๆด้าน Security ได้ใน e-week ฉบับหน้านะครับ สวัสดีครับ
จาก : หนังสือ eWeekThailand
ปักษ์แรก เดือนสิงหาคม
Update Information : 9 สิงหาคม 2546