原理:跨站脚本攻击(全称Cross Site Scripting,为和CSS(层叠样式表)区分,简称为XSS)是指恶意攻击者在Web页面中插入恶意javascript代码(也可能包含html代码),当用户浏览网页之时,嵌入其中Web里面的javascript代码会被执行,从而达到恶意攻击用户的目的。XSS是攻击客户端,最终受害者是用户,当然,网站管理员也是用户之一。 XSS漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。
类型
反射型xss
1:标签 <script>JS代码</script>
2:伪协议[“假”协议]
小众协议,weixin://、weishi://(自己定义的协议)
javascript:
一般用法:<a href=javascript:alert(1)>123</a>
alert()为JavaScript中弹窗函数,如果弹窗说明JS代码被执行
3:事件
当前页面满足某事件,就是触发JS代码
事件是加在标签里面的
<img src=’#’ οnerrοr=alert(1) />
参考:https://www.runoob.com/jsref/dom-obj-event.html
https://www.w3school.com.cn/jsref/jsref_events.asp
存储型xss
存储型XSS又被称为持久性XSS,存储型XSS是最危险的一种跨站脚本。允许用户存储数据的WEB应用程序都可能会出现存储型XSS漏洞,当攻击者提交一段XSS代码后,被服务器端接收并存储,当再次访问页面时,这段XSS代码被程序读取响应给浏览器,造成XSS跨站攻击,这就是存储型XSS。
DOM型XSS
document.cookie 读取当前网页的Cookie [xss必备] document.lastModified 获得当前页面的最后修改时间 [识别伪静态必备] document.write 向文档中写文HTML或者JS代码 [Dom xss常见的存在方式]
DOM型常见的三种状态
document.write:
innerHTML:
eval :把字符串当代码执行 这里是获取锚点后的值然后放入eval