XSS漏洞相关知识

XSS漏洞

以下大部分内容来源于这里

XSS漏洞发生在服务器,被攻击者主动触发

攻击者将恶意代码注入到服务器中
用户在没有防备的情况下访问服务器
服务器将含有恶意代码的网页响应给客户端
在客户端浏览器中触发恶意JS代码


PoC(Proof of Concept):验证和检测漏洞的存在的代码
EXP:漏洞的完整利用工具(EXP包含PoC,shellcode和payload)
shellcode:利用漏洞时,所执行的代码
payload:攻击载荷(在sqlmap中表示攻击的木棒,在msf中与shellcode类似,功能是建立与目标的连接)


一、反射型XSS

非持久性、参数型的跨站脚本,反射型XSS的JS代码在Web应用的参数(变量)中。提交的PoC会出现在页面keywords参数中。常发生在搜索框。

没有对输入的特殊字符进行转移或者进行过滤

GET是以url方式提交数据 POST是以表单方式在请求体里面提交

GET方式的XSS漏洞更加容易被利用,一般利用的方式是将带有跨站脚本的URL伪装后发送给目标;而POST方式由于是以表单方式提交,无法直接利用URL方式进行攻击

二、存储型XSS

持久性跨站脚本,持久性体现在XSS代码不是在某个参数(变量)中,而是写进数据库或文件等可以永久保存数据的介质中。通常发生能够在留言板等地方。

与反射型形成的原因一样,不同的是,构成更加持久的危害,因此也称为“永久型”XSS。

三、DOM型XSS

其特殊的地方就是payload在浏览器本地修改DOM树而执行,并不会传到服务器上,这就使得DOM XSS比较难以检测。

扫描二维码关注公众号,回复: 11078592 查看本文章

不涉及到后端代码,所有的操作和处理都在前端

修改了DOM树,浏览器会重新渲染页面


常用验证

提交的代码,被当作字符串输出在HTML页面中,浏览器会根据< script >标签识别为JS语句,并执行。
< script > alert(/xss/) < /scritp >
< script > confirm(‘xss’) < /scritp >
< script > prompt(‘xss’) < /scritp >

伪协议:使用"javascript:"伪协议的方式构造xss:
提交参数< a href=“javascript:alert(‘xss’)”>touch< /a >,然后点击超链接,即可触发xss
也可以使用img标签的伪协议

事件驱动
事件种类:windows,form,keyboard,mouse,media


XSS的变形

构造XSS代码进行各种变形,以绕过XSS过滤器的检测。

1. 大小写转换:可以将payload进行大小写转换

< Img sRc=’#’ Onerror=“alert(/xss/)” />
< a hREf=“javaScript:alert(/xss/)”>click me

2. 引号的使用:HTML语言对引号的使用不敏感

< img scr="#" οnerrοr=“alert(/xss)” />
< img scr=‘#’ οnerrοr=‘alert(/xss)’ />
< img scr=# οnerrοr=alert(/xss) />

3. [/]代替空格

<Img/sRc=’#’/Onerror=“alert(/xss/)” />

4. 回车

在一些位置添加Tab(水平制表符)和回车符,来绕过关键字检测
< a href=“j
avascript:alert(/xss/)”>click me

5. 对标签属性值进行转码绕过过滤

字母 a
ASCII码 97
十进制 &#97
十六进制 &#x61

Tab &#9
换行 &#10
回车 &#13

可以将以下字符插入到头部位置
SOH &#01
STX &#02

6. 拆分跨站

< script>z=‘alert’
< script>z=z+’(/xss/)’
< script>eval(z)
//eval表示执行函数,拆分成几段最后触发

7. 一次过滤的双写绕过

<scr< script>ipt>

8. 使用注释进行干扰
代码中插入< ! --test-- >


XSS常见防范措施

总的原则:输入做过滤,输出做转义
herf输出防御:只允许http,htpps,其次是在进行htmlspecialchars处理

使用xss Filter过滤用户提交的有害信息

1. 输入验证
输入验证就是对用户提交的信息进行有效验证,仅接受制定长度范围内的,采用适当格式的内容提交,阻止或者忽略除此之外的其他任何数据

2. 数据消毒
过滤和净化掉有害的输入

3. 输出编码
HTML编码主要是用对应的HTML实体代替字符

4. 黑白名单
输入过滤和输出编码,都是针对数据信息进行黑、白名单式的过滤
黑名单:非允许数据;白名单:允许的数据

防御DOM-XSS
避免客户端文档重写、重定向或其他敏感操作

                           雪碧可乐_2020/4/23_16:52
发布了5 篇原创文章 · 获赞 0 · 访问量 58

猜你喜欢

转载自blog.csdn.net/weixin_44940180/article/details/105710752