Computer >> คอมพิวเตอร์ >  >> ระบบเครือข่าย >> ความปลอดภัยของเครือข่าย

Cross-site Scripting (XSS) Attack:ทั้งหมดที่คุณต้องรู้

การโจมตีแบบ Cross-Site Scripting (XSS) ได้รับการระบุว่าเป็นหนึ่งในการโจมตีแบบฉีดที่เกิดขึ้นบ่อยครั้งแต่สามารถแก้ไขได้ง่ายซึ่งต้องเผชิญกับธุรกิจอีคอมเมิร์ซและแอปพลิเคชันเว็บอื่น ๆ ที่หลากหลาย ตั้งแต่แอปพลิเคชันการกำหนดเป้าหมายที่สร้างขึ้นจากเทคโนโลยีเว็บที่ล้าสมัยไปจนถึงแอปพลิเคชันที่ใหม่กว่าโดยใช้ UI ฝั่งไคลเอ็นต์ที่สมบูรณ์ XSS ได้รบกวนพวกเขาทั้งหมด อย่างไรก็ตาม จำเป็นต้องตระหนักว่าช่องโหว่ที่อาจเป็นสาเหตุให้เกิดการโจมตี XSS นั้นสามารถตรวจพบได้ง่ายและแก้ไขได้ทันท่วงที

การโจมตีแบบ Cross-site scripting เกิดขึ้นได้อย่างไร

การโจมตีแบบแฝงสคริปต์ (XSS) เกิดขึ้นเมื่อ

  1. เว็บแอปพลิเคชันร้องขอข้อมูลอินพุตผ่านแหล่งที่ไม่น่าเชื่อถือ
  2. เนื้อหาแบบไดนามิกที่ป้อนผ่านคำขอทางเว็บถูกใช้โดยไม่ได้รับการยืนยันว่าไม่มีเนื้อหาที่เป็นอันตราย
Cross-site Scripting (XSS) Attack:ทั้งหมดที่คุณต้องรู้

ตัวอย่างง่ายๆ ของข้อมูลที่ป้อน เช่น เมื่อเราส่งชื่อ อีเมล ID ชื่อผู้ใช้-รหัสผ่าน หรือการป้อนข้อมูลใดๆ ในแบบฟอร์ม อินพุตที่ป้อนข้างต้นแต่ละรายการสามารถจัดการได้หากรหัสพื้นฐานไม่ตรวจสอบอินพุตอย่างถูกต้อง ผู้โจมตีใช้ประโยชน์จากการไร้ความสามารถนี้ในการฉีดเนื้อหาที่เป็นอันตราย ซึ่งมักจะอยู่ในรูปแบบของโค้ด Javascript, HTML หรือโค้ดรูปแบบใดๆ ที่เบราว์เซอร์สามารถสั่งการได้ ผู้ใช้ปลายทางไม่มีทางสงสัยสคริปต์ที่ไม่น่าเชื่อถือและจะดำเนินการตามนั้น เมื่อฉีดเข้าไปแล้ว สคริปต์จะสามารถเข้าถึงคุกกี้ โทเค็นของเซสชัน หรือข้อมูลที่ละเอียดอ่อนที่ใช้โดยไซต์นี้

การโจมตี XSS มี 3 ประเภท:

  1. การโจมตีตาม DOM :เกิดจากการแทรกโค้ดที่เป็นอันตรายจากฝั่งไคลเอ็นต์ โค้ดที่ฉีดอาจเป็น Javascript, Flash, Visual Basic เป็นต้น
  2. การโจมตี XSS แบบถาวร: เกิดขึ้นเมื่อ payload ถูกเก็บไว้ที่ฝั่งเซิร์ฟเวอร์และถูกดึงออกมาเมื่อมีการร้องขอของผู้ใช้ไปยังเพจ
  3. การโจมตี XSS แบบไม่ต่อเนื่อง: เกิดขึ้นเมื่อเพย์โหลดสะท้อนกลับมาที่ผู้ใช้โดยเปิดลิงก์ไปยังเว็บไซต์ที่มีช่องโหว่พร้อมอินพุตที่สร้างขึ้นมา
Cross-site Scripting (XSS) Attack:ทั้งหมดที่คุณต้องรู้

กายวิภาคของการโจมตีแบบ Cross-site scripting (XSS)

ผู้โจมตีใช้ประโยชน์จาก XSS อย่างไร

โดยทั่วไปแล้ว ผู้โจมตีจะใช้ช่องโหว่ XSS เพื่อแยกคุกกี้เซสชันของผู้ใช้ปลายทาง ซึ่งทำให้ผู้โจมตีสามารถเข้าถึงบัญชีของผู้ใช้ได้ในที่สุด ตัวอย่างสถานการณ์ข้างต้นคือ:
  • เว็บไซต์ที่คุณเข้าถึงมีช่องแสดงความคิดเห็น
  • ผู้โจมตีโพสต์เพย์โหลดต่อไปนี้ในส่วนความคิดเห็น
  • ทันทีที่ผู้ใช้ที่ถูกต้องเปิดช่องแสดงความคิดเห็นเพื่อดูความคิดเห็นต่อไปนี้ HTML จะแยกวิเคราะห์สคริปต์นี้
  • เมื่อแยกวิเคราะห์ HTML โดยเบราว์เซอร์ คุกกี้ของผู้ใช้จะถูกส่งไปยังผู้โจมตีบนเซิร์ฟเวอร์ของเขา
ช่องโหว่ง่ายๆ นี้ หากมีอยู่ในเว็บแอปพลิเคชันของคุณ อาจมีนัยยะที่ร้ายแรง การใช้ประโยชน์จาก XSS ทั่วไปอีกประการหนึ่งคือเมื่อผู้โจมตีใช้แอปพลิเคชันของคุณสำหรับการดาวน์โหลดโดยไดรฟ์ โดยที่ผู้โจมตีจะทำให้ผู้ใช้ปลายทางดาวน์โหลดมัลแวร์โดยที่พวกเขาไม่รู้ โดยการคลิกลิงก์ที่ดูถูกต้อง

กรณีฉาวโฉ่ของการโจมตีแบบ Cross-site Scripting

การโจมตี XSS ส่วนใหญ่เกิดขึ้นเพื่อผลประโยชน์ทางการเงิน สิ่งที่น่าสังเกตคือการโจมตี eBay ยักษ์ใหญ่ด้านอีคอมเมิร์ซในอดีต แฮกเกอร์ได้แทรกโค้ด Javascript ที่เป็นอันตรายลงในรายการต่างๆ สำหรับ iphone ราคาถูก ซึ่งจะเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าเข้าสู่ระบบปลอมที่สร้างขึ้นเพื่อประนีประนอมข้อมูลประจำตัวของผู้ใช้

นอกเหนือจากไซต์อีคอมเมิร์ซแล้ว ไซต์โซเชียลมีเดียหลายแห่งยังถูกโจมตีที่น่าอับอายดังกล่าว Twitter ตกเป็นเป้าหมายของเวิร์ม XSS ดังกล่าว ซึ่งนำไปสู่ลิงก์ที่เป็นอันตรายซึ่งติดอยู่บนเว็บไซต์ที่ชื่อว่า StalkDaily การโจมตี XSS ที่รู้จักกันดีอีกอย่างหนึ่งคือการโจมตี MySpace โดยหนอน Samy ซึ่งเป็นไวรัสที่ไม่เป็นอันตรายซึ่งเปลี่ยนหน้าโปรไฟล์ของผู้ใช้ MySpace และส่งคำขอเป็นเพื่อนแบบสุ่ม

ข้อควรระวังในการบรรเทาการโจมตี XSS

การป้องกันการโจมตี XSS ไม่ได้หมายความถึงการปิดการใช้งานให้ผู้ใช้ป้อนข้อมูลเพย์โหลด แต่ใช้มาตรการเพื่อหยุดไม่ให้ถูกแยกวิเคราะห์เป็น HTML ในเบราว์เซอร์ ดังที่กล่าวไปแล้ว ต่อไปนี้เป็นวิธีการบางอย่างที่ใช้เพื่อป้องกันการโจมตี XSS
  1. การตรวจสอบความถูกต้องของอินพุต

    เพื่อป้องกัน XSS ให้อนุญาตการป้อนข้อมูลส่วนใหญ่เป็นตัวอักษรและตัวเลขหรือในบางกรณีให้ใช้อักขระพิเศษ ซึ่งจะช่วยลดการโจมตีบนพื้นผิวและลดโอกาสในการเกิดแมลง

  2. การใช้องค์ประกอบ DOM ที่ปลอดภัย

    บ่อยครั้ง การจัดการองค์ประกอบ DOM ที่ไม่ปลอดภัย (โมเดลอ็อบเจ็กต์เอกสาร) นำไปสู่การโจมตี XSS ใน UI ของไคลเอ็นต์ที่หลากหลาย ตัวอย่างเช่น การใช้แอตทริบิวต์ innerHTML แสดงผลอินพุตของผู้ใช้เป็น XSS พร้อมเหตุการณ์ Javascript ในกรณีนี้ ทางเลือกที่ปลอดภัยคือการใช้ contentText หรือ innerText

  3. จาวาสคริปต์หลบหนี

    การหลีกเลี่ยงเครื่องหมายคำพูดเดียวสามารถป้องกันการแทรกภายใน Javascript การเข้ารหัส HTML ที่ใช้เครื่องหมายคำพูดเดียวกับ ' ควรใช้เพื่อป้องกันปัญหาการแทรก

  4. การเข้ารหัสเอาต์พุต

    การเข้ารหัสเอาต์พุตทำงานได้อย่างมหัศจรรย์เมื่อต้องทำให้น้ำหนักบรรทุก XSS เป็นกลางเป็นกลาง วิธีนี้ทำงานเพื่อลดการโจมตีแบบฉีดฝั่งเซิร์ฟเวอร์ แม้ว่าการเข้ารหัส HTML จะเป็นวิธีการทั่วไป แต่การเข้ารหัส URL สามารถช่วยกำจัดการแทรกมาร์กอัปในลิงก์และการเปลี่ยนเส้นทางได้