DVWA | DOM型XSS

admin 2022年10月5日23:11:12评论34 views字数 1462阅读4分52秒阅读模式


跨站脚本攻击(XSS)又叫CSS,全称是Cross Site Script为了与HTML中的层叠样式表CSS区分开所以叫做XSS。一共分为三种:存储型XSS、反射型XSS和DOM型XSS。理是攻击者向有XSS漏洞的网站中输入恶意的HTML代码,当用户浏览该网站时,恶意代码会自动执行,从而达到攻击的目的,有点似于SQL注入攻击。

本文所说的DOM型XSS也是一种特殊类型的反射型XSS,是基于DOM文档对象的漏洞,仅在客户端便可以触发,而存储型和反射型都是要经过后端才可以触发。

LOW


页面通过下拉框选择元素后URL链接中的default参数会改变,将default的参数修改为如下字符,便会在页面中弹出一个窗口,证明已经触发了xss漏洞。
<script>alert(/xss/)</script># 弹出XSS<script>alert(document.cookie)</script># 弹出当前页面下的cookie

这里解释一下为什么可以用<script>弹出窗口。

<script>标签标签用于定义客户端脚本,后面的语句会按照脚本的格式去运行,而alert()方法是HTML_DOM的一种方法,作用是用于显示带有一条指定消息和一个 OK 按钮的警告框。

效果如下图:

DVWA | DOM型XSS


DVWA | DOM型XSS




Medium


们使用刚才的<script>语句进行尝试后发现未弹窗,且url会自动跳转到原地址。

查看代码后发现服务器会检测传入参数中的 “<script”字符,使用了stripos() 函数查找字符“<script”在参数中第一次出现的位置(不区分大小写),找到后返回匹配字符串的位置,否则返回false,使用header() 函数用于发送原生的 HTTP 头去再次请求页面。

DVWA | DOM型XSS


对<script>的检测导致进行双写或大小进行绕过,因此我们可以尝试使用其他标签达到相同的效果,例如img标签。
<img src=1 onerror=alert(/xss/)>

<img>标签中src属性是指向图片的地址,onerror属性是当加载出错时需要执行的语句。因为图片的地址为1显然是失败的,所以会执行后面的alert()来弹窗。

结果发现还是失败,我们按F12查看前端代码,按照如图的步骤①②定位到注入语句在前端页面的位置,发现注入的语句是在value的值中,导致<script>标签无法被正确执行,我们可以使用</option></select>标签去闭合前面的<option>h和<select>标签,成功触发弹窗。
</option></select><imgsrc=1 onerror=alert(/xss/)>

DVWA | DOM型XSS


结果如图:

DVWA | DOM型XSS



High


重复前面的步骤进行测试结果都失败了,查看代码后发现服务器使用了白名单的方式,判断参数中的值是不是所规定的四种,所以服务端是无法绕过。但还有一种方式:使用 # 。

URL栏的 # 号之后的内容并不会发送至服务器端,JS中使用该符号实现在页面创建加载过程中定向到指定的页面内容上。这样就实现了传递白名单内的值绕过验证又实现了前端加载攻击语句。

将参数改为如下的值就可以实现成功弹窗!注意 English 和 # 间有空格,不然会失败。
English #</option></select><BODYONLOAD=alert(document.cookie)>

DVWA | DOM型XSS



Impossible


查看代码:

DVWA | DOM型XSS


意思是服务器端不需要做任何防御措施,防御的关键在于客户端。

我们使用payload进行尝试,发现前端对语句进行了编码,因此无法成功。

DVWA | DOM型XSS




原文始发于微信公众号(仙友道):DVWA | DOM型XSS

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月5日23:11:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   DVWA | DOM型XSShttps://cn-sec.com/archives/921333.html

发表评论

匿名网友 填写信息