web架构
[TOC]
Web架构
一、核心架构类型
| 架构类型 | 示例 | 核心特点 | 安全测试思路 |
|---|---|---|---|
| 套用模版型 | CSDN、CNBlog、GitHub、织梦CMS | 基于成熟模板搭建,基础模板无原生漏洞,依赖插件/配置扩展 | 重点测试用户权限隔离(如普通用户越权访问管理员后台)、插件/模板已知漏洞适配 |
| 前后端分离 | https://www.rxthink.cn/ | 前端(Vue/NodeJS/Angular)与后端(API服务)完全分离,通过接口交互 | 前端:XSS(v-html指令)、本地存储敏感信息泄露;后端:API未授权访问、参数篡改;额外核查跨域配置(CORS) |
| 集成软件包 | 宝塔、Phpstudy、XAMPP | 一键部署Web环境(含服务器、数据库、解析器),配置自动化 | 测试软件包默认账户/弱密码、防护规则绕过(如宝塔面板未开启IP限制)、组件版本漏洞(如Phpstudy内置PHP旧版本漏洞) |
| 自主环境镜像 | 阿里云自定义镜像、本地手动搭建 | 环境组件(如Nginx、MySQL)按需配置,灵活性高但易漏配安全策略 | 核查端口暴露范围(如3306公网开放)、组件权限过度(如MySQL root账户允许远程登录)、安全补丁未更新 |
| 容器拉取镜像 | Docker(Nginx/MySQL容器) | 基于虚拟化技术,环境隔离性强,组件打包部署 | 重点测试容器逃逸(如挂载宿主机目录权限滥用)、容器间网络隔离失效、镜像内置弱密码/后门 |
| 纯静态页面 | 纯HTML+CSS+JS(无后端交互) | 仅展示静态资源,无动态脚本执行、数据库交互 | 无常规Web漏洞,重点核查敏感信息泄露(如页面注释含后台地址)、资源访问权限(如未授权下载备份文件) |
二、域名形态差异
1. 常见域名类型
| 类型 | 定义 | 示例 | 核心特点 | 潜在风险 |
|---|---|---|---|---|
| 主站 | 域名体系核心,品牌官方主要入口 | www.pnfdbsw.com、pnfdbsw.com(裸域) | 承载核心业务,解析指向主服务器集群 | 核心资产暴露,易成为攻击目标 |
| 分站 | 主域名下二级域名,区分独立业务模块 | blog.pnfdbsw.com、shop.pnfdbsw.com | 可独立/共享IP,独立服务器/子系统,不同团队维护 | 分站漏洞横向渗透主站(如Cookie共享无隔离) |
| 端口站 | 主域名+非默认端口(非80/443) | www.pnfdbsw.com:88(业务端口)、www.pnfdbsw.com:8080(测试环境) | 同一IP下区分服务,常用于测试/附属功能 | 测试环境未授权访问(如8080端口无密码) |
| 目录站 | 主域名下子目录服务,共享IP和端口 | www.pnfdbsw.com/bbs/、www.pnfdbsw.com/admin/ | 依赖Nginx/Apache目录权限控制 | 目录遍历漏洞(如../../etc/passwd)、权限配置不当导致越权 |
| 子站(多级域名) | 二级域名下更深层级,细分业务/专属服务 | 123.blog.pnfdbsw.com(用户专属)、api.v1.pnfdbsw.com(版本化API) | 域名层级深,对应细分功能/用户资源 | 废弃子站DNS记录被接管、多级权限管控缺失 |
2. 安全测试思路
- 隐藏资产挖掘:用子域名枚举工具(如OneForAll)扫描
*.pnfdbsw.com,查找test/admin/dev等未公开站点 - 架构边界核查:测试分站与主站的Cookie隔离、Session共享情况,端口站是否限制访问IP
- 配置漏洞利用:检测废弃子站DNS解析是否指向可控资源(子域名接管)、CORS是否允许任意域名跨域请求
三、源码相关
1. 源码形式及特点
| 源码形式 | 示例 | 核心特点 | 测试注意事项 |
|---|---|---|---|
| 单纯简易源码 | 小型个人网站(纯PHP/HTML) | 无框架依赖,代码逻辑简单 | 重点核查硬编码密码、SQL注入(直接拼接参数) |
| MVC框架源码 | ThinkPHP/Django开发的站点 | 分层架构(Controller/Model/View),规范度高 | 针对框架版本匹配已知漏洞(如ThinkPHP 5.0远程代码执行) |
| 编译调用源码 | .NET-DLL封装、Java-Jar打包、C#-EXE调用 | 源码不可直接查看,需反编译 | 先通过反编译工具(如JD-GUI)还原代码,再审计逻辑漏洞 |
| 前后端分离源码 | Vue+Spring Boot开发的站点 | 前端无后端代码,后端仅提供API | 前端测XSS/本地存储泄露,后端测API权限/参数校验 |
| 加密型源码 | 通达OA、加密商业CMS | 源码混淆/加密,无法直接阅读 | 先脱密(如破解PHP加密狗)或逆向,再开展漏洞挖掘 |
2. 核心目录与风险对应
| 目录/文件 | 风险类型 | 示例漏洞 |
|---|---|---|
| /admin/、/manage/ | 权限漏洞、弱口令 | 管理员弱密码(admin/123456)、未授权访问后台 |
| /upload/、/files/ | 文件上传、文件包含 | 上传.php木马、../遍历读取敏感文件 |
| /controller/ | 代码执行、逻辑漏洞 | 控制器参数未过滤导致命令注入 |
| /static/、/templates/ | XSS、前端逻辑漏洞 | v-html指令未过滤导致存储型XSS |
| /config/、config.php | 敏感信息泄露 | 泄露数据库账号密码、密钥(如JWT密钥) |
3. 语言与框架漏洞
| 语言 | 主流框架 | 典型漏洞点 | 测试工具/Payload |
|---|---|---|---|
| ASP/ASPX | - | 文件上传、SQL注入、会话劫持 | SQL注入Payload:%20or%201=1– |
| PHP | ThinkPHP、Laravel、YII | 文件包含、代码执行、参数覆盖、调试模式泄露 | 文件包含Payload:?file=../../etc/passwd |
| Java | Spring、MyBatis、Struts2 | 反序列化、OGNL表达式注入、Actuator未授权访问 | Struts2 S2-045 Payload:%24%7B%23_memberAccess%5B%27allowStaticMethodAccess%27%5D%3Dtrue%7D |
| Python | Django、Flask、Tornado | SSTI、CSRF缺失、调试模式泄露 | Flask SSTI Payload:{{config.items()}} |
| Go | Gin、Beego | 并发逻辑漏洞、配置泄露 | 测试接口并发请求导致数据不一致 |
| JavaScript(Node.js) | Vue.js、Express | 原型链污染、命令注入、npm依赖漏洞 | 命令注入Payload:;cat /etc/passwd |
4. 源码开放类型与测试策略
| 开放类型 | 示例 | 测试策略 |
|---|---|---|
| 开源 | WordPress、Zblog | 查版本号→匹配已知漏洞(如WordPress插件漏洞)→源码审计 |
| 闭源 | 企业内部定制系统 | 黑盒测试(FUZZ测试、BurpSuite抓包分析)→挖掘逻辑漏洞 |
| 加密型 | 通达OA、加密PHP CMS | 脱密/逆向→还原源码→常规漏洞审计 |
四、数据存储方式
1. 数据库类型
| 数据库类型 | 常见类型 | 典型漏洞点 | 测试Payload |
|---|---|---|---|
| 关系型 | MySQL、SqlServer、Oracle、PostgreSQL、DB2 | SQL注入、存储过程漏洞、权限滥用 | MySQL注入:union select 1,2,database()– |
| 非关系型 | MongoDB、Redis | NoSQL注入、未授权访问 | MongoDB注入:$where: “1==1” |
| 文件型 | Access(.mdb) | 数据库文件泄露、下载 | 直接访问/backup/data.mdb下载数据库 |
2. 部署模式与安全测试
| 部署模式 | 核心特点 | 安全测试重点 | 渗透思路实例 |
|---|---|---|---|
| 本地数据库 | 与Web服务器同机,访问延迟低 | 服务器本地权限、配置文件保护 | 读取/config/database.php获取数据库账号密码 |
| 分离数据库 | 独立服务器部署,内网访问 | 网络传输加密、防火墙策略、IP白名单 | 拿下Web权限后,上传数据库连接脚本跳转访问 |
| 云数据库 | 阿里云RDS、腾讯云CDB,托管式 | 公网访问控制、弱密码、备份策略 | 测试云数据库公网开放→暴力破解弱密码 |
3. 关键渗透思路
- 跨站连接:获取Web权限后,上传
db_connect.php脚本直接连接分离/云数据库,或上传代理工具(如reGeorg)中转流量 - 数据泄露:扫描
/backup/目录下载SQL备份文件(如20231001.sql),读取数据库配置文件获取连接信息
五、URL访问机制
1. 访问异常原因与解决方案
| 异常类型 | 常见原因 | 测试/修复思路 |
|---|---|---|
| 路由错误(404) | 路径拼写错误、路由未注册 | 扫描未注册路由(如/api/v1/admin)、测试参数篡改(/user/123→/user/0越权) |
| 跨域拦截(CORS) | 绝对路径引用其他域名资源 | 测试CORS配置是否允许任意域名(Access-Control-Allow-Origin: *) |
| 权限不足(403) | 未登录、普通用户访问管理员路径 | 测试Cookie/Session伪造、寻找未授权访问漏洞 |
| 脚本无法执行 | 目录禁止脚本执行(如/upload/禁.php) | 后缀名混淆(.php5、.phtml)、MIME类型篡改(image/jpeg→application/php) |
2. 安全测试核心思路
- 路由漏洞:测试
/user/123改为/user/999越权访问他人数据,未登录访问/admin/api未授权接口 - 路径漏洞:利用相对路径跳转(/login?redirect=../admin)、文件包含(?file=./../../var/log/nginx/access.log)
- 格式绕过:文件上传时修改后缀为.php.bak绕过检测,或修改Content-Type为image/png欺骗服务器
