您现在的位置是:首页 > cms教程 > phpcms教程phpcms教程
PHPCMSV9任意文件下载漏洞分析
元风2025-05-20 19:37:45phpcms教程已有3人查阅
导读先来看看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行 可以看到利用黑名单的策略,但是在windows下有个坑。对于ph> ,在windows下得到的结果和php一样,这种特性造成了绕过,使得服务器上的文件得以下载。(我用的是mac,所以测试这个漏洞的时候,手动删除了php这个关键字来测试漏洞。)
接着继续跟进: 下面有个if的判断,如果在$f中存在 http://,ftp:// 这些字符串 ,将返回TURE,如果存在 :\\ 字符串,将返回FALSE,但他用|| 连接而成,只要有一个TURE就能执行下面的内容。感觉这里可以放远程文件,没验证。(这里没验证,在download里面验证了)
接着就是对$a_l的值进行加密,返回$downurl。 当你点击下载的时候,触发download函数,
这时候的&a_k值是init()函数提供的, 在106行的时候发现这句,对远程文件有个验证,如果存在:/这个字符串,就返回location:的内容 ,不进行后面的文件下载了。所以这里不能用远程文件,只能用相对路径。
之后进行到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行 可以看到利用黑名单的策略,但是在windows下有个坑。对于ph> ,在windows下得到的结果和php一样,这种特性造成了绕过,使得服务器上的文件得以下载。(我用的是mac,所以测试这个漏洞的时候,手动删除了php这个关键字来测试漏洞。)
接着继续跟进: 下面有个if的判断,如果在$f中存在 http://,ftp:// 这些字符串 ,将返回TURE,如果存在 :\\ 字符串,将返回FALSE,但他用|| 连接而成,只要有一个TURE就能执行下面的内容。感觉这里可以放远程文件,没验证。(这里没验证,在download里面验证了)
接着就是对$a_l的值进行加密,返回$downurl。 当你点击下载的时候,触发download函数,
这时候的&a_k值是init()函数提供的, 在106行的时候发现这句,对远程文件有个验证,如果存在:/这个字符串,就返回location:的内容 ,不进行后面的文件下载了。所以这里不能用远程文件,只能用相对路径。
之后进行到file_down()函数里面,位于 /phpv9.6.0/phpcms/libs/functions/global.func.php 第1195-1204行
读取$fulepath的内容,结束。
测试的时候有个坑,在windows中,windows把\ /当成了目录,但linux,对于\/并不会把他当做\。
poc:基于上次的修改下payload,凑合着用
本文标签:
很赞哦! (1)
暂无内容 |
暂无内容 |
相关文章
暂无内容 |
暂无内容 |
随机图文
phpcms栏目怎么绑定域名
一、将要绑定到栏目的域名解析到虚拟主机的空间ip上,并且把域名绑定到对应的栏目目录。二、接着修改header.html这个文件,这个文件默认是在/templates/default/phpcms目录下的。phpcms限制标题字符的方法
phpcms限制标题字符的方法:首 先进入后台,依次找到“内容->模型管理”;然后找到对应的模型,并选择后面的字段管理;接着找到“title”字段,并点击“修改”;phpcms基本语句和调用的使用方法
最近在做企业站,这里将phpcms里的常用语句总结一下:2、常用系统常量: {CSS_PATH} {JS_PATH} {IMG_PATH} {APP_PATH}//程序目录3、头尾替换:phpcms新建模块安装使用方法教程
1.安装配置---小问题:估计就我这么傻 T-T ,改成自己的目录名。2.模块的目录:模块存放在modules文件夹里,打开这个文件夹,里面的一个文件夹代表一个模块。3.建立模块以及其基本目录结构。
留言与评论 (共有 0 条评论) |