การตั้งค่า Webserver เพื่อป้องกัน Clickjacking Attack ที่ถูกมองข้าม
เกริ่น : ชาวไอทีหลายคนคงทราบดีอยู่แล้วว่าบนโลกอินเตอร์เน็ตนั้นมีมิจฉาชีพอยู่เป็นจำนวนมาก พวกเขามักหาวิธีการต่างๆ ที่จะดักรับข้อมูลหรือโจมตีเครื่องของผู้ใช้งาน (Users) เพื่อนำข้อมูลที่ได้ไปใช้ในทางที่ผิด และ Clickjacking Attack ก็เป็นหนึ่งในวิธีที่นิยมใช้กันมาก โดยในปี 2008 โดย Jeremiah Grossman ผู้เชี่ยวชาญในด้านความปลอดภัยออกมาแจ้งเตือนให้เว็บไซต์ทำการแก้ไข
ถึงแม้จะเป็นช่องโหว่เก่าเมื่อสิบปีก่อน แต่ก็ต้องยอมรับว่าทุกวันนี้ยังมีให้เห็นกันอยู่
Clickjacking Attack คือ?
- การโจมตีเว็บไซต์รูปแบบหนึ่งที่ผู้โจมตี (Attacker) นำเอา code เข้าไปฝังซ่อนไว้ส่วนใดส่วนหนึ่งที่หน้าเว็บไซต์อื่น อย่างเช่น ปุ่ม Submit, หน้าถัดไป (Next page), Picture Link เป็นต้น เพื่อรับ Response ทั้งหมดให้ Redirect ไปยังเว็บไซต์ปลอมที่ถูกสร้างขึ้น
ผลกระทบกับผู้ใช้งาน
- เมื่อผู้ใช้งานอินเตอร์เน็ตเข้าไปยังหน้าเว็บไซต์หนึ่งที่มีช่องโหว่นี้ แล้วเผลอคลิกหรือกรอกข้อมูลตรงส่วนที่ Attacker ตั้งใจจะดักรับข้อมูล อาจเกิดการโหลด Malware ลงเครื่องโดยตรงทันที ข้อมูลส่วนตัวรหัสผ่านต่างๆ ของผู้ใช้งานจะตกอยู่ในมือของผู้ไม่หวังดี
รูปแบบของ Clickjacking
- ทั่วไปแล้ว Clickjacking มักจะรันซ่อนอยู่ภายใต้หน้า HTML ในส่วนของ iframe ( HTML CODE ที่ใช้ในการดึงหน้าเว็บไม่ว่าจะเป็น path url จากเว็บเราหรือจากเว็บอื่น มาแสดงในเว็บของเรา) ในรูปแบบอื่นก็จะเป็นปุ่ม Like หรือ Cursor

ตัวอย่างวิธีการ Clickjacking
- เมื่อผู้ใช้งานเปิดเว็บไซต์แห่งหนึ่ง แล้วคลิกลิงก์ที่แสดงผลว่า “WIN” ผู้ชนะได้รับรางวัล iPad
- ปรากฏว่าหลังจากคลิกไปแล้วโค้ดที่รันจริงๆ นั้นคือ การให้โอนเงินให้กับ Attacker ปลายทางไป

3. ภายใต้หน้าเว็บไซต์มีการใส่ค่า Request URL เรียกใช้ไปยัง process อื่นๆ เช่นตัวอย่าง ภายใน code tag <iframe> จะเห็นว่า source ต้นทางแท้จริงแล้วคือ http://mybank/Transfer.aspx ซึ่งไม่เกี่ยวข้องกับเว็บไซต์
<div style="position: absolute; left: 10px; top: 10px;">Hey - we're giving away iPad minis!!! Just click the WIN button and it's yours!!!</div>
<div style="position: absolute; left: 200px; top: 50px;">
<img src="http://images.apple.com/my/ipad-mini/overview/images/hero.jpg" width="250">
</div>
<div style="position: absolute; left: 10px; top: 101px; color: red; font-weight: bold;">>> WIN <<</div>
<iframe style="opacity: 0;" height="545" width="680" scrolling="no" src="http://mybank/Transfer.aspx"></iframe>การป้องกันฝั่งผู้ให้บริการเว็บไซต์ (Server-Side method)
- ตั้งค่า Header Response ของ X-Frame-Options ที่เครื่อง Web Server โดยหากใช้ Apache2 สามารถทำการ config เพิ่มเติมได้ดังนี้
$ cd /etc/apache2/conf-available
$ sudo vi security.conf#### เอา hashtag ข้างหน้าออกบรรทัดที่ 71 #### # Setting this header will prevent other sites from embedding pages from this
# site as frames. This defends against clickjacking attacks.
# Requires mod_headers to be enabled.
#
Header set X-Frame-Options: “sameorigin”$ sudo a2enmod headers
$ sudo /etc/init.d/apache2 restart
การเลือกใช้ Value ต่างๆ ของ X-Frame-Options มีทั้งหมด 3 แบบ
- DENY — ไม่อนุญาตให้โดเมนใดๆ แสดงผลบนหน้าเว็บไซต์
- SAMEORIGIN — อนุญาตให้โดเมนเดียวที่ใช้งานอยู่ แสดงผลใน Frame บนหน้าเว็บไซต์
- ALLOW-FROM URI — อนุญาตให้มีการแสดงผลใน Frame บนหน้าเว็บไซต์ตามโดเมนที่กำหนด เช่น www.example.com/frame-page
วิธีการทดสอบหาช่องโหว่ Clickjacking บนเว็บไซต์
- ใช้ Tools ตรวจสอบ ตัวอย่างเช่น OWASP
- ตรวจสอบผ่านเว็บไซต์ : http://online.attacker-site.com/html5/ClickjackingTester/
- ใช้ Developer Tools บน Chrome Browser ไปที่ More tools > Developer Tools > Network จากนั้นใส่ URL ที่ต้องการตรวจสอบ หากยังไม่มีการตั้งค่าจะพบข้อมูล Headers ตามรูป

ที่มา :
https://www.troyhunt.com/clickjack-attack-hidden-threat-right-in/
https://www.imperva.com/learn/application-security/clickjacking/

