Kiểm tra thâm nhập Python - Tấn công web XSS

Các cuộc tấn công tập lệnh chéo trang web là một kiểu tiêm cũng đề cập đến cuộc tấn công chèn mã phía máy khách. Tại đây, các mã độc hại được đưa vào một trang web hợp pháp. Khái niệm Chính sách nguồn gốc giống nhau (SOP) rất hữu ích trong việc hiểu khái niệm về kịch bản chéo trang. SOP là nguyên tắc bảo mật quan trọng nhất trong mọi trình duyệt web. Nó cấm các trang web lấy nội dung từ các trang có nguồn gốc khác. Ví dụ: trang web www.tutorialspoint.com/index.html có thể truy cập nội dung từwww.tutorialspoint.com/contact.htmlnhưng www.virus.com/index.html không thể truy cập nội dung từwww.tutorialspoint.com/contact.html. Theo cách này, chúng ta có thể nói rằng tập lệnh chéo trang là một cách để vượt qua chính sách bảo mật SOP.

Các loại tấn công XSS

Trong phần này, hãy cùng chúng tôi tìm hiểu về các loại tấn công XSS khác nhau. Cuộc tấn công có thể được phân loại thành các loại chính sau:

  • XSS liên tục hoặc được lưu trữ
  • XSS không liên tục hoặc được phản ánh

XSS liên tục hoặc được lưu trữ

Trong kiểu tấn công XSS này, kẻ tấn công đưa một tập lệnh, được gọi là tải trọng, được lưu trữ vĩnh viễn trên ứng dụng web mục tiêu, chẳng hạn như trong cơ sở dữ liệu. Đây là lý do, nó được gọi là cuộc tấn công XSS dai dẳng. Nó thực sự là kiểu tấn công XSS gây tổn hại nhất. Ví dụ, một mã độc được kẻ tấn công chèn vào trường bình luận trên blog hoặc trong bài đăng trên diễn đàn.

XSS không liên tục hoặc được phản ánh

Đây là kiểu tấn công XSS phổ biến nhất trong đó trọng tải của kẻ tấn công phải là một phần của yêu cầu, được gửi đến máy chủ web và được phản ánh, trở lại theo cách mà phản hồi HTTP bao gồm tải trọng từ yêu cầu HTTP. Đây là một cuộc tấn công không liên tục bởi vì kẻ tấn công cần phải cung cấp tải trọng cho mỗi nạn nhân. Ví dụ phổ biến nhất của các loại tấn công XSS như vậy là các email lừa đảo với sự trợ giúp của kẻ tấn công thu hút nạn nhân thực hiện yêu cầu đến máy chủ chứa các trọng tải XSS và kết thúc việc thực thi tập lệnh được phản ánh và thực thi bên trong trình duyệt .

Thí dụ

Tương tự như SQLi, các cuộc tấn công web XSS có thể được thực hiện bằng cách thao tác dữ liệu đầu vào cho ứng dụng. Trong các ví dụ sau, chúng tôi đang sửa đổi các vectơ tấn công SQLi, được thực hiện trong phần trước, để kiểm tra tấn công web XSS. Tập lệnh Python đưa ra bên dưới giúp phân tích cuộc tấn công XSS bằng cách sử dụngmechanize -

Để bắt đầu, hãy để chúng tôi nhập mechanize mô-đun.

import mechanize

Bây giờ, hãy cung cấp tên của URL để nhận phản hồi sau khi gửi biểu mẫu.

url = input("Enter the full url")
   attack_no = 1

Chúng ta cần đọc các vectơ tấn công từ tệp.

With open (‘vectors_XSS.txt’) as x:

Bây giờ chúng tôi sẽ gửi yêu cầu với mỗi vector mảng -

For line in x:
   browser.open(url)
browser.select_form(nr = 0)
   browser[“id”] = line
   res = browser.submit()
content = res.read()

Dòng mã sau sẽ kiểm tra vector tấn công được in.

if content.find(line) > 0:
print(“Possible XSS”)

Dòng mã sau sẽ viết phản hồi vào tệp đầu ra.

output = open(‘response/’ + str(attack_no) + ’.txt’, ’w’)
output.write(content)
output.close()
print attack_no
attack_no += 1

XSS xảy ra khi đầu vào của người dùng in ra phản hồi mà không có bất kỳ xác thực nào. Do đó, để kiểm tra khả năng xảy ra tấn công XSS, chúng tôi có thể kiểm tra văn bản phản hồi cho vectơ tấn công mà chúng tôi đã cung cấp. Nếu vectơ tấn công hiện diện trong phản hồi mà không có bất kỳ lối thoát hoặc xác thực nào, thì khả năng cao là tấn công XSS.