Tìm hiểu về lỗ hổng Cross-Site Scripting (Phần 2)
Ở phần trước, chúng ta đã tìm hiểu về các dạng lỗi Cross-Site Scripting (XSS)
Hôm nay, chúng ta sẽ làm rõ chúng thông qua một vài challenge tại https://xss-quiz.int21h.jp/.
Có một số rule như sau:
Notes (for all stages): NEVER DO ANY ATTACKS EXCEPT XSS. DO NOT USE ANY AUTOMATED SCANNER (AppScan, WebInspect, WVS, ...) Some stages may fit only IE. Ranking (optional): If you want to participate in ranking, please register here now. (You should register before tackling stage #1.) What you have to do: Inject the following JavaScript command: alert(document.domain);
Lưu ý: Trong bài viết, tôi sử dụng Firefox và add-ons Hackbar
Nếu sử dụng Chrome, bạn có thể dùng extensions với chức năng tương tự, ví dụ như Advanced REST client
Nào, chúng ta cùng bắt đầu nhé.
Stage #1:
Đầu tiên, chúng ta sẽ thử payload đơn giản nhất:
<script>alert(document.domain);</script>
Vậy là đã vượt qua stage 1, chưa gặp nhiều khó khăn phải không
Stage #2:
Ta thử payload giống như ở Stage #1:
Bây giờ ta sẽ view source của kết quả vừa nhận được:
Để ý vào phần bôi vàng, nó giống hệt nội dung input chúng ta nhập vào.
Tiếp theo, ta sẽ thử bypass bằng cách sử dụng các ký tự đặc biệt để đưa đoạn script kia “ra bên ngoài” thẻ input.
Bạn có thể tham khảo payload sau đây:
"> <script>alert(document.domain);</script>
Stage #3:
Tương tự ở stage #2, nhập payload xem kết quả trả về, và view source
Ở đây ta thấy phần 1 là url để gửi POST request, phần 2 và 3 là tên các input, phần 4 và 5 lần lượt là giá trị trả về của 2 và 3. Tuy nhiên, có một điều cần chú ý là phần 3, input là Japan, và kết quả trả về cũng vậy.
Ta sẽ thử payload sau bằng cách sử dụng add-ons Hackbar
Stage #4:
View source sau khi thử payload:
Tiếp tục sử dụng hackbar bằng việc thay đổi giá trị của p3 như ở stage #2:
Stage #5:
Ở đây, thử nhập input ta thấy chỉ nhập được 15 ký tự. Bật F12 sau đó bỏ maxlength đi, sau đó thử payload giống như ở stage #2.
Vừa rồi chúng ta đã trải vượt qua challenges, cùng thử sức với các challenges tiếp theo ở blog sau nhé 😉