安全矩阵

 找回密码
 立即注册
搜索
查看: 2159|回复: 0

记一次 XSS 实战绕过

[复制链接]

855

主题

862

帖子

2940

积分

金牌会员

Rank: 6Rank: 6

积分
2940
发表于 2021-12-20 16:15:32 | 显示全部楼层 |阅读模式
原文链接:记一次 XSS 实战绕过

前言

在某次演练中,发现了一处 XSS 注入点,位于 input 标签内,但是它拦截了大部分事件且拦截尖括号,并且标签内有 disable,导致无法利用,本文记录一下绕过过程。
正文

首先简单看一下参数输出点,可以看到是在 input 标签内

简单测试,双引号不拦截,尖括号拦截



不能用尖括号的话,看来只能通过 js 事件触发了,fuzz 了一下 js 事件,看到还是有几个事件还能用

事件用法可以参考 HTML 事件属性
onshow、ontoggle 事件因为要 <menu> 元素或者 <details> 元素等才能触发,而本例是有拦截尖括号的,所以无法使用,而 oninvalid 事件需要在 <form> 内,而本例中的注入点恰好是在在 <form> 内,那么就选用 oninvalid 作为触发事件测试
先看一下 oninvalid 事件的触发样例
  1. <html>
  2. <body>
  3. <form id="wapFrom" action="/" method="post">
  4.             查询号码:
  5. <input type="text" pattern="a"  oninvalid="alert(1)" />

  6. <input type="submit" value="Submit">

  7. </form>
  8. </body>
  9. </html>
复制代码


oninvalid 事件会以正则表达式判断 pattern 属性的值,这里是 a,那么当在 input 框输入的值不是全等于 a 的时候,并且被 submit 提交,就会触发 oninvalid 事件
本地保存以上代码为 HTML 文件,再使用浏览器打开。经过测试,随意输入字符串,点击提交后可以触发 xss

绕过事件拦截
那么现在可以开始构造绕过 payload 了,因为需要 submit 提交,所以添加 type="submit"

xss" oninvalid=console.log(1) pattern="a" type="submit"


绕过 disable 属性

因为标签内有 disabled="disabled",导致标签被禁用,所以需要屏蔽该元素,但是双斜杠 // 以及 <!-- 因为存在 < 也被拦截,这里使用 a= 绕过,拼接后变成 a=" disabled="disabled",浏览器就会把 " disabled=" 当做属性 a 的值,从而绕过标签禁用,所以 payload 修改为:

xss" oninvalid=console.log(1) pattern="a" type="submit" a=

绕过 js 函数拦截

因为直接 oninvalid=alert(1) 会被拦截,使用变量绕过函数拦截,把 alert(1) 拆分为 a=alert;a(1) 进行绕过,最终 payload 为:

xss" oninvalid=a=alert;a(1) pattern="a" type="submit" a=


小结

本文通过实际案例介绍了 3 个 xss 绕过小技巧,如有更好的方法,请各位师傅不吝赐教。
后记

文章在 t00ls 发布后有师傅问道”input 中 先是 text 然后 submit 最后的 input 应该显示的还是 text,图中的 form 中没有 submit 最后是咋触发的…”,想了下这点确实没特地提出来,实际上 xss 插入的 type 即是 text 又是 submit,保存以下代码为 HTML 可自行测试,在文本框中按回车即可触发。
  1. <form action="">
  2. <input type="text" value="xss" oninvalid=a=alert;a(1) pattern="a" type="submit" a=" disabled="disabled" style="margin-top: 1px;">
  3. </form>
复制代码




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-4-23 11:09 , Processed in 0.017861 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表