前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【XSS漏洞】浅析XSS脚本注入点

【XSS漏洞】浅析XSS脚本注入点

作者头像
一名白帽的成长史
发布2019-10-08 15:07:08
2.6K0
发布2019-10-08 15:07:08
举报

Hello,各位小伙伴,依旧是晚上好~~

今天跟大家分享的课题是,当我们进行XSS脚本注入时,在不同的注入点进行注入,会产生不同的结果,那么这到底是为什么呢?不同节点,我们又该用什么针对性的插入方法呢?

且听我细细道来~

Part.1

HTML标签之间

情况一:

对于大多数HTML标签而言,如果插入点就在标签之间,那么是可以直接运行js脚本的,如下:

此处我们可以直接插入js脚本,如:

<script>alert(1)</script>,插入后代码如下:

不过这种情况应该比较少见,大多数开发者都会对前端代码进行优化,避免出现这么直白的漏洞点。

情况二:

对于<title>标签,会对标签之间的内容进行htmlencode编码,使其转码为实体编码,无法作为js代码执行,如下:

我们依旧直接注入js脚本,例如

<script>alert(1)</script>,插入后代码如下:

会出现js代码正常显示,但并不会执行的情况:

面对这种情况,我们是不是就无法插入了呢?

既然<title>标签不行,那么我们可以把<title>标签给闭合了,插入</title><script>alert(1)</script>,此时可以成功执行js脚本,插入后代码如下:

以下标签均包含htmlEncode功能,在插入js代码时,我们需要注意关闭标签。

Part.2

HTML标签之内

情况一:

插入点在value值内,如下:

这种情况下,js代码也是无法执行的,我们需要让js代码跳出value值,并且想办法执行。

方法一:闭合value属性,并使用onmouseover这种可以直接执行js代码的属性。插入 " onmouseover=alert(1),插入后代码如下:

当我们将鼠标移动到输入框时,js代码就会执行:

方法二:闭合value属性,同时也闭合标签,插入

"><script>alert(1)</script>,插入后代码如下:

那么以上两种方法,哪种更好呢?

方法一需要鼠标覆盖才能执行,但方法二<script>标签更容易被过滤。

情况二

当type类型在前,且为hidden型时,如下:

这种情况,就无法使用onmouseover的方法了,因为整个input标签的内容都无法显示。

但我们依然可以使用关闭标签的方法,插入

"><script>alert(1)</script>,插入后代码如下:

当type类型在value后,为hidden时,如下:

HTML代码有一个特性,当标签中存在两个type属性时,第二个type属性就会失效,因此我们只要插入一个type="text",问题就容易解决了。

插入" onmouseover=alert(1) type="text 即可:

又或者插入:" /><script>alert(1)</script>

Part.3

可执行js代码的情况

情况一:

在src/href/action等属性内

以上属性可以直接执行JavaScript伪协议,因此我们可以直接输入:JavaScript:alert(1)

在on*事件内:

可直接输入alert(1),如下:

情况二:

插入点在JavaScript代码中:

我们可以直接闭合掉<script>标签,输入如下:

</script><script>alert(1)</script>//

当然也可以输入";alert(1)// 仅仅闭合a属性。

Peace !

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一名白帽的成长史 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档