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 表”

  1. 先画好表头(列名、类型),再往里填行;
  2. 每行有唯一编号(主键),编号可以拿去别的表当“外键”做关联;
  3. 改数据时开“事务”就像银行转账:A 扣钱 + B 加钱必须一起成功,中途断电也能回滚,不会把钱弄丢;
  4. 适合“强要求别出错”的场景:银行余额、订单库存、工资系统。

非关系型数据库 → 像“灵活收纳箱”

  1. 不用先画表头,今天存{"name":"Tom","age":18},明天存{"name":"Lucy","hobby":"ski"},箱子照样收;
  2. 把同样风格的数据丢进同一“抽屉”(集合/桶),抽屉可以无限扩容,多买几个柜子就能装下海量的货;
  3. 数据复制到全球各地,先保证大家都能存能取,再慢慢同步到一致,就像朋友圈点赞数,几秒后看到最新值即可;
  4. 适合“量大、来得快、格式多变”的场景:微博帖子、物联网传感器、实时聊天消息、商品推荐。

一句话总结

关系型 = 先立规矩、绝对靠谱; 非关系型 = 先装进去、灵活扩展。

常见的数据库系统:

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 步

  1. 触发 用户访问 /news/123.html 这样的“假静态”路径。
  2. 重写 Web 服务器(Apache/Nginx/IIS)在内部用正则匹配,把请求重写成 /news.php?id=123,但不告诉浏览器
  3. 执行 PHP 脚本按 $_GET['id']=123 去数据库抓数据,动态拼出页面。
  4. 返回 服务器把动态生成的 HTML 原样发给浏览器,地址栏依旧保持漂亮的 /news/123.html

怎么识别?

  1. 改后缀 把 /news/123.html 改成 /news/123.xyz/news/123.html/任意字符串
    • 仍返回 200 → 几乎肯定是伪静态(真静态文件会 404/403)。
  2. 加问号调试 访问 /news/123.html?id=999
    • 页面内容随参数变化 → 后面跑着 PHP/JSP;真静态 .html 不会理参数。
  3. 看响应头 响应里出现 X-Powered-By: PHP/7.4 Set-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 是怎么来的?

  1. 端口号在 TCP/UDP 头里只占 16 位二进制(固定协议格式)。
  2. 2¹⁶ = 65536 个数值,从 0 开始计数,所以最大编号是 65535。
  3. 这只是协议头里的字段长度限制,跟内核、操作系统无关,换什么系统都一样。

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系统设置:

  1. 打开"设置" → "网络和Internet"
  2. 选择"代理"
  3. 在"手动设置代理"中配置:
    • 地址:代理服务器IP
    • 端口:代理服务端口
    • 例外:不经过代理的地址

Chrome浏览器设置:

  1. 点击右上角菜单 → 设置
  2. 高级 → 系统 → 打开代理设置
  3. 在弹出的系统设置中配置

Firefox浏览器设置:

  1. 菜单 → 选项 → 常规
  2. 网络设置 → 设置
  3. 选择"手动代理配置"
  4. 填写代理服务器信息

代理设置参数说明

基本参数:

代理服务器: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等)

results matching ""

    No results matching ""