首页 > 其他分享 >Web渗透:XSS-反射型&存储型

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

时间:2024-06-20 12:01:09浏览次数:23  
标签:Web 存储 XSS 用户 html message 输入 页面

跨站脚本攻击(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为持久攻击,危害也更大。

标签:Web,存储,XSS,用户,html,message,输入,页面
From: https://blog.csdn.net/WolvenSec/article/details/139828415

相关文章

  • DEMO_01:List数据存储,回调函数,集合转字符串,元素去重
    *题目:*1.构建属性结构List<DemoNode>data,根据本包的data.png中数据结构图将数据存入data中(字就是nodeName)*2.将树形结构List<DemoNode>里面的元素全部遍历出来存放到List<String>list中,输出结果转换成字符串:粉粉碎机被粉碎机粉碎了怎么办*3.将list里元素去重后......
  • 通过 HIDS 告警分析 webshell 行为
    准备漏洞环境1. 下载 vulhub 仓库gitclonehttps://github.com/vulhub/vulhub.git2.  修改 tomcat 弱口令漏洞环境配置vivulhub/tomcat/tomcat8/tomcat-users.xml将配置文件中的 user 和 password 修改为非弱口令3.  启动漏洞环境(根据实际 docker 环境......
  • Web之http学习笔记
    目录HTTPurlhttp请求请求行请求方法请求头请求正文http响应响应行状态码响应头响应正文Cookie定义:内容:用途:生命周期:隐私和安全性:Session实现原理组成:PHP中的Session设置函数session传输HTTPhttp文本传输协议(HyperTextTransferProtocol),遵循请求/响应(request/response)模型url......
  • 12.1.k8s中的pod数据持久化-pv与pvc资源及动态存储StorageClass
    目录一、pc与pvc的概念二、pvc与pv初体验1,准别nfs环境1.1.所有节点安装nfs工具1.2.harbor节点编辑nfs配置文件 2,创建3个pv资源3,harbor节点创建pv对应的nfs存储路径 4,创建pvc关联pv5,创建pod引入pvc6,编辑index访问文件到harbor存储目录下7,浏览器访问测试三、Storag......
  • web实验3
    三、实验步骤1)   打开MySQL,新建一个数据库。2)   新建一个数据库表。3)   在表中增加若干记录,作为初始数据。4)   打开Eclipse软件,新建一个名为Lab04的Web项目,并设置其部署程序为Tomcat。5)   在Lab04中添加文件,编写代码。6)   DBBean.java文件代......
  • web实验1
    1)编写index.jsp文件,展示某一类物品或知识的介绍,可以是歌曲、人物、名胜古迹等。要求至少有三个条目,用户登录后才能浏览这三个条目的内容。如果用户尚未登录,需要显示用户为“游客”,否则显示用户名。页面下端设置超链接,指向login.jsp。如果用户尚未登录,单击了某一条目的内容,则系统......
  • web实验2
    <%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head>   <title>无题</title></head><bodybackground="/image/gb1.jpg"><divalign="center"style......
  • Windows 10 磁盘管理使用教程 Windows 10 磁盘管理工具的基本步骤和常见操作;高级的 Wi
    Windows10磁盘管理初级使用教程大纲:1. 打开磁盘管理工具方法:右键点击“此电脑”或者“计算机”图标,选择“管理”,然后在左侧面板中找到并点击“磁盘管理”。2. 磁盘基本信息查看查看已安装的物理硬盘和分区的基本信息:硬盘列表分区列表可用空间和已用空间3. 创......
  • 【云服务器介绍】选择指南 腾讯云 阿里云全配置对比 搭建web 个人开发 app 游戏服务器
    ​省流目录:适用于博客建站(2-4G)、个人开发/小型游戏[传奇/我的世界/饥荒](4-8G)、数据分析/大型游戏[幻兽帕鲁/雾锁王国]服务器(16-64G)1.京东云-618专属活动 官方采购季专属活动地址:京东云-618采购季服务器活动专区https://3.cn/20-J4jjX京东云又双叒降价了!活动页大改,增加两......
  • MinIO分布式存储从0到Vue+SpringBoot整合开发 视频教程 下载
    inIO分布式存储从0到Vue+SpringBoot整合开发视频教程下载 001MinIO课程介绍.avi002WhatisMinIO?.avi003MinIO人工智能的数据存储服务.avi004什么是对象存储.avi005MinIO版权许可.avi006MinIO下载.avi007MinIO安装.avi008MinIO启动.avi009MinIOWeb管理......