前言
剛學(xué)習(xí)完xss,把xsss-labs靶場(chǎng)都通了打算試試水,遇到此題[AFCTF 2021]BABY_CSP,借此機(jī)會(huì)學(xué)習(xí)下CSP
CSP簡(jiǎn)介
Content Security Policy
(CSP)內(nèi)容安全策略,是一個(gè)附加的安全層,有助于檢測(cè)并緩解某些類型的攻擊,包括跨站腳本(XSS)和數(shù)據(jù)注入攻擊。它實(shí)質(zhì)就是白名單制度,開發(fā)者明確告訴客戶端,哪些外部資源可以加載和執(zhí)行,哪些不可以。
CSP如何工作
通過(guò)響應(yīng)包頭(Response Header)實(shí)現(xiàn):
Content-Security-policy: default-src 'self'; script-src 'self' allowed.com; img-src 'self' allowed.com; style-src 'self';
CSP指令
我們可以看出,有一部分是CSP中常用的配置參數(shù)指令,我們也是通過(guò)這些參數(shù)指令來(lái)控制引入源,下面列舉說(shuō)明:
script-src:外部腳本
style-src:樣式表
img-src:圖像
media-src:媒體文件(音頻和視頻)
font-src:字體文件
object-src:插件(比如 Flash)
child-src:框架
frame-ancestors:嵌入的外部資源(比如<frame>、<iframe>、<embed>和<applet>)
connect-src:HTTP 連接(通過(guò) XHR、WebSockets、EventSource等)
worker-src:worker腳本
manifest-src:manifest 文件
dedault-src:默認(rèn)配置
frame-ancestors:限制嵌入框架的網(wǎng)頁(yè)
base-uri:限制<base#href>
form-action:限制<form#action>
block-all-mixed-content:HTTPS 網(wǎng)頁(yè)不得加載 HTTP 資源(瀏覽器已經(jīng)默認(rèn)開啟)
upgrade-insecure-requests:自動(dòng)將網(wǎng)頁(yè)上所有加載外部資源的 HTTP 鏈接換成 HTTPS 協(xié)議
plugin-types:限制可以使用的插件格式
sandbox:瀏覽器行為的限制,比如不能有彈出窗口等。
除了Content-Security-Policy,還有一個(gè)Content-Security-Policy-Report-Only字段,表示不執(zhí)行限制選項(xiàng),只是記錄違反限制的行為。它必須與report-uri選項(xiàng)配合使用。
Content-Security-Policy-Report-Only: default-src 'self'; ...; report-uri /my_amazing_csp_report_parser;
CSP指令值
介紹完CSP的指令,下面介紹一下指令值,即允許或不允許的資源
*: 星號(hào)表示允許任何URL資源,沒(méi)有限制;
self: 表示僅允許來(lái)自同源(相同協(xié)議、相同域名、相同端口)的資源被頁(yè)面加載;
data:僅允許數(shù)據(jù)模式(如Base64編碼的圖片)方式加載資源;
none:不允許任何資源被加載;
unsafe-inline:允許使用內(nèi)聯(lián)資源,例如內(nèi)聯(lián)<script>標(biāo)簽,內(nèi)聯(lián)事件處理器,內(nèi)聯(lián)<style>標(biāo)簽等,但出于安全考慮,不建議使用;
nonce:通過(guò)使用一次性加密字符來(lái)定義可以執(zhí)行的內(nèi)聯(lián)js腳本,服務(wù)端生成一次性加密字符并且只能使用一次;
例題
[AFCTF 2021]BABY_CSP
打開題目,在網(wǎng)絡(luò)的http請(qǐng)求發(fā)現(xiàn)nonce的值
這種情況下,script標(biāo)簽需要帶上正確的nonce屬性值才能執(zhí)行JS代碼
payload文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-687673.html
<script nonce="29de6fde0db5686d">alert(flag)<script>
得到flag文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-687673.html
到了這里,關(guān)于CSP的理解與繞過(guò)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!