1. 入口层:资产发现与路由机制
战术指导:这是攻击的起点。
1.1 域名架构差异 (Domain)
明确站点的业务定位,决定投入的测试成本与策略:
-
主站 (
www.locreics.com) 核心业务,防御最严,通常需要高级 0day 或复杂逻辑漏洞。 -
分站 (
blog.locreics.com) 通常为 CMS 或独立系统,易出现通用漏洞,是内网突破口。 -
子站 (
nb.blog.locreics.com) 多级域名,常见于 SaaS 多租户模式或泛解析,关注 越权访问 与数据隔离。 -
目录站 (
www.locreics.com/bbs/) 同一服务器下的不同应用,一旦突破可直接通过文件系统影响主站。
1.2 解析与路径差异 (Parsing)
从 URL 推断后端的处理逻辑,寻找绕过 WAF 或执行代码的机会:
-
URL 路由模型
- MVC 路由:URL 对应控制器(Controller)而非物理文件(如 ThinkPHP)。
- 物理映射:URL 直接对应服务器上的文件。
-
路径访问模式
- 相对路径:相对于当前上下文。
- 绝对路径:服务器完整路径(利于写 WebShell)。
-
格式与权限控制
- 解析漏洞:利用 Web Server 解析差异(如 Nginx解析漏洞)执行非脚本文件。
- 目录权限:上传目录是否有执行权限?代码是正常执行还是被当做文本读取?
2. 支撑层:环境与中间件指纹
战术指导:请求到达服务器后的运行环境。
2.1 平台架构差异 (Platform)
-
操作系统 (OS)
Windows(不区分大小写),Linux(权限严格),MacOS。 -
容器化技术 (Container) Docker, K8s,
Vmware,VirtualBox。- 注意:拿到 Shell 后需判断是否在 Docker 内,涉及 容器逃逸。
-
中间件 (Middleware) 决定了解析规则与特定漏洞: Apache, Nginx, IIS,
lighttpd(轻量级), Tomcat,Jboos, Weblogic,Websphere,Jetty(Java系常见)。
3. 逻辑层:源码与应用框架
战术指导:业务逻辑的核心实现。
3.1 开发语言 (Language)
识别后缀或指纹:
ASP, ASPX (微软系), PHP (Web王道), Java (企业级), Python, Go, Javascript (Node.js).
3.2 框架组件 (Frameworks)
这是漏洞挖掘的重灾区,特定框架对应特定利用链:
-
PHP 框架 Thinkphp, Laravel,
YII,CodeIgniter,CakePHP,Zend等。 -
JAVA 框架 Spring,
MyBatis,Hibernate, Struts2, Spring Boot 等。 -
Python 框架 Django, Flask,
Bottle,Turbobars,Tornado,Web2py等。 -
Javascript 框架 Vue.js,
Node.js,Bootstrap,JQuery,Angular等。
3.3 源码性质与结构 (Source Code)
-
开源类型
- 开源:如
Zblog(下载源码 → 白盒审计 → 找通杀)。 - 闭源:如内部开发(完全黑盒测试 → Fuzzing)。
- 加密:如
通达OA(源码混淆 → 审计困难)。
- 开源:如
-
目录结构指纹 通过常规目录猜测功能点: 后台目录 (
admin), 文件目录 (upload), 逻辑目录 (include), 前端目录 (static), 数据目录 (data), 配置文件 (config- 重点关注)。
4. 数据层:存储与权限
战术指导:攻击的最终战利品。
4.1 数据库类型 (Database)
根据端口或报错识别数据库:
Access (文件型), MySQL (最常见), SQLServer, Oracle, Redis (NoSQL/缓存), DB2, Postgresql, MongoDB 等。
4.2 存储部署架构 (Architecture)
-
本地数据库 数据库与 Web 在同一服务器。
- 机会:SQL 注入可尝试写入 Webshell (
into outfile) 或系统提权。
- 机会:SQL 注入可尝试写入 Webshell (
-
分离数据库 数据库在独立服务器。
- 机会:无法直接 GetShell,但可作为内网横向移动的跳板。
-
云数据库 使用 RDS 等云服务。
- 限制:通常无系统权限,仅能获取数据,难以提权。