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

网站架构安全:前后端分离、集成软件、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里面是假象,逃逸才是真目标
建站平台查备案,域名信息露马脚
静态网站光秃秃,无洞可找真头疼
相关推荐
谪星·阿凯2 小时前
从入门到拿Flag:XXE漏洞全解析
安全·web安全·网络安全
乾元3 小时前
全球治理: 从《AI 法案》看安全合规的国际趋势
网络·人工智能·安全·机器学习·网络安全·架构·安全架构
枫叶丹44 小时前
【HarmonyOS 6.0】使用PAC脚本灵活管理网络连接
开发语言·网络安全·华为·信息与通信·harmonyos
乾元4 小时前
未来展望: 当 AGI(通用人工智能)出现,网络安全是否会消失?
网络·人工智能·安全·机器学习·网络安全·架构·安全架构
小小邵同学17 小时前
jsp payload解析
网络安全
土豆.exe19 小时前
OpenClaw 安全保险箱怎么做?从 ClawVault 看 AI Agent 的原子化控制、检测与限额
人工智能·网络安全·ai安全·openclaw
Chengbei1121 小时前
Chrome浏览器渗透利器支持原生扫描!JS 端点 + 敏感目录 + 原型污染自动化检测|VulnRadar
javascript·chrome·安全·web安全·网络安全·自动化·系统安全
ShoreKiten1 天前
DC-3靶机渗透--CTFer从0到1的进阶之路
安全·网络安全·渗透测试
网安情报局1 天前
2026网络安全六大确定性趋势
大数据·人工智能·网络安全