Web Application Security 101

INTRODUCTION FOR WEB APPLICATION1

ในปัจจุบันคงปฎิเสธไม่ได้ว่าคนทั่วไปมีการใช้งานอินเตอร์เน็ตหรือเข้าเว็บไซด์เป็นกิจวัตรประจำวันไปเสียแล้ว ธุรกิจเกี่ยวกับเว็บไซด์ต่างๆไม่ว่าจะเป็นการโฆษณาผ่านเว็บไซด์หรือการขายของออนไลน์ (Ecommerce) เองก็ตาม ก็เป็นตลาดที่โตขึ้นเป็นเท่าตัวทุกปีเช่นกัน และเพราะการเติบโตของการใช้งานอินเตอร์เน็ตและการทำธุรกรรมออนไลน์ต่างๆนี่เองทำให้ Hacker ก็เลยสนใจเข้ามาหาผลประโยชน์เช่นกัน ในบทนี้เราจะได้เรียนรู้ถึงการโจมตีของเว็บไซด์ในรูปแบบต่างๆพร้อมทั้งบอกวิธีการป้องกันอีกด้วย
ความหมายของ Web Application
ก่อนที่จะเรียนรู้การโจมตีหรือการป้องกันต่างๆของเว็บแอพพริเคชั่น (Web Application) คงต้องเริ่มก่อนว่าเว็บแอพพริเคชั่นหมายถึงอะไร
เว็บแอพพริเคชั่นคือ Webpage จำนวนเท่าใดก็ได้ที่สามารถตอบโต้กับผู้ใช้งานได้ เช่น การรับค่าจากผู้ใช้แล้วนำไปประมวลผลผ่าน databaseหรือการคำนวณใดๆที่ข้างหลังบ้าน จากนั้นแสดงผลที่ประมวลผลเสร็จสิ้นให้กับผู้ใช้งานอีกทีหนึ่ง
Screen Shot 2562-05-01 at 21.57.52.png
Web application สามารถเอาไว้ทำกิจกรรมใดๆก็ได้ไม่ว่าจะเพื่อ คุยกับเพื่อน, ประชุมเรื่องงาน, ซื้อของ, อ่านข่าว, โอนเงิน หรืออะไรก็แล้วแต่ ซึ่งเว็บไซด์ที่เป็นเว็บแอพพริเคชั่นและเป็นที่รู้จักกันอยู่แล้ว เช่น Facebook, Hi5, Twitter, Ebay, Amazon, Paypal เป็นต้น ซึ่งเว็บไซด์ชื่อดังก็ผ่านการเพิ่มการป้องกัน web application (Hardening) มาแล้วทั้งนั้น แต่ก็มิวายยังโดนโจมตีจาก Hacker เป็นระยะๆ
ในบางครั้ง admin หรือ developer มักจะทำการ comment ในส่วนต่างๆของ code เอาไว้สำหรับเป็นเครื่องมือเตือนความจำตนเองในการเขียน code ในส่วนดังกล่าว ว่าเขียนเพื่ออะไร ใช้งานอย่างไร และบางครั้งจะมีการฝังข้อมูลที่สำคัญๆของระบบไว้ใน comment ดังกล่าวด้วย ซึ่งหากเป็นข้อมูลสำคัญแล้วไม่ถูกนำออกไปเข้าสู่ระบบ production การกระทำดังกล่าวอาจส่งผลกระทบที่รุนแรงก็เป็นได้

เป้าหมายการโจมตีของ Hacker

การโจมตีมีหลายแบบแต่มีเป้าหมายการโจมตีหรือสิ่งที่ได้รับผลกระทบอยู่ 2 ชนิดคือ
  1. Server
    ในบางครั้งผลกระทบที่เกิดขึ้นนั้นจะส่งผลต่อผู้เป็นเจ้าของเว็บไซด์ไม่ว่าจะเป็นการเปลี่ยนหน้าเว็บไซด์เพื่อลดความน่าเชื่อถือหรือทำให้ไม่สามารถใช้งานได้ ซึ่งการโจมตีที่มีผลกระทบต่อผู้เป็นเจ้าของเว็บไซด์โดยตรง มีดังนี้ SQL Injection, Command Injection, Local File Inclusion, Remote File Inclusion, Parameter Manipulation
  2. Client
    การโจมตีที่มีผลกระทบกับ Client นั้นจะเน้นไปทางด้านข้อมูลส่วนตัวหรือ password ของ user เองก็ตาม ซึ่ง user ทั่วไปมักจะใช้ 1 password ต่อหลายเว็บไซด์ ทำให้เมื่อ password จากที่เว็บไซด์ใดเว็บไซด์หนึ่งที่ user ใช้ จะทำให้ Hacker ได้ password ของทุกเว็บไซด์ที่ user ใช้ ดังนั้นผมแนะนำว่าการใช้งานเว็บไซด์ใดๆควรมี password ที่ไม่ซ้ำกันหรือหากกลัวว่าจำไม่ได้ให้แบ่งระดับความสำคัญของเว็บไซด์ที่ใช้งานแล้วใช้ตั้ง password ตามความสำคัญของเว็บไซด์นั้นเช่น หากเป็นเว็บบอร์ดธรรมดาทั่วไปให้ใช้ password A และหากเป็นเว็บไซด์ที่ทำธุรกรรมออนไลน์ให้ใช้เป็น password B ซึ่งมีความแข็งแก่งมากกว่า A การโจมตีที่มีผลกระทบต่อผู้ใช้งานโดยตรงมีดังนี้ Session Hijacking, SQL Injection, Cross Site Scripting(XSS), Cross Site Request Forgery(CSRF)
    การป้องกันการโจมตีที่เว็บไซด์ส่วนใหญ่คงตกเป็นหน้าที่ของ programmer เพราะเป็นทั้งผู้เขียนและบางครั้งยังต้องเป็นดูแลเว็บไซด์ดังกล่าวอีกด้วย แต่จริงๆแล้ว ณ ปัจจุบันก็มีเครื่องมือมากมายที่จะเข้ามาช่วยเหลือให้สามารถทำลักษณะป้องกันแบบชั่วคราว (Virtual Patching) อย่าง Web Application Firewall (WAF) เป็นต้น

Comment ที่ Programmer อาจพลาด

ในบางครั้งขณะทำการพัฒนา Application นักพัฒนา (Developer) จำเป็นจะต้องเขียน comment ไว้ในบางส่วนของ source code เช่น ที่ส่วนก่อน function เพื่อเขียนว่า function ดังกล่าวสร้างเพื่ออะไร และรับตัวแปรอะไรจากไหน เข้าไปทำอะไร ชนิดของค่าทั้ง input, และ output ของ function เป็นต้น
ซึ่งในจุดนี้หากมีการ comment ในส่วนภาษาที่ต้องถูกนำไปประมวลผลอีกทีให้ออกมาเป็น HTML ก็คงไม่มีปัญหาอะไรเกิดขึ้น (เช่น php, python, ruby เป็นต้น) แต่หากว่าการ comment ดังกล่าวทำใน HTML นั้นอาจจะมีปัญหา ซึ่ง HTML จะมีการ comment โดยเขียนเป็น ยกตัวอย่างตาม source code ด้านล่าง
<HTML>
<HEAD>
</HEAD>
<BODY>
 <!-- Comment is here -->
<BODY>
</HTML>
โดยเราสามารถ view source code ของเพจนั้นๆได้ โดยคลิ๊กขวาในจุดใดจุดหนึ่งของเพจจากนั้นเลือกครั้ง View Page Source จะพบ HTML Code ของ page นั้นๆ

Comments

Popular Posts