Xss漏洞
1.漏洞简介
XSS又叫CSS(Cross Site Script)跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的
xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数
2.攻击原理
利用网页开发时web应用程序对用户输入过滤不足导致将恶意代码注入到网页中,使用户浏览器加载并执行恶意代码
3.漏洞危害
-
窃取cookie
因为大部分人喜欢将密码储存到浏览器当中,所以黑客一般渗透的时候就会先来浏览器查看已保存的cookie 来盗取各种用户账号
-
未授权操作
js特性很强大,黑客会直接代替用户在html进行各类操作。比如劫持会话,刷流量,执行弹窗广告,还能记录用户的键盘输入
-
传播蠕虫病毒
4.xss的攻击载荷
4.1script标签
<script> 标签是最直接的 XSS 有效载荷,脚本标记可以引用外部的 JavaScript 代码,也可以将代码插入脚本标记中
基础的xss注入都是使用<script> 标签
4.2img标签
<img> 标签定义 HTML 页面中的图像
在题目中将双标签过滤时可以用到这个单标签
4.3input标签
<input> 标签规定了用户可以在其中输入数据的输入字段。
5.xss漏洞分类
5.1反射型xss
非持久化,且需要使用钓鱼等手段欺骗用户点击恶意链接才能触发恶意代码。一般反射型 XSS 会出现在搜索页面,且大多数是用来获取用户的 cookie 信息的
5.2存储型xss
存储型的 XSS,最大的特点是可持久化,因为在过滤条件差的情况下,存储型的 XSS 的恶意代码会直接被保存在服务器端的数据库中。而这个恶意代码被服务器读出输出到用户端的Web页面时,恶意代码会执行,从而达到攻击的目的
5.3DOM型xss
DOM 型的 XSS 注入是在前端 JavaScript 调用 DOM 元素时可能产生的漏洞,可能触发 DOM 型 XSS 的 JavaScript 代码,攻击流程大概为:
document.referer 返回跳转或打开到当前页面的页面的URI
window.name 可设置或返回存放窗口的名称的一个字符串
location 可以设置窗口跳转或者返回当前窗口的地址
innerHTML 内嵌HTML代码
documen.write 页面内写入字符
6.xss—lab靶场实践
6.1level 1
打开靶场后即可看到欢迎用户test,以及url中的get传参
尝试改变参数查看回显
发现可以成功注入,直接构建payload
<script>alert(/zbpyy/)</script>
完成
6.2level 2
进入第二关后查看好像也是get传参,尝试直接注入
发现注入失败
查看源码后发现我们的输入被闭合在了双引号中
所以我们需要先将双引号""进行闭合,构建payload
"><script>alert(/zbpyy/)</script>
注入成功
6.3level 3
进入第三关依旧是尝试基础直接注入
依旧是注入失败,查看源码
发现我们的输入<>都被转义为了>,以及采用了单引号’'闭合
所以我们需要构建一个不需要<>的payload,同时注意考虑单引号闭合
' onblur='alert(123)'
成功注入
6.4level 4
尝试基础直接注入
依旧是注入失败,查看源码
发现<>直接被替换为了空字符
所以依旧是使用不需要<>的payload,同时注意考虑从上一关的单引号闭合变为了双引号
" onblur="alert(123)
注入成功