DVWA-XSS (Reflected)

news2024/9/24 21:28:18

大约

“跨站点脚本 (XSS)”攻击是一种注入问题,其中恶意脚本被注入到原本良性和受信任的网站上。 当攻击者使用 Web 应用程序发送恶意代码(通常以浏览器端脚本的形式)时,就会发生 XSS 攻击, 给其他最终用户。允许这些攻击成功的缺陷非常普遍,并且发生在使用输出中用户输入的Web应用程序的任何地方, 无需验证或编码。

攻击者可以使用 XSS 向毫无戒心的用户发送恶意脚本。最终用户的浏览器无法知道脚本不应该被信任, 并将执行 JavaScript。由于恶意脚本认为脚本来自受信任的来源,因此可以访问任何 Cookie、会话令牌或其他 您的浏览器保留并与该网站一起使用的敏感信息。这些脚本甚至可以重写 HTML 页面的内容。

因为它是反射式 XSS,恶意代码不会存储在远程 Web 应用程序中,因此需要一些社交工程(例如通过电子邮件/聊天的链接)。


目的

以一种或另一种方式,窃取登录用户的cookie。


低水平

在将请求的输入包含在输出文本中之前,低级别不会检查该输入。

<?php

header ("X-XSS-Protection: 0");

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Feedback for end user
    echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
}

?>

 

这是一个处理用户从URL中传递的数据的PHP脚本,它输出一个欢迎消息。相较于之前的代码,这个脚本已经改进了安全性。

使用 `array_key_exists()` 函数来验证 “name” 是否在 `$_GET` 中,并且 `$_GET[ 'name' ]` 不等于 `NULL`。通过这样的验证,可以确保 `$_GET[ 'name' ]` 中实际上有数据,避免了在尝试访问未定义的变量时出错的情况。

可见这个脚本是用户输入什么,就会显示什么。

Spoiler: ?name=<script>alert("XSS");</script>.

在输入框输入<script>alert("XSS");</script> 点击submit,显示了alert

 

 

 

 

 

 

中级

开发人员尝试添加一个简单的模式匹配来删除对“<script>”的任何引用,以禁用任何JavaScript。

<?php

header ("X-XSS-Protection: 0");

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Get input
    $name = str_replace( '<script>', '', $_GET[ 'name' ] );

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

?>

这是一个PHP脚本,用于获取用户从URL中传递的数据,并输出带有一个欢迎消息的HTML代码。

然而,这个脚本存在一个非常严重的安全漏洞,即它没有对输入数据进行任何过滤或净化,这导致了潜在的XSS攻击。攻击者可以在URL参数中注入恶意的JavaScript代码,从而在用户访问该页面时在用户的浏览器中执行任意脚本。这将使攻击者能够窃取用户的授权Cookie、获取用户的输入、重定向到其他恶意站点等等。

使用 `str_replace()` 函数来清除 `<script>` 标记是不足以解决XSS漏洞的。应该使用适当的净化方法和输出编码方法,如 `htmlspecialchars()` 函数或使用模板引擎来生成JavaScript。

因此,建议对用户的输入数据进行彻底的验证和净化,包括过滤特殊字符、将HTML标签转义为它们的HTML实体等。此外,推荐使用先进的Web应用程序防火墙(WAF)和安全性别扫描程序来保护您的Web应用程序免受此类攻击。

 

由中级的脚本可见,该程序只把<script>替换成了空字符串。 

Spoiler: Its cAse sENSiTiVE.

 输入低水平攻击,显示了alert("XSS")

高水平

开发人员现在认为他们可以通过删除模式“<s*c*r*i*p*t”来禁用所有JavaScript。

<?php

header ("X-XSS-Protection: 0");

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Get input
    $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );

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

?>

这是一个处理用户从URL中传递的数据的PHP脚本,它尝试使用正则表达式从用户输入的数据中删除所有的 `<script>` 标记。相较之前的代码,它更具有安全性。

使用 `array_key_exists()` 函数来验证 “name” 是否在 `$_GET` 中,并且 `$_GET[ 'name' ]` 不等于 `NULL`。通过这样的验证,可以确保 `$_GET[ 'name' ]` 中实际上有数据,避免了在尝试访问未定义的变量时出错的情况。

与之前不同的是,这个脚本使用了正则表达式 `preg_replace()` 函数,它可以删除用户输入数据中的所有 `<script>` 标记。通过这种方式净化输入数据,可以缓解XSS攻击的风险,因为攻击者无法在用户的浏览器中注入任意的JavaScript代码。

然而,这种方法并不是完全可靠的,因为攻击者可以使用各种技术来绕过此类过滤器。在实际应用中,应该使用更多净化手段来确保Web应用程序的安全性。

因此,建议在处理用户输入数据时要进行适当的验证和净化,并使用可以确保您的Web应用程序免受XSS攻击的安全措施。例如,使用HTML Purifier这样的库,它可以清除输入数据中的HTML标记并将其转义为安全的HTML实体。

 

Spoiler: HTML events.

输入低水平脚本,只显示了一个Hello > 

 

不可能的水平

使用内置的PHP函数(如“htmlspecialchars()”), 可以转义任何会改变输入行为的值。

<?php

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Check Anti-CSRF token
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

    // Get input
    $name = htmlspecialchars( $_GET[ 'name' ] );

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

// Generate Anti-CSRF token
generateSessionToken();

?>

这是一个处理用户从URL中传递的数据的PHP脚本,它首先验证Anti-CSRF token的有效性,然后使用 `htmlspecialchars()` 函数将用户输入数据转义为HTML实体,以防止XSS攻击。

使用 `array_key_exists()` 函数来验证 “name” 是否在 `$_GET` 中,并且 `$_GET[ 'name' ]` 不等于 `NULL`。通过这样的验证,可以确保 `$_GET[ 'name' ]` 中实际上有数据,避免了在尝试访问未定义的变量时出错的情况。

此外,这个脚本还包含了Anti-CSRF token的相关代码。 `checkToken()` 函数用于验证用户提交的token与存储在Session中的token是否相同,以防止CSRF攻击。如果两个token不同,则重定向到指定的URL `index.php`。 `generateSessionToken()` 函数用于生成并存储新的Session token。

这种方式能够一定程度地保护Web应用程序和用户免受XSS和CSRF攻击,但并不是完全可靠的。建议在处理用户输入数据时,采用更多安全措施和净化方法,以确保应用程序的安全性。同时,也建议进行安全漏洞测试和评估,以检测并解决任何可能存在的安全漏洞。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/638450.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业数字化转型,想要易部署、低成本、高安全,看这里

随着数字化转型成为国家战略&#xff0c;不同行业的组织都在极力实行数字化转型战略。近几年企业工作方式的转型中&#xff0c;越来越多的传统本地办公模式向云上演进&#xff0c;远程办公、在线协作成为企业高效办公的重要支撑。 赞奇科技联合华为&#xff0c;基于华为云桌面W…

【实战】Chatglm微调指引和部署(MNN)

一. Chatglm 相对简单&#xff0c;而且微调之后性能比较奇怪&#xff0c;可以参考ChatGLM-6B 的部署与微调教程 1.1 MNN部署 https://github.com/wangzhaode/ChatGLM-MNN 1.1.1 Linux部署 git clone https://github.com/wangzhaode/ChatGLM-MNN.git&#xff08;1&#xff…

一、枚举类型——枚举类型的基本特性

enum关键字用于创建一个新类型&#xff0c;其中包含一组数量有限的命名变量&#xff0c;并视这些变量为常规程序组件。实践表明这是一种非常有用的类型 你可以调用枚举类型中的 values() 方法来遍历枚举常量列表。values() 方法生成一个由枚举常量组成的数组&#xff0c;其中常…

机器视觉 橘子分级模型(含有交互页面)

文章目录 1. 使用Alexnet进行数据特征提取&#xff0c;并使用SVM进行分类&#xff08;含有交互页面&#xff09;1.1 数据集数据来源 1. 2 数据预处理&#xff0c;并提取特征导入包导入alexnet模型预处理提取特征的方法 1.3 对数据集进行遍历并提取特征1.4 进行训练1.5 进行交互…

从小白到大神之路之学习运维第38天---第三阶段---Redis数据存储技术(登录、设置密码、简单操作)

Redis数据存储技术 目录 一、主要信息 二、Redis 设置密码步骤 三、登录 Redis 四、Redis 常用操作示例及说明 一、主要信息 Redis 简介&#xff1a; 是一种开源的数据存储技术&#xff0c;它提供了一个高性能的键值对存储系统&#xff0c;支持多种数据结构&#xff0c…

功能测试+自动化测试代码覆盖率统计

Jacoco 是一个开源的覆盖率工具。Jacoco 可以嵌入到 Ant 、Maven 中&#xff0c;并提供了 EclEmma Eclipse 插件,也可以使用 Java Agent 技术监控 Java 程序。很多第三方的工具提供了对 Jacoco 的集成&#xff0c;如 sonar、Jenkins、IDEA。 Jacoco 包含了多种尺度的覆盖率计数…

复数计算器(C/C++)

源码地址&#xff1a;复数计算器复数计算器复数计算器资源-CSDN文库

5.多线程之JUC并发编程2

1.CompletableFuture异步回调 像ajax,未来再得到执行结果,想服务器不分先后顺序执行,可以用异步回调 //调用的函数没有返回值的CompletableFuture<Void> futureCompletableFuture.runAsync(()->{TimeUnit.SECONDS.sleep(2);sout(Thread.currentThread.getName"as…

内网安全:内网穿透详解

目录 内网穿透技术 内网穿透原理 实验环境 内网穿透项目 内网穿透&#xff1a;Ngrok 配置服务端 客户端配置 客户端生成后门&#xff0c;等待目标上线 内网穿透&#xff1a;Frp 客户端服务端建立连接 MSF生成后门&#xff0c;等待上线 内网穿透&#xff1a;Nps 服…

更新的NICE工具现在可以直接下载

大家好&#xff0c;才是真的好。 很多人还不知道什么是Nots中的NICE工具&#xff0c;它的全称是Notes Install Cleanup Executable&#xff0c;我主要使用该款工具在Windows上来卸载Notes标准客户机&#xff08;包括Domino Designer和Domino Admin&#xff09;。 补充一下&am…

优化3500倍,从70s到20ms的顶级调优,此方案人人可用

前言&#xff1a; 在40岁老架构师尼恩的读者社区&#xff08;50&#xff09;中&#xff0c;很多小伙伴拿不到offer&#xff0c;或者拿不到好的offer。 尼恩经常给大家 优化项目&#xff0c;优化简历&#xff0c;挖掘技术亮点。在指导简历的过程中&#xff0c; Java 调优是一项…

一文读懂数字孪生水利解决方案

如今&#xff0c;数字孪生作为一种创新的技术手段&#xff0c;正在被广泛应用于各个领域。在工业互联网、5G、边缘计算、AR等技术发展背景下&#xff0c;数字孪生技术与流域的融合正风生水起&#xff0c;数字流域建设备受瞩目&#xff0c;智慧水利依托物联网、大数据、人工智能…

怎么在eclipse中创建python项目

目录 方法一&#xff1a;借助Eclipse Marketplace安装PyDev插件 方法二&#xff1a;到官网下载手动安装插件 参考文件 方法一&#xff1a;借助Eclipse Marketplace安装PyDev插件 这可以通过Eclipse Marketplace完成。打开Eclipse&#xff0c;然后选择“Help” > “Eclips…

金鸣识别的表格分析技术揭秘

表格分析是指将图片中的表格区域分割出来&#xff0c;并识别出表格中的单元格和单元格中的内容。表格分析技术主要包括以下几个步骤&#xff1a; 1. 表格检测&#xff1a;通过图像处理技术&#xff0c;将图片中的表格区域分割出来。 2. 单元格分割&#xff1a;将表格中的每个单…

iphone尺寸大全

iPhone各机型的navbar和title的高度&#xff0c;宽高和在微信开发工具中的高度如下&#xff1a; 需要注意的是&#xff0c;pt是苹果设计稿中使用的单位&#xff0c;与px的换算关系为1pt等于2px。而在微信开发工具中&#xff0c;默认使用的是rpx&#xff0c;1rpx等于0.5px。因此…

Datax+DataX-Web分布式搭建

DataxDataX-Web分布式搭建 DataX简介 DataX 是一个异构数据源离线同步工具&#xff0c;致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 DataX本身作为数据同步框架&#xff0c;将不同数据源的同步…

餐企复苏破局!高效智能营销+服务如何打造?

随着数字化时代的飞速发展&#xff0c;越来越多的行业对企业运营服务模式的需求已逐渐趋向于“智能化”发展。特别是“后疫情时代”及O2O模式下的餐饮变革&#xff0c;餐饮行业的竞争已从餐食本身&#xff0c;发展为流量、服务、品牌效应的竞争&#xff0c;很多企业为了进一步促…

MySQL 8.0.29 instant DDL 数据腐化问题分析

前言Instant add or drop column的主线逻辑表定义的列顺序与row 存储列顺序阐述引入row版本的必要性数据腐化问题原因分析Bug重现与解析MySQL8.0.30修复方案 前言 DDL 相对于数据库的 DML 之类的其他操作&#xff0c;相对来说是比较耗时、相对重型的操作; 因此对业务的影比较严…

ASO优化之关于应用宝的关键词排名

应用宝是国内主要的安卓应用分发渠道之一&#xff0c;它的流量和影响力是非常大的。所以我们可以通过ASO优化&#xff0c;来提升应用宝关键词覆盖和排名&#xff0c;从而有利于应用可以获得稳定的自然下载量。 关键词覆盖要围绕元数据的优化&#xff08;包括应用名称&#xff…

ai智能写诗你了解吗?

在当今科技快速发展的时代&#xff0c;越来越多的人开始注重人工智能在日常生活中的应用。其中之一就是智能写诗软件&#xff0c;这种技术不仅可以为我们提供便捷的创作体验&#xff0c;还可以让我们轻松地享受到优美的诗歌韵律。那么&#xff0c;智能写诗软件怎么用呢&#xf…