xss live学习总结

朋友组织了一场xss live,安全一直是开发中不可忽视的一部分。而xss作为web开发中最常见的攻击手段,防范是必然的。基于web浏览器tricksJavaScript的发展npm等开源项目漏洞web注入等会让开发者越来越防不胜防。

本次总结基于耗子的xss-demo,以及自己对xss的理解和知识的吸收。感兴趣的同学可以先去试试,这里就不在累赘提供答案了。 欢迎探讨更多Web安全相关话题。

插入执行标签

  • script
  • img onerror触发
  • iframe srcdoc触发

标签等提前闭合(截断)

  • 如在富文本, input, textarea, 可编辑div等,对应xss-demo 0x01, 0x02

  • style标签

1
2
3
<style>
</style ><script>alert(1)</script>
</style>
  • 注释提前闭合0x05

    1
    --!><script>alert(1)</script>
  • input type重写0x06

input的type,在type之前可以重写为image,通过onerror注入

ES6 tag标签

1
<script>alert`1`</script>

转义字符仍可执行

  • script标签可执行 base64的html代码片段
  • onerror可执行 转义为 html 10进制, 16进制的代码片段
  • url转义为 html 10进制, 16进制 仍可执行, url的定义可获取其他域下的资源文件
1
scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]

svg不闭合也执行

查看 0x07

正则替换不靠谱

  • 正则替换 0x0C
  • 正则命中 0x0E
  • //追加执行,正则替换失效 0x0F

防护

这样总结对我更好的理解,也明白为什么最后是通过替换不同的字符来做处理。 Web安全路很长,需要持续关注。