web安全-XSS注入

发布于:2025-09-01 ⋅ 阅读:(15) ⋅ 点赞:(0)

简单介绍xss

介绍

XSS作为OWASPTOP10之一,XSS被称为跨站脚本攻击(Cross-sitescripting),本来应该缩写为CSS,但是由于和CSS(CascadingStyleSheets,层叠样式脚本)重名,所以更名为XSS。XSS(跨站脚本攻击)主要基于javascript(JS)完成恶意攻击行为。JS可以非常灵活的操作html、css和浏览器,这使得XSS攻击的”想象”空间特别大。XSS通过将精心构造的代码(JS)代码注入到网页中,并由浏览器解释运行这段JS代码,以达到恶意攻击的效果。当用户访问被XSS脚本注入的网页,XSS脚本就会被提取出来。用户浏览器就会解析这段XSS代码,也就是说用户被攻击了。用户最简单的动作就是使用浏览器。上网,并且浏览器中有javascript解释器,可以解析javascript,然而浏览器不会判断代码是否恶意。也就是说,XSS的对象是用户和浏览器。微博、留言板、聊天室等等收集用户输入的地方,都有可能被注入XSS代码,都存在遭受XSS的风险,只要没有对用户的输入进行严格过滤,就会被XSS。XSS是-种经常出现在web应用中的计算机安全漏洞,也是web中最主流的攻击方式。XSS是指恶意攻击者利用网站提供的接口,没有对用户提交数据进行转义处理,或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去。使别的用户访问都会执行相应的嵌入代码。从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。

目前可以通过上waf,黑白名单等方式过滤掉一些,但依旧存在绕过方式。

危害

1.盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号或Cookie,攻击者可以冒充管理员的身份登录后台,获取恶意操纵后台数据的能力,包括读取、更改、添加、删除一些信息。
2.劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志、发送电子邮件等;(例如有些人的浏览器打开后会自动跳转到其它商家的页面,这种是因为下载渠道不干净被动过手脚,建议官网重下或自己手动清理)
3.发送广告或者垃圾信息。攻击者可以利用XSS漏洞植入广告,或者发送垃圾信息,严重影响到用户的正常使用。
4.网页挂马,进行恶意操作,例如任意篡改页面信息、删除文章等;
5.控制受害者机器向其它网站发起攻击;
6.传播跨站脚本蠕虫等。

xss产生原因

在HTML中常用到字符实体,将常用到的字符实体没有进行转译,导致完整的标签出现,在可输入的文本框等某些
区域内输入特定的某些标签导致代码被恶意篡改。

xss分类

xss的攻击方法主要分为三类,分别是反射型xss,存储型xss和基于的DOM的xsS。

反射型xss

反射型Xxss攻击(ReflectedXSS)又称为非持久性跨站点脚本攻击,它是最常见的类型的XSS。漏洞产生的原因是攻(临时攻击,一次性链接)
击者注入的数据反映在响应中。一个典型的非持久性XSS,包含一个带XSS攻击向量的链接。(即每次攻击需要用户
的点击)。临时的,攻击一次是以一次用java或者php写的代码。

存储型xss

存储型XSS(StoredXSS)又称为持久型跨站点脚本,它一般发生在XSS攻击向量(一般指XSS攻击代码存储在网站数据(构造数据存入数据库中,主要有人访问就触发)
库,当一个页面被用户打开的时候执行。每当用户打浏览器,脚本执行。持久的XSS相比非持久性XSS攻击危害性更大
因为每当用户打开页面,查看内容时脚本将自动执行。

DOM型xss

DOM,全称DocumentObjectModel,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式。

DOM型XSS主要是由客户端的脚本通过DOM动态地输出数据到页面而不是依赖于将数据提交给服务器端,而从客户端获得DOM中的数据在本地执行。

可能触发DOM型xss的属性

document.referer属性
window.location属性
location.href属性

构造XSS脚本

弹窗警告

此脚本实现弹框提示,一般作为漏洞测试或者演示使用类似SQL注入漏洞测试中的单引号,一旦此脚本能执行,也就意味着后端服务器没有对特殊字符做过滤<>/这样就可以证明,这个页面位置存在了XSS漏洞。(找输入框)

<script>alert('欢迎来钓鱼')</script>
<script> alert(1)</script>
<script> alert(document.cookie)</script>

页面嵌套

<iframestyle="overflow:hidden;
width:520px;height:40opx;position:fixed;left:50opx;top:4oopx;border:none;margin:opx;paddi
ng:0px;"src="http://192.168.21.129/"></iframe>

页面重定向

<script>window.location="https://mp.csdn.net/mp_blog/creation/editor?spm=1001.2014.3001.4503"</script>
<script>location.href="http://www.baidu.com"</script>

弹窗警告并重定向

<script>alert("请移步到我们的新站");location.href="http://www.github.com"</script>

使用图片标签

图像标签,有一定的隐蔽性

<img src="#”    onerror=alert('欢迎来钓鱼')>
<img src="#"    onmouseenter= alert(欢迎来钓鱼')>
<img src="#"    onmouseenter= alert(1)>

原本#号的位置应该是图片,但我们这里是为了让它报错,报错后执行我们后边条语句,报错事件onerror,鼠标事件onmouseenter通过鼠标去触发,还有其它触发事件。

编码绕过

字符编码
字符编码采用URL、Base64等编码、对IMG标签中onerror属性进行编码
HTML实体编码

<img src=x onerr0r="编码内容">
<img src=”#””onerror="alert('css')">

对连接地址进行URL编码

<A HREF="http://%77%77%77%2E%63%69%73%70%2E%63%6E">kankan</A>
<a href="http://www.cisp.cn">kankan</a>
<a href="javascript:alert('hack')">kankan</a>

<a href='javascript:alert(1)'>
<img src="#"  onclick="alert(1)">

XSS的防御及修复建议

对任何用户提交的任何数据都要经过编码或者转译。
配置黑白名单,限制用户输入。
配置waf


网站公告

今日签到

点亮在社区的每一天
去签到