小迪安全课程第二节复习笔记

网站架构安全:前后端分离、集成软件、Docker与分站系统


一、课程概述

1.1 知识衔接

  • 上节课回顾:常规化搭建(源码+数据库同服务器)、站库分离(源码与数据库分离)

  • 本节课核心:四种特殊架构的安全测试差异

    • 前后端分离架构

    • 集成软件搭建(宝塔/PHPStudy)

    • Docker容器化部署

    • 建站分配站(分站系统)

1.2 核心学习目标

理解不同架构对渗透测试路径的根本性影响------"架构决定攻击面,搭建方式决定利用难度"


二、前后端分离架构

2.1 核心概念

表格

对比维度 常规架构 前后端分离架构
技术栈 PHP/JSP/ASP + HTML混合 前端:Vue/React/Angular(JS框架) 后端:独立API服务
部署方式 前后端同域名、同目录 前端静态页面 + 后端独立域名/API
数据交互 服务端渲染,直接输出HTML 异步API请求(AJAX/RESTful)
后台位置 /admin/、/manage/等子目录 完全独立域名或子域名

2.2 典型特征识别

前端页面特征:

  • 页面简洁,单页应用(SPA)风格

  • 无传统分页,内容通过JS动态加载

  • URL多为#/或路径路由,无文件后缀

  • 网络监控可见大量XHR/Fetch API请求

后端独立特征:

plain

复制

复制代码
示例:
前端:www.example.com(Vue.js构建的静态页面)
后端:admin.example.com 或 api.example.com(独立服务)

2.3 安全测试影响

表格

影响维度 具体表现 测试策略
漏洞面缩小 前端无服务端逻辑,传统SQL注入、RCE等消失 聚焦API接口测试:未授权访问、越权、IDOR
后台隐蔽性 后台不在同域名,目录扫描无效 子域名枚举、API文档分析、JS文件逆向
权限隔离 前端GetShell≠后端受影响 需分别获取前后端权限,可能完全隔离
技术栈差异 前端框架漏洞(Vue XSS配置等) 关注框架历史漏洞、CORS配置、API鉴权

2.4 渗透测试流程

Mermaid

全屏

下载

复制

代码预览

识别前后端分离特征前端JS分析提取API端点后端子域名枚举API安全测试未授权/越权/注入获取后端权限判断前后端关联同域名子域?影响前端:独立部署?需分别控制

关键注意点:

  • ⚠️ 前端上传点GetShell通常无法控制后端(域名隔离)

  • ⚠️ 必须找到真实后端地址,否则测试无法深入

  • ⚠️ API鉴权绕过是核心突破口(JWT伪造、Session固定等)


三、集成软件搭建(宝塔 vs PHPStudy)

3.1 搭建方式对比

表格

维度 手动搭建(IIS/Apache) 宝塔面板 PHPStudy
部署复杂度 高(逐个安装配置) 极低(一键安装) 极低(一键安装)
环境隔离 系统级服务 软件级隔离 软件级隔离
默认权限 继承系统权限(Administrator) 严格限制(无法跨目录、禁命令执行) 继承系统权限(较宽松)
安全投入 依赖管理员配置 内置安全防护(持续更新) 基础防护(默认关闭)
市场份额 企业级自建 个人/中小站长主流 逐渐被宝塔替代

3.2 宝塔安全机制详解

文件管理限制:

  • WebShell只能看到当前网站目录

  • 无法访问上级目录(C:\、/等)

  • 提示:"路径没有发现或没有权限"

命令执行限制:

  • 默认禁用system()、exec()等函数

  • 返回错误:Warning: system() has been disabled for security reasons

权限原理:

plain

复制

复制代码
宝塔设计:网站运行用户 ≠ 系统管理员
         ↓
    独立用户权限(如 www 用户)
         ↓
    仅对网站目录有读写权限
         ↓
    即使GetShell,也无法突破目录隔离

3.3 PHPStudy安全机制

默认状态:

  • 无强制权限隔离

  • WebShell继承运行用户权限(通常为Administrator)

  • 可执行系统命令、可遍历全盘

可配置防护:

plain

复制

复制代码
网站管理 → 安全设置 → 可启用:
- 防跨站攻击(open_basedir)
- 禁用危险函数
- 目录权限限制

3.4 三者权限对比实验

表格

测试项 IIS手动搭建 宝塔面板 PHPStudy
查看上级目录 ✅ 可见 ❌ 拒绝 ✅ 可见
查看C盘/根目录 ⚠️ 部分可见(权限决定) ❌ 完全拒绝 ✅ 完全可见
执行系统命令 ⚠️ 部分可执行 ❌ 函数被禁用 ✅ 完全可执行
当前权限用户 IIS_IUSRS/自定义 隔离用户(www) Administrator

核心结论:

宝塔 > IIS手动 > PHPStudy(默认安全强度) 但需注意:PHPStudy开启安全设置后可接近宝塔水平


四、Docker容器化部署

4.1 核心概念

技术本质:操作系统级虚拟化,共享内核,隔离进程/文件/网络

与传统虚拟机对比:

表格

特性 传统虚拟机 Docker容器
启动速度 分钟级 秒级
资源占用 GB级(独立OS) MB级(共享内核)
隔离级别 硬件级完全隔离 进程级隔离(Namespace/Cgroup)
镜像分发 整机镜像 分层镜像(Docker Hub)

4.2 快速部署流程

bash

复制

复制代码
# 1. 安装Docker(以Ubuntu为例)
curl -fsSL https://get.docker.com | sh

# 2. 拉取镜像(以Tomcat为例)
docker pull tomcat:8.0

# 3. 启动容器(端口映射)
docker run -d -p 8080:8080 --name my-tomcat tomcat:8.0

# 4. 验证访问
curl http://localhost:8080

4.3 安全测试核心差异

容器内视角 vs 宿主机视角:

表格

操作 容器内看到 宿主机实际
whoami root 容器内的root(非真实root)
ls / 容器文件系统 仅overlay层,非宿主机根目录
创建文件 容器内可见 宿主机特定目录(Volume/overlay2)
进程列表 仅容器进程 宿主机可见所有进程

关键安全影响:

"容器逃逸"成为核心课题------GetShell只是起点,突破容器边界才是目标

容器逃逸前提条件:

  • 内核漏洞(如Dirty Cow、CVE-2016-5195)

  • 危险挂载(Docker Socket、/proc、/sys挂载到容器)

  • 特权模式运行(--privileged)

  • Capabilities配置不当


五、建站分配站(分站系统)

5.1 模式定义

表格

类型 特征 示例
全权托管 用户仅使用,无控制权 凡科建站、阿里云速成美站
申请分配 平台分配子域名,用户可配置内容 免费建站平台、部分网校系统

5.2 识别特征

域名特征:

plain

复制

复制代码
真实用户域名:www.xiaodi-blog.com(备案信息:个人/企业)
建站平台分配:xiaodi123.vip.fkw.com(备案信息:凡科建站)
              xiaodi456.my3w.com(备案信息:万网/阿里云)

技术识别方法:

  1. 备案查询:工信部备案系统查域名主体

  2. Whois查询:注册信息是否匹配网站宣称主体

  3. 指纹特征:特定JS文件、CSS类名、HTML注释

5.3 安全测试边界

表格

场景 测试对象 实际影响
免费建站平台 平台本身 用户无真实资产,测试价值低
政务托管网站 托管服务商 需区分"展示型"vs"业务型"
企业分站系统 主站平台 一个平台漏洞影响所有分站

关键判断:

域名所有权 ≠ 网站控制权 ≠ 数据归属权


六、静态网站与伪静态

6.1 静态网站特征

表格

维度 动态网站 纯静态网站
技术 PHP/JSP/ASP + 数据库 HTML + CSS + JS(无服务端)
内容更新 后台管理,数据库存储 直接修改HTML文件
交互性 用户登录、评论、搜索等 仅展示,无交互或JS模拟
漏洞面 SQL注入、RCE、文件上传等 几乎无漏洞(无数据传输)
识别特征 URL带参数(?id=1)、有后台 单页面、无后台、无数据库交互

6.2 伪静态技术

原理:动态内容生成静态HTML文件,或URL Rewrite伪装

实现方式:

apache

复制

复制代码
# Apache .htaccess 示例
RewriteEngine On
RewriteRule ^article/([0-9]+)\.html$ article.php?id=$1 [L]

识别方法:

  • 表面URL:/article/123.html(看似静态)

  • 实际处理:服务器内部重写为article.php?id=123

  • 判断技巧:修改URL参数看是否动态响应、查看HTTP头X-Powered-By


七、核心工具与命令

7.1 Docker操作命令

表格

命令 用途 示例
docker pull <镜像> 拉取镜像 docker pull tomcat:8.0
docker run [选项] <镜像> 启动容器 docker run -d -p 8080:8080 tomcat:8.0
docker ps 查看运行容器 docker ps -a(含已停止)
docker exec -it <ID> /bin/bash 进入容器 docker exec -it abc123 /bin/bash
docker stop/start <ID> 停止/启动容器 docker stop abc123
docker rm <ID> 删除容器 docker rm -f abc123

端口映射详解:

bash

复制

复制代码
docker run -d -p 宿主机端口:容器端口 --name 容器名 镜像名
# 示例:将容器8080映射到宿主机8080
docker run -d -p 8080:8080 --name my-tomcat tomcat:8.0

7.2 WebShell连接工具

表格

工具 适用场景 特征
哥斯拉(Godzilla) 加密通信、绕过WAF 支持ASP/PHP/JSP/ASPX,流量加密
蚁剑(AntSword) 插件扩展、快速连接 开源,插件市场丰富
冰蝎(Behinder) 高隐蔽性需求 基于Java加密,特征隐蔽

7.3 信息收集工具

表格

工具 用途 关键参数
Nmap 端口扫描 nmap -sV -p 1-65535 target.com
Sublist3r 子域名枚举 python sublist3r.py -d target.com
Dirsearch 目录爆破 python dirsearch.py -u target.com -e php,asp
WhatWeb 指纹识别 whatweb target.com

八、可复现实验流程

实验1:三种搭建方式权限对比

环境准备:

  • Windows Server 2012/2016

  • 宝塔面板安装包(官网下载)

  • PHPStudy(官网下载)

  • IIS(系统自带)

步骤1:宝塔搭建

Markdown

复制

代码预览

复制代码
1. 安装宝塔面板 → 运行安装包 → 等待完成
2. 登录面板 → 软件商店 → 安装Apache/Nginx + MySQL + PHP
3. 一键部署WordPress/Z-Blog
4. 上传WebShell(PHP)→ 连接测试
5. 记录:能否执行命令?能否跨目录?

步骤2:PHPStudy搭建

markdown

复制

复制代码
1. 安装PHPStudy → 启动Apache + MySQL
2. 创建网站 → 绑定域名 → 选择PHP版本
3. 同目录放置相同WebShell
4. 连接测试 → 对比权限差异

步骤3:IIS手动搭建

Markdown

复制

代码预览

复制代码
1. 服务器管理器 → 添加角色 → Web服务器(IIS)
2. 勾选ASP.NET、CGI等必要组件
3. 手动配置站点 → 绑定域名
4. 部署相同WebShell
5. 对比三种环境的命令执行与目录遍历能力

预期结果对比表:

表格

测试项 宝塔 PHPStudy IIS手动
命令执行 ❌ 禁用 ✅ 允许 ⚠️ 部分允许
跨目录访问 ❌ 拒绝 ✅ 允许 ⚠️ 依赖配置
系统信息获取 ❌ 有限 ✅ 完整 ⚠️ 部分

实验2:Docker容器逃逸认知

bash

复制

复制代码
# 1. 启动漏洞环境(以Vulhub为例)
git clone https://github.com/vulhub/vulhub.git
cd vulhub/tomcat/CVE-2017-12615

# 2. 启动环境
docker-compose up -d

# 3. 获取WebShell后,观察容器内环境
uname -a          # 内核版本(与宿主机相同)
cat /proc/1/cgroup  # 查看cgroup确认容器身份
ls /              # 容器文件系统

# 4. 对比宿主机
# 在宿主机执行相同命令,观察差异

九、本章核心考点总结

简答题高频考点

表格

考点 标准答案要点 考察频率
前后端分离识别方法 ①页面简洁无刷新(SPA特征) ②大量API请求(XHR/Fetch) ③后台独立域名/子域名 ④前端Vue/React框架特征 ⭐⭐⭐⭐⭐
宝塔 vs PHPStudy 安全差异 宝塔:内置权限隔离、命令禁用、目录限制 PHPStudy:默认继承系统权限、宽松配置 原因:安全投入与设计理念差异 ⭐⭐⭐⭐⭐
Docker容器逃逸概念 突破Namespace/Cgroup隔离,获取宿主机权限 前提:内核漏洞、危险挂载、特权模式 防御:最小权限原则、Capabilities限制 ⭐⭐⭐⭐⭐
建站平台识别方法 ①域名备案信息查询 ②Whois注册主体比对 ③技术指纹(特定JS/CSS) ④子域名特征(平台统一后缀) ⭐⭐⭐⭐
静态网站安全特征 无服务端处理、无数据库交互 漏洞面极小(仅前端XSS、JS问题) 识别:单页面、无后台、无动态参数 ⭐⭐⭐⭐

实操题高频场景

  1. 架构识别:给定目标,判断是前后端分离/常规架构/静态网站

  2. 权限绕过:宝塔环境下寻找可执行命令的替代方法

  3. 容器判断:通过WebShell特征判断是否在Docker内

  4. 平台识别:通过域名信息判断是否为建站分配站

关键记忆口诀

plain

复制

复制代码
前后端分离看API,后台独立难寻觅
宝塔安全靠隔离,PHPStudy看配置
Docker里面是假象,逃逸才是真目标
建站平台查备案,域名信息露马脚
静态网站光秃秃,无洞可找真头疼
相关推荐
学逆向的9 小时前
win32注入代码
开发语言·网络安全·api·win32
Web Security Loop10 小时前
MAC安装最新Burpsuite pro详细步骤教程
web安全·macos·网络安全·安全性测试
墨云安全16 小时前
红队评估和渗透测试的区别是什么?2026 年从目标、方法到交付物的对比
网络·安全·web安全·网络安全·渗透测试
刘婉晴19 小时前
【APP安全测试】Frida 基础
网络安全
科技象限20 小时前
数据防泄密系统怎么选?看它怎么把几道防线叠成网
运维·安全·网络安全·安企神
sbjdhjd21 小时前
云安全 | 从特权容器到旧版 runC:Docker 宿主机访问与运行时缺陷复盘
运维·网络安全·docker·云原生·kubernetes·云计算·云安全
sbjdhjd2 天前
云安全 | Docker 容器逃逸复盘(三):docker.sock 挂载与 Docker-in-Docker 风险
经验分享·网络安全·docker·云原生·容器·kubernetes·云安全
Dachui_11222 天前
内网穿透如何限制访问地区?ZeroNews Geo Location 区域访问控制实践
运维·网络安全·内网穿透·访问控制·远程办公·api安全·ip白名单
HackTwoHub2 天前
DeepSeek Harness 红队破甲插件|适配 SRC 挖掘场景,区分平台拦截与模型原生输出,用于大模型安全边界合规测评研究
安全·web安全·网络安全·系统安全·密码学·网络攻击模型·安全架构
菩提小狗2 天前
每日安全情报报告 · 2026-10-09
网络安全·漏洞·cve·安全情报·每日安全