Web渗透:XSS-反射型存储型

跨站脚本攻击(Cross-Site Scripting,XSS)是一种常见的网络安全漏洞,它允许攻击者将恶意脚本注入到网页中,其他用户在浏览这些页面时,可能会执行这些恶意脚本,从而导致各种安全问题,如窃取用户信息、会话劫持等。

产生原因:

XSS漏洞其实就是一个前端漏洞,产生的根本原因是未对用户输入进行充分验证和过滤,导致恶意用户能够将恶意脚本注入到网页中,使其在其他用户浏览页面时执行。

接下来我们来看一个简单的代码案例(pikachu反射型XSS代码):

$html='';
if(isset($_GET['submit'])){
    if(empty($_GET['message'])){
        $html.="<p class='notice'>输入'kobe'试试-_-</p>";
    }else{
        if($_GET['message']=='kobe'){
            $html.="<p class='notice'>愿你和{$_GET['message']}一样,永远年轻,永远热血沸腾!</p><img src='{$PIKA_ROOT_DIR}assets/images/nbaplayer/kobe.png' />";
        }else{
            $html.="<p class='notice'>who is {$_GET['message']},i don't care!</p>";
        }
    }
}
--------------------------------------------------------------------------
​
<div id="xssr_main">
 <p class="xssr_title">Which NBA player do you like?</p>
 <form method="get">
 <input class="xssr_in" type="text" maxlength="20" name="message" />
 <input class="xssr_submit" type="submit" name="submit" value="submit" />
</form>
    <?php echo $html;?>
</div>

$html 是一个用来存储输出内容的变量。在表单提交后,根据用户的输入生成不同的反馈消息,并存储在$html 变量中。

此处我将代码分为两个部分,前半部分是根据获取的用户输入进行$html 的赋值,当$_GET['message']获取的数据不为空时,$html变量中的都会带有$_GET['message']获取到的用户的数据。紧接着在后半部分也就是HTML结构部分存在PHP代码块 <?php echo $html; ?> 用来输出根据用户输入生成的消息,这些消息被存储在$html 变量中,能够在当前的网页中直接显示来自客户端输入的数据,因为这段代码没有对用户输入进行任何过滤或转义处理;这就给了恶意用户可乘之机,攻击者可以通过输入恶意的HTML或JavaScript代码来利用这个漏洞,执行未经授权的操作或窃取用户信息。

常见的payload:

1.弹出警告框

<script>alert('XSS');</script>

2.打印到控制台

<script>console.log('XSS');</script>

3.改变页面内容

<script>document.body.innerHTML = 'Hacked!';</script>

4.通过表单字段触发脚本

<input type="text" value="XSS" onfocus="alert('XSS');">

payload有很多,笔者此处只举出四个比较简单常用的。

XSS分类:
①反射型XSS(Reflected XSS)
反射型XSS(Reflected XSS)是跨站脚本攻击的一种类型,通常发生在Web应用程序立即处理并反射回用户输入的情况下,这种攻击的特点是恶意脚本没有存储在服务器上,而是通过一些途径(如URL参数)传递并在用户浏览器中执行,所以不会产生持久性的影响。

此时以pikachu靶场中的xss漏洞页面为例子做个演示:

1.发现一个搜索框,随意输入数据后发现输入的数据会在当前页面中显示。

2.这个时候我模拟恶意用户,可以尝试在搜索框中输入相关的HTML或JavaScript恶意代码进行攻击,随便在上述的payload中选一个。

<script>alert("XSS")</script>

此时页面产生弹窗,攻击成功

②存储型XSS(Stored XSS):
攻击者将恶意脚本存储在服务器端,例如在论坛帖子、评论、用户资料等地方,当其他用户访问时,恶意脚本会从服务器端加载并执行,对用户造成攻击。

以pikachu靶场中的存储下XSS界面为例子进行演示:

1.发现当前页面有一个留言板,这个时候我们随意输入一个数据并进行提交,发现当前留言列表中会显示刚才输入的数据'1'。

2.此时我模拟恶意用户,将恶意代码输入留言板中并提交

<script>alert("XSS")</script>

这个时候留言列表中多了一条留言,但是却没有显示留言内容,原因就是因为我们输入的留言为一段简单的javascript代码,那么此时浏览器引擎就会将该代码进行执行,从而进行弹窗。

这个时候我们可以通过分析源码查看存储型XSS的相关特征:

$html='';
if(array_key_exists("message",$_POST) && $_POST['message']!=null){
    $message=escape($link, $_POST['message']);
    $query="insert into message(content,time) values('$message',now())";   //存入数据库
    $result=execute($link, $query);
    if(mysqli_affected_rows($link)!=1){
        $html.="<p>数据库出现异常,提交失败!</p>";
    }
}

可以看到该存储型XSS是将用户输入的内容与当前事件一起存入数据库中;

 <div id="xsss_main">
  <p class="xsss_title">我是一个留言板:</p>
  <form method="post">
  <textarea class="xsss_in" name="message"></textarea><br />
  <input class="xsss_submit" type="submit" name="submit" value="submit" />
  </form>
  <div id="show_message">
   <br />
   <br />
  <p class="line">留言列表:</p>
   //数据库中读取留言数据在页面中显示
  <?php echo $html;
   $query="select * from message";
   $result=execute($link, $query);
   while($data=mysqli_fetch_assoc($result)){
      echo "<p class='con'>{$data['content']}</p><a href='xss_stored.php?id={$data['id']}'>删除</a>";
   }
    echo $html;
   ?>
​
</div>

接着用户在访问时从数据库中读取相关的留言数据,然后在页面中显示,所以当我们插入恶意代码后,这串代码就会被存放到数据库中,接着每个来访问这个页面的用户都会受到我的攻击语句影响,所以存储型的XSS为持久攻击,危害也更大。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SN74HC14+陶瓷振子做振荡器的试验初步

面包板搭建&#xff0c;4.5V电池供电。 注意我用杜邦线插1脚并缠绕到小频谱的天线上面&#xff0c;如果直接用杜邦线转sma。请先过衰减器。 本想试验一下465khz用SN74HC14做振荡器&#xff0c;实验了很多次&#xff0c;无法起振。 用1M&#xff0c;4M的也无法起振&#xff0c;…

【TB作品】MSP430G2553,单片机,口袋板,流量积算仪设计

题9 流量积算仪设计 某型流量计精度为0.1%, 满刻度值为4L/s&#xff0c;流量计输出为4—20 mA。 设计基于MSP430及VFC32的流量积算仪。 具体要求 (1) 积算仪满刻度10000 L&#xff0c;精度0.1 L; 计满10000 L&#xff0c;自动归零并通过串口&#xff08;RS232&#xff09;向上位…

git配置ssh key

一、生成ssh公钥和私钥对 打开终端&#xff0c;输入命令&#xff0c;-C 后是git邮箱&#xff0c;在 Enter file in which to save the key (/home/my/.ssh/id_rsa): 后可以输入公钥和私钥对保存路径及文件名&#xff0c;默认是 /home/my/.ssh/id_rsa&#xff0c;其它的全部按回…

YOLOv8改进 | Neck | 添加双向特征金字塔BiFPN【含二次独家创新】

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录&#xff1a;《YOLOv8改进有效涨点》专栏介绍 & 专栏目录 | 目前已有40篇内容&#xff0c;内含各种Head检测头、损失函数Loss、B…

React-Redux学习笔记(自用)

1. 环境搭建 插件安装&#xff1a;Redux Toolkit和react-redux npm i reduxjs/toolkit react-redux2、 store目录结构设计 集中状态管理的部分会单独创建一个store目录&#xff08;在src下&#xff09;应用通常会有很多个子模块&#xff0c;所以还会有个modules目录&#x…

贴图法美化Button按钮

贴图法美化Button按钮 项目是在下面这篇文章里的基础上进行美化的&#xff1a;MFC实现INI配置文件的读取 1. 初始效果 2.最终效果 3. 增加 CImgButton 类 1.1 ImgButton.h 头文件 #pragma once // CImgButtonclass CImgButton : public CBitmapButton {DECLARE_DYNAMIC(CImgBu…

偏微分方程算法之抛物型方程差分格式编程示例四(Richardson外推)

目录 一、研究问题 二、C++代码 三、结果分析 一、研究问题 已知其精确解为。分别取以下三种步长: ①

6.19 作业

QT实现TCP服务器 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTcpServer>//服务器类 #include<QMessageBox>//消息对话框类 #include<QTcpSocket>//客户端的类 #include<QList>//链表容器类QT_BEGIN_NAMESPACE nam…

PHP安装配置

文章目录 1.下载PHP2.配置环境变量3.Apache安装配置 1.下载PHP PHP即“超文本预处理器”&#xff0c;是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言&#xff0c;与C语言类似&#xff0c;是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法…

PFA镊子有无固定支柱尖头扁头规格厂家可定制

PFA镊子&#xff0c;特氟龙镊子&#xff0c;聚四氟乙烯镊子&#xff0c;耐腐蚀耐高温 PFA镊子用于夹取小型片状、薄状、块状样品&#xff0c;广泛应用在半导体、新材料、新能源、原子能、石油化工、无线电、电力机械等行业。 具有耐高低温性&#xff08;可使用温度-200℃&#…

Hedra:让您的照片说话

在数字内容创作的世界里&#xff0c;我们总是在寻找那些能够让我们的作品更加生动和吸引人的工具。Hedra软件就是这样一款工具&#xff0c;它能够让您的照片动起来&#xff0c;甚至说话。想象一下&#xff0c;您的家庭相册中的照片突然变得栩栩如生&#xff0c;或者您的产品图片…

Git/TortoiseGit ssh client 配置

1. Git ssh client 配置 Git 默认的 ssh client 是 <Git 安装目录>/usr/bin/ssh.exe 修改方法为打开 Git Bash 执行&#xff1a; git config --global core.sshCommand "/C/Program Files/TortoiseGit/bin/TortoiseGitPlink.exe" 注意&#xff1a;如果路径…

Word 文本框技巧2则

1 调整大小 一种方法是&#xff0c;选中文本框&#xff0c;周围出现锚点&#xff0c;然后用鼠标拖动来调整大小&#xff1b; 精确按数值调整&#xff0c;在 格式 菜单下有多个分栏&#xff0c;一般最后一个分栏是 大小 &#xff1b;在此输入高度和宽度的数值&#xff0c;来调整…

深度学习算法informer(时序预测)(二)(Encoder)

一、EncoderLayer架构如图&#xff08;不改变输入形状&#xff09; 二、ConvLayer架构如图&#xff08;输入形状中特征维度减半&#xff09; 三、Encoder整体 包括三部分 1. 多层EncoderLayer 2. 多层ConvLayer 3. 层归一化 代码如下 class AttentionLayer(nn.Module):de…

Representation RL:HarmonyDream: Task Harmonization Inside World Models

ICML2024 paper code Intro 基于状态表征的model-based强化学习方法一般需要学习状态转移模型以及奖励模型。现有方法都是将二者联合训练但普遍缺乏对如何平衡二者之间的比重进行研究。本文提出的HarmonyDream便是通过自动调整损失系数来维持任务间的和谐&#xff0c;即在世界…

【51单片机基础教程】点亮led

文章目录 前言51单片机点亮LED的原理硬件部分软件部分51单片机的寄存器编程步骤proteus仿真点亮一个led 点亮多个ledproteus仿真代码 流水灯 总结 前言 单片机&#xff08;Microcontroller Unit, MCU&#xff09;是一种集成电路&#xff0c;广泛应用于各种电子产品中。作为嵌入…

Palo Alto GlobalProtect App 6.3 (macOS, Linux, Windows, Andriod) - 端点网络安全客户端

Palo Alto GlobalProtect App 6.3 (macOS, Linux, Windows, Andriod) - 端点网络安全客户端 Palo Alto Networks 远程访问 VPN 客户端软件 请访问原文链接&#xff1a;https://sysin.org/blog/globalprotect-6/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。…

HotSpot 垃圾收集器

文章目录 前言HotSpot 垃圾收集器1. 查看jdk默认垃圾收集器命令2. 查看当前服务使用的是哪个垃圾收集器:3. 常用的垃圾收集器3.1. 并行垃圾收集器&#xff08;Parallel Garbage Collector&#xff09;3.2. CMS 垃圾收集器&#xff08;Concurrent Mark-Sweep Garbage Collector&…

ubuntu16.04升级cmake版本至3.21.0

ubuntu16.04升级cmake版本至3.21.1 前言&#xff1a;建议先看完文章&#xff0c;再逐步跟做。 相对来说。ubuntu16.04是比较稳定一版&#xff0c;但其默认安装的cmake版本是3.5.1&#xff0c;假如我们需要用到更高的cmake版本&#xff0c;则需要手动升级cmake版本号。以cmake3.…

智能体「自我进化」全流程--AgentGym

AI通用智能体的自我进化能力&#xff0c;并非遥不可及。基于大语言模型的智能体已经不再需要人类监督者的帮助&#xff0c;开始实现「自我进化」&#xff01;这个智能体在学习了专家轨迹以后&#xff0c;获得了基础的通用能力&#xff0c;能够在更广泛、更真实的未知环境与任务…