0%

phpyun 后台getshell

漏洞名称:PHPYUN cms后台存在代码执行
漏洞版本号: V4.5 Beta
漏洞官网:https://www.phpyun.com/

Poyload: Url:
http://www.cc.com/admin/index.php?m=database&c=backup
Post: pytoken=3c3140b58f5e&table[]=]=1;phpinfo();//&maxfilesize=1111

复现过程:
漏洞复现过程:
首先进入后台-》点击工具-》数据-》数据库管理-》自定义备份-》随便选择一个表-》提交备份
GJHfET.png
抓包,修改table[] 参数-》发送
GJqEO1.png
GJqtTf.png
产生的文件就在uploads/data/plus/bdata/phpyun_20200312153927/config.php Url:访问(这里搭建的时候环境,我默认指向了uploads)
GJq600.png
查看文件config.php
GJq5c9.png
漏洞审计原因:
漏洞产生文件:\phpyun\uploads\admin\model\database.class.php
第50行 :'tablename'=>$_POST['table'] 直接接受了我们post请求发送的参数值
GJLiAf.png
然后56行调用了,BackupDatabaseInit() 方法,追踪该函数,
在\phpyun\uploads\app\include\dbbackup\class\functions.php,找到了该函数的定义
GJLnun.png
产生漏洞的原因在
GJLJgJ.png
这里他接收了传入的值并且没有任何过滤就写入了并且是写入的php文件,追踪$d_table 的传入来源 可以看到是通过$tablename[$i]拼接 的到的$d_table 的值 追踪$tablename
GJLrCD.png
可以看到是通过函数形参传入的$add的tablename 然后赋值的来的
GJLRbt.png
在回到\phpyun\uploads\admin\model\database.class.php看,发现tablename 是我们可以控制的,所以传入特定的php代码即可执行
GJLXV0.png
漏洞修复:
在每次写入config.php文件的时候,在他目录下创建.htaccess文件禁止解析php文件
GJOlqI.png