Web Application Security
เว็บแอปพลิเคชั่นหมายถึง แอปพลิเคชั่นที่สามารถเข้าใช้งานผ่านเว็บบราวเซอร์ หรือ HTTP(s) agent (พอร์ต 80 หรือ 443) นั่นเอง
Web Architecture
เป็นรูปของการทำงาน ของเว็ปไซต์ทั่วไป โดย ยูเซอร์ จะเชื่อมต่อ เว็ปเซิฟเวอร์ ผ่าน Internet และในส่วนของ เซิฟเวอร์นั้น จะมีความปลอดภัยในตัวมันคือ ตัว Firewall ที่จะป้องกันได้ในระดับนึง
Layer | ปัญหาในระบบ |
---|---|
HTTP Client / User | การโจมตีแบบ Cross-Site Scripting ถูกโจมตีโดยการปลอมแปลงหน้าเพจ หรือผู้ใช้งาน (Spoofing) การใช้ Javascript Injection เพื่อเปลี่ยนแปลงข้อมูลใน Browser |
Transport Layer HTTP(s) | การดักจับข้อมูล (Passive Monitoring) การโจมตีจากคนกลาง (Man-in-the-Middle Attack) การขโมย Session (Session Hijack) |
Firewall | การโจมตีระบบผ่าน SSL Session |
Web Server | การทำ Buffer Overflow และ Format String การทำ Directory Traversal การตั้งค่า Default Accounts การตั้งค่า Default ใน Applications |
Web Applications | การป้อนค่า Metacharacters การป้อนค่า Null Characters การทำ Buffer Overflow |
Firewall | การโจมตีจาก Internal Network ซึ่งสามารถผ่าน Firewall ได้ |
Database | การทำ Direct SQL Commands หรือ SQL Injection การเข้าไป Query ใน Restricted Database การทำ Database Exploit |
การโจมตีระบบ
ในการโจมตีระบบเว็บแอปพลิเคชั่นนั้นสามารถโจมตีได้หลายๆ อย่าง โดยมีสาเหตุจาก
• ความผิดพลาดของผู้ดูแลระบบที่ติดตั้งและตั้งค่าระบบต่างๆ ไม่ดีพอ
• ความผิดพลาดจากผู้เขียนซอฟต์แวร์ที่เกี่ยวข้องกับการทำงานเช่น MS IIS เป็นต้น
• ความผิดพลาดจากผู้เขียนเว็บแอปพลิเคชั่นและองค์ประกอบที่เกี่ยวข้องอื่นๆ ที่ไม่ได้ตระหนักถึงการ
ทำงานให้เกิดความปลอดภัยในระบบ
ตัวอย่างเทคนิคต่างๆ ที่ใช้ในการโจมตีเว็บแอปพลิเคชั่น
Hidden Field
สาเหตุเกิดจากเว็บแอปพลิเคชั่น ส่งข้อมูลส่วนหนึ่งไปเก็บไว้ที่ไคลเอนต์ โดยใช้ hidden field แล้วนำค่า
ดังกล่าวมาใช้งานอีกครั้งหนึ่งตอนโพรเซสเพื่อแสดงหน้าเพจถัดไป ในการทำงานลักษณะนี้ผู้บุกรุกสามารถ
เปลี่ยนแปลงค่า hidden field เพื่อ สร้างความเสียหาย เปลี่ยนแปลงการทำงานของเว็บแอปพลิเคชั่น หรือให้ได้
ผลลัพธ์ที่ต้องการ ในการโจมตีในลักษณะนี้ผู้โจมตีจะดูโค้ดของเว็บเพจนั้นๆ (View Source) แล้วแก้ไข Tag
HIDDEN ให้กลายเป็นค่าอื่นๆ ที่สามารถนำไปประมวลผลต่อในเซิร์ฟเวอร์ หรือ Application ได้
Cookie Poisoning
ในการเก็บข้อมูลของ Cookie สำหรับการให้บริการเว็บนั้น โดยวัตถุประสงค์คือการเก็บข้อมูล
รายละเอียดบางอย่างของผู้ใช้งานเว็บเพจนั้นๆ หรือผู้ใช้คนนั้นๆ ว่ามีความสนใจด้านใดเป็นพิเศษ ต้องการ
ปรับแต่งค่าการนำเสนอข้อมูลอย่างไร รวมถึงอาจมีการเก็บข้อมูลเกี่ยวกับ Session ของการเชื่อมต่อไปยังเว็บ
แอปพลิเคชั่น เมื่อมีการเปลี่ยนแปลงค่าใน cookie ย่อมสามารถเปลี่ยนแปลงค่าต่างๆ แม้กระทั่งการเปลี่ยนแปลง
ค่า Session ID ของการเชื่อมต่อได้ ซึ่งทำให้เกิดปัญหาการเข้าถึงทรัพยากรของบุคคลอื่นๆ ได้ สำหรับข้อมูลที่
เก็บอยู่ใน cookie นั้นจะไม่มีความปลอดภัยหากไม่มีการเข้ารหัส หรือเข้ารหัสไว้ไม่ดีพอ
หลักการในการใช้งาน Cookies เพื่อความปลอดภัย
• ไม่ควรเก็บข้อมูลใน Cookies เป็น Plaintext หรือเข้ารหัสข้อมูลแบบหลวมๆ
• ควรคำนึงไว้เสมอๆ ว่าข้อมูลใน Cookies นั้นไม่ปลอดภัย
• ถ้าใช้งาน Cookies ควรระมัดระวังสองกรณีคือ ไม่ควรมีคนอื่นๆ มาใช้งาน Cookies ได้ และไม่ควรมี
ใครรู้ข้อมูลใน Cookies ไม่ว่ากรณีใดๆ
• ควรมีการเซต restrictive path ใน Cookies
• ในการตรวจสอบ Authentication นั้นไม่ควร valid ถ้าทำงานเกินช่วงเวลาที่ตั้งไว้
• ข้อมูลที่เก็บไว้ใน Cookies ควรเป็นข้อมูลที่ใช้ชั่วคราวเท่านั้น
• ในการสร้าง Token ID ควรใช้อัลกอริทึมที่มีประสิทธิภาพ ไม่สามารถคาดเดาได้
• ใช้ Cookies Timeout สำหรับลบ Cookies ที่ไม่มีการใช้งานออกจากระบบ
• การทำ Authentication ควรใช้ข้อมูลของไอพีแอดเดรสมาประกอบด้วยโดย สำหรับ Business Intranet
ควรใช้ไอพีแอดเดรสทั้ง 32 บิต สำหรับการใช้งานเว็บทั่วๆ ไป ควรใช้ข้อมูล 16 บิต มาประกอบการทำ
authentication ด้วย
• ในการทำ Authentication ควรใช้ข้อมูลเกี่ยวกับไคลเอนต์มาประกอบด้วยเช่นการใช้ header ที่เป็น
ค่าคงที่และแตกต่างกันในแต่ละไคลเอนต์เช่น User-Agent , Accept-Language , Etc.
• สำหรับ Authentication Cookies ถ้านำมาใช้งานครั้งหนึ่งแล้ว ก็ไม่ควรนำมาใช้งานอีก
credit: www.ce.kmitl.ac.th