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欺骗服务器