前言
反射型XSS,通过web站点漏洞,向客户端交付恶意脚本代码,这些代码可以被浏览器成功的执行,从而实现对客户端的攻击;
反射型XSS一般可以盗取客户端cookie,将客户端重定向到第三方网站;
LOW
源代码
1 |
|
分析:GET后的参数直接打印到HTML页面中,未对输入的内容进行过滤,导致页面中可以执行JS脚本;
XSS攻击测试
判断是否存在XSS漏洞
输入框中输入
<Script>alert(123)</ScrIpt>
,弹出弹框,表明存在XSS注入漏洞;此时已经向页面中写入JS代码;
输入
<scRIpT>window.location="https://www.baidu.com/"</ScRipT>
,重定向页面到百度首页;输入
<sCript>alert(document.cookie)</scRipt>
,弹出cookie数据;
MEDIUM
源代码
1 |
|
分析:GET后的参数直接打印到HTML页面中,只使用str_replace函数过滤了<script>
参数,可以进行大小写转换,插入JS脚本;
XSS攻击测试
攻击过程与LOW级别相同;
只删除<script>
标签的情况是很容易绕过:
- 使用双写绕过,输入
<scr<script>ipt>alert(document.cookie)</script>
- 使用大小写绕过,输入
<sCript>alert(document.cookie)</script>
- 输入其他标签,输入
<IMG src=1 onerror=alert(document.cookie)>
HIGH
源代码
1 |
|
分析:采用preg_replace
函数执行一个正则表达式的搜索和替换,其中/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i
是正则表达式,(.*)
表示贪婪匹配,/i
表示不区分大小写,所有关于<script>
标签均被过滤;
XSS攻击测试
可以使用IMG标签进行注入,输入<IMG src=1 onerror=alert(document.cookie)>
,成功获得cookie值;
IMPOSSIBLE
源代码
1 |
|
分析:使用htmlspecialchars
函数把预定义的字符&、”、’、<、>转换为 HTML 实体,防止浏览器将其作为HTML元素。还加入了Anti-CSRF token
,防止结合csrf
攻击;
使用IMG标签进行注入后显示的源码中的预定义字符已经被转换为HTML实体;