А вот еще одна задача с CodeGate2020.



Веб таск на обход CSP политики, который я так и не решил. И после прочтения врайтапа понял, что никогда бы не решил. (Потому что black magick)

Но для себя решил разобрать врайтап, переписать его с корейского:D, и поделиться с остальными.



Если коротко про таск:



Цель: Утащить Cookie админа через XSS.



На странице CSP: Content-Security-Policy: default-src 'self'; script-src 'none’; - т.е. скрипты вообще нельзя выполнять.

Можем в ответ страницы писать либо в хедер, либо в тело,по той причинине, что приложение разрешает нам подписать строку (Захешировать с секретом вначале строки) только для первого или второго варианта по отдлености (Но не вместе).



В итоге:



Hash length extension attack -> Header injection to bypass CSP -> XSS.



В задаче даже имея инъекцию HTTP заголовка в ответе невозомжны было повлиять на CSP политику явно. Зато был один способ, который не столько относится именно к байпасу CSP сколько говорит про тонкости работы Nginx и Chrome.



Само решение тут: https://github.com/empty-jack/ctf-writeups/blob/master/CodeGate-2020/web-csp.md



P.S. ссылка на источник в шапке статьи.