- admin/ajax.php: checkupdate / downloadupdatepacks / unzippacks 三个 端点合并为统一禁用存根(返回 JSON "远程更新已禁用(安全加固)"); 原逻辑从作者第三方域 (download.wenquan6.cn / download.bwenquan.com) 下载 zip 并解压到 Web 目录、再引导浏览器访问 install.php, 攻击者控制该域即可向所有部署实例推送恶意代码(供应链 RCE)。 - 删除辅助函数 get_zip_originalsize() 与 getFile()(仅更新链使用)。 - admin/html/welcome.html 与 admin/welcome.html: 移除"检查系统更新" 按钮及 function update() 整段 AJAX 链,替换为静态说明文案。 - admin/ajax.php: HTTP_USER_AGENT 比较改用 ?? 回退,消除无 UAgent 客户端触发的 Notice(UAgent 会话锁定行为保持不变)。 验证: php -l 通过;登录态调用三端点均返回禁用 JSON; UAgent 锁定对无 UAgent 客户端正确拒绝(code:-3)。
210 lines
8.5 KiB
HTML
210 lines
8.5 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="renderer" content="webkit">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
|
<title>欢迎页</title>
|
|
<link rel="stylesheet" href="../../static/frame/layui/css/layui.css">
|
|
<link rel="stylesheet" href="../../static/frame/static/css/style.css">
|
|
<link rel="icon" href="../../static/frame/static/image/code.png">
|
|
</head>
|
|
<body class="body">
|
|
|
|
<div class="layui-row layui-col-space10 my-index-main">
|
|
<div class="layui-col-xs4 layui-col-sm2 layui-col-md2">
|
|
<div class="my-nav-btn layui-clear">
|
|
<div class="layui-col-md5">
|
|
<button class="layui-btn layui-btn-big layui-btn-danger layui-icon"></button>
|
|
</div>
|
|
<div class="layui-col-md7 tc">
|
|
<p class="my-nav-text" id="appnum">loading</p>
|
|
<p class="my-nav-text layui-elip">应用数量</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-col-xs4 layui-col-sm2 layui-col-md2">
|
|
<div class="my-nav-btn layui-clear">
|
|
<div class="layui-col-md5">
|
|
<button class="layui-btn layui-btn-big layui-btn-warm layui-icon"></button>
|
|
</div>
|
|
<div class="layui-col-md7 tc">
|
|
<p class="my-nav-text" id="sysver">loading</p>
|
|
<p class="my-nav-text layui-elip">系统版本</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-col-xs4 layui-col-sm2 layui-col-md2">
|
|
<div class="my-nav-btn layui-clear">
|
|
<div class="layui-col-md5">
|
|
<button class="layui-btn layui-btn-big layui-icon"></button>
|
|
</div>
|
|
<div class="layui-col-md7 tc">
|
|
<p class="my-nav-text" id="czkeynum">loading</p>
|
|
<p class="my-nav-text layui-elip">充值卡密</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-col-xs4 layui-col-sm2 layui-col-md2">
|
|
<div class="my-nav-btn layui-clear">
|
|
<div class="layui-col-md5">
|
|
<button class="layui-btn layui-btn-big layui-btn-normal layui-icon"></button>
|
|
</div>
|
|
<div class="layui-col-md7 tc">
|
|
<p class="my-nav-text" id="tckeynum">loading</p>
|
|
<p class="my-nav-text layui-elip">套餐卡密</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-col-xs4 layui-col-sm2 layui-col-md2">
|
|
<div class="my-nav-btn layui-clear">
|
|
<div class="layui-col-md5">
|
|
<button class="layui-btn layui-btn-big layui-bg-cyan layui-icon"></button>
|
|
</div>
|
|
<div class="layui-col-md7 tc">
|
|
<p class="my-nav-text" id="agentnum">loading</p>
|
|
<p class="my-nav-text layui-elip">代理数量</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-col-xs4 layui-col-sm2 layui-col-md2">
|
|
<div class="my-nav-btn layui-clear">
|
|
<div class="layui-col-md5">
|
|
<button class="layui-btn layui-btn-big layui-bg-black layui-icon"></button>
|
|
</div>
|
|
<div class="layui-col-md7 tc">
|
|
<p class="my-nav-text" id="tradenum">loading</p>
|
|
<p class="my-nav-text layui-elip">订单数量</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="layui-col-xs12">
|
|
<div class="layui-collapse">
|
|
<div class="layui-colla-item">
|
|
<h2 class="layui-colla-title">来自温泉授权服务器的系统公告</h2>
|
|
<div class="flow-default layui-colla-content layui-show">
|
|
<iframe src="https://github.com/rakirizu/QuanAuth/blob/main/README.md"></iframe>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-col-xs12">
|
|
<div class="layui-collapse">
|
|
<div class="layui-colla-item">
|
|
<h2 class="layui-colla-title">系统更新</h2>
|
|
<div class="flow-default layui-colla-content layui-show" id="update" style="padding:10px;">
|
|
<span style="color:#999;">远程在线更新已出于安全考虑禁用(供应链风险)。版本升级请通过 Git 仓库获取部署包手动更新。</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-col-xs12">
|
|
<div class="layui-collapse">
|
|
<div class="layui-colla-item">
|
|
<h2 class="layui-colla-title">系统更新日志</h2>
|
|
<div class="flow-default layui-colla-content layui-show" id="uplog">
|
|
暂无
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script src="../../static/jquery-3.3.1.js"></script>
|
|
<script type="text/javascript" src="../../static/frame/layui/layui.js"></script>
|
|
<script type="text/javascript" src="../../static/js/index.js"></script>
|
|
<script type="text/javascript" src="../../static/frame/echarts/echarts.min.js"></script>
|
|
<script type="text/javascript">
|
|
layui.use(['flow', 'element', 'layer', 'vip_tab'], function () {
|
|
// 打开选项卡
|
|
var flow = layui.flow, vipTab = layui.vip_tab;
|
|
$('.my-nav-btn').on('click', function () {
|
|
if ($(this).attr('data-href')) {
|
|
//vipTab.add('','标题','路径');
|
|
vipTab.add($(this), '<i class="layui-icon">' + $(this).find("button").html() + '</i>' + $(this).find('p:last-child').html(), $(this).attr('data-href'));
|
|
}
|
|
});
|
|
|
|
|
|
$.ajax({
|
|
url: '../ajax.php?mod=getsysinfo',
|
|
type: 'POST',
|
|
dataType: 'json',
|
|
data: '',
|
|
success: function (data) {
|
|
$('#appnum').html(data.appnum);
|
|
$('#sysver').html(data.sysver);
|
|
$('#czkeynum').html(data.czkeynum);
|
|
$('#tckeynum').html(data.tckeynum);
|
|
$('#agentnum').html(data.agentnum);
|
|
$('#tradenum').html(data.tradenum);
|
|
},
|
|
error: function (data) {
|
|
$('#appnum').html('error');
|
|
$('#sysver').html('error');
|
|
$('#czkeynum').html('error');
|
|
$('#tckeynum').html('error');
|
|
$('#agentnum').html('error');
|
|
$('#tradenum').html('error');
|
|
}
|
|
});
|
|
|
|
// flow.load({
|
|
// elem: '#notice'
|
|
// , scrollElem: '#notice'
|
|
// , done: function (page, next) {
|
|
// var lis = [];
|
|
// $.ajax({
|
|
// url: '../ajax.php?mod=getnotice',
|
|
// type: 'POST',
|
|
// dataType: 'html',
|
|
// data: '',
|
|
// success: function (data) {
|
|
// $('#notice').html(data);
|
|
// next();
|
|
// },
|
|
// error: function (data) {
|
|
// $('#notice').html('嗷呜o(╥﹏╥)o 获取公告请求失败啦');
|
|
// next();
|
|
// }
|
|
// });
|
|
// //假设总页数为 6
|
|
// }
|
|
// });
|
|
|
|
// flow.load({
|
|
// elem: '#uplog'
|
|
// , scrollElem: '#uplog'
|
|
// , done: function (page, next) {
|
|
// var lis = [];
|
|
// $.ajax({
|
|
// url: '../ajax.php?mod=getuplog',
|
|
// type: 'POST',
|
|
// dataType: 'html',
|
|
// data: '',
|
|
// success: function (data) {
|
|
// $('#uplog').html('<div style="width: 100%;height: 800px;">\n' +
|
|
// ' <textarea class="layui-textarea" style="width: 100%;height: 800px;">' + data + '</textarea>\n' +
|
|
// ' </div>');
|
|
// next();
|
|
// },
|
|
// error: function (data) {
|
|
// $('#uplog').html('嗷呜o(╥﹏╥)o 获取系统更新日志失败啦');
|
|
// next();
|
|
// }
|
|
// });
|
|
// //假设总页数为 6
|
|
// }
|
|
// });
|
|
|
|
|
|
});
|
|
|
|
/* 安全加固 (P0-02):已移除远程在线更新前端逻辑 (function update / checkupdate / downloadupdatepacks / unzippacks)。
|
|
原逻辑引导浏览器访问解压出来的 install.php,属供应链 RCE 向量。 */
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|