DVWA之XSS存储型

文章讨论了XSS攻击的两种主要类型——存储型和反射型,解释了它们的工作原理和危害。存储型XSS的攻击脚本存储在服务器,影响广泛,而反射型XSS需要用户交互。文中通过PHP代码示例展示了不同级别的防护措施,指出即使在防护级别提高的情况下,仍有可能通过特定方式绕过过滤机制。

理论知识

存储型XSS又称持久型XSS,攻击脚本将被永久地存放在目标服务器的数据库或文件中,具有很高的隐蔽性。反射型XSS的被攻击对象一般是攻击者去寻找的,就比如说:一个攻击者想盗取A的账号,那么攻击者就可以将一个含有反射型XSS的特制URL链接发送给A,然后用花言巧语诱骗A点击链接。当A不小心点进去时,就会立即受到XSS攻击。这种攻击方式需要一点骗术,所以这种攻击范围不是特别的广,并且提交漏洞时要么平台不认,要么会被认定为低危漏洞。

存储型XSS可以采用广撒网的方式,就是攻击者将存储型XSS代码写进一些有XSS漏洞的网站上,只要有用户访问这个链接就会自动中招。所以我们可以看出,存储型XSS的危害性更大,范围更广,可以不需要寻找被攻击对象,只要存储型XSS在服务器上就能实施攻击。所以提交的存储型XSS评级一般为中危漏洞。

这种攻击多见于论坛、博客和留言板。攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入帖子的内容中。随着帖子被服务器存储下来,恶意脚本也永久地被存放在服务器的后端数据库中。当其他用户浏览这个被注入了恶意脚本的帖子时,恶意脚本会在他们的浏览器中得到触发。如果我们能够谨慎对待不明链接,那么反射型XSS攻击将没有多大作为,而存储型XSS则不同,由于它注入在一些我们非常信任的页面中,因此无论我们多么小心,都难免会受到攻击。

LOW

先查看源码

 <?php

if( isset( $_POST[ 'btnSign' ] ) ) {
    // Get input
    $message = trim( $_POST[ 'mtxMessage' ] );
    $name    = trim( $_POST[ 'txtName' ] );

    // Sanitize message input
    $message = stripslashes( $message );
    $message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));

    // Sanitize name input
    $name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($
### 关于DVWA存储XSS漏洞的信息 #### 存储XSS概述 存储XSS是一种常见的网络安全漏洞,其特点在于恶意脚本会被永久地存储在目标服务器的数据库或文件中。每当有其他用户访问含有这些恶意脚本的页面时,脚本就会在其浏览器上执行[^3]。 #### DVWA中的存储XSS测试环境 DVWA(Damn Vulnerable Web Application)是一个用于学习和实践Web安全漏洞的应用程序,在其中可以通过不同的难度级别来体验存储XSS漏洞的影响及其防御方法。具体来说: - **Low Level**: 在此模式下,几乎没有任何防护机制存在,允许攻击者轻松注入恶意脚本并将其保存到服务器端数据存储中[^1]。 - **Medium Level**: 此阶段引入了一些基本过滤手段,比如移除特定HTML标签等简单处理方式;然而,如果绕过了初步检测,则仍然能够成功实施攻击[^4]。 - **High & Impossible Levels**: 这两个更高级别的保护措施显著增强了安全性。例如,“Impossible”级别的实现不仅包含了严格的输入验证逻辑,还可能结合CSRF令牌等多种技术防止未经授权的操作发生[^5]。 #### 如何利用及修复该类问题? ##### 利用过程描述 假设我们处于`Low`安全设置之下: 1. 访问留言功能界面; 2. 输入包含JavaScript代码的内容作为评论提交给后台处理; 3. 如果服务端未做适当转义/编码转换的话,这段非法指令便得以存入资料库当中等待后续触发显示出来影响更多受害者设备运行状况。 以下是模拟payload的一个例子: ```javascript <script>alert('XSS');</script> ``` ##### 解决方案建议 为了有效抵御此类威胁可以从以下几个方面着手改进: - 对所有来自客户端的数据都应视为不可信任对待,采用白名单策略只接受预期格式内的字符组合; - 使用专门设计好的API接口完成必要的转码工作(如htmlspecialchars),从而阻止任何潜在危险成分进入最终呈现环节之前就被妥善处置掉. - 定期审查现有业务流程是否存在薄弱环节以及及时更新补丁版本以应对最新发现出来的风险情况. ```php // PHP示例代码展示如何正确处理用户输入 $userInput = $_POST['message']; $safeOutput = htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8'); echo $safeOutput; // 输出经过安全化后的消息内容 ``` ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值