您现在的位置是:首页 > cms教程 > phpcms教程phpcms教程
PHPCMSv9.6.0任意文件上传漏洞分析
紫山2025-06-05 21:46:07phpcms教程已有2人查阅
导读配置phpdebug的环境,并且根据这篇文章把流程走了一遍,对phpstorm的debug熟练度+1(跟pycharm一样)用户名和email都要随便生成,因为注册名不能相同
配置phpdebug的环境,并且根据这篇文章把流程走了一遍,对phpstorm的debug熟练度+1(跟pycharm一样)用户名和email都要随便生成,因为注册名不能相同,所以修改了下脚本。
根据post提交的参数,问题出现在/phpcms/modules/member/index.php的文件中,可以知道是在register函数中,所以在info[content] 下断点。
打开phpstorm的右上角,进入监听模式,这时候访问网站是非常慢的。
执行一遍poc,跟进get函数 位于 /caches/caches_model/caches_data/member_input.class.php
可以看到 这是最开始经过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行。 直接取后缀进行赋值,这时候的$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的内容给回显出来,所以就不用 去破解文件名了。
查看帮助文档可以定位到具体的哪个文件 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
可以看到 这是最开始经过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行。 直接取后缀进行赋值,这时候的$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的内容给回显出来,所以就不用 去破解文件名了。
本文标签:
很赞哦! (1)
暂无内容 |
暂无内容 |
相关文章
暂无内容 |
暂无内容 |
随机图文
phpcms安全设置防止挂马的方法
phpcms防止挂马的方法:1、服务器日志的定期查看;2、通过ftp查看网站文件的修改时间;3、核查网站程序是否需要更新;4、修改建站程序重要的文件名称phpcms调用文章不显示推荐文章的解决方法
phpcms调用文章不显示推荐文章怎么办?列表页不显示某个推荐位文章的办法此效果仅满足特殊需要,用的人不多,所以不过多说明。phpcmsV9网站域名变更后刷新所有缓存栏目链接总是不变怎么办
网站在发展的过程中,很可能多次的修改域名。那么在PHPCMS V9中我们要怎么进行设置呢?请进行以下步骤的修改:修改/caches/configs/system.php里面所有和域名有关的,把以前的老域名修改为新域名就可以了。phpcms上传图片的方法
phpcms怎么上传图片1、首先在模板页,引用 js与css,两个文即可搞定。2、然后调用上传图片功能
留言与评论 (共有 0 条评论) |