DVWA-11-XSS(Dom)

目录

1.概念

2.实验

2.1 LOW

2.2 Medium

2.3 high

2.4 impossible


1.概念

DOM型XSS

DOM全程Document Object Model,使用DOM可以使程序和脚本能够动态访问和更新文档的内容、结构和样式。

DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。

HTML的标签都是节点,而这些节点组成了DOM的整体结构-节点树。通过HTML DOM,树中所有节点均可通过JavaScript进行访问。所有HTML元素(节点)均可被修改,也可以创建或删除节点。

在网站页面中有许多元素,当页面到达浏览器时,浏览器会为页码创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑,从而修改页面的元素,也就是说,客户端的脚本程序可以通过DOM动态修改页面内容,从客户端获取DOM中的数据并在本地执行。由于DOM是在客户端修改节点的所以基于DOM型的XSS漏洞不需要与服务器端交互,它只发生在客户端处理数据的阶段。

攻击方式:

用户请求一个经过专门设计的URL,它由攻击者提交,而且其中包含XSS代码。服务器的响应不会以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞。


2.实验

2.1 LOW

可以看到代码中没有做任何保护,而表单是让我们选择语言

点击select,可以看到?default=English,所以可以在=号后插入xss payload

F12 ,开启脚本HackBar,获取url

点击XSS

选择XSS测试脚本,生成

执行,可以看到

我们还可以通过xss platform获取cookie等其他操作

创建一个普通项目,将自动构建的xss payload上传即可

2.2 Medium

代码分析

array_key_exists(key,array),检查某个数组中是否存在指定的键名,如果键名存在则返回 true,如果键名不存在则返回 false
参数 描述
key 必需。规定键名。
array 必需。规定数组。

stripos() 函数查找字符串在另一字符串中第一次出现的位置(不区分大小写),可以看到对<script做了过滤

查看前端页面

xss 当然不单单可以利用script,所以这种过滤是没有太大作用的

></option></select><img sRC=//xsshs.cn/3b0Y/xss.jpg>

通过xssplatform

2.3 high

看代码

加入了白名单的方法,但是从网上别人的尝试中,可使用#绕过,在URL中#号之后的内容,不会被提交到服务器,可以直接与浏览器进行交户

2.4 impossible

黑盒测试后,发现对我们输入的参数并没有进行URL解码,所以我们输入的任何参数都是经过URL编码,然后直接赋值给option标签。

暂时无xss漏洞。

猜你喜欢

转载自blog.csdn.net/weixin_43198291/article/details/114452685