第1天:Web应用&架构搭建&域名源码&站库分离&MVC模型&解析受限&对应路径_笔记
以下为AI生成的图文笔记的内容
一、基础入门
1. 网站组成部分
1)网站组成:域名

- 访问方式:网站可通过IP地址访问,但正规网站通常使用域名访问,如www.baidu.com
- 注册渠道:可在阿里云、Godaddy等平台花费几十到几百元注册域名
- 组成要素:域名由主域名(如baidu.com)和子域名(如www.baidu.com)组成
2)域名差异:主站分站端口站子站
- 主站:核心业务网站,如www.xiaodi8.com
- 分站/子站:通过子域名访问的独立站点,如blog.xiaodi8.com
- 端口站:通过不同端口号访问的站点,如www.xiaodi8.com:8080
- 目录站:通过路径区分的站点,如www.xiaodi8.com/blog/
- 收集意义:渗透测试时收集子域名可扩大攻击面,子站漏洞可能影响主站安全
3)源码差异:结构语言&框架闭源&加密

- 目录结构:包括后台目录、文件目录、逻辑目录、前端目录、数据目录等
- 开发语言:可能使用PHP、Java、Python等不同语言开发
2. 域名控制台操作
1)域名解析设置

- 解析记录:可将子域名指向特定IP,如将ysn.xiaodi8.com指向192.168.1.1
2)服务器选择建议

- 配置建议:入门可选择2核4G配置,费用约3元/小时
3. 服务器配置
1)服务器初始安装与设置

- 系统选择:选择Windows Server 2016系统进行初始安装
- 自动释放设置:建议设置2-3小时的自动释放时间,如23:16释放
- 外网IP配置:选择按流量计费模式,价格约1元/GB
- 账号安全:必须设置强密码,这是服务器安全的第一道防线
2)服务器实例的创建与选择

- 地域选择:不同地域实例内网不互通,选择靠近用户的地域可提升访问速度
- 实例规格:推荐突发性能实例t5(2vCPU/4GB),适合短期测试使用
- 镜像选择:Windows Server 2016数据中心版(安全加固)
- 网络配置:必须选择专有网络和交换机,否则无法创建实例
3)服务器费用与充值流程

- 安全提示:充值账号需与阿里云账号实名信息一致,否则可能影响资金安全
4)服务器远程连接与配置

- 连接方式:通过RDP协议远程连接Windows服务器
- 环境准备:建议安装集成环境(如宝塔面板)简化配置流程
5)宝塔集成环境安装与配置

- 安装优势:一键安装Web环境(Apache/Nginx+MySQL+PHP)
6)域名与源码架构的差异性
- 端口站与子站(如123.blog.xiaodi8.com)
- 安全影响:不同架构在目录结构、配置文件位置等方面存在差异,影响渗透测试路径
7)服务器安全组与端口配置

- 必要端口:必须放行8888(面板)、3389(远程)、80/443(Web)、20/21(FTP)
8)宝塔面板绑定与访问控制

- 安全入口:设置复杂路径(如/HxaWVni8)防止未授权访问
- IP
- 账号保护:绑定宝塔账号(0769-23030556客服电话)
9)例题1:服务器软件安装与环境搭建
10)例题2:域名与IP在渗透测试中的应用

- 答案:渗透测试时需同时检查IP直接访问和域名访问的差异
4. 域名打点解析
1)渗透目标

- 主站与分站:主站如www.xiaodi8.com,分站如blog.xiaodi8.com,解析到不同IP(47.75.212.155和47.242.212.243)
- 端口站:如www.xiaodi8.com:887,同一IP不同端口运行不同服务
- 目录站:如www.xiaodi8.com/bbs/,同一域名下不同目录对应不同程序
- 子站:如123.blog.xiaodi8.com,多级子域名结构

- 解析原理:域名通过DNS解析到具体IP,如blog.xiaodi8.com解析到47.242.212.243
- 渗透意义:主站和分站可能解析到同一IP(如47.75.212.155),攻破任一站都能控制服务器
- 信息收集:通过子域名发现更多攻击面,如发现blog.xiaodi8.com可能暴露额外漏洞

- 特点:同一域名下通过路径区分不同应用,如/bbs/对应论坛系统
- 业务关系:可能使用相同服务器资源,但运行独立程序(如导航站和论坛)
- 渗透价值:不同目录可能使用不同框架,增加漏洞发现机会
2)应用案例

- 在宝塔面板添加test01.xiaodi8.com站点
- 在阿里云DNS添加A记录指向47.242.217.162
- 访问http://test01.xiaodi8.com查看默认页面
- 修改内容:可直接修改网站根目录下的index.html文件实时更新页面
3)继续添加站点

- 多站点部署:同一服务器可部署test01.xiaodi8.com和test02.xiaodi8.com等多个站点
5. 分站安全问题

- 安全影响:分站安全问题会危害主站和其他分站的安全,测试时从分站入手也是一种有效方法
- 部署关系:无论分站是否与主站部署在同一服务器,都会产生安全影响
- 典型案例:如blog.xiaodi8.com分站可能影响www.xiaodi8.com主站
6. 源码目录结构对应
1)目录扫描与端口扫描的意义

- 收集目的:通过子域名收集、目录扫描等技术发现更多攻击面
- 分站影响:收集分站信息是因为分站漏洞可能影响主站安全
- 扫描价值:目录扫描可以发现隐藏的目录站点,端口扫描可以发现非常规端口运行的网站
2)目录扫描与端口扫描的实例

- 目录站示例:在test01.xiaodi8.com网站目录下放置Z-Blog源码,形成/blog/目录站
- 双程序特性:主站和目录站实际上是两套独立程序,具有不同的漏洞可能性
- 扫描工具:传统使用御剑等工具进行目录扫描,现代更多使用dirsearch等工具
3)域名解析与端口设置

- 端口站创建:通过修改网站端口(如将80改为81)创建端口站
- 域名解析:需要为端口站单独设置DNS解析记录(如xx.xiaodi8.com指向47.242.217.162)
- 访问方式:端口站需通过"域名:端口"形式访问(如xx.xiaodi8.com:81)
4)端口扫描与网站访问

- 访问差异:默认端口(80)和自定义端口(81)访问同一IP会显示不同网站内容
- 扫描意义:端口扫描可以发现非常规端口运行的网站服务,扩大攻击面
- 信息收集:通过收集不同端口的服务信息,增加漏洞发现机会
5)源码的组成与理解

- admin/:
- zb_install/:
- zb_users/:
- upload/:
- 安全意义:了解目录结构有助于发现敏感文件和功能入口
7. 源码开发语言类型

- 常见语言:ASP, ASPX, PHP, Java, Python, Go, Javascript等
- PHP: Thinkphp, Laravel, YII, CodeIgniter, CakePHP, Zend
- JAVA: Spring, MyBatis, Hibernate, Struts2, Springboot
- Python: Django, Flask, Bottle, Turbobars, Tornado, Web2py
- Javascript: Vue.js, Node.js, Bootstrap, JQuery, Angular
- 闭源(如内部开发):代码不可见,需通过其他方式分析
8. 源码目录结构理解
1)关键目录分类

- 后台目录:包含管理员功能相关代码(如admin文件夹)
- 文件目录:存储上传文件位置(如upload文件夹)
- 逻辑目录:处理业务逻辑的代码(如function文件夹)
- 前端目录:存放显示相关代码(如css、image文件夹)
2)目录分析技巧

- 命名推断:通过英文单词含义判断目录用途(如avatar为用户头像)
- 排除原则:css/image等纯前端目录通常无需深入分析
3)实战应用场景
9. 源码分析实战思路

- 分析核心逻辑文件(如c_system_admin.php)
10. 语言开发框架组件
- 本质定义:开发框架是预先构建好的编程模板和工具集合,相当于"半成品电脑"——核心组件已组装完成(如机箱结构、电源接口),开发者只需填充业务逻辑(如安装CPU、内存)。
- 提供标准化架构约束(如Windows系统决定软件运行环境)
- 漏洞类型受框架限制(ThinkPHP漏洞不同于Spring漏洞)
- 攻击面由框架特性决定(如Struts2的OGNL注入漏洞)
- PHP:ThinkPHP/Laravel(如YII的RBAC权限系统)
- Java:SpringBoot(约定优于配置)/Struts2(历史漏洞高发)
- Python
11. 开源闭源加密类型
1)源码目录结构与开发语言类型

- 动态语言:PHP(WordPress)/Python(Django)
- 静态语言:Java(SpringBoot)/Go(Gin)
2)开源闭源加密类型概述
- 特点:允许代码审计/二次开发(如修改WordPress主题)
3)开源与闭源的渗透测试差异
- 需推测技术栈(通过HTTP头/X-Powered-By)
4)加密源码的识别与处理

- 确定加密方式(如Zend Guard/ionCube)
5)开源、闭源、加密源码的应对策略
- 下载同版本代码审计(如CVE-2023-1234)
12. 数据差异
1)本地数据库存储

- 典型场景:网站源码和数据库部署在同一服务器(如127.0.0.1)
- 关联到本地网站项目(如test01.xiaodi8.com)
- 渗透特点:若获取数据库配置文件,70-80%概率可直接连接
- 示例:Z-BlogPHP安装时选择localhost地址
2)分离数据库存储

- 网站服务器(如47.242.212.243)与数据库服务器分离
- 通过IP白名单限制连接来源(仅允许网站服务器IP访问)
3)云数据库存储

- 创建数据库实例(如rm-j6ch5ok5n7uzezr91)
- 通过网站源码分析数据库配置文件路径(如zb_users/c_option.php)
- 云数据库:厂商域名(如rm-j6ch5ok5n7uzezr91.rds.aliyuncs.com)
13. 平台差异
1)操作系统差
- 命令体系差异:Windows使用cmd/PowerShell命令体系,Linux使用bash等shell命令体系,直接影响渗透测试中的信息收集和提权操作
- 提权方式差异:Windows提权主要依赖系统服务、注册表等机制,Linux则涉及sudo、suid等权限模型
- 实战意义:操作系统类型决定后续攻击手法选择,如Windows常用mimikatz抓取密码,Linux常用sudo -l寻找提权机会
2)容器差异与逃离技术

- 虚拟化本质:容器本质是隔离的虚拟环境(如Docker容器、VMware虚拟机),具有独立的网络栈和文件系统
- 技术挑战:攻击容器后需通过"逃离技术"突破隔离边界,例如Docker逃逸到宿主机系统
- 判断方法:通过检测/proc/1/cgroup、是否存在.dockerenv文件等特征判断是否处于容器环境

3)中间件差异

- 解析特性:Apache主要解析PHP,IIS解析ASP,Tomcat解析JSP,错误部署会导致解析漏洞
- 安全影响:不同中间件存在特有漏洞(如Apache解析漏洞、Tomcat弱口令上传war包)
- 识别方法:通过HTTP响应头Server字段、默认错误页面样式、特定端口(8080/8009)识别中间件类型
- 防御差异:Nginx需限制$uri包含.php的请求,Tomcat需删除manager应用
14. 解析差异
1)相对路径和绝对路径

- 相对路径:以当前目录为基准的路径表示方式,使用./表示当前目录,../表示上级目录。例如在D盘操作时,../../可跳转到D盘根目录。

。不受当前目录位置影响。
- D:\MYOA\webroot\attachment\../../ = D:\MYOA\
- D:\MYOA\webroot\attachment\././../ = D:\MYOA\webroot\
- 应用场景:文件读取、文件包含等漏洞利用时,常通过路径跨越实现目录遍历。
2)格式权限

- 文件格式与代码语言必须对应(PHP文件中写PHP代码)
- 跨语言代码(如在PHP文件中写JAVA代码)无法执行

)

- 通过拒绝Everyone用户组的"读取和执行"权限
二、权限设置导致文件无法执行
1. 权限设置对文件执行的影响

- 常见现象:上传的脚本文件无法正常执行,导致后门连接失败(如"拆到"、"歌斯拉"等工具连接问题)
- 判断方法:通过访问后门时的错误提示来判断是否属于权限问题
2. 解析设置的原因与好处
- 安全考虑:网站管理员会限制特定目录只允许访问图片等静态文件
3. 解析错误导致的多种情况
- 核心差异:服务器对文件解析的配置不同,特别是对脚本文件的处理方式
4. 权限问题导致后门无法连接的解决方法

- 将后门文件移动到其他目录(如上传目录、缓存目录等)
- 技术原理:网站业务需要保持部分目录的脚本执行权限,不可能全部限制
5. 更换文件目录的注意事项
- 业务逻辑:网站自身需要PHP文件执行,不可能完全禁用所有目录
6. 例题1:语言源码与框架差异问题
三、实验网站路由关系
1. 网站一键部署及环境信息

- PHP Version 7.3.33
- 系统:Windows NT 10.0 (Windows Server 2016)
- 编译环境:MSVC15 (Visual C++ 2017)
- 配置文件路径:CBtSoft\php\73\php.ini
- 部署特点:通过宝塔面板实现一键部署,自动完成源码下载和配置
2. 宝塔一键部署多种CMS系统

- YzmCMS
- HkCms
- SIYUCMS
- ModStart
- 配置域名(如vitphp.xiaodi8.com)
3. 访问UI地址与文件关系

- 主目录:/wwwroot/test01.xiaodi8.com/
- 关键子目录:zb_users包含plugin、theme等模块
- 访问URL:test01.xiaodi8.com/zb_users/1.php
- 对应文件:C:\wwwroot\test01.xiaodi8.com\zb_users\1.php
4. 阿里云服务器与域名解析
5. 例题1: MVC模型概念
6. 路由关系与访问示例

- 传统:blog.xiaodi8.com/zb_system/login.php
- MVC:blog.xiaodi8.com/admin/login
7. 相对路径与绝对路径
- D:\MYOA\webroot\attachment./../ = D:\MYOA\
- D:\MYOA\webroot\attachment./../../ = D:\
8. 框架与非框架的路由区分
9. MVC模型原理
四、知识回顾
1. Web域名差异

- 安全意义:通过收集不同形式的域名,可以扩大测试范围,增加发现漏洞的可能性。
2. 源码语言框架差异

- 绝对路径:如D:\MYOA\webroot\attachment
- MVC框架:遵循Model-View-Controller模式
- 区分框架类型决定审计重点(框架漏洞或语言本身漏洞)
3. 网站数据存储方式

- 安全意义:了解存储方式可判断渗透测试时的限制条件和突破方向
4. URL访问解析原理

- 正常访问:xxx.xiaodi8.com/admin/login.php对应源码/admin/login.php
- 安全意义:理解URL解析机制有助于发现越权访问、路径遍历等漏洞
五、知识小结
知识点 | 核心内容 | 考试重点/易混淆点 | 难度系数 |
域名架构 | 主站、分站、端口站、目录站、子站的区别与关联 | 子域名收集的意义(影响主站安全) | ⭐⭐ |
源码组成 | 开源/闭源/加密源码的区别,目录结构(后台/逻辑/前端/数据目录) | 加密源码的解密必要性 | ⭐⭐⭐ |
开发语言与框架 | PHP/Java/Python等语言特性,MVC模型与路由关系 | 框架漏洞与语言漏洞的区分 | ⭐⭐⭐⭐ |
数据库存储 | 本地存储、分离存储、云数据库的差异与渗透限制 | 云数据库白名单机制的绕过思路 | ⭐⭐⭐⭐ |
平台差异 | Windows/Linux系统命令差异,容器化与虚拟机逃逸技术 | 容器环境下的权限提升 | ⭐⭐⭐⭐ |
解析差异 | 文件后缀权限、代码执行权限、相对/绝对路径解析 | 目录权限设置导致的后门失效 | ⭐⭐⭐ |
路由关系 | MVC框架的URL与文件非直接对应关系 | 传统路径访问与框架路由的冲突 | ⭐⭐⭐⭐ |
渗透思路联动 | 信息收集(子域名/端口/目录)与漏洞利用的关联 | 数据库分离存储时的代理中转方案 | ⭐⭐⭐⭐ |
在域名信息收集方面,需要了解域名和网站相关的注意事项。域名的注册可以通过阿里云等国内平台或Godaddy等国外平台完成,费用在几十元至几百元不等。 网站的组成部分中,域名方面需要注意以下几点: 1. 主站、分站、端口站、目录站和子站的区别与识别 了解这些站点类型的原因在于,后期进行渗透测试时,特别是信息收集阶段