突破xss字符限制执行js代码

本文探讨如何在存在XSS字符限制的情况下,利用HTML上下文、URL中的数据、JavaScript上下文以及浏览器特性执行任意JavaScript代码。通过eval、document.URL、location.href等方法,结合document.referrer、clipboardData和window.name等特性,突破长度限制,实现XSS攻击的有效利用。
摘要由CSDN通过智能技术生成

一、综述

有些XSS漏洞由于字符数量有限制而没法有效的利用,只能弹出一个对话框来YY,本文主

要讨论如何突破字符数量的限制进行有效的利用,这里对有效利用的定义是可以不受限制执
行任意JS。对于跨站师们来说,研究极端情况下XSS利用的可能性是一种乐趣;对于产品安全
人员来说,不受限制的利用的可能是提供给开发人员最有力的证据,要求他们重视并修补这些
极端情况下的XSS漏洞。

突破的方法有很多种,但是突破的思想基本都一样,那就是执行可以控制的不受限制的数

据。

二、突破方法

2.1 利用HTML上下文中其他可以控制的数据

如果存在XSS漏洞的页面HTML上下文还有其他可以控制的数据,那么可以通过JS获得该数

据通过eval或者document.write/innerHTML等方式执行该数据,从而达到突破XSS字符数量限
制的目的,下面例子假设div元素的内部数据可以控制,但是该数据已经被HTML编码过:

–code-------------------------------------------------------------------------

可控的安全的数据

<limited_xss_point>alert(/xss/);</limited_xss_point>

由于XSS点有字符数量限制,所以这里只能弹框,那么我们可以把XSS的Payload通过escape

编码后作为安全的数据,输出到可控的安全数据位置,然后在XSS点执行可控的安全数据:

–code-------------------------------------------------------------------------

alert%28document.cookie%29%3B

<limited_xss_point>eval(unescape(x.innerHTML));</limited_xss_point>

长度:28 + len(id)

由于x内部的数据没有字符数量的限制,那么从而可以达到执行任意JS的目的。

2.2 利用URL中的数据

如果页面里不存在上一节所说的可控HTML上下文数据怎么办?有些数据是我们无条件可

控的,第一个想到的就是URL,通过在URL的尾部参数构造要执行的代码,然后在XSS点通过
document.URL/location.href等方式获得代码数据执行,这里假设代码从第80个字符开始到
最后:

–code-------------------------------------------------------------------------
http://www.xssedsite.com/x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值