Reflected XSS
Last updated
Last updated
Reflected cross-site scripting xảy ra khi một ứng dụng nhận dữ liệu trong HTTP request và đưa dữ liệu vào phản hồi ngay lập tức theo cách không an toàn.
Nhập Payload sau vào thanh tìm kiếm: <script>alert(1)</script>
Nếu kẻ tấn công có thể kiểm soát một tập lệnh được thực thi trong trình duyệt của nạn nhân, chúng có thể xâm phạm hoàn toàn người dùng đó:
Kẻ tấn công có thể khiến người dùng gửi yêu cầu mà chúng kiểm soát qua các phương thức như: đặt liên kết trên một trang web do chúng kiểm soát, trang web khác cho phép tạo nội dung, hoặc qua email, tweet, hoặc tin nhắn. Tấn công này có thể nhắm đến một người dùng cụ thể hoặc không phân biệt người dùng nào.
Do cần một cơ chế bên ngoài để truyền tải payload, tách động của reflected XSS thường ít nghiêm trọng hơn stored XSS
Tự động ...
Thủ công theo các bước sau:
Kiểm tra tất cả các điểm nhập dữ liệu: Kiểm tra riêng lẻ từng điểm nhập dữ liệu trong các yêu cầu HTTP của ứng dụng, bao gồm tham số hoặc dữ liệu trong URL, message body, đường dẫn file trong URL, và cả tiêu đề HTTP.
Gửi giá trị ngẫu nhiên: Với mỗi điểm nhập dữ liệu, gửi một giá trị ngẫu nhiên, duy nhất và xác định xem nó có phản chiếu trong phản hồi không. Giá trị này nên ngắn gọn, chỉ chứa các ký tự chữ và số, và đủ dài để tránh các kết quả trùng hợp ngẫu nhiên (khoảng 8 ký tự). Burp Intruder có thể được sử dụng để tạo và kiểm tra các giá trị này.
Xác định ngữ cảnh phản chiếu: Xác định ngữ cảnh của từng vị trí trong resonse nơi giá trị ngẫu nhiên được phản chiếu, ví dụ: trong văn bản giữa các thẻ HTML, trong thuộc tính thẻ, hoặc trong chuỗi JavaScript.
Kiểm tra payload XSS ban đầu: Dựa vào ngữ cảnh phản chiếu, thử nghiệm payload XSS ban đầu để kích hoạt thực thi JavaScript nếu nó được phản chiếu mà không bị sửa đổi. Sử dụng Burp Repeater để gửi yêu cầu với payload này và kiểm tra phản hồi.
Thử nghiệm các payload khác nhau: Nếu payload ban đầu bị sửa đổi hoặc bị chặn, cần thử nghiệm các payload và kỹ thuật thay thế phù hợp với ngữ cảnh phản chiếu và kiểu xác thực đầu vào.
Kiểm tra tấn công trên trình duyệt: Nếu tìm thấy payload hoạt động trong Burp Repeater, chuyển cuộc tấn công sang trình duyệt thực tế và kiểm tra xem JavaScript đã được thực thi chưa. Ví dụ, có thể sử dụng mã alert(document.domain)
để kích hoạt một popup nếu tấn công thành công.