wakemeup
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
概述
Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;
XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
输出转义:根据输出点的位置对输出到前端的内容进行适当转义;
反射型xss(get)
输入了kobe
GET类型传参,可以在url输入恶意语句:
<script>alert("test")</script>
查看结果:
反射性xss(post)
1.首先login: admin-123456
2.POST类型传参,在输入框中输入恶意语句
<script>alert("test")</script>
结果:
存储型xss
直接在留言板输入xss语句
<script>alert(111)</script>
提交查看效果
DOM型xss
写入xss语句之后没有效果,按F12检查
发现js进行拼接创建DOM对象
闭合然后使用事件类型:
'><img src=1 onerror=(alert(111))>
DOM型xss-x
在输入框中提交的内容出现在了URL当中本关输入payload之后需要点击链接“有些费尽心机想要忘记的事情,后来真的就忘掉了”才能触发domxss()函数,从而触发XSS
沿用之前的payload
'><img src=1 onerror=(alert(222))>
xss盲打
(所谓盲打就是这个XSS能否触发我们是不知道的,如果可以触发,则管理员中招)
见框就写xss语句看了提示登录后台查看,是否可以触发弹窗
未能触发
用事件来触发
<img src=1 onerror=alert('xss')>
成功触发
这里涉及到了pikachu xss 后台的初始化(类似第一次登录pikachu平台的初始化,只不过文件的路径在pkxss之下)
xss之过滤
试一试大小写绕过
CRIpt>alert("test")</sCRIpt>
再试试双写绕过
<scr<script>ipt>alert("test")</scr<script>ipt>
此路不通
换一个,用img标签试试
<img src=1 onerror=alert(111)>
xss之htmlspecialchars
先输一个试试木有弹窗
百度一下htmlspecialchars函数
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
预定义的字符是:
& 成为 &
" 成为 "
' 成为 '
< 成为 <
> 成为 >
可用引号类型
ENT_COMPAT:默认,仅编码双引号
ENT_QUOTES:编码双引号和单引号
ENT_NOQUOTES:不编码任何引号
输入 '"<>& 来看看是否完全转义:
payload被转义成实体符号:
不管是a标签内还是href属性内,左右尖括号被编码了,因此闭合标签是不行了。仔细一看,发现单引号居然没有被html编码。
构造payload: ’ οnclick='alert(777),第一个单引号闭合href属性的的双引号,第二个单引号闭合href属性闭合的双引号(点击提交之后,还要点击这个记录才能触发):
xss之href输出
输一个试试看看变化
经测试,单双引号都被过滤,这里使用js伪协议绕过,构造payload:
javascript:alert(777)
xss之js输出
输入XSS payload,查看网页源码,发现在js标签内,那就闭合标签
构造payload:
’</script><script>alert(1)</script>
xss的测试方法总结:
1.在目标站点上找到输入点,比如查询接口,留言板等
2.输入一组“特殊字符(单引号,双引号,尖括号等)+唯一识别字符(字母数字组合)”,点击提交后,查看返回的源码,是否有对应的处理
3.通过搜索定位到唯一识别字符,结合唯一识别字符的前后语法确认是否可以构造执行js的条件(即构造闭合)
4.提交构造的脚本代码(以及各种绕过姿势),看是否成功执行,如果成功执行说明存在xss漏洞
注意点:
1.一般查询接口容易出现反射性xss,留言板容易出现存储型xss
2.后台可能存在过滤措施,构造的script可能被过滤而无法生效 或者浏览器环境限制了执行
3.通过变化不同的script,尝试绕过后台过滤机制
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)