实战 | 记一次XSS绕过

admin 2025年1月11日14:19:51评论17 views字数 1588阅读5分17秒阅读模式

本文仅作为技术讨论及分享,严禁用于任何非法用途。

前言

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

正文

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

实战 | 记一次XSS绕过

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

实战 | 记一次XSS绕过

实战 | 记一次XSS绕过

实战 | 记一次XSS绕过

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

实战 | 记一次XSS绕过

事件用法可以参考 HTML 事件属性

https://www.runoob.com/tags/ref-eventattributes.html

onshowontoggle 事件因为要 <menu> 元素或者 <details> 元素等才能触发,而本例是有拦截尖括号的,所以无法使用,而 oninvalid 事件需要在 <form> 内,而本例中的注入点恰好是在在 <form> 内,那么就选用 oninvalid 作为触发事件测试

先看一下 oninvalid 事件的触发样例

<html><body><form id="wapFrom" action="/" method="post">            查询号码:<input type="text" pattern="a"  oninvalid="alert(1)" /><input type="submit" value="Submit"></form></body></html>

oninvalid 事件会以正则表达式判断 pattern 属性的值,这里是 a,那么当在 input 框输入的值不是全等于 a 的时候,并且被 submit 提交,就会触发 oninvalid 事件

本地保存以上代码为 HTML 文件,再使用浏览器打开。经过测试,随意输入字符串,点击提交后可以触发 xss

实战 | 记一次XSS绕过

绕过事件拦截

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

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

实战 | 记一次XSS绕过

实战 | 记一次XSS绕过

绕过 disable 属性

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

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

实战 | 记一次XSS绕过

绕过 js 函数拦截

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

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

实战 | 记一次XSS绕过

实战 | 记一次XSS绕过

小结

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

后记

文章在 t00ls 发布后有师傅问道”input 中 先是 text 然后 submit 最后的 input 应该显示的还是 text,图中的 form 中没有 submit 最后是咋触发的…”,想了下这点确实没特地提出来,实际上 xss 插入的 type 即是 text 又是 submit,保存以下代码为 HTML 可自行测试,在文本框中按回车即可触发。

<form action=""><input type="text" value="xss" oninvalid=a=alert;a(1) pattern="a" type="submit" a=" disabled="disabled" style="margin-top: 1px;"></form>

文章来源于:r0yanx.com

作者:r0yanx

如有侵权,请联系删除

原文始发于微信公众号(菜鸟学信安):实战 | 记一次XSS绕过

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月11日14:19:51
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   实战 | 记一次XSS绕过https://cn-sec.com/archives/1127988.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息