DVWA系列之20 反射型XSS分析

简介:

我们首先来分析反射型的XSS。将安全级别设为low,然后选择XSS reflected,在文本框中随意输入一个用户名,提交之后就会在页面上显示。从URL中可以看出,用户名是通过name参数以GET方式提交的。

wKiom1Z92mWhXBHAAACkHLj_aG0800.jpg

查看low级别的网页代码,可以看到这里对用于接收用户数据的name参数没有进行任何过滤,就直接在网页中输出,因而造成了XSS漏洞。

wKiom1Z92nCAtFMLAAAwb9KNMRo663.jpg

我们输入一段最基本的XSS语句来实现弹框:“<script>alert(‘hi’)</script>”:

wKioL1Z92pDyhm18AACctOhZjJA137.jpg

此时查看网页源文件,可以看到我们所输入的脚本被嵌入到了网页中。

wKiom1Z92oOBm9sKAAASnemFpv8578.jpg

再输入一段语句来弹出cookie:“<script>alert(document.cookie)</script>”。

wKiom1Z92o2y6Aw2AADE_ExAQ1U559.jpg

接下来再查看medium级别的XSS源码,这里在输出name参数中的数据之前,先利用str_replace()函数进行了处理,处理的目的是将<script>替换成空值。

wKioL1Z92q7TK25uAAC-tw5qEEw744.jpg

但是这个过滤处理实在是太简单了,首先我们只要使用大写的<SCRIPT>就可以绕过,其次XSS也并非只能使用JavaScript,通过HTML语句也可以跨站,比如“<img src=1 onerror=alert(‘hi’)>”语句。<img>是html中的图片标记,这条语句表示在网页中插入一张图片,“src=1”指定了图片文件的URL,如果图片不存在(这里肯定是不存在了),那么将会弹出错误提示框,从而实现弹框的效果。

最后再来查看high级别的源码,这里利用了htmlspecialchars()函数进行过滤。这个函数可以把& (和号)、"(双引号)、'(单引号)、<(小于)、>(大于)这些敏感符号都进行转义,所有的跨站语句中基本都离不开这些符号,因而只需要这一个函数就阻止了XSS漏洞,所以跨站漏洞的代码防御还是比较简单的。

wKiom1Z92qWhsJK1AACueR5pouQ672.jpg



本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1728465

相关文章
|
6月前
|
安全 前端开发 Java
代码审计-Java项目&Filter过滤器&CNVD分析&XSS跨站&框架安全
代码审计-Java项目&Filter过滤器&CNVD分析&XSS跨站&框架安全
|
7月前
|
JavaScript 前端开发
Medium 级别反射型 XSS 演示(附链接)
Medium 级别反射型 XSS 演示(附链接)
|
7月前
|
存储 前端开发 安全
|
7月前
|
JavaScript 前端开发
High 级别反射型 XSS 演示(附链接)
High 级别反射型 XSS 演示(附链接)
|
7月前
|
安全 前端开发 JavaScript
[dvwa] xss reflected
[dvwa] xss reflected
|
7月前
|
存储 安全 JavaScript
XSS--概念、类型、实战--分析与详解[pikachu]
XSS--概念、类型、实战--分析与详解[pikachu]
|
7月前
|
安全 JavaScript 前端开发
Low 级别反射型 XSS 演示(附链接)
Low 级别反射型 XSS 演示(附链接)
|
7月前
|
存储 前端开发 JavaScript
反射型 XSS 攻击演示(附链接)
反射型 XSS 攻击演示(附链接)
|
SQL 存储 JavaScript
[网络安全]DVWA之XSS(Stored)攻击姿势及解题详析合集
trim() 函数移除字符串两侧的空格,以确保数据在插入到数据库时没有多余的空白字符
124 0
[网络安全]DVWA之XSS(Stored)攻击姿势及解题详析合集
|
1月前
|
JavaScript 安全 前端开发
同源策略如何防止 XSS 攻击?
【10月更文挑战第31天】同源策略通过对 DOM 访问、Cookie 访问、脚本执行环境和跨源网络请求等多方面的严格限制,构建了一道坚实的安全防线,有效地防止了 XSS 攻击,保护了用户在网络浏览过程中的数据安全和隐私。
99 49