การปลอมแปลงคำขอข้ามไซต์ (CSRF) คืออะไร

เผยแพร่แล้ว: 2023-04-12

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

การหลีกเลี่ยงนโยบายแหล่งกำเนิดเดียวกัน

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

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

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

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

ลองมาดูกัน

การโจมตี Cross-Site Request Forgery (CSRF) ส่งผลกระทบต่อเว็บไซต์ WordPress ของคุณอย่างไร?

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

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

การปลอมแปลงคำขอข้ามไซต์

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

ต้องมีเงื่อนไขที่แตกต่างกันสามประการสำหรับแฮ็กเกอร์เพื่อให้การโจมตี CSRF ทำงานได้ หากคุณเข้าใจในระดับทั่วไป คุณจะเข้าใจพื้นฐานการรักษาความปลอดภัยเว็บบางส่วนได้ดี

1. การจัดการเซสชันตามคุกกี้

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

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

2. สามารถกำหนดเป้าหมายการดำเนินการที่เกี่ยวข้องได้

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

3. ไม่มีพารามิเตอร์คำขอที่คาดเดาไม่ได้

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

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

ใช้ประโยชน์จากช่องโหว่ CSRF เพื่อเปลี่ยนอีเมลบัญชีผู้ใช้ — ตัวอย่าง

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

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

 POST /test HTTP/1.1 Host: yourwebsite.com Content-Type: application/x-www-form-urlencoded Content-Length: 60 Cookie: session=yvthgjrudhgeQkAPzeQ5gHgTvlyxHfsAfE;[email protected]

ทำไมมันถึงได้ผล

สิ่งนี้ตรงตามเงื่อนไขที่จำเป็นสำหรับ CSRF ถ้า/เพราะ:

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

ผู้โจมตีอาจขโมยคุกกี้เซสชันได้อย่างไร

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

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

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

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

การโจมตี CSRF ถูกส่งไปยังเว็บไซต์ที่มีช่องโหว่อย่างไร

กลไกการนำส่งสำหรับการโจมตี CSRF และการโจมตีแบบ Reflected Cross-Site Scripting (Reflected XSS) นั้นคล้ายคลึงกัน

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

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

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

การปกป้องไซต์ของคุณจากการปลอมแปลงคำขอข้ามไซต์ (CSRF)

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

นอกเหนือจากการจัดการการอัปเดตและเตือนคุณเกี่ยวกับปลั๊กอินและธีมที่มีช่องโหว่แล้ว iThemes Security Pro ยังทำให้การตั้งค่าและจัดการผู้ใช้และกฎความปลอดภัยตามบทบาทเป็นเรื่องง่าย มอบสิทธิ์ตามหลักการสิทธิ์น้อยที่สุด รักษาความปลอดภัยการเข้าสู่ระบบ การกู้คืนรหัสผ่าน และแบบฟอร์มการติดต่อด้วย CAPTCHA อย่าให้ความสามารถแก่ผู้ใช้ของคุณมากเกินกว่าที่พวกเขาต้องการ กำหนดให้ผู้ใช้ที่มีสิทธิ์สูงกว่าใช้วิธีการตรวจสอบสิทธิ์ที่เข้มงวดกว่า และนำวิธีง่าย ๆ ที่สะดวกที่สุดมาใช้อย่างแน่นอนในการเข้าสู่ระบบ WordPress โดยไม่ต้องใช้รหัสผ่าน: รหัสผ่าน!