web安全-XSS注入

简单介绍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

相关推荐
合作小小程序员小小店10 分钟前
web网页开发,在线%商城,电商,商品购买%系统demo,基于vscode,apache,html,css,jquery,php,mysql数据库
开发语言·前端·数据库·mysql·html·php·电商
顾安r11 分钟前
11.8 脚本网页 塔防游戏
服务器·前端·javascript·游戏·html
草莓熊Lotso18 分钟前
C++ 方向 Web 自动化测试实战:以博客系统为例,从用例到报告全流程解析
前端·网络·c++·人工智能·后端·python·功能测试
fruge26 分钟前
Canvas/SVG 冷门用法:实现动态背景与简易数据可视化
前端·信息可视化
一 乐30 分钟前
旅游|内蒙古景点旅游|基于Springboot+Vue的内蒙古景点旅游管理系统设计与实现(源码+数据库+文档)
开发语言·前端·数据库·vue.js·spring boot·后端·旅游
驯狼小羊羔41 分钟前
学习随笔-require和import
前端·学习
excel1 小时前
🚀 从 GPT-5 流式输出看现代前端的流式请求机制(Koa 实现版)
前端
凸头1 小时前
Spring Boot接收前端参数的注解总结
前端·spring boot·后端
爱吃甜品的糯米团子1 小时前
JavaScript 正则表达式:选择、分组与引用深度解析
前端·javascript·正则表达式
excel1 小时前
Vue SSR 编译器源码深析:ssrTransformShow 的实现原理与设计哲学
前端