DVWA靶场通关(XSS)

目录

XSS漏洞

XSS的类型

Vulnerability: Reflected Cross Site Scripting (XSS)

LOW

 Medium

HIGH

Vulnerability: Stored Cross Site Scripting (XSS)

LOW

Medium

HIGH

Vulnerability: DOM Based Cross Site Scripting (XSS)

LOW

Medium

HIGH


XSS漏洞

跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets,缩写:CSS)混淆,所以架构跨站脚本攻击缩写为XSS。XSS就是攻击者在web页面插入恶意的Script代码,当用户浏览该页面时,嵌入其中的js代码会被执行,从而达到恶意攻击的目的。某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需要强调的是,XSS不仅仅限于JavaScript,还包括flash等其它脚本语言。

XSS的类型

XSS类型一般分为三种:

1.反射型XSS

反射型XSS只是简单的把用户输入的数据“反射”给浏览器,也就是需要诱使用户“点击”一个恶意链接,才能攻击成功。反射型XSS也叫作“非持久性XSS

2.存储型XSS

存储型XSS会把用户输入的数据“存储”在服务器端。如果没有过滤或者过滤不严,那么这些恶意代码被服务器端接收并存储,用户访问该页面的时候触发代码执行。这种XSS具有很强的稳定性,当再次访问页面时会被执行。<持久化>.这种XSS比较危险,容易造成蠕虫,盗窃cookie等。

存储型XSS和反射型XSS、DOM型XSS相比,具有更高的隐蔽性,危害性也更大。它们之间最大的区别在于反射型XSS与DOM型XSS执行都必须依靠用户手动去触发,而存储型XSS却不需要。

3.DOM Based XSS

DOM的全称为Document Object Model,即文档对象模型,DOM通常用于代表在HTML、XHTML和XML中的对象。使用DOM可以允许程序和脚本动态低访问和更新文档的内容、结构和样式。

实际上,这种类型的XSS并非按照“数据是否保存在服务器端”来划分的,从效果上来说也是反射型XSS单独划分出来的,因为DOM Based XSS的形成原因比较特别。这是由于客户端脚本自身解析不正确导致的安全问题。

这种利用也需要受害者点击链接来触发,DOM型XSS是前端代码中存在了漏洞(DOM型的XSS是不需要与服务器交互的,它只发生在客户端处理数据阶段),而反射型是后端代码中存在了漏洞。

反射型和存储型xss是服务器端代码漏洞造成的,payload在响应页面中,在dom xss中,payload不在服务器发出的HTTP响应页面中,当客户端脚本运行时(渲染页面时),payload才会加载到脚本中执行。

Vulnerability: Reflected Cross Site Scripting (XSS)

LOW

页面源代码:

Hello ' . $_GET[ 'name' ] . '
'; } ?>

代码分析:直接采用get方式传入了name参数,并没有任何的过滤与检查,存在明显的XSS漏洞。

(1)直接输入最简单的payload:测试是否存在XSS漏洞,大多数XSS漏洞可以利用该种方法检测。

回显弹框

DVWA靶场通关(XSS)_第1张图片

 将变化的url值进行url解码为:?name=#

 DVWA靶场通关(XSS)_第2张图片

 Medium

题目源代码:


Reflected XSS Source
vulnerabilities/xss_r/source/medium.php
', '', $_GET[ 'name' ] );

    // Feedback for end user
    echo "
Hello ${name}
"; } ?>

代码分析:这里很明显看得出来,是对script字符进行了过滤,使用str_replace()函数将输入中的script替换成为空,于是需要我们想办法绕过过滤字符。

1.双写绕过

ipt>alert(/xss/)

2.大小写绕过

可以弹框

DVWA靶场通关(XSS)_第3张图片

HIGH

页面源代码

Hello ${name}
"; } ?>

 针对特殊符号,均有过滤,使得双写绕过以及大小写混淆绕过失效。(正则表达式中的i表示不区分大小写)。

script标签失效,但是可以通过img、body等标签的事件或者iframe等标签的src注入恶意的js代码。

1.采用img标签转换后的XSS payload:

其他编码形式:



2.使用iframe标签: