Day1-pre 前置基础知识
一、渗透测试目标分类详解
1. 主机操作系统
什么是操作系统? 简单来说,操作系统就像是计算机的"大管家"或"总经理",它负责管理计算机的所有硬件(CPU、内存、硬盘等)和软件资源,为用户提供一个方便使用计算机的环境。
举例理解:
- 如果把计算机硬件比作一栋空房子
- 操作系统就是房子的装修和物业管理
- 软件应用就是房子里的家具和电器
常见的服务器操作系统:
Windows Server
- 微软公司开发的专门用于服务器的操作系统
- 特点:图形界面友好,易于管理
- 常用场景:企业OA办公系统、内部管理系统
Linux
- 开源免费的操作系统
- 特点:稳定性高、安全性好、资源占用少
- 常用场景:Web服务器、数据库服务器
Unix系列
- AIX:IBM公司开发,主要用于大型企业
- Solaris:SUN公司开发,性能优秀
Unix = 老牌贵族血统 Linux = 开源平民克隆,后来居上
Unix 系列 : AT&T 原始源码 → BSD/HP-UX/AIX/Solaris 等 经过 Open Group 认证才能叫“UNIX®” Linux :1991 年 Linus 重写内核,无 AT&T 代码 任何人都能随意叫“Linux”,无需认证
Unix:一个厂商一个内核(AIX 内核只能跑在 IBM Power)。 Linux:只有一个主流内核(kernel.org),但发行版无数(Debian、RHEL、Ubuntu、rocky…)。
关系图(时间线)
1991 Linus 发布 Linux 内核 ↓ 1993 Slackware / Debian / Red Hat 三大元老诞生 │ ├── Red Hat 系 ──→ RHEL(2002 收费企业版) │ ├── CentOS 2/3/4/5/6/7(2004-2020,社区去商标免费重编译) │ ├── CentOS Stream 8/9(2020 起,变成“RHEL 测试预览版”) │ ├── Rocky Linux 8/9(2021 起,CentOS 原班人马甲重启,100 % 兼容 RHEL) │ └── AlmaLinux 8/9(2021 起,CloudLinux 主导,同样 RHEL 克隆) │ └── Debian 系 ──→ Ubuntu 4.10→…→22.04/24.04(每 6 个月 1 版,每 2 年 1 LTS)
Kali
2. 数据库系统
什么是数据库? 数据库是专门用来存储、管理和维护数据的软件系统,就像电子化的文件柜。
生活化理解:
- 如果把网站比作一个商店
- 数据库就是商店的仓库和账本
- 存储着商品信息、用户数据、订单记录等
关系型数据库(RDBMS)
定义:以“二维表”为基本存储单元,用主键/外键建立表与表之间的关系,并通过 SQL 这门声明式语言完成数据定义、查询、事务控制的系统。 技术要点
- 固定模式(Schema):先建表、指定列类型,再写入数据。
- ACID 事务:原子性、一致性、隔离性、持久性,多行操作要么全成功要么全回滚。
- 存储引擎:InnoDB(行锁、事务)、MyISAM(表锁、无事务)等。
- 典型代表:MySQL、PostgreSQL、Oracle、SQL Server、DB2。
非关系型数据库(NoSQL)
定义:不强制使用二维表和 SQL,数据模型可以是键值、文档、列族或图,优先牺牲部分一致性换取水平扩展与海量并发。 技术要点
- 模式灵活(Schema-less):同一“集合”里的记录字段可完全不同。
- 最终一致性(BASE):基本可用、软状态、最终一致;支持副本分片横向扩容。
- 存储格式:JSON/BSON(文档)、哈希桶(键值)、HFile/HLL(列族)、邻接表(图)。
- 典型代表:Redis(键值)、MongoDB(文档)、Cassandra/HBase(列族)、Neo4j(图)。
通俗版
关系型数据库 → 像“标准 Excel 表”
- 先画好表头(列名、类型),再往里填行;
- 每行有唯一编号(主键),编号可以拿去别的表当“外键”做关联;
- 改数据时开“事务”就像银行转账:A 扣钱 + B 加钱必须一起成功,中途断电也能回滚,不会把钱弄丢;
- 适合“强要求别出错”的场景:银行余额、订单库存、工资系统。
非关系型数据库 → 像“灵活收纳箱”
- 不用先画表头,今天存{"name":"Tom","age":18},明天存{"name":"Lucy","hobby":"ski"},箱子照样收;
- 把同样风格的数据丢进同一“抽屉”(集合/桶),抽屉可以无限扩容,多买几个柜子就能装下海量的货;
- 数据复制到全球各地,先保证大家都能存能取,再慢慢同步到一致,就像朋友圈点赞数,几秒后看到最新值即可;
- 适合“量大、来得快、格式多变”的场景:微博帖子、物联网传感器、实时聊天消息、商品推荐。
一句话总结
关系型 = 先立规矩、绝对靠谱; 非关系型 = 先装进去、灵活扩展。
常见的数据库系统:
MSSQL(Microsoft SQL Server)
- 微软开发的关系型数据库
- 通常与Windows Server配套使用
- 特点:功能完善,与企业应用集成好
Oracle
- 甲骨文公司开发的企业级数据库
- 特点:功能强大,性能优越,价格昂贵
- 应用场景:银行、电信、大型企业核心系统
MySQL
- 开源的关系型数据库
- 特点:性能良好,使用广泛,社区活跃
- 应用场景:Web应用、中小型企业系统
其他数据库:
- DB2:IBM开发的关系数据库
- Redis:内存数据库,用于缓存和高速数据访问
- NoSQL:非关系型数据库,包括MongoDB、Cassandra等
MySQL 与MariaDB的爱恨情仇
MySQL 是“原版”,MariaDB 是 MySQL 创始人带头做的“开源加强克隆”,两者同根生,但路线已分岔。
时间线(关系)
1995 → MySQL AB 公司创建 MySQL 2008 → Sun 收购 MySQL AB 2009 → Oracle 收购 Sun └── 担心 Oracle 闭源,MySQL 之父 Monty 立即拉团队 fork,改名 MariaDB(以他女儿名字命名) 2013 → MariaDB 成立独立基金会,承诺永久开源。
3. 应用系统
ASP/ASPX
- 微软的动态网页技术
- ASP使用VBScript,ASPX使用.NET框架
- 运行在IIS服务器上
PHP
- 开源的服务器端脚本语言
- 特点:简单易学,跨平台
- 应用广泛:WordPress、Drupal等都使用PHP
JSP
- 基于Java的动态网页技术
- 运行在Java应用服务器上(如Tomcat)
- 特点:安全性好,性能稳定
Python
- 现代编程语言,用于Web开发
- 框架:Django、Flask等
- 特点:代码简洁,开发效率高
4. 中间件
什么是中间件? 中间件是位于操作系统和应用程序之间的软件,为应用程序提供运行环境。
IIS
- 微软的Web服务器
- 集成在Windows Server中
- 版本:6.0/7.0/7.5/8.0等
Apache
- 开源的Web服务器
- 特点:稳定、模块丰富
- 市场占有率曾经很高
Nginx
- 高性能的Web服务器和反向代理
- 特点:高并发、低内存占用
- 现在很流行
Tomcat
- Java应用服务器
- 主要用于运行JSP和Servlet
5. 网络设备
硬件防火墙
- 专门设计的网络安全设备
- 功能:访问控制、攻击防护
- 防护类型:CC攻击、DDoS攻击等
入侵检测系统(IDS)和入侵防御系统(IPS)
- IDS:监测网络流量,发现攻击行为
- IPS:在发现攻击时主动阻断
路由器/交换机
- 网络连接设备
- 商用设备通常有更多安全功能
二、常见技术栈组合
Windows + ASP/ASPX + MSSQL/Access + IIS
(IIS版本:6.0、7.0、7.5、8.0)
Windows + PHP + Apache + MySQL
Linux + PHP + Apache + MySQL (LAMP架构)
LAMP = Linux + Apache + MySQL + PHP
Linux + PHP + Nginx + MySQL (LNMP架构)
LNMP = Linux + Nginx + MySQL + PHP
Linux + PHP + Nginx + Apache + MySQL
(混合架构,Nginx做前端代理)
Linux + JSP + Tomcat + Oracle
(Java企业级应用)
三、HTTP协议详解
1.HTTP基本概念
HTTP(超文本传输协议)
- 是Web的基础协议
- 所有的WWW文件都必须遵守这个标准
- 基于TCP/IP协议进行数据传输
- http://baidu.com
2.HTTP三大特性
1. 无连接
- 每次连接只处理一个请求
- 服务器处理完请求后立即断开连接
- 优点:节省传输时间,提高服务器性能
实际例子: 就像快餐店的服务模式:
- 顾客点餐(发送请求)
- 服务员准备食物(处理请求)
- 顾客拿到食物(收到响应)
- 交易结束,服务员服务下一个顾客
2. 媒体独立
- 可以传输任何类型的数据
- 只要客户端和服务器能处理该数据类型
- 通过Content-Type头指定数据类型
3. 无状态
- 协议不记录之前的事务信息
- 每次请求都是独立的
- 需要会话状态时使用Cookie等技术
3.HTTP请求方法
HTTP 1.0方法:
- GET:获取资源
- POST:提交数据
- HEAD:获取响应头(不包含响应体)
HTTP 1.1新增方法:
- OPTIONS:查询服务器支持的方法
- PUT:上传资源
- DELETE:删除资源
- TRACE:回显请求(用于调试)
- CONNECT:建立隧道连接(用于SSL)
4.HTTP通信过程
1. 建立TCP连接
- 客户端与服务器建立网络连接
2. 浏览器向服务器发送请求消息
- 发送请求行(方法、URL、协议版本)
3. 浏览器发送请求头信息
- 发送浏览器信息、接受的内容类型等
4. 服务器应答
- 返回状态行(协议版本、状态码)
5. 服务器发送应答头信息
- 返回服务器信息、内容类型等
6. 服务器发送应答数据
- 返回实际的网页内容
7. 服务器关闭连接
- 完成响应后关闭TCP连接
5.HTTP状态码
2xx 成功
- 200 OK:请求成功
3xx 重定向
- 301 Moved Permanently:资源永久移动到新URL
4xx 客户端错误
- 404 Not Found:请求的资源不存在
5xx 服务器错误
- 500 Internal Server Error:服务器内部错误
6.网络协议类型
http:// 普通网页访问
https:// 加密的网页访问
file:/// 访问本地计算机文件
ftp:// 文件传输协议
mailto: 发送电子邮件
mms:// 流媒体播放协议
ed2k:// 电驴下载协议
thunder:// 迅雷下载协议
flashget:// 网际快车下载协议
四、Web基础概念详解
1.GET vs POST方法
GET方法:
- 通过URL地址栏传递参数
- 参数可见,长度有限制
- 用于获取数据
- 可以被缓存、收藏
POST方法:
- 通过请求体传递参数
- 参数不可见,长度无限制
- 用于提交数据
- 不会被缓存
2.浏览器行为
按回车键:
- 以GET方式重新请求当前地址
- 不会重新提交POST数据
刷新页面:
- 重新提交数据到当前页面
- 如果是POST请求,浏览器会提示是否重新提交
刷新 vs 跳转:
- 刷新:从服务器获取最新内容更新本地缓存
- 跳转:在地址栏输入新地址,不更新本地缓存
五、WWW与Web架构
1.WWW(万维网)
- World Wide Web的缩写
- 基于HTTP协议的全球信息系统
- 通过超链接连接各种资源
2.架构模式
C/S架构(客户端/服务器)Client/Server
优点:
- 响应速度快
- 管理能力强
- 功能丰富
缺点:
- 需要安装客户端
- 跨平台性差
- 维护成本高
B/S架构(浏览器/服务器)Browser/Server
优点:
- 无需安装,随时可用
- 跨平台
- 维护方便
- 共享性强
缺点:
- 响应速度相对较慢
- 功能受浏览器限制
3.Web客户端
浏览器:
- IE/Edge(微软)
- Chrome(谷歌)
- Safari(苹果)
- Firefox(Mozilla)
- Opera(Opera Software)
六、Web页面类型
1.静态页面
- 文件扩展名:.html、.htm
- 内容固定不变
- 所有用户看到相同内容
- 安全性较高
2.动态页面
- 文件扩展名:.php、.asp、.aspx、.jsp
- 内容根据用户请求动态生成
- 可以与数据库交互
- 可能存在安全漏洞
3.伪静态
- 将动态页面伪装成静态页面
- URL看起来像静态页面(如.html)
- 实际仍然是动态处理
- 目的:改善SEO和用户体验
4.什么是伪静态?
“伪静态”就是让浏览器地址栏看起来是 .html 或目录结构的“静态”网址,实际背后仍然由 PHP/ASP/JSP 等动态脚本实时生成内容,只是借助 URL 重写技术把问号 & 参数藏起来了。
拆成 4 步
- 触发
用户访问
/news/123.html这样的“假静态”路径。 - 重写
Web 服务器(Apache/Nginx/IIS)在内部用正则匹配,把请求重写成
/news.php?id=123,但不告诉浏览器。 - 执行
PHP 脚本按
$_GET['id']=123去数据库抓数据,动态拼出页面。 - 返回
服务器把动态生成的 HTML 原样发给浏览器,地址栏依旧保持漂亮的
/news/123.html。
怎么识别?
- 改后缀
把
/news/123.html改成/news/123.xyz或/news/123.html/任意字符串- 仍返回 200 → 几乎肯定是伪静态(真静态文件会 404/403)。
- 加问号调试
访问
/news/123.html?id=999- 页面内容随参数变化 → 后面跑着 PHP/JSP;真静态 .html 不会理参数。
- 看响应头
响应里出现
X-Powered-By: PHP/7.4Set-Cookie: PHPSESSID=...Content-Encoding: gzip(且长度每次都变) 都是动态特征。
七、URL结构详细解析
http://127.0.0.1:8080/news/index.php?name=xiaoming&age=18#section1
├─ 协议:http
├─ 主机:127.0.0.1
├─ 端口:8080
├─ 路径:/news/
├─ 文件:index.php
├─ 查询参数:
│ ├─ name: xiaoming
│ └─ age: 18
└─ 锚点:section1
各部分说明:
- 协议:http、https、ftp等
- 主机:域名或IP地址
- 端口:服务端口(默认80可省略)
- 路径:服务器上的目录路径
- 文件:请求的具体资源
- 参数:传递给服务器的数据
- 锚点:页面内的特定位置
八、渗透测试核心知识
1.0day漏洞
定义:未被公开的软件漏洞 特点:
- 软件厂商不知道,因此没有补丁
- 所有使用该软件的用户都面临风险
- 防御方无法提前防护
例子:
- MS17-010:Windows SMB协议漏洞
- EternalBlue:基于MS17-010的 exploits
分类:
- 本地提权漏洞:在已获得低权限的情况下提升权限
- 远程溢出漏洞:通过网络直接获取系统权限
2.提权
什么是提权? 黑客在入侵系统后,通过各种手段提升自己的权限等级。
为什么需要提权?
- 初始入侵往往只能获得低权限
- 低权限无法执行重要操作
- 需要高权限才能完全控制系统
提权方法:
- 利用系统漏洞
- 滥用系统功能
- 密码破解
- 社会工程学
3.后门
定义:黑客在成功入侵后安装的隐蔽访问通道
目的:
- 方便下次访问
- 避免重复攻击步骤
- 维持对系统的控制
常见后门类型:
- Web后门(网页木马)
- 系统后门
- 远程控制软件
4.社会工程学
定义:利用心理学原理进行的信息获取
攻击方式:
- 钓鱼邮件:伪装成合法机构发送欺诈邮件
- 假冒身份:冒充IT支持、公司高管等
- 电话诈骗:通过电话套取信息
- 物理入侵:直接进入办公区域
九、渗透测试流程
1. 侦查踩点
- 收集目标信息
- 识别网络结构
- 发现潜在入口点
2. 定位绘制目标
- 分析收集的信息
- 确定攻击目标
- 制定攻击计划
3. 实施攻击
- 利用发现的漏洞
- 获取系统访问权限
- 建立持久化访问
4. 扩大战果
- 横向移动(在内部网络扩散)
- 权限提升
- 数据收集
5. 打扫战场
- 清除日志记录
- 删除攻击痕迹
- 确保不被发现
十、网络端口详解
1.怎么理解端口?
把主机想成一栋公寓
- 端口号 = 房间门牌号(0–65535 号房)
- 进程 = 住在房间里的租客
2.端口范围
- 1-65535:总共65535个端口
- 0-1023:知名端口,需要特权才能绑定
- 1024-49151:注册端口
- 49152-65535:动态/私有端口
3.65535 是怎么来的?
- 端口号在 TCP/UDP 头里只占 16 位二进制(固定协议格式)。
- 2¹⁶ = 65536 个数值,从 0 开始计数,所以最大编号是 65535。
- 这只是协议头里的字段长度限制,跟内核、操作系统无关,换什么系统都一样。
4.常见服务端口
网络服务:
21 - FTP(文件传输)
22 - SSH(安全Shell)
23 - Telnet(远程登录)
25 - SMTP(邮件发送)
110 - POP3(邮件接收)
Web服务:
80 - HTTP(网页服务)
443 - HTTPS(加密网页)
8080 - HTTP备用端口
8081 - HTTP备用端口
81 - HTTP备用端口
数据库服务:
1433 - MSSQL
3306 - MySQL
1521 - Oracle
5432 - PostgreSQL
远程管理:
3389 - 远程桌面(WindowsRDP)
5900 - VNC(Linux)
十一、代理服务详解
1. 什么是代理服务
(Proxy Service)是网络通信中的"中间人"或"中转站",它在客户端和目标服务器之间建立了一个中间层,所有的网络请求都通过这个中间层进行转发。
快递代收点比喻:
- 你把包裹交给代收点(代理服务器)
- 代收点再转交给收件人(目标服务器)
- 收件人把回执交给代收点
- 代收点再转交给你
技术工作原理
原始流程:
客户端 → 直接访问 → 目标服务器
代理流程:
客户端 → 代理服务器 → 目标服务器
目标服务器 → 代理服务器 → 客户端
2. 代理服务的核心功能
请求转发
- 接收客户端的请求
- 转发给目标服务器
- 将服务器的响应返回给客户端
内容缓存(CDN)
- 存储经常访问的内容
- 减少重复请求的网络开销
- 提高访问速度
安全防护
- 隐藏客户端的真实IP
- 过滤恶意请求
- 提供额外的安全层
协议转换
- 在不同协议间转换
- 如HTTP转HTTPS
- 兼容不同的网络标准
3. 代理服务的分类
按部署位置分类
正向代理
客户端 → 正向代理 → Internet
- 位于客户端前方
- 代表客户端访问外部网络
- 隐藏客户端身份
反向代理
Internet → 反向代理 → 内部服务器
- 位于服务器前方
- 代表服务器接收请求
- 隐藏服务器信息
按协议层次分类
HTTP代理
- 专门处理HTTP/HTTPS流量
- 能够理解网页内容
- 可以进行内容过滤
SOCKS代理
- 更底层的代理协议
- 支持各种网络应用
- 不解析内容,只转发数据
透明代理
- 用户无感知的代理
- 不需要客户端配置
- 常用于企业网络
4. 代理服务的应用场景
企业网络环境
上网行为管理
- 监控员工上网行为
- 限制访问非工作网站
- 记录网络活动日志
网络安全
- 过滤恶意网站
- 防止数据泄露
- 病毒防护
带宽优化
- 缓存常用资源
- 减少外网带宽占用
- 提高访问速度
个人使用场景
访问受限内容
- 突破地域限制
- 访问被封锁的网站
- 获取全球资源
隐私保护
- 隐藏真实IP地址
- 防止被网站追踪
- 保护个人隐私
安全浏览
- 过滤恶意广告
- 阻止跟踪脚本
- 提供安全浏览环境
安全测试场景
调试分析
- 查看网络请求详情
- 分析API调用
- 调试网络问题
安全测试
- 拦截和修改请求
- 测试应用安全性
- 发现潜在漏洞
5. 浏览器代理设置
为什么要设置浏览器代理?
- 访问被限制的资源
- 提高访问速度
- 保护隐私
手动设置方法
Windows系统设置:
- 打开"设置" → "网络和Internet"
- 选择"代理"
- 在"手动设置代理"中配置:
- 地址:代理服务器IP
- 端口:代理服务端口
- 例外:不经过代理的地址
Chrome浏览器设置:
- 点击右上角菜单 → 设置
- 高级 → 系统 → 打开代理设置
- 在弹出的系统设置中配置
Firefox浏览器设置:
- 菜单 → 选项 → 常规
- 网络设置 → 设置
- 选择"手动代理配置"
- 填写代理服务器信息
代理设置参数说明
基本参数:
代理服务器:192.168.1.100 或 proxy.example.com
端口:8080、3128、1080 等
协议:HTTP、HTTPS、SOCKS
例外列表:
- localhost
- 127.0.0.1
- 192.168.*
- 公司内部域名
使用插件简化管理
Proxy SwitchyOmega 3 (ZeroOmega)(推荐)
- 支持多个代理配置
- 根据规则自动切换
- 图形化界面易于使用
配置示例:
情景模式1:直连模式(不经过代理)
情景模式2:bp代理(8080)
情景模式3:科学上网代理(7890等)