XSS漏洞

跨站脚本攻击— XSS ( Cross Site Script ),是指攻击者通过在 Web 页面中写入恶意脚本,造成用户在浏览页面时,控制用户浏览器进行操作的攻击方式。假设,在一个服务端上,有一处功能使用了这段代码,他的功能是将用户输入的内容输出到页面上,很常见的一个功能。

XSS 漏洞原理

如果这里输入的内容是一段经过构造的js 。那么在用户再次访问这个页面时,就会获取使用 js 在用户的浏览器端执行一个弹窗操作。通过构造其他相应的代码,攻击者可以执行更具危害的操作。

反射型

非持久型,常见的就是在 URL 中构造,将恶意链接发送给目标用户。当用户访问该链接时候,会向服务器发起一个 GET 请求来提交带有恶意代码的链接。造成反弹型XSS 主要是 GET 类型,此类型当前不和数据库交互,直接由前端进行反馈。

存储型

持久型,常见的就是在博客留言板、反馈投诉、论坛评论、将恶意代码和正文都存入服务器的数据库。每次访问都会触发恶意代码。 例如:
 

<srcipt>alert(/xss/)</srcipt>

DOM 型

DOM 型是特殊的反射型 XSS 在网站页面中有许多页面的元素,当页面到达浏览器时浏览器会为页面创建一个顶级的 Document object 文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过 JS 脚本对文档对象进行编辑从而修改页面的元素。
也就是说,客户端的脚本程序可以通过 DOM 来动态修改页面内容,从客户端获取 DOM 中的数据并在本地执行。基于这个特性,就可以利用 JS 脚本来实现 XSS 漏洞的利用。
 

?default=English #<script>alert(/xss/)</script>

XSS 危害

XSS ( cross-site script )跨站脚本自 1996 年诞生以来,一直是 OWASP 评为十大安全漏洞中第
二威胁漏洞。 2011 年 6 月份,国内信息发布平台“新浪微博”爆发 XSS 蠕虫攻击,该蠕虫漏洞仅持续 16 分钟,感染用户近 33000 个,危害十分严重。 XSS 最大的特点就是能注入恶意的代码到用户浏览器的网页上,从而达到劫持用户会话的目的。

盗取管理员 cookie

盗取管理员的 cookie 然后登陆后台,获取到后台权限,相当于管理员登录到后台,可对后台进行数据下载、 WebShell 上传等高危操作。

XSS 蠕虫攻击

可以构成几何的速度进行传播 XSS 代码,获取大部分人的权限。一般配合 CSRF 使用。

常用 XSS 语句

• <script>alert(/xss/);</script> // 经典语句
• <BODY ONLOAD=alert('XSS')>
• <img src=x onerror=alert(1)>
• <svg onload=alert(1)>
• <a href = javasript:alert(1)>

XSS 绕过与防御

本节主要介绍 XSS 攻击方法绕过,通过对XSS 攻击 payload 进行编码和实体编码,插入到代码当中,绕过后端的限制,最终触发 XSS 漏洞。

编码绕过

JS 编码

JS不同进制情况下的构成:三个八进制数;如果不够,前面补“0”,加两个十六进制数;如果不够前面补“0”,加四个十六进制数;如果不够前面补“0”控制字符。

HTML实体编码

HTML编码是以“&”开头和以 “;”结尾的字符串。使用实体代替解释为HTML代码的保留字符

(&  < , "),不可见字符(如不间断空格)和无法从键盘输入的字符(如©)。

URL编码

URL编码虚考虑HTML的渲染方式,选择合适的编码方式进行测试。列如,%27。

ASCII编码

示例代码如下。

<img src="x" onerror="eval (String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59)) ">

Unicode编码

示列代码如下。

img src=x onerror=eval ('\*611x6c\x651x721x74\x281x27\x781x731x73\x27\x291>
Base64绕过
<a href="data: text/HTML;base64, PGItZyBzcmM9eCBvbmVycm9yPWEsZXJ0KDEpPg==">

其他方式绕过

• 过滤空格、 CSP 绕过、过滤函数、过滤括

• 注意:有些浏览器会过滤掉一些 js 脚本,
在测试的时候需要关闭对 JavaScript 的检
测。

漏洞防御

过滤、 HTTPOnly 、 CSP (Content
Security Policy) 、 PHP 实体化、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

'陳平安'

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值