网站搭建基础与安全测试影响因素
一、课程概述与核心思路
1.1 课程定位
-
章节:基础入门 → 网站产品 → 常规类网站搭建
-
课时:3次直播(本次为第1次,聚焦常规搭建)
-
核心目标:从搭建角度理解组成结构,分析对应安全问题
-
关键价值:8个知识点直接影响后续漏洞学习与渗透思路
1.2 课程覆盖范围
plain
复制
网站产品(3次直播)
├── 常规类网站搭建(本次)
├── 集成软件/Docker/分站搭建(下次)
└── 小程序/人机应用/APP(后续)
其他章节:安全产品、抓包技术、算法等
二、网站搭建核心架构
2.1 四大组件(必备)
表格
| 组件 | 功能说明 | 安全影响 |
|---|---|---|
| 操作系统 | Windows/Linux服务器系统 | 系统级漏洞、权限体系 |
| 中间件 | IIS/Nginx/Apache等Web服务器 | 配置决定漏洞利用成败 |
| 数据库 | 数据存储与管理 | 架构决定数据获取难度 |
| 程序源码 | 网站业务逻辑实现 | 类型决定测试方法 |
2.2 环境搭建流程(云服务器版)
步骤1:资源准备
-
购买云服务器(推荐阿里云/腾讯云按量付费,约0.3元/小时)
-
注册域名并完成实名认证
步骤2:中间件安装
-
Windows Server示例:通过"添加角色和功能"安装IIS
-
路径:服务器管理器 → 添加角色和功能 → 勾选"Web服务器(IIS)"
步骤3:源码部署
plain
复制
1. 下载目标源码(如Z-Blog ASP博客程序)
2. 解压至网站目录(如C:\inetpub\wwwroot\blog)
3. IIS中添加网站 → 绑定域名 → 指定物理路径
4. 配置域名解析(A记录指向服务器IP)
5. 等待TTL生效(通常10分钟内)
关键注意点:域名解析与主机名绑定需一致,否则出现"未绑定"错误
三、网站部署模式与安全影响
核心原则:部署模式直接决定攻击面范围,信息收集需针对性调整
3.1 子域名模式
原理:同一主域名下,不同子域名指向不同程序/目录
表格
| 示例 | 指向内容 | 安全意义 |
|---|---|---|
www.xxx.com |
官网首页 | 主站程序漏洞 |
bbs.xxx.com |
Discuz论坛 | 论坛程序漏洞 |
oa.xxx.com |
通达OA系统 | OA系统漏洞 |
blog.xxx.com |
WordPress博客 | WP插件漏洞 |
测试要点:
-
每个子域名 = 独立目标
-
需全面子域名枚举(工具:Sublist3r、OneForAll、Layer子域名挖掘机)
-
不同程序 = 不同漏洞面
3.2 端口模式
原理:同一IP,不同端口运行不同应用
plain
复制
示例:
8.218.70.35:80 → 企业官网(IIS+ASP)
8.218.70.35:8080 → 管理后台(Tomcat+Java)
8.218.70.35:8888 → 宝塔面板(集成环境)
测试要点:
-
端口扫描发现隐藏应用(
nmap -sV -p 1-65535 target.com) -
域名相同≠目标相同,每个端口是独立攻击点
-
常见Web端口:80/443/8080/8443/8888/7001等
3.3 目录模式
原理:同一网站下,子目录部署独立源码
plain
复制
示例:
http://xxx.com/ → 主站(Z-Blog)
http://xxx.com/blog/ → 子目录(WordPress)
http://xxx.com/bbs/ → 子目录(Discuz)
测试要点:
-
目录爆破发现嵌套应用(Dirsearch、御剑)
-
任何子目录程序漏洞都会影响整体安全
-
注意路径穿越与目录权限问题
3.4 特殊部署模式
表格
| 模式 | 特征 | 安全差异 |
|---|---|---|
| 集成软件(宝塔/PHPStudy) | 一键部署环境 | 可能存在统一漏洞点,版本集中 |
| Docker容器 | 镜像化部署 | 隔离性强,需容器逃逸 |
| 分站系统(网校平台) | 平台分配子域名 | 测试对象是平台本身,非单个用户 |
| 自建机房 | 企业级物理服务器 | 与传统云架构差异大,需定制化思路 |
四、中间件配置与安全防御
核心原则:中间件三道防线(权限/认证/解析)可直接阻断漏洞利用
4.1 目录权限控制
防御原理:限制脚本执行权限
配置方法(IIS示例):
plain
复制
1. 右键目标目录 → 编辑权限 → 安全选项卡
2. 选择用户组 → 勾选"拒绝"执行权限
3. 应用场景:图片上传目录、静态资源目录
攻防对抗:
-
防御效果:后门文件无法执行,返回401未授权
-
绕过限制:寻找其他有执行权限的目录(如缓存目录、日志目录)
-
关键限制:不能全局禁用执行权限,否则正常网站无法运行
4.2 身份验证机制【高频考点】
防御原理:操作系统级认证拦截
配置方法:
plain
复制
IIS → 身份验证 → 启用Windows身份验证 → 禁用匿名认证
核心特征:
-
访问需服务器本地账号密码
-
无法绕过(Web层漏洞无法突破操作系统认证)
-
有账号密码 = 可直接登录服务器,无需搞网站
测试应对:寻找未启用认证的其他入口,或转向其他攻击面
4.3 MIME类型解析
防御原理:控制文件解析方式
配置方法:
plain
复制
IIS → MIME类型 → 添加/修改扩展名映射
示例:.asp → image/png(将ASP解析为图片)
攻防对抗:
-
正常配置 :
.asp→application/x-asp(脚本执行) -
防御配置 :
.asp→image/png(静态显示) -
攻击影响:WebShell上传后无法执行,仅显示乱码
五、数据库架构与安全演进
5.1 三种架构对比
表格
| 架构类型 | 部署方式 | 连接特征 | 渗透难度 |
|---|---|---|---|
| 本地存储(Access) | 与源码同服务器 | 无账号密码,文件直读 | ⭐⭐ |
| 站库分离 | 数据库独立服务器 | 需外网连接权限+账号密码 | ⭐⭐⭐⭐ |
| 云数据库RDS | 云服务托管 | IP白名单/密钥认证/安全组 | ⭐⭐⭐⭐⭐ |
5.2 Access数据库(本地存储)
特征:
-
单文件存储(
.mdb或.accdb) -
无账号密码机制
-
通过文件路径访问
渗透方法:
plain
复制
1. 定位数据库文件(常见路径:/data/、/database/、/app_data/)
2. 通过目录遍历或下载漏洞获取文件
3. 使用Office Access或专用工具打开
4. 提取敏感表:admin、users、config
5. 解密管理员密码(常见MD5或自定义加密)
关键文件 :conn.asp中通常包含数据库连接路径
5.3 站库分离架构
配置特征:
asp
复制
' conn.asp 示例
db_host = "8.218.72.88" ' 数据库服务器IP(非Web服务器)
db_user = "sa" ' 数据库账号
db_pass = "Password123" ' 数据库密码
db_name = "zblog" ' 库名
渗透影响:
-
即使获取账号密码,需外网连接权限才能访问
-
数据库服务器可能限制连接IP(仅允许Web服务器访问)
-
SQL注入利用受限(无法直接连接提权)
5.4 云数据库RDS【新兴架构】
安全机制:
-
安全组规则:限制连接源IP
-
密钥认证:替代传统账号密码
-
内网隔离:无公网IP,需通过VPC访问
渗透适配:
-
传统连接方式可能完全失效
-
需寻找SSRF漏洞访问云元数据服务
-
利用云API密钥横向移动
六、源码类型与审计方法
6.1 三大类型特征
表格
| 类型 | 获取难度 | 安全系数 | 测试方法 |
|---|---|---|---|
| 开源代码 | 低(网上可下载) | 低 | 白盒审计+黑盒测试 |
| 商业闭源 | 中(需购买) | 中 | 黑盒测试为主 |
| 自研代码 | 高(无法获取) | 高 | 纯黑盒,需定制化思路 |
6.2 开源代码的细分
表格
| 可见性状态 | 成因 | 处理方法 |
|---|---|---|
| 完全可见 | 原始源码未处理 | 直接代码审计 |
| 加密混淆 | PHP/Zend加密、.NET混淆 | 寻找解密工具或转黑盒 |
| 语言特性 | Java编译为.class、C#编译为DLL | 反编译工具还原(JD-GUI、ILSpy) |
6.3 源码结构识别
关键目录功能:
表格
| 目录名 | 功能推测 | 安全价值 |
|---|---|---|
admin/、manage/ |
后台管理 | 未授权访问、弱口令 |
data/、database/ |
数据存储 | 数据库文件、备份文件 |
config/、include/ |
配置文件 | 数据库连接、密钥硬编码 |
upload/、files/ |
文件上传 | 上传漏洞、WebShell入口 |
template/、themes/ |
模板文件 | 模板注入、文件包含 |
api/、mobile/ |
接口目录 | API未授权、越权漏洞 |
七、路由访问模式【易混淆点】
7.1 常规路由模式
特征:URL路径与文件系统路径一一对应
plain
复制
示例:
URL: http://xxx.com/post/1.txt
实际路径:C:\inetpub\wwwroot\post\1.txt
访问逻辑:
域名绑定根目录 → 按URL路径逐级查找 → 返回对应文件
利用特征:上传后门后,直接访问URL即可触发
7.2 框架路由模式【高频考点】
特征:URL由配置文件映射,与物理路径无关
常见于:Java(Spring)、Python(Django/Flask)、PHP(ThinkPHP/Laravel)
plain
复制
示例:
物理路径:/WEB-INF/classes/action/UserAction.class
URL路由:/user/login(通过web.xml或注解配置)
结果:
直接访问 /WEB-INF/classes/action/UserAction.class → 404
访问 /user/login → 正常触发
渗透影响:
-
文件存在≠可访问,必须按路由规则构造URL
-
后门上传后需分析路由配置才能触发
-
信息收集需识别框架类型(看URL特征、报错信息)
八、云原生架构安全【趋势重点】
8.1 对象存储OSS
传统上传漏洞利用链:
plain
复制
上传恶意脚本 → 保存至Web目录 → 访问执行 → GetShell
OSS架构改变:
plain
复制
上传文件 → 转存至OSS(如阿里云OSS、AWS S3)→ 返回访问URL
↓
文件仅存储,无执行环境
访问URL返回静态文件内容
安全影响 :传统上传漏洞完全失效,需寻找其他入口
8.2 云数据库渗透路径
表格
| 传统手法 | 云环境限制 | 适配方案 |
|---|---|---|
| 直接连接数据库 | 安全组拒绝 | SSRF访问元数据服务 |
| 账号密码爆破 | 使用IAM密钥 | 窃取凭证调用云API |
| SQL注入提权 | 无系统权限 | 利用注入读取其他租户数据 |
九、核心工具与命令汇总
9.1 信息收集(必学)
表格
| 工具 | 核心命令 | 用途 |
|---|---|---|
| Nmap | nmap -sV -p 1-65535 target.com |
全端口扫描 |
nmap -sC -sV --script=vuln target.com |
漏洞脚本扫描 | |
| Dirsearch | python dirsearch.py -u http://target.com -e php,asp,aspx |
目录爆破 |
| Sublist3r | python sublist3r.py -d target.com |
子域名枚举 |
9.2 WebShell管理(必学)
表格
| 工具 | 适用场景 | 特征 |
|---|---|---|
| 哥斯拉(Godzilla) | 加密通信需求 | 流量加密,绕过WAF |
| 蚁剑(AntSword) | 插件扩展需求 | 开源,插件市场丰富 |
| 冰蝎(Behinder) | 高隐蔽需求 | 加密流量,特征隐蔽 |
9.3 数据库与反编译
表格
| 工具 | 用途 | 适用场景 |
|---|---|---|
| Navicat | 数据库可视化管理 | 常规数据库连接 |
| SQLMap | sqlmap -u "http://target.com?id=1" --dbs |
SQL注入自动化 |
| JD-GUI | Java反编译 | .class/.jar文件还原 |
| ILSpy/dnSpy | .NET反编译 | DLL/EXE还原源码 |
十、可复现操作流程
流程1:完整信息收集
bash
复制
# 步骤1:子域名枚举
python sublist3r.py -d target.com -o subdomains.txt
# 步骤2:端口扫描(对主域+子域)
nmap -sV -p 1-65535 -iL subdomains.txt -oN port_scan.txt
# 步骤3:目录爆破(对每个开放Web服务的端口)
python dirsearch.py -u http://sub.target.com:8080 -e php,asp,aspx,jsp -t 50
# 步骤4:指纹识别(识别CMS/框架)
whatweb http://sub.target.com
流程2:Access数据库利用
plain
复制
1. 访问目标网站,识别技术栈(ASP+Access特征)
2. 目录爆破寻找数据库目录(/data/、/database/、/app_data/)
3. 尝试下载数据库文件(如/download/data.mdb)
4. 使用Access或MDB Viewer打开
5. 定位admin表,提取用户名+加密密码
6. 在线解密或本地爆破获取明文
7. 登录后台,寻找上传点
流程3:WebShell植入与连接
plain
复制
1. 定位上传点(头像上传、附件上传、编辑器上传)
2. 上传测试:先上传正常图片,确认目录可写
3. 上传WebShell(根据语言选择:asp、php、jsp、aspx)
4. 使用哥斯拉/蚁剑配置连接:
- URL:http://target.com/upload/shell.asp
- 密码:自定义密钥
- 编码器:根据目标选择(ASP、PHP等)
5. 连接失败排查:
- 401错误 → 检查目录执行权限
- 404错误 → 检查路由模式(框架路由需特殊URL)
- 显示乱码 → 检查MIME解析配置
本章核心考点总结(SRC/CTF/面试)
简答题高频考点
表格
| 考点 | 标准答案要点 | 考察频率 |
|---|---|---|
| WebShell植入条件 | ①上传/写入点 ②目录执行权限 ③MIME解析允许 ④无身份验证拦截 | ⭐⭐⭐⭐⭐ |
| 站库分离原理 | 网站与数据库分属不同服务器,需外网连接权限,直接影响SQL注入利用 | ⭐⭐⭐⭐⭐ |
| 框架路由vs常规路由 | 常规路由URL=路径;框架路由URL由配置映射,文件存在≠可访问 | ⭐⭐⭐⭐⭐ |
| 中间件三道防线 | 目录权限(可部分绕过)、身份验证(无法绕过)、MIME解析(可配置绕过) | ⭐⭐⭐⭐⭐ |
| 云数据库RDS特征 | IP白名单、密钥认证、安全组限制,传统连接方式可能失效 | ⭐⭐⭐⭐ |
实操题高频场景
-
子域名枚举+端口扫描:发现隐藏管理后台
-
Access数据库下载:从配置文件定位到密码提取
-
目录权限绕过:寻找可执行目录植入后门
-
框架路由分析:构造正确URL触发上传的后门
关键记忆口诀
plain
复制
子域端口和目录,每种模式都独立
身份验证绕不过,拿到账号登系统
站库分离云数据库,传统手法要升级
框架路由看配置,文件存在访不了
OSS存储无执行,上传漏洞变无效
文档版本 :v1.0
适用课程 :小迪安全-基础入门-网站搭建与安全测试
建议配套:动手搭建IIS+ASP+Access环境,复现课程演示场景