常见html中的绕过标签,技巧集合

本文详细记录了HTML中的XSS绕过技术,包括标签属性中的执行、样式表编码、浏览器差异以及XSS防御策略。重点讨论了如何通过8/10/16进制转换、expression和@import等方式绕过过滤,并列举了不同浏览器对引号、标签和过滤器的支持差异。同时,还提到了与CSRF的区别和XSS防护措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在学习编码绕过时由于数量多,类型相似,不太容易记得住,记得全,故做此记录。

1|10x01 Html标签属性中执行

简单了解:

Html标签属性中的XSS问题多属于javascript伪协议
常见的属性有:

  • src
  • lowsrc
  • dynsrc
  • url
  • href
  • action
  • onload
  • onunload
  • onmouseover
  • onerror
  • 各种on开头的事件

PS:此处可不加括号,如onclick=javascript:alert(1),各类教程里常见的<img src=javascript:alert(1)></img>Chrome、Firfox已失效,IE测试成功。

在Html标签中,许多标签具有执行javascript的权利,当服务器存在过滤时,我们可以尝试通过以下编码方法绕过:

  • 8/10/16进制转换([.][&#][&#x])
  • 利用javascript:String.fromCharCode(xx,xx,xx......) [xx为编码的字符串的ASCII码]
  • JScript Encode [IE] JS fuck等
  • data:text/html;bbase64,xxxxxxx [IE下无效,Chorme、Firefox下均属于空白域,无法获取信息,不过可用作CVE攻击]
  • data:text/html;bbase64,xxxxxxx [IE下无效,Chorme、Firefox下均属于空白域,无法获取信息,不过可用作CVE攻击]

1|20x02 在<script></script>

直接在script标签里执行的情况,我们通常分为以下几种利用方式:

  • 直接导入远程XSS平台脚本
  • 直接在<></>中写上自定义攻击脚本,如生成img标签

关于<></>中可用:

1) 单个拆开编码成ASCII

 

eval(String.fromCharCode())

2) 使用eval()执行16进制转换后的代码

 

eval(\u0064\u0078......) eval(\x64\x78......)

1|30x03 在样式表中的编码

样式表中可用expression和@import来执行js代码,此方法可进行适当的编码转换。
PS:仅在IE8.0之前的版本。

1) expression

 

全角字符: <div style=xss:expression(alert(1))>

 

十六进制 <div style=xss:\0065xpression(alert(1))>

 

/**/注释 [Javascript中也行] <div sty/**/le=x/**/ss:\0065xpre/**/ssio/**/n(al/**/ert(1))>

2) @import

 

\和结束符\0会被浏览器忽略 @im\po\rt jav\ascr\ipt:al\ert(1) @im\00po\0rt jav\00asc\0000ript:a\00lert(1)


2|0浏览器差异

简单记录常见的浏览器差异造成的XSS

2|10x01 引号的差异

只有IE支持反引号`` `

2|20x02 标签的差异

  • data协议执行代码是在Chrome下执行
  • Chrome下srcdoc利用:<iframe srcdoc="&lt;script&gt;alert(1)&lt;/script&gt;"></iframe>
  • IE下<img src=javascript:alert(1)>
  • 只要火狐支持E4X

2|30x03 过滤器差异

Chrome能拦截大多数反射型XSS,Firefox次之,IE最次

3|0浏览器异常解析BUG产生XSS漏洞

4|0关于调用document

在刚开始学习XSS的时候总是想千方百计的想用javascript调用dom对象,比如document.cookie,却不知这个只能在javascript域[伪协议或标签内]范围内。

5|0小知识点

一、src等属性在引入时如果漏洞网站协议名于xss平台相同,即可省略去,如:<img src=//www.baidu.com />
二、svg标签属于xml而不属于html
三、关于Cors跨域:使用Ajax跨域时默认是不允许带上会话数据的,不过可以在XSS平台通过设置返回的请求头Access-Control-Allow-Credentials: true,并且需要设置xhr的withCreadential属性值为true,注意此时返回的Access-Control-Allow-Origin不能设置为通配符true。
四、优先级:function xxx(){}形式定义的函数 -> == -> &
五、使用img等合法标签跨域可以带上会话信息
六、除javascript外还有vbscript、actionscript等
七、P3P协议仅仅是IE浏览器支持,通常是Hacker域名通过iframe或script等载入存在XSS漏洞的网站

6|0与CSRF的区别

XSS的恶意请求伪造与CSRF极为相似,两者的差别为:

  • 后者发出的伪造请求可为其他站点发出的,而前者都是存在XSS漏洞的站点发出的
  • CSRF是XSS无法替代的
  • CSRF可以无Javascript参与,及在黑客的网站上使用img等标签发送带Cookie(自带)的跨域请求。

7|0关于XSS防御

7|10x01 输出Html标签属性

如:<input class='xxx' value="{输出}"> 这里的输出如果过滤/转义了",便不存在XSS漏洞了,因为这里的value属性不能执行js代码。

7|20x02 输出在注释

一定要过滤换行符!!

7|30x03 输出在样式表

过滤expression和@import还有外部图片的引用

7|40x04 字符集

开头设定好字符集为 UTF-8

7|50x05 Cookie盗取

设置好path、开启http_only、防止调试信息泄露和Apache400漏洞、使用Session

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值