声明:文章只是起演示作用,所有涉及的网站和内容,仅供大家学习交流,如有任何违法行为,均和本人无关,切勿触碰法律底线
文章目录
- 概述:什么是xss
- 一、反射型XSS
- 1. get
- 2. post
- 二、存储型XSS
- 三、DOM型XSS
- 四、DOM型XSS-X
- 五、xss之盲打
- 六、xss之过滤
- 七、xss之htmlspecialchars
- 八、xss之href输出
- 九、xss之js输出
- 总结
工具在网盘,自取
通过网盘分享的文件:phpstudy
链接: https://pan.baidu.com/s/1l0jpNGQvYMwRSq3BhDY1EQ 提取码: jay1
–来自百度网盘超级会员v1的分享
概述:什么是xss
Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:1.反射性XSS;2.存储型XSS;3.DOM型XSS;XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;输出转义:根据输出点的位置对输出到前端的内容进行适当转义;
一、反射型XSS
在服务器中响应,不会存入数据库
1. get
打开平台,随意输入一个 <h1>xss</h1>
看到如下返回结果,证明是存在xss漏洞的
在url里可以看到是通过GET方式请求的,所以打开HackBar
传参**
**输入<script>alert("xss")</script>
,出现弹窗
由于输入框被限制长度,所以可以找到此处更改长度,随后输入即可
2. post
首先是一个登录框,先进行登录
在输入框内输入<script>alert("xss")</script>
,会在页面出现弹窗,我们可以随意输入然后在burpsuite
抓包试试,将内容改成<script>alert("xss")</script>
点击放行后出现弹窗
二、存储型XSS
输入的内容会永久留着页面,每当有用户访问,便可执行
在留言板输入 <script>alert("xss")</script>
并提交
会出现弹窗,并且每当我们刷新页面这个弹窗就会出现
三、DOM型XSS
DOM:全称Document Object Model
,使用DOM可以使程序和脚本能够动态访问和更新文档的内容、结构及样式。DOM型XSS是非持久型XSS
,且不与后台服务器产生数据交互,而是通过JS修改网页的DOM来执行恶意脚本进行攻击。注意,DOM型XSS与反射型和存储型最大的区别在于,DOM型XSS不经过服务端,全部的攻击过程都在客户端完成
输入<script>alert("xss")</script>
,查看源代码,看下面这段代码
"<a href='"+str+"'>what do you see?</a>";
str是我们传入的字符串,可以利用单引号实现闭合<a href = ’ " 'onclick="alert('xss')"
>
输出结果:
四、DOM型XSS-X
DOM-X型危害比DOM型更大,它能够像反射型一样在URL中体现,将URL发给了受害者就能进行攻击
随意输入,查看源码:
关键代码:<a href='"+xss+"'>就让往事都随风,都随风吧</a>
,和上一个没什么区别,使用上一个也可以通过,这里我们使用另一种方式
'><img src=" " onerror='alert(1)'/>
通过闭合单引号,然后利用img标签,当src链接内容出错时,会自动执行onerror错误指令
查看结果:
五、xss之盲打
输入 123456
提交后进入后台,地址:http://127.0.0.1/pikachu-master/vul/xss/xssblind/admin_login.php
进入后用户名:admin
,密码:123456
在****这个时候我们可以看到输入的内容在后台被存储了,所以假设我们输入的是有害的xss,那么当管理员访问后台时,命令便会自动执行,造成危害
六、xss之过滤
输入123,可以正常输出
输入:<script>alert("xss")</script>
,会发现内容被过滤,可以看到'>'
前面的内容没有正常输出,可能把<script
过滤了
绕过方式有很多种,这里列举几种常见的
大写绕过:<SCRIPT>alert("xss")</SCRIPT>
转换标签:<img src=a onerror=alert("xss")>
当alert被一起禁用:<img src="a" onerror="comfirm('xss')">
都可以绕过:
七、xss之htmlspecialchars
首先了解一下htmlspecialchars
,这是php代码中的一个内容,会把一些符号转换成html
编码的形式,如下图,'<''>'
,两个符号都被转换了,但是单引号
可以正常输出
所以可以先输入<script>alert("xss")</script>
,发现无法正常执行
查看源代码发现被过滤
使用单引号过滤:'onclick='alert(1)'
点击会出现弹窗:
八、xss之href输出
href在html编码里属于超链接,有一个特殊特性:利用 JavaScript 来动态改变 href 属性的值
输入:<script>alert("xss")</script>
,查看源代码,发现输入的内容被href变成了超链接,并且部分符号被转换
利用JavaScript特性,输入:javascript:alert('xss')
九、xss之js输出
输入查看源码,看到代码被单引号闭合过滤,遇到这种情况,有两种过滤方式,
单引号闭合:';alert(9)//
双引号闭合:";alert(9)//
输入 ';alert(9)//
:
总结
危害:
- 窃取敏感信息:攻击者可以通过XSS漏洞窃取用户的个人数据,如登录凭证、信用卡信息等。
- 会话劫持:攻击者可以盗取用户的会话令牌,进而冒充用户身份进行操作。
- 网页篡改:攻击者可以篡改网页内容,插入恶意代码或信息,损害网站声誉。
- 传播恶意软件:通过XSS漏洞,攻击者可以诱导用户下载恶意软件或点击恶意链接。
- 数据损坏:攻击者可能破坏或修改网站数据,导致服务中断或数据丢失。
- 声誉损害:XSS攻击可能导致用户对网站失去信任,损害网站和企业的声誉。
防护措施:
- 输入验证:对所有用户输入进行验证,确保输入数据符合预期格式。
- 输出编码:对输出内容进行编码,防止将用户输入作为HTML或JavaScript执行。
- 内容安全策略(CSP):实施CSP,限制页面可以加载和执行的资源,减少XSS攻击的风险。
- 使用安全的框架和库:采用支持XSS防护的框架和库,如OWASP的AntiSamy、JavaScript的DOMPurify等。
- 限制Cookie权限:使用httpOnly和secure标志保护Cookie,减少会话劫持的风险。
- HTTPS加密:使用HTTPS加密通信,防止中间人攻击。
- 教育和培训:提高开发者和用户对XSS攻击的认识和防范意识。
- 定期更新和打补丁:及时更新Web应用和服务器软件,修补已知的安全漏洞。
- 监控和日志记录:监控Web应用活动,记录异常行为,及时发现和响应XSS攻击。
- 实施访问控制:确保只有授权用户可以访问敏感数据或执行特定操作。