Author Topic: xss ทั้งหลาย  (Read 13798 times)

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2145
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
xss ทั้งหลาย
« on: กรกฎาคม 22, 2013, 12:26:20 PM »
ยังคงเป็นรูปแบบที่มีการโจมตีมากรูปแบบหนึ่ง เมื่อมีการ hack เกิดขึ้น

xss แบ่งได้เป็นแบบ Persistence กับ Non-Persistence

Persistence หรือ Stored XSS: แฮกเกอร์จะฝัง javascript code ไว้ในเว็บบอร์ด, คอมเม้นต์, ฯลฯ ซึ่งเมื่อเหยื่อเข้ามาดูหน้าเพจดังกล่าวก็จะถูกโจมตีด้วย XSS
Non-Persistence หรือ Reflected XSS: แฮกเกอร์จะฝัง script ไว้ใน CGI Parameters ของ URL แล้วส่ง link ดังกล่าวไปให้เหยื่อซึ่งเมื่อเหยื่อเปิดลิงก์ดังกล่าวก็จะถูกโจมตีด้วย XSS

เช่นในระบบที่มีการใช้งาน GET ในการแสดงผล และรับส่งค่าในการ คอนเฟิมค่าสักอย่าง
<?php
Echo "Please verify this address is correct: ".$_GET['address'];
?>

รันใส่ ตรง URL ได้เลย
http://www.kammatan.com/confirmaddress?address=<script>alert(document.cookie)</script>

อันนี้จะแสดงค่า cookie ของ user เมื่อบุคคลนั้นกดมาที่ link นี้

## เพิ่มเติมอ่านได้ที่
example การใช้งาน xss -> https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
http://www.infosecisland.com/blogview/11402-Cross-Site-Scripting-XSS-Some-Examples.html
https://www.golemtechnologies.com/articles/prevent-xss
http://archive.wunjun.com/hackkidd/5/848.html
https://www.owasp.org/index.php/Testing_for_Cross_site_scripting
« Last Edit: มกราคม 20, 2015, 02:05:34 PM by golfreeze »

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2145
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: xss ทั้งหลาย
« Reply #1 on: กรกฎาคม 22, 2013, 12:28:12 PM »
ในปัจจุบัน XSS สามารถแบ่งได้เป็น 3 แบบที่ต่างกัน (สำหรับบทความนี้จะใช้ชื่อเป็น Type0, Type1 และ Type2 แต่ชื่อเหล่านี้ไม่ได้ใช้เป็นมาตรฐาน ที่อื่นอาจจะใช้ชื่ออื่นที่แตกต่างออกไป)

Type 0
XSS รปแบบนี้ถูกกล่าวถึงมานานแล้วเรียกว่า DOM-based หรือ Local cross-site scripting ซึ่งมันไม่ได้มีความหมายแตกต่างไปจากเดิม ในบทความ (DOM-Based cross-site scripting) ได้ให้นิยามเกี่ยวกับลักษณะสำคัญต่างๆ ไว้อย่างดี สำหรับช่องโหว่ cross-site scripting แบบ Type 0 นั้น ปัญหาเกิดจากสคริปบนหน้าฝั่ง client เอง ตัวอย่างเช่น ถ้าในหน้านั้นมีจาวาสคริปที่เข้าไปอยู่บนตัวแปรบน url ที่ถูกขอจากฝั่ง client และใช้ข้อมูลนี้ในการใส่โค๊ด html ลงไปบนหน้านั้น และข้อมูลนี้ไม่ได้ถูกเข้ารหัสไว้ตามรูปแบบของ HTML จะทำให้เกิดช่องโหว่ XSS ขึ้นเมื่อข้อมูลที่ถูกเขียนลงไปนั้นถูกแปลด้วย browser อีกครั้ง ซึ่งจะกลายเป็นโค๊ด html ซึ่งสามารถเพิ่มส่วนที่เป็นสคริปฝั่ง client ได้
ในทางปฏิบัติ การโจมตีช่องโหว่นี้จะคล้ายกับการโจมตีช่องโหว่แบบ Type 1 มาก ยกเว้นหนึ่งเหตุการณ์ที่สำคัญมาก เนื่องจาก Internet Explorer (IE) รุ่นเก่าจะนำเอาสคริปฝั่ง client มาฝังไว้กับอุปกรณ์ของตัวเอง เช่น ฮาร์ดดิส ช่องโหว่ XSS แบบ Type0 บนหน้าเว็บที่อยู่บนเครื่อง client สามารถทำให้เกิดช่องโหว่ที่สามารถใช้งานคำสั่งจากระยะไกลได้ ยกตัวอย่างเช่น ถ้าผู้บุกรุกตั้งเว็บไซต์ที่มุ่งร้ายไว้ โดยบนหน้าเว็บมีตัวเชื่อมโยง (link) ไปหน้าที่สามารถโจมตีช่องโหว่ของหน้าเว็บที่ติดตั้งอยู่บนเครื่อง client ได้ จะทำให้ผู้บุกรุกสามารถสั่งรันสคริปด้วยสิทธิ์ของคนที่ใช้ browser ของระบบบนฝั่ง client อยู่ได้ (Local html บนเครื่อง โดยปกติจะถูกติดตั้ง ด้วย software ทั่วไป รวมไปถึง internet explorer ด้วย) วิธีนี้จะเป็นการข้ามขั้นตอนการส่งข้อความจากฝั่งไคลเอนท์ ซึ่งไม่เพียงแต่จะข้ามผ่านการสงวนเขตในเรื่องโดเมนเท่านั้นยังเป็นการข้ามขั้นตอนปรกติอีกด้วย ดังนั้น Local Machine Zone จึงถูกล็อคสำหรับ IE6 บน Windows xp Service Pack 2 และ IE7 ได้ปิดช่องโหว่นี้สำหรับเวอร์ชั่นปัจจุบัน

Type 1
XSS รูปแบบนี้ถูกเรียกว่า non-persistent หรือ reflected และเป็นประเภทที่พบเป็นปกติ ช่องโหว่เหล่านี้จะเกิดเมื่อข้อมูลจากฝั่ง client ถูกใช้ทันทีโดยสคริปของฝั่ง server เพื่อสร้างหน้าเว็บที่เป็นผลลัพธ์จากข้อมูลของผู้ใช้งาน ถ้าข้อมูลที่ได้รับจากผู้ใช้งานไม่ได้ถูกตรวจสอบความถูกต้องก่อนถูกรวมเข้าไปในหน้าที่เป็นผลลัพธ์โดยไม่ได้ทำการเข้ารหัสในรูปแบบ html จะทำให้สามารถใส่โค๊ดจากฝั่ง client ลงไปในหน้าเว็บที่สามารถเปลี่ยนแปลงได้ (dynamic page) ตัวอย่างเช่นเว็บ search ถ้าใส่คำที่จะใช้ค้นหาเป็นอักขระพิเศษของภาษา html บ่อยครั้งที่จะพบว่าคำที่ใช้ค้นหานั้นจะปรากฎอีกครั้งบนหน้าผลลัพธ์ของการค้นหาเพื่อบ่งบอกว่าต้องการค้นหาอะไร หรืออย่างน้อยจะปรากฎอยู่ในช่องที่เอาไว้ใส่คำสำหรับค้นหา เพื่อง่ายต่อการแก้ไขคำที่จะใช้ค้นหา ถ้าคำที่ใช้ค้นหาทั้งหมดไม่ได้ถูกเข้ารหัสในรูปแบบ HTML จะบอกได้ว่าเว็บนี้มีช่องโหว่ XSS อยู่
นี่ไม่ใช่ปัญหาที่รุนแรงเพราะผู้ใช้แค่สามารถแทรกโค๊ดเข้าไปในหน้าของตัวเองเท่านั้น อย่างไรก็ตามการใช้ social engineering สามารถทำให้ผู้บุกรุกชี้นำให้ผู้ใช้งานเข้าใช้ url ที่เป็นอันตรายซึ่งมีการแทรกโค๊ดเข้าไปที่หน้าที่เป็นผลลัพธ์ ทำให้ผู้บุกรุกสามารถเข้าถึงเนื้อหาในหน้านั้นได้อย่างเต็มที่ เนื่องจากความต้องการเบื้องต้นของการใช้ social engineering ในกรณีนี้ (และสำหรับการใช้ใน Type 0 ด้วย) นักเขียนโปรแกรมหลายๆ คนไม่ได้ให้ความสนใจกับช่องโหว่นี้ว่าเป็นช่องโหว่ที่มีอันตรายร้ายแรง ซึ่งความเข้าใจที่ไม่ถูกต้องนี้บางครั้งก็นำไปสู่การเกิดช่องโหว่ XSS (ถึงแม้ว่าจะเป็นเพียงรูปแบบหนึ่งของช่องโหว่ XSS เท่านั้น) และบ่อยครั้งที่มีการขัดแย้งกับกลุ่มที่ให้ความสำคัญเรื่องความปลอดภัย เกี่ยวกับเรื่องความสำคัญของช่องโหว่ cross-site scripting

Type 2
ช่องโหว่ XSS รูปแบบนี้ถูกเรียกว่า stored หรือ persistent หรือ second-order และเป็นรูปแบบที่อันตรายที่สุดใน 3 รูปแบบที่กล่าวมา ในหลายๆ ครั้ง มันถูกเรียกว่า HTML injection ช่องโหว่รูปแบบนี้จะเกิดขึ้นเมื่อข้อมูลที่ถูกส่งมาจากผู้ใช้ถูกเก็บไว้บนฝั่งเซิร์ฟเวอร์ เช่น ฐานข้อมูล ไฟล์ หรืออื่นๆ และแสดงผลให้ผู้ใช้ดูในภายหลัง โดยไม่มีการเข้ารหัสในรูปแบบของ HTML ยกตัวอย่างเช่น เว็บบอร์ดที่เอาไว้โพสข้อความให้ผู้อื่นอ่าน โดยอนุญาตให้ใช้โค๊ด html ได้
ช่องโหว่ประเภทนี้ควรระวังมากกว่าประเภทอื่น เพราะเมื่อผู้บุกรุกใส่สคริปเข้ามาเพียงครั้งเดียว สามารถทำให้มีผู้ถูกโจมตีเป็นจำนวนมาก หรือสามารถทำให้เว็บติดไวรัส cross-site scripting ได้
รูปแบบของการสอดแทรกสคริปนั้นสามารถทำได้หลายทาง ไม่จำเป็นต้องเป็นการโจมตีที่ตัวเว็บเองเท่านั้น แต่ยังสามารถโจมตีที่ข้อมูลที่เว็บรับมาด้วย ยกตัวอย่างเช่น อีเมล์ หรือ บันทึกการใช้งานระบบ (system log) ซึ่งสามารถถูกควบคุมได้โดยผู้บุกรุก เพราะฉะนั้นจึงควรมีการเข้ารหัสข้อมูลต่างๆ ก่อนที่จะทำการแสดงผลบนหน้าเว็บ ไม่เช่นนั้นจะทำให้เกิดช่องโหว่ในรูปแบบนี้ได้

Exploit scenarios (รูปแบบของการโจมตี)

ในการที่ผู้บุกรุกจะโจมตีช่องโหว่ cross-site scripting แต่ละรูปแบบนั้น จะมีวิธีในการโจมตีที่แตกต่างกันขึ้นอยู่กับชนิดจุดอ่อนที่ตรวจพบ
 ในหัวข้อนี้จะแสดงรูปแบบที่ผู้บุกรุกใช้ในการโจมตีช่องโหว่ XSS แต่ละชนิด

Type-0 attack (การโจมตี type 0)
Mallory ส่ง url สำหรับเปิดหน้าที่ถูกสร้างขึ้นมาเพื่อหวังจะโจมตีระบบ ให้กับ Alice
Alice กดที่ตัวเชื่อมโยง (link) ที่ Mallory ส่งมาให้
จาวาสคริปบนหน้าเว็บที่เปิดขึ้นมา ไปทำการเปิดหน้าเว็บที่มีช่องโหว่ที่ติดตั้งอยู่บนเครื่องของ Alice
จาวาสคริปบนเว็บเพจนั้นทำงานบนเครื่องคอมพิวเตอร์ของ Alice
สคริปบนหน้าเว็บที่ Mallory ส่งให้ Alice อาจจะรันคำสั่งบนเครื่องของ Alice โดยมีสิทธิ์การเข้าถึงข้อมูลเท่ากับ Alice

Type-1 attack (การโจมตี type 1)
Alice เข้าใช้งานเว็บไซต์ ซึ่งเป็นเว็บไซต์ของ Bob และให้เข้าใช้งานด้วยการใช้ชื่อและพาสเวิร์ด เพื่อเก็บข้อมูลที่สำคัญๆ เช่น ข้อมูลเกี่ยวกับการเงิน
Mallory พบว่าเว็บไซต์ของ Bob มีช่องโหว่ reflected XSS
Mallory ใช้ประโยชน์จากช่องโหว่ที่พบ โดยส่งอีเมล์ลวงที่มี url ที่สร้างขึ้นเพื่อโจมตีช่องโหว่ให้กับ Alice โดยทำให้ดูเหมือนว่าส่งมาจาก Bob ซึ่งเป็นตัวอย่างหนึ่งของ spoofed email
Alice กดเข้า url ที่ Mallory ส่งมาให้ในขณะที่ล็อคอินเว็บไซต์ของ Bob ค้างไว้
สคริปใน url ที่ Mallory เตรียมไว้ถูกรันบน browser ของ Alice และสคริปนั้นได้ทำการขโมยข้อมูลต่างๆ และส่งไปที่เว็บเซิร์ฟเวอร์ของ Mallory โดยที่ Alice ไม่รู้

Type-2 attack (การโจมตี type 2)
Bob เป็นเจ้าของเว็บไซต์ทีเปิดให้ผู้คนเข้ามาโพสข้อความเพื่อให้ผู้อื่นเปิดดูทีหลัง
Mallory รู้ว่าเว็บไซต์ของ Bob มีช่องโหว่ XSS type 2
Mallory โพสข้อความในบอร์ด โดยใส่ข้อความให้ดูเหมือนว่าเป็นการทะเลาะกัน เพื่อกระตุ้นให้ผู้คนสนใจ ซึ่งจะทำให้มีผู้เปิดดูข้อความเยอะ
เมื่อมีผู้เปิดดูข้อความที่ Mallory โพสไว้ จะทำให้ข้อมูลของคนเหล่านั้น เช่น cookies ถูกส่งไปยังเว็บเซิร์ฟเวอร์ของ Mallory โดยคนเหล่านั้นไม่รู้ตัวเลย
Mallory สามารถใช้ข้อมูลที่ขโมยมาเพื่อล็อคอินโดยใช้ user ของคนเหล่านั้น และโพสข้อความต่างๆ ได้


ขอบพระคุณข้อมูลจาก : http://citecclub.org/wiki/index.php?title=XSS_(Cross_Site_Scripting)

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2145
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: xss ทั้งหลาย
« Reply #2 on: กรกฎาคม 23, 2013, 12:28:30 PM »
https://www.owasp.org/index.php/Category:OWASP_WebScarab_Project

เป็นโปรแกรมที่พัฒนาขึ้นโดย javascript โดยจะใช้เป็นโปรแกรมวิเคราะห์การทำงานของเว็บแอป และ ระบบการทำงานของเว็บไซท์ ซึ่งรองรับการทำงานทั้ง http และ https

thinboxer43

  • Newbie
  • *
  • Posts: 9
    • View Profile
Re: xss ทั้งหลาย
« Reply #3 on: สิงหาคม 03, 2013, 07:51:08 PM »
ได้ความรู้เยอะเลย  ใจมากๆๆๆ :)

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2145
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: xss ทั้งหลาย
« Reply #4 on: กุมภาพันธ์ 12, 2014, 06:56:49 PM »
<br>
<a href='data:text/html,<script>alert(document.cookie)</script>'>Firefox</a>
<br>
<a href='vbscript:alert(document.cookie)'>Internet Explorer</a>


1.html code