Làm thế nào để tìm lỗi trong Stored XSS nhanh nhất

Rate this post

Dưới đây là phương pháp mà tôi đã sử dụng để phát hiện lỗ hổng Stored XSS (“Cross Site Scripting”) trong một chương trình bug bounty, và tôi sẽ cung cấp một hướng dẫn chi tiết về quá trình tìm ra lỗi này.

Cách tìm thấy lỗi Stored XSS đơn giản

XSS là gì?

XSS, còn được gọi là Cross Site Scripting, là một loại lỗ hổng cho phép người dùng tận dụng trường nhập liệu cung cấp để chèn các tải trọng (payload) XSS. Kết quả là người dùng có khả năng thực thi mã JavaScript trên trang web dễ bị tấn công, tạo điều kiện cho các tình huống rất tiềm ẩn nguy hiểm.

Dưới đây là một ví dụ về payload XSS:

"><img src=x onload=alert(document.cookie)>

Trong ví dụ trên, chúng ta thoát ra khỏi cấu trúc của code với dấu ngoặc kép và dấu lớn hơn ở đầu. Sau đó, chúng ta có đầy đủ khả năng để thực thi javascript của mình vì chúng ta đã vượt ra ngoài trường đầu vào. Với ví dụ này, chúng ta đã chèn một hình ảnh có nguồn ngẫu nhiên là x và yêu cầu trang thực thi hiện cảnh báo chứa cookie của người dùng khi hình ảnh này được tải.

Những kẻ tấn công chủ yếu sẽ sử dụng phương pháp này để đánh cắp cookie của người dùng khác, do đó cho phép họ thực hiện các hành động như thể họ là người dùng đó. Chúng cũng có thể được sử dụng trong nhiều kiểu tấn công khác để ảnh hưởng đến công ty hoặc người dùng.

Phát hiện

Để giữ quyền riêng tư của công ty, mình sẽ không tiết lộ tên của chương trình bug bounty mà tôi đang thử nghiệm, nhưng tôi sẽ cung cấp thông tin chi tiết về con đường tôi đã thực hiện để tìm lỗ hổng này, điều này tương đối dễ dàng trong trường hợp này.

Mình bắt đầu bằng cách tìm hiểu trang web mục tiêu và tìm kiếm các trường đầu vào có khả năng bị tấn công. Trong khi thực hiện việc này, mình đã tìm ra một chức năng mà bạn có thể tải hình ảnh lên để đăng trên trang tài khoản của mình. Điều này khiến mình nghĩ về một báo cáo lỗi gần đây của XSS thông qua nội dung tệp hình ảnh. Nhưng nó lại không thành công.

Mình tiếp tục thử với chức năng tải lên và các đầu vào khác trong ứng dụng web. Trong khi làm điều này, mình nhìn lên menu trên cùng của biểu mẫu đầu vào và một thứ ngay lập tức đập vào mắt mình, đó là một nút trông giống như <>. Nó thường có nghĩa là bạn có thể chỉnh sửa code được sử dụng để hiển thị trong bài đăng của mình, mình đã không ngần ngại mở nó ra và xem code đã được sử dụng cho ảnh mình đã tải lên trước đó. Điều này cho thấy rằng nó chỉ là code html đơn giản chỉ bao gồm một “img src =” như bên dưới.

Cách tìm thấy lỗi Stored XSS đơn giản 6

Mình ngay lập tức biết mình muốn thử tải trọng nào =”alert (1)”. Mình sẽ phải đặt lệnh này sau giá trị URL và lưu nó với payload mới được thêm vào. Dưới đây, bạn sẽ thấy code cuối cùng trông như thế này.

Cách tìm thấy lỗi Stored XSS đơn giản 7

Payloads này được xử lý với thông tin đầu vào và được phản ánh vào HTML của trang. Mặc dù khi nhìn vào payload, mình có thể thấy nó đã được thêm vào giá trị “data-sanitized”. Đây là code trang:

Cách tìm thấy lỗi Stored XSS đơn giản 8

Khi tải lại trang, mã JavaScript được thực thi và một cảnh báo được hiển thị ở đầu màn hình, vậy là mình đã tìm được lỗi Stored XSS rồi đó.

Cách tìm thấy lỗi Stored XSS đơn giản 9

Javascript sẽ thực thi mỗi khi trang được mở, xác nhận rằng đây là lỗi Stored XSS trong chức năng biên tập code hình ảnh.

Kết luận

Điều này đã dạy cho mình tầm quan trọng của việc đào sâu từng chức năng của một ứng dụng và không được từ bỏ sớm. Nếu mình đã từ bỏ sau khi XSS tải lên hình ảnh không thành công, mình sẽ không bao giờ có thể vượt qua các hạn chế về nội dung hình ảnh để tìm ra lỗ hổng này. Đây là lý do để bạn tiếp tục đào sâu vào ứng dụng nếu bạn có cảm giác rằng nó có thể có lỗi.

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *