รับทําเว็บไซต์ รับทําseo
บทความที่น่าสนใจ

บทความ ที่น่าสนใจ

Cross-site Scripting (XSS) วิธีการยอดนิยมที่แฮคเกอร์รู้จักกันดี

    Cross-site Scripting (XSS) เป็นวิธีการยอดนิยมที่แฮคเกอร์รู้จักกันดี ซี่งเป็นเทคนิคการฝังโค้ดเข้าไปกับหน้าเวปเพจที่มีช่องโหว่ เมื่อผู้ใช้โหลดหน้าเวปเพจไป ค่าที่สำคัญบางอย่าง เช่น ค่าของ cookie, username, password ,... ก็อาจจะถูกขโมยไปได้

     

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

     

    แม้ว่าแฮกเกอร์ไม่สามารถใช้ XSS ในการทำอันตรายเครื่องคอมพิวเตอร์ที่ตกเป็นเหยื่อย เช่นสั่งฟอร์แมต Harddisk หรือทำ remote conrol ได้เพราะว่ากลไกการทำงานของ client-side script ไม่อนุญาตให้ทำงานดังกล่าว แต่ความน่ากลัวของ XSS มีอยู่ไม่น้อยเนื่องจาก XSS ยังเป็นช่องทางที่ทำให้ Hacker สามาถ ขโมย Cookie ซึ่งอาจจะทำให้ hacker ใช้ cookie เพื่อใช้ในการแย่ง session ของเหยื่อได้ หรือ แก้ข้อมูลของ form ที่ใช้ในการกรอก username/password ให้ส่งไปยังเครื่องของ hacker ก่อนแล้วค่อยส่งไปยังเว็บไซต์จริง ๆ หรือแก้ไขข้อมูลที่แสดงอยู่บนเว็บเพจเพื่อหลอกให้เหยื่อหลงเชื่อแล้วทำให้ เหยื่อทำอะไรบางอย่างที่เป็นผลดีต่อแฮกเกอร

     

    โดยส่วนตัว ผมแบ่งการโจมตีด้วย XSS เป็น 2 แบบ (คนอื่นอาจจะแบ่งไม่เหมือนผมนะ แล้วแต่คนอ่ะ) คือ
    non-persistent XSS กับ persistent XSS


    Non-persistent XSS ก็คือ XSS ที่ไม่ยั่งยืนถาวร 55 แหล่มป่ะ ภาษาไทยจ๋าเลย มันประมาณนี้ครับ  non-persistent เนี่ย มันจะขึ้นกับค่าที่เรา inject ลงไปใน get หรือ post request ด้วย โดยเมื่อ script ที่เราใส่ลงไปใน get หรือ post request ไปโผล่บนหน้า html มันก็จะเกิดการรัน script ขึ้น แต่การใช้เทคนิคนี้บางครั้งเราต้องใส่ script ของเราลงไปใน url ซึ่งอาจจะทำให้สังเกตได้ง่าย


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


    ยกตัวอย่าง code ที่มีช่องโหว่ XSS นะครับ
    search.php


    จากตัวอย่าง ถ้าเรา request ไปที่ url
    http://thaicomsec.citec.us/search.php?keyword=Gen0TypE
    output ก็จะแสดงพิมพ์คำว่า Gen0TypE ออกมาครับ


    ทีนี้ถ้าเราเปลี่ยนเป็น
    http://thaicomsec.citec.us/search.php?keyword=<script>alert(/XSS By Gen0TypE/);</script>


    output ก็จะพิมพ์คำว่า
    <script>alert(/XSS By Gen0TypE/);</script>


    ออกมา ซึ่ง browser จะตีความว่ามันเป็น javascript และประมวลผลการทำงานแบบ javascript ซึ่งผลสุดท้ายจะเห็นหน้าจอ alert ออกมาดังรูปครับ

     

    Cross-site Scripting (XSS) วิธีการยอดนิยมที่แฮคเกอร์รู้จักกันดี

     

    ซึ่งนี่ถือว่าหน้าเว็บนี้มีช่องโหว่ XSS แบบ non-persistent เพราะอนุญาตให้ใครก็ได้สามารถ inject script ลงไปได้ วิธีป้องกันก็คือ การแปลง tag html ให้อยู่ในรูปแบบอื่น เช่น จากการพิมพ์ < ก็ให้แปลงเป็น &lt; หรือ การพิมพ์ > ก็ให้เปลี่ยนเป็น &gt; ซึ่งการทำแบบนี้ก็ทำไม่ยากครับ ใช้ function ที่ php มีให้คือ htmlentities() ครับ ซึ่งจะได้ code ดังนี้

     

    ทีนี้เวลา request ด้วย url
    http://thaicomsec.citec.us/search.php?keyword=<script>alert(/XSS By Gen0TypE/);
    output สุดท้ายที่แสดงออกมาจะไม่เป็น
    <script>alert(/XSS By Gen0TypE/);


    แต่จะเป็น


    &lt;script&gt;alert(/XSS By Gen0TypE/);&lt;/script&gt;


    ซึ่งทำให้ script ไม่ถูกรันครับ