From 281853ffccf40e0a52028c38f6459dd1b5e0826f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=BE=E5=B3=B6=E9=A3=8E=E8=B5=B7=E6=99=82?= Date: Mon, 13 Oct 2025 01:29:11 +0800 Subject: [PATCH] Add files via upload --- Chapter1/1-1.md | 2 ++ Chapter1/1-10.md | 4 +++ Chapter1/1-11.md | 18 ++++++++------ Chapter1/1-12.md | 4 +++ Chapter1/1-13.md | 2 ++ Chapter1/1-14.md | 2 ++ Chapter1/1-16.md | 6 +++++ Chapter1/1-17.md | 2 ++ Chapter1/1-18.md | 2 ++ Chapter1/1-19.md | 2 ++ Chapter1/1-2.md | 6 +++++ Chapter1/1-20.md | 14 +++++++++++ Chapter1/1-21.md | 4 +-- Chapter1/1-23.md | 12 ++++++++- Chapter1/1-24.md | 4 +++ Chapter1/1-25.md | 6 +++++ Chapter1/1-28.md | 4 +++ Chapter1/1-3.md | 6 +++++ Chapter1/1-30.md | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ Chapter1/1-31.md | 24 ++++++++++++++++++ Chapter1/1-32.md | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ Chapter1/1-4.md | 2 ++ Chapter1/1-5.md | 6 +++++ Chapter1/1-6.md | 2 ++ Chapter1/1-7.md | 2 ++ Chapter1/1-8.md | 6 +++++ 26 files changed, 261 insertions(+), 11 deletions(-) create mode 100644 Chapter1/1-30.md create mode 100644 Chapter1/1-31.md create mode 100644 Chapter1/1-32.md diff --git a/Chapter1/1-1.md b/Chapter1/1-1.md index d4fc144..a8bb439 100644 --- a/Chapter1/1-1.md +++ b/Chapter1/1-1.md @@ -12,6 +12,8 @@ 为了提高准确性,你可以多生成几个随机子域名并重复上述步骤。如果它们都解析到相同的 IP 地址,那么就可以确认泛解析已开启,且你已经找到了泛解析的 IP 地址 + + **2. 爆破过程中的泛解析过滤** 确认泛解析后,在进行子域名爆破时,你需要过滤掉所有解析到泛解析 IP 地址的结果 diff --git a/Chapter1/1-10.md b/Chapter1/1-10.md index 53f6665..7525d7d 100644 --- a/Chapter1/1-10.md +++ b/Chapter1/1-10.md @@ -9,6 +9,8 @@ - **验证码在客户端生成:** 尽管非常罕见,但有些不安全的实现是在前端(如JavaScript)生成验证码。这意味着攻击者可以直接在浏览器控制台中获取或修改验证码的值 - **验证码不与会话绑定:** 验证码与用户会话(Session)没有正确绑定。攻击者可以先访问登录页面,获取一个验证码,然后用不同的会话(但使用同一个验证码)来尝试暴力破解,这使得验证码失去了它的防重放作用 + + **2. 暴力破解验证码** 如果验证码系统本身没有设计缺陷,攻击者可能会尝试通过技术手段识别验证码 @@ -17,6 +19,8 @@ - **训练模型识别验证码:** 对于更复杂的验证码,攻击者可以收集大量的验证码图片,然后使用机器学习或深度学习技术(如卷积神经网络 CNN)来训练一个模型,以达到较高的识别成功率 - **人工打码平台:** 这是最直接、最有效的方法。攻击者将验证码图片发送到专业的**打码平台**。这些平台背后有大量人工或半自动化工具,可以在极短时间内返回识别结果。这使得攻击者能够以较低的成本实现大规模的自动化攻击 + + **3. 绕过验证码逻辑** - **API 接口漏洞:** 有些应用程序的登录过程并非只有一个接口。攻击者可能会发现,用于处理登录的 API 接口与用于获取验证码的接口是分开的。如果登录 API 接口没有强制要求验证码参数,或者在验证码参数为空时依然处理请求,那么攻击者可以直接绕过验证码步骤 diff --git a/Chapter1/1-11.md b/Chapter1/1-11.md index 40e86ed..0e139aa 100644 --- a/Chapter1/1-11.md +++ b/Chapter1/1-11.md @@ -2,7 +2,7 @@ **1. 系统信息查看** -这是最直接、最常用的方法。 +这是最直接、最常用的方法 - **GUI 界面**: - 右键点击“此电脑”或“我的电脑”,选择“属性” @@ -14,6 +14,8 @@ - 使用`net config workstation`命令。该命令会显示当前计算机的配置信息,其中“工作站域”会明确列出当前是工作组还是域 - 使用`whoami /all`命令。该命令会显示当前用户的详细信息,包括所属的域或工作组 + + **2. 网络和 DNS 配置** 域环境依赖于特定的网络配置,尤其是 DNS @@ -26,6 +28,8 @@ - 如果你能猜测或已经获得了可能的域控制器名称,可以尝试 `ping` 该域名。如果 ping 通了,说明网络是连通的,并且 DNS 解析正常,很可能存在域环境 - 例如:`ping test.local` + + **3. 登录方式和用户账户** 用户登录界面的信息也会提供线索 @@ -40,14 +44,12 @@ -#### 4. 特定的网络服务和端口 +**4. 特定的网络服务和端口** +域环境中的主机通常会开放一些特定的服务和端口,用于域内通信 - -域环境中的主机通常会开放一些特定的服务和端口,用于域内通信。 - -- **Kerberos协议**:域环境使用Kerberos进行身份验证。攻击者可以扫描域控制器特有的端口(如TCP/UDP 88)。 -- **LDAP协议**:域控制器提供LDAP服务(轻量目录访问协议),用于管理目录信息。端口通常是TCP 389或636(LDAPS)。 -- **SMB协议**:虽然工作组和域都使用SMB,但在域环境中,通过`net view`等命令可以看到域内共享资源。 +- **Kerberos协议**:域环境使用Kerberos进行身份验证。攻击者可以扫描域控制器特有的端口(如TCP/UDP 88) +- **LDAP协议**:域控制器提供LDAP服务(轻量目录访问协议),用于管理目录信息。端口通常是TCP 389或636(LDAPS) +- **SMB协议**:虽然工作组和域都使用SMB,但在域环境中,通过`net view`等命令可以看到域内共享资源 通过端口扫描工具(如Nmap),可以快速发现目标主机是否开放了这些与域相关的服务端口 \ No newline at end of file diff --git a/Chapter1/1-12.md b/Chapter1/1-12.md index d556744..a80f7bc 100644 --- a/Chapter1/1-12.md +++ b/Chapter1/1-12.md @@ -32,6 +32,8 @@ netstat -r 同样,检查输出结果中是否有指向其他内网网段的路由条目。例如,你可能会看到类似于`192.168.2.0/24 via 192.168.1.1 dev eth0`的条目,这说明存在一个到`192.168.2.0`网段的路由 + + **2. ARP 缓存表分析** **ARP**(Address Resolution Protocol)用于将IP地址解析为物理MAC地址。当主机与同一局域网内的其他设备通信时,它会将对应的IP-MAC映射关系存储在**ARP缓存表**中。通过查看这个缓存表,我们可以发现哪些主机是活跃的 @@ -43,6 +45,8 @@ netstat -r 如果你的ARP缓存表中出现了不同网段的IP地址,比如你当前IP是`192.168.1.100`,但缓存表中出现了`192.168.2.1`的条目,这可能是一个网络设备(如路由器或三层交换机)的IP地址,它负责连接到另一个网段 + + **3. DNS 和 WINS 服务查询** **DNS**(域名系统)和 **WINS**(Windows Internet Name Service)在内部网络中扮演着关键角色。内网中的主机通常会依赖这些服务来解析主机名。通过查询这些服务,我们可以发现属于其他网段的主机 diff --git a/Chapter1/1-13.md b/Chapter1/1-13.md index 9670ee6..5e53d16 100644 --- a/Chapter1/1-13.md +++ b/Chapter1/1-13.md @@ -8,6 +8,8 @@ - **环境变量和密钥**: 如果在前端代码中使用了`process.env`等方式读取了后端传递的环境变量,这些变量可能会被打包并泄露 - **打包配置文件**: 一些不当的配置可能会导致`webpack.config.js`等文件也被泄露,从中可以获取更多项目结构和依赖信息 + + **渗透测试中的利用方法** 1. **发现目标**: 首先,通过浏览器或Burp Suite等工具访问目标网站,观察前端加载的`.js`文件,看是否存在`.map`文件。例如,如果存在`main.bundle.js`,尝试访问`main.bundle.js.map` diff --git a/Chapter1/1-14.md b/Chapter1/1-14.md index 33bec00..c521560 100644 --- a/Chapter1/1-14.md +++ b/Chapter1/1-14.md @@ -17,6 +17,8 @@ - **Kerberos 票据注入**:如果手上有一个域用户的 Kerberos 票据(TGT),你可以使用 **`mimikatz`** 的 **`kerberos::ptt`** 命令将其注入到当前会话中,然后你的 Shell 就具备了访问域资源的权限 + + **2. 网络连接问题** 即使你拥有正确的权限,如果网络连接存在问题,命令也无法成功执行 diff --git a/Chapter1/1-16.md b/Chapter1/1-16.md index 2dce565..d55b1b4 100644 --- a/Chapter1/1-16.md +++ b/Chapter1/1-16.md @@ -14,6 +14,8 @@ - **优点**:快速、自动化,能提供初步的端口开放信息 - **缺点**:不一定能确定协议能否出网,因为端口开放可能只是用于内部服务 + + **2. 手动测试与验证** 自动化扫描后,你需要手动验证协议是否真的能出网 @@ -41,6 +43,8 @@ - **优点**:能精确验证某个端口是否出网,并能获得更详细的错误信息 + + **3. 基于 DNS 查询的隐蔽测试** 如果你无法通过常见的协议出网,DNS 是一个非常隐蔽的测试方法 @@ -52,6 +56,8 @@ 3. 回到你的 DNS 服务器,如果收到了这个 DNS 查询请求,就说明 DNS 协议出网。你甚至可以从 DNS 请求的源 IP 地址,判断是哪台机器发出的请求 - **优点**:高度隐蔽,能绕过许多严格的防火墙规则 + + **4. 利用现有权限进行系统配置分析** 如果你已经通过其他漏洞(如钓鱼、弱口令等)获得了某台机器的权限,那么判断出网协议就变得更加容易 diff --git a/Chapter1/1-17.md b/Chapter1/1-17.md index db61f66..037bade 100644 --- a/Chapter1/1-17.md +++ b/Chapter1/1-17.md @@ -13,6 +13,8 @@ NSE 的核心是一个脚本解释器,它运行用 **Lua 语言**编写的脚 3. **脚本执行**:当一个事件被触发时,Nmap 会调用相应脚本中的**`action()` 函数**。这个函数包含了脚本要执行的核心逻辑 4. **结果返回**:`action()` 函数执行完毕后,会将结果返回给 Nmap。Nmap 会将这些结果以标准的格式(如 XML、文本等)显示给用户 + + **2. 编写 NSE 脚本的核心结构** 一个典型的 NSE 脚本由以下几个关键部分组成: diff --git a/Chapter1/1-18.md b/Chapter1/1-18.md index 586aed9..187e1b3 100644 --- a/Chapter1/1-18.md +++ b/Chapter1/1-18.md @@ -14,6 +14,8 @@ - **缺点**: - **Windows 兼容性**:FIN 扫描在许多非 Windows 系统(如 Linux、BSD)上表现良好,但在 Windows 系统上,即使端口是开放的,它也可能回复一个 `RST` 包,导致扫描结果不准确。这是因为 Windows 系统的 TCP/IP 栈实现与 RFC 规范略有不同 + + **2. 空扫描 (Null Scan)** - **命令**:`nmap -sN ` diff --git a/Chapter1/1-19.md b/Chapter1/1-19.md index de925e2..102e1eb 100644 --- a/Chapter1/1-19.md +++ b/Chapter1/1-19.md @@ -9,6 +9,8 @@ 2. 查看其 **“对外投资”** 或 **“股东信息”** 模块 3. **核心筛选标准**:重点关注持股比例**超过 50%** 的子公司(绝对控股),这些子公司及其资产在法律上等同于目标单位的资产。即使持股比例较低,只要目标单位是发起人或有重大影响力,也应列为潜在资产 + + **2. ICP 备案反查** 一旦获得了子公司或关联公司的完整法定名称,就将其作为新的目标,进行数字资产的反查 diff --git a/Chapter1/1-2.md b/Chapter1/1-2.md index 438b08c..4adc3c1 100644 --- a/Chapter1/1-2.md +++ b/Chapter1/1-2.md @@ -8,6 +8,8 @@ - 通过在线的子域名查询服务(如 **站长之家**、**VirusTotal**)进行查询 - 然后对这些子域名进行 `ping` 或 `nslookup`,如果返回的 IP 地址与主域名不同,且多次查询结果稳定,就可能找到了真实 IP + + **2. 邮件头信息** - **原理**: 很多网站的邮件服务器(如 `SMTP`)与 Web 服务器部署在同一台机器上,而邮件服务器通常不使用 CDN @@ -16,6 +18,8 @@ - 在你的邮箱中查看这封邮件的**原始邮件头(Original Headers)** - 在邮件头中寻找 **`Received: from`** 字段。这个字段记录了邮件在传输过程中经过的服务器 IP 地址。通常,第一个 `Received: from` 后面的 IP 地址就是邮件服务器的真实 IP,而这个 IP 很可能就是网站的真实 IP + + **3. 历史 DNS 记录查询** - **原理**: 一个网站在上线 CDN 之前,其 DNS A 记录直接指向的就是真实 IP。一些服务会保存这些历史记录 @@ -23,6 +27,8 @@ - 使用在线服务(如 **`SecurityTrails`**、**`WhoisXML API`** 或 **`ViewDNS`**)查询域名的历史 DNS 解析记录 - 通过这些历史记录,你可以找到在 CDN 启用之前网站使用的真实 IP 地址 + + **4. SSL 证书查询** - **原理**: SSL 证书可能会包含一些指向源站的信息,例如在某些情况下,证书颁发者会记录申请者的 IP 地址 diff --git a/Chapter1/1-20.md b/Chapter1/1-20.md index 846d684..84e950a 100644 --- a/Chapter1/1-20.md +++ b/Chapter1/1-20.md @@ -19,6 +19,8 @@ - 即使一个 IP 地址**没有 ICP 备案**,但只要它使用了与主站**相同的证书**,就可以被判定为同一组织所有。 - **Fofa 搜索示例**:你可以使用 `cert="目标证书特征值"` 来查找所有使用该证书的资产,包括那些未公开的 IP + + **2. 标识图标关联法** 许多组织会为他们的所有内部或外部系统使用一套标准的图标或 Favicon(收藏夹图标) @@ -38,6 +40,8 @@ - 一个没有证书、没有备案的 IP(可能是测试机或内部后台)使用了主站的图标,即刻暴露了它与目标的关联。 - **Fofa 搜索示例**:使用 **`icon_hash="xxxxxxxxxx"`** 查找所有使用该图标的资产 + + **3. Body 内容关联法** 许多后台系统或测试环境,虽然域名和 IP 看起来毫不相关,但在页面的 HTML **主体(Body)**中会留下内部信息 @@ -55,6 +59,8 @@ - **可能性**:这可能是**供应链资产**(目标公司使用了第三方供应商,但页面中留下了目标公司的名字)或员工私自搭建的系统 - **搜索示例**:`body="XXX单位" && country="CN"` + + **4. 定位未绑定域名的资产** ICP 备案信息不仅包括域名,也包括**纯 IP 地址的备案**。这些纯 IP 资产往往是**直接暴露的**、未被域名解析隐藏的服务器。 @@ -70,6 +76,8 @@ ICP 备案信息不仅包括域名,也包括**纯 IP 地址的备案**。这 - 这通常是 CDN 节点、API 服务器、或不希望被域名解析的特定服务 - **Fofa 搜索示例**:使用 **`icp.name="XXX单位全称"`**,平台会返回所有以该名称备案的域名和纯 IP 地址 + + **5. 子域名与非主站资产发现** 被遗忘的旧子域、开发或测试环境往往安全配置较弱。 @@ -82,6 +90,8 @@ ICP 备案信息不仅包括域名,也包括**纯 IP 地址的备案**。这 - **目标:** 查找任何 URL 或标题中包含“测试”或“开发”的页面。 - **Google Dork:** `site:target.com inurl:test OR inurl:dev intitle:stage` + + **6. 敏感文件与目录暴露** 错误配置导致敏感文件(如数据库备份、环境配置)被 Google 索引 @@ -94,6 +104,8 @@ ICP 备案信息不仅包括域名,也包括**纯 IP 地址的备案**。这 - **目标:** 查找目标域名下的开放目录列表(可能暴露文件结构) - **Google Dork:** `site:target.com intitle:"index of" "parent directory"` + + **7. 第三方平台信息泄漏:定位云存储和代码库** 许多组织会在云存储服务(如 S3)或代码托管平台(如 GitHub)上无意暴露信息 @@ -106,6 +118,8 @@ ICP 备案信息不仅包括域名,也包括**纯 IP 地址的备案**。这 - **目标:** 查找目标域名在代码仓库中意外暴露的凭证信息 - **Google Dork:** `site:github.com "target.com" intext:"password" OR intext:"API KEY"` + + **8. 邮箱系统与服务域名关联** 企业邮箱的域名通常与企业的主域名保持一致,但有时会是独立的域名用于隔离服务 diff --git a/Chapter1/1-21.md b/Chapter1/1-21.md index 967fec2..7f0fbbf 100644 --- a/Chapter1/1-21.md +++ b/Chapter1/1-21.md @@ -4,7 +4,7 @@ 许多企业的新媒体和移动端服务由不同的团队或第三方开发,它们的域名往往独立于主站,且防护薄弱 -**A. 微信生态资产(公众号/小程序)** +A. 微信生态资产(公众号/小程序) 这是进行资产收集的**高价值切入点** @@ -14,7 +14,7 @@ - **小程序**:小程序的接口请求通常指向**独立的 API 域名**或**云服务域名**。通过识别小程序,再进行抓包分析,即可获取新的接口和业务域名 - **扩展思路(同主体关联)**:在小程序中,查看该小程序账号所关联的**其他小程序**。这些关联的小程序大概率也属于目标单位的资产范围,可以作为新的信息收集起点 -**B. APP 应用提取域名(代码泄露)** +B. APP 应用提取域名(代码泄露) 移动应用程序是隐藏 Web 资产的宝库,特别是那些用于 API 交互的域名 diff --git a/Chapter1/1-23.md b/Chapter1/1-23.md index 0e38d11..882d9f4 100644 --- a/Chapter1/1-23.md +++ b/Chapter1/1-23.md @@ -1,4 +1,4 @@ -### 源码泄露搜索 +### 说说源码泄露搜索 **1. 代码托管平台搜索(主战场)** @@ -17,6 +17,8 @@ GitHub 和 Gitee 是最常见的代码泄露平台。搜索时需要利用它们 - **克隆工具**:使用专门的工具(如 **Gitrob**、**TruffleHog**)对已知的目标代码仓库进行扫描,它们能深度挖掘历史提交记录中的敏感信息,即使代码已经被删除 - **搜索 Code**:直接在 GitHub 的“Code”选项卡下搜索,而不是在“Repositories”下,以确保搜索范围覆盖所有代码片段 + + **2. 公开网盘与存储服务** 员工可能会将项目代码或敏感文档存储在公开网盘上,以便于分享 @@ -26,6 +28,8 @@ GitHub 和 Gitee 是最常见的代码泄露平台。搜索时需要利用它们 - **百度网盘**:`site:pan.baidu.com "目标公司全称" OR "项目名称"` - **文件类型**:`filetype:zip OR filetype:rar OR filetype:7z "项目名称"` + + **3. Web 服务器源码泄露与备份文件** 这类泄露是由于服务器配置错误或运维疏忽造成的,通常存在于已知的 Web 资产上 @@ -37,6 +41,8 @@ GitHub 和 Gitee 是最常见的代码泄露平台。搜索时需要利用它们 | **编辑器备份** | 存在 `~`、`.bak`、`.old`、`.zip` 等扩展名。 | 对已知的 Web 路径进行字典爆破,例如 `index.php.bak`、`config.zip`、`backup2023.tar.gz`。 | | **目录遍历** | 网站开启了目录列表功能。 | 访问主目录、`uploads`、`download` 目录等,查找是否有可下载的源代码或配置文件。 | + + **4. Pastebin/代码分享网站** 员工可能会为了调试或寻求帮助,将包含敏感代码或错误日志的代码片段发布到公共网站 @@ -46,6 +52,8 @@ GitHub 和 Gitee 是最常见的代码泄露平台。搜索时需要利用它们 - 搜索目标**公司名称**、**IP 地址**、**内部域名**或**项目代号** - 搜索 API 请求的**错误信息**或**堆栈跟踪信息**,这些信息有时会暴露部分源代码路径或配置信息 + + **5. Docker Hub 或镜像仓库** 如果目标单位使用 Docker 进行部署,错误的配置可能导致 Docker 镜像或配置文件被公开 @@ -55,6 +63,8 @@ GitHub 和 Gitee 是最常见的代码泄露平台。搜索时需要利用它们 - 搜索**组织名称**或**项目名称**,查找公开的 Docker 镜像 - 分析镜像的 `Dockerfile` 或配置层,可能会发现泄露的构建过程和配置参数 + + **6. 企业协作与文档平台搜索** 这类平台是企业员工存放项目文档、会议记录、API 文档甚至代码片段的地方。如果权限设置不当,可能导致内部信息被公开或被搜索引擎抓取 diff --git a/Chapter1/1-24.md b/Chapter1/1-24.md index 9e816e1..bb6fd41 100644 --- a/Chapter1/1-24.md +++ b/Chapter1/1-24.md @@ -19,6 +19,8 @@ - `site:www.example.com`:限定搜索范围在目标网站 - `inurl:/app/ OR inurl:/admin/ ...`:强制 Google 搜索 URL 中包含这些**常见应用路径**的结果。如果这些路径存在,并且被 Google 索引,那么它们将绕过默认的空白页面,直接显示应用的真实页面 + + **2. 查找 HTML 标题中包含应用名称的页面** 如果应用的开发者为内部页面设置了标题(例如“MyWebApp Admin Panel”),但该应用未正确路由,Google 依然可能索引到它 @@ -33,6 +35,8 @@ - `intitle:"login" OR intitle:"dashboard"`:查找那些页面标题中包含应用程序常见关键词的结果。如果点击这些结果,往往就能**直接进入应用的登录页面**,从而确定应用的真实访问路径 + + **3. 查找特定的应用文件类型(可能暴露路径)** 许多 Web 应用都会在特定路径下放置配置文件或特定资源文件 diff --git a/Chapter1/1-25.md b/Chapter1/1-25.md index 4c5b2cd..e74444d 100644 --- a/Chapter1/1-25.md +++ b/Chapter1/1-25.md @@ -10,6 +10,8 @@ - **绕过认证:** 发现的某些 API 路径可能在设计时依赖前端的认证逻辑,但后端缺乏严格的权限检查,从而实现**水平或垂直权限绕过** - **参数泄露:** JS 代码会暴露 API 调用所需的**参数名称和格式**,例如 `request.data.userId` 或 `request.data.authToken`,为后续的参数篡改和模糊测试提供依据 + + **2. 识别第三方服务与集成** 现代应用大量依赖第三方服务进行分析、存储或身份验证。 @@ -17,6 +19,8 @@ - **API 密钥/Token 泄露:** JS 文件中可能意外地硬编码了用于访问外部服务的敏感凭证,例如 **Google Maps API Key**、**AWS S3 访问凭证**、**支付网关密钥**(Stripe/PayPal Public Key)或 **Firebase 数据库配置** - **子域名/域名信息:** 可能会发现指向其他子域名或外部服务的域名,例如用于数据分析的 `analytics.target.com` 或用于文件存储的 `s3-bucket-name.amazonaws.com`,从而扩大资产范围 + + **3. 了解应用架构和业务逻辑** JS 代码提供了应用如何工作的第一手资料,有助于构造更精准的测试用例。 @@ -24,6 +28,8 @@ JS 代码提供了应用如何工作的第一手资料,有助于构造更精 - **输入验证逻辑:** 开发者有时会在前端 JS 中实现输入验证(如密码长度、邮箱格式)。了解这些前端规则有助于识别**哪些验证是仅在客户端执行**的,从而绕过验证,直接向后端发送非法数据 - **版本和框架信息:** JS 文件名或头部注释通常会暴露所使用的 **前端框架(如 React, Vue, Angular)的版本号**,有助于发现已知的客户端漏洞 + + **4. 敏感信息和注释泄露** 开发者在调试或开发过程中留下的信息,可能直接暴露敏感数据 diff --git a/Chapter1/1-28.md b/Chapter1/1-28.md index 28b370f..b76a337 100644 --- a/Chapter1/1-28.md +++ b/Chapter1/1-28.md @@ -20,6 +20,8 @@ Mimikatz 是绕过 Windows 安全机制、在内存中抓取明文密码或哈 sekurlsa::credman ``` + + **2. Wi-Fi 密码抓取** 作为渗透测试工程师,我们倾向于使用系统自带的命令来减少被检测的风险。 @@ -34,6 +36,8 @@ Mimikatz 是绕过 Windows 安全机制、在内存中抓取明文密码或哈 - **步骤二:提取密码** 读取导出的 `C:\Temp` 目录下的 XML 文件,搜索 `` 标签即可找到明文密码 + + **3. 针对特定软件凭证 (Xshell, Navicat, 浏览器)** 对于这些应用软件,通常需要找到对应的**开源解密工具**,这些工具通常托管在 GitHub 上,专门针对该软件的特定加密算法进行逆向和解密 diff --git a/Chapter1/1-3.md b/Chapter1/1-3.md index b3939ad..55e4f90 100644 --- a/Chapter1/1-3.md +++ b/Chapter1/1-3.md @@ -10,6 +10,8 @@ - **`display_errors`**: 如果这个选项是 `On`,服务器会显示详细的错误信息,包括文件路径、数据库查询语句等。这些信息对于 SQL 注入、文件包含等漏洞的调试和利用非常有帮助 - **`expose_php`**: 如果这个选项为 `On`,`phpinfo()` 页面会暴露 PHP 的**精确版本号**(例如 PHP/8.1.12)。这使得我能快速在漏洞数据库(如 CVEs)中查找该版本已知的安全漏洞,并针对性地进行攻击 + + **2. 服务器环境信息** 这些信息帮助我了解 PHP 运行在什么样的环境中,以及我能获得多大的权限 @@ -19,6 +21,8 @@ - **`User` 和 `Group`**: `phpinfo()` 会显示 PHP 进程是以哪个用户和用户组运行的。这决定了我能执行哪些操作,例如是否可以读取其他用户的文件、是否可以写入某些目录等 - **`PATH`**: 环境变量 `PATH` 包含了系统命令的搜索路径,如果我能执行命令,这能帮助我快速找到像 `whoami`、`ls`、`id` 等常用命令 + + **3. 已加载的模块和扩展** 这些信息揭示了 PHP 环境的功能,以及潜在的攻击面 @@ -27,6 +31,8 @@ - **`pdo`、`mysqli`、`sqlsrv` 等数据库扩展**: 确认网站使用了哪种数据库,为后续的**SQL 注入**攻击提供目标 - **`GD`、`ImageMagick` 等图像处理扩展**: 如果存在,可能会有**图像处理库漏洞**,导致命令执行。 + + **4. 文件系统和路径信息** - **`_SERVER["SCRIPT_FILENAME"]`**: 暴露了当前脚本在服务器上的**绝对路径**。这是进行本地文件包含、路径遍历、以及了解服务器文件结构的重要线索 diff --git a/Chapter1/1-30.md b/Chapter1/1-30.md new file mode 100644 index 0000000..8482d49 --- /dev/null +++ b/Chapter1/1-30.md @@ -0,0 +1,65 @@ +### 抓取到域内 Windows 主机的 Wi-Fi 密码有什么利用思路 + +**一、 扩大网络访问权限与横向渗透** + +**1. 接入隔离/低安全区域网络** + +很多企业会将不同的设备或用户类型分配到不同的 Wi-Fi 网络,安全防护等级不一: + +- **利用目标:** 接入 **访客网络 (Guest Wi-Fi)**、**运维设备网络**、**内部 IoT 设备网络**(如 IP 摄像头、智能照明) +- **利用价值:** + - **弱配置设备攻击:** 许多连接在 Wi-Fi 上的设备(如打印机、投影仪、会议系统)存在默认凭证或未打补丁的漏洞,可以作为**新的跳板**进入更核心的网络 + +**2. 绕过网络访问控制 (NAC)** + +如果企业实施了严格的**端口安全**或 **NAC**,限制了有线网络的接入: + +- **利用目标:** 使用抓取到的密码,通过你自己的设备(如笔记本、手机、便携式路由)连接到员工 Wi-Fi。 +- **利用价值:** + - **物理渗透捷径:** 在物理渗透场景中,可以直接在办公区或会议室接入内网,**无需寻找空闲的墙上网络端口** + - **规避端口绑定策略:** 绕过针对特定有线端口或 MAC 地址的限制,相当于为你自己生成了一个**有效的内网接入身份** + +**** + +**二、 建立隐蔽 C2 通道(反向连接)** + +Wi-Fi 网络可以作为建立持久化和隐蔽命令与控制 (C2) 通道的基础 + +**1. 利用 Wi-Fi 出口进行隐蔽通信** + +- **思路:** 在受控的域内 Windows 主机上,设置代理或路由,强制其 C2 流量通过 Wi-Fi 接口进行传输,而非默认的有线网络接口 +- **利用价值:** + - **绕过核心防火墙:** 许多公司的主出口防火墙对有线网络的流量监控极其严格,而 Wi-Fi 网络的出口策略往往较为宽松(或者经过了不同的流量检测设备) + - **增加溯源难度:** 攻击者将 C2 服务器设置在互联网上,受控主机的回连流量通过 Wi-Fi 接口离开内网,可以**混淆**安全团队对 C2 流量的分析和溯源路径 + +**2. 作为“死亡跳板”** + +- **思路:** 如果你攻陷了多台主机,可以将其中一台主机设置为 Wi-Fi 网络中的**内部 C2 代理** +- **利用价值:** + - 核心主机只需连接到这台 Wi-Fi 跳板机(内网 IP),而不直接连接到互联网 C2 服务器。这使得**核心资产的通信更加本地化和隐蔽**,即使 Wi-Fi 被切断,也不会直接暴露核心主机 + +**** + +**三、 凭证复用与社会工程学** + +**1. 密码复用攻击** + +- **思路:** 尝试将抓取到的 Wi-Fi 密码作为 **低级服务** 或 **非核心应用** 的密码 +- **利用价值:** 许多员工习惯使用相同的简单密码(如 `wifi_password`)来保护共享文件夹、测试环境的数据库、内部 Wiki 站点或个人账户。可以尝试在域内进行**哈希传递**或**密码喷洒**等攻击时,将此密码加入字典 + +**2. 社会工程学辅助** + +- **思路:** 在进行钓鱼或社工活动时,如果能提到目标企业的 Wi-Fi 名称和密码,会极大地**提高可信度** +- **利用价值:** 伪装成 IT 部门发送“安全升级通知”或“网络维护邮件”,要求员工提供其他敏感信息,因为你已经掌握了他们日常使用的 Wi-Fi 凭证 + +**** + +**四、 802.1x 认证环境下的变种利用** + +如果 Wi-Fi 采用 **802.1x** 认证(依赖域用户凭证而非简单 PSK),则利用思路会升级为对 **802.1x 凭证本身的利用**: + +| Wi-Fi 类型 | 抓取目标 | 变种利用思路 | +| -------------------------- | ------------------- | ------------------------------------------------------------ | +| **PSK (预共享密钥)** | Wi-Fi 密码明文 | 接入网络,扩大攻击面 | +| **802.1x (PEAP/MSCHAPv2)** | 域用户名和密码/哈希 | 利用抓到的域凭证**模拟**该用户在自己的设备上通过 802.1x 认证,直接接入公司 Wi-Fi 网络 | +| **802.1x (EAP-TLS)** | 客户端证书和私钥 | 导出目标主机的**客户端证书和私钥**,导入到攻击机上,以**主机身份**接入网络。这是最高级别的隐蔽接入 | diff --git a/Chapter1/1-31.md b/Chapter1/1-31.md new file mode 100644 index 0000000..2c1fc1a --- /dev/null +++ b/Chapter1/1-31.md @@ -0,0 +1,24 @@ +### 请说明 MSF 的扫描模块与 Nmap 或 FScan 相比,在隐蔽性和灵活性上的优势和劣势 + +**隐蔽性** + +在隐蔽性方面,**MSF 模块**通常比原生扫描器更具优势,因为它工作在**应用层(L7)** + +- **MSF 的优势:** MSF 的辅助模块模仿的是**真实的客户端与服务器的协议交互**,例如发送一个标准的 HTTP GET 请求来获取版本信息,或者尝试一个正常的 SMB 登录。这种流量看起来更像**正常的业务通信**,能够更好地**规避 IDS/IPS 对原始网络包(Raw Packets)的检测**。此外,MSF 模块通常是针对**特定目标或任务**进行单次、精准的验证,不容易被发现 +- **原生扫描器的劣势:** **Nmap** 和 **FScan** 主要依赖于发送 **L3/L4 层的原始数据包**(如 SYN/ACK、ICMP)。尽管 Nmap 支持多种隐蔽扫描技术(如 FIN、Xmas),但这种**裸包扫描的特征**非常明显,很容易被专业的流量分析工具和 IDS/IPS 标记为**恶意扫描行为**。它们默认往往进行**大范围、多端口的全面扫描**,容易被发现 + +**** + +**灵活性** + +在灵活性方面,MSF 的优势体现在**流程整合**和**快速定制**上,而 Nmap/FScan 则体现在**扫描深度**上 + +**流程整合与定制(MSF 优势)** + +- **MSF 的巨大优势:** MSF 提供了**一站式的渗透测试流程**。扫描模块的输出(如发现的服务版本或弱口令)可以**直接无缝地作为利用模块(Exploit)的输入**,实现了**信息收集、漏洞利用到后渗透的自动化衔接**。这种**功能整合性**是 Nmap/FScan 无法比拟的,后者需要手动导入数据 +- **MSF 的定制优势:** MSF 模块基于 **Ruby** 脚本语言编写,结构清晰。这使得渗透测试工程师可以**快速、轻松地修改**现有模块的协议交互逻辑、添加自定义的指纹识别,或者整合自己的混淆技术,**定制和迭代效率极高** + +**扫描深度与覆盖(Nmap/FScan 优势)** + +- **原生扫描器的巨大优势:** **Nmap** 是业界公认的**端口扫描之王**,在**网络发现**和**全面资产识别**方面具有不可撼动的地位。它支持所有 TCP/UDP 协议的底层裸包扫描,能够穿透各种网络环境,实现**最全面的端口服务覆盖** +- **MSF 的劣势:** MSF 模块多是针对**特定应用或漏洞**的验证性脚本,其设计的目的在于“验证是否存在”,而非“发现所有资产”。因此,它在发现**未知或非标准服务**的**深度和广度**上,远不如 Nmap \ No newline at end of file diff --git a/Chapter1/1-32.md b/Chapter1/1-32.md new file mode 100644 index 0000000..4e8c78e --- /dev/null +++ b/Chapter1/1-32.md @@ -0,0 +1,65 @@ +### 请你详细说说你如何定制或魔改一个 MSF 扫描模块使其能更好地绕过流量分析和 IDS/IPS 的检测 + +**一、理解检测原理与目标** + +在动手修改代码之前,**深入理解 IDS/IPS 和流量分析的工作原理**至关重要 + +- **IDS/IPS 的检测机制:** + - **签名匹配 (Signature-based):** 默认 MSF 模块中的特定字节序列、Header 值(如 User-Agent)或请求结构是已知的签名 + - **异常检测 (Anomaly-based):** 寻找与正常流量模式(如不常见的端口、非标准协议行为、高并发连接速率)的偏差 + - **协议解析 (Protocol Parsing):** 检查请求是否符合协议规范 +- **流量分析的关键点:** + - **时间特征:** 快速、连续的扫描行为(高连接速率) + - **指纹信息:** 默认的 HTTP Header (如 `User-Agent: Metasploit`), TCP/IP 栈指纹 + - **载荷特征:** 默认载荷的字节序列、编码方式 + +**** + +**二、模块定制与魔改的四大策略** + +我主要从 **网络层、应用层、行为模式** 和 **载荷** 四个维度进行魔改 + +**1. 流量特征模糊化(应用层/网络层)** + +这部分旨在改变数据包的**静态指纹**,使其看起来更像正常、随机的客户端流量 + +| 定制目标 | 具体魔改方法 | 绕过机制 | +| -------------------- | ------------------------------------------------------------ | -------------------------------------- | +| **User-Agent** | 随机化 **`User-Agent`** 列表,使用主流浏览器和操作系统的真实组合。**避免**使用 MSF 或其他工具的默认值。 | 绕过基于特定 UA 签名的检测 | +| **HTTP Header** | 增加、修改或随机化其他 Header,如 `Accept-Language`, `Referer`, `Cache-Control`。**特别是**修改 **`Accept-Encoding`**,以影响响应和请求的压缩 | 模拟真实浏览器行为,使流量分析更困难 | +| **TLS/SSL 指纹** | 在使用 HTTPS 扫描时,修改 **JA3/JA4 指纹**。这通常涉及修改底层的 Ruby 库或使用特定的 Sockets 库,以随机化 **Client Hello** 消息中的加密套件、扩展顺序等 | 绕过基于 TLS 握手特征的检测 | +| **IP 分片/TCP 乱序** | 引入 IP 分片或 TCP 分段乱序的逻辑(需更底层库支持),但需注意过度使用可能导致目标拒绝连接 | 绕过签名匹配(签名可能无法跨分片识别) | + + + +**2. 行为模式降速与随机化** + +这是绕过基于**行为分析**和**速率限制**的关键 + +- **延迟与抖动 (Delay & Jitter):** + - **增加扫描间隔 (`Sleep`):** 在每次连接请求之间引入随机的延迟,如 2∼5 秒,避免高并发 + - **引入随机抖动:** 使用非线性的、随机的延迟时间,使扫描速率难以被算法模型预测 +- **IP 地址轮换 (Proxy Chaining):** + - 集成 **Socks 代理链 (如 Tor)** 或购买**高匿名的住宅 IP 池**。在 MSF 模块中,可以通过设置 `Proxies` 选项,或直接修改模块代码以从 IP 池中随机选择出口 IP +- **连接失败处理:** + - 设置更人性化的重试机制,而不是立即放弃或高速重试,模拟网络不稳定的真实用户行为 + + + +**3. 代码逻辑混淆与指纹去除** + +直接修改模块的 Ruby 代码,消除内部的**软件指纹** + +- **移除/修改内部标识符:** 许多 MSF 模块会在请求中加入一些微小的、不影响功能的标识符。比如,在 POST 请求体中加入**不影响解析的空格或随机参数** +- **重写核心请求函数:** 避免使用 MSF 默认的 `send_request_cgi` 等包装函数,而是使用更底层的 `Rex::Socket` 或其他 Ruby HTTP 库,**完全重构**请求的构造过程,消除函数调用栈和代码结构上的指纹 +- **自定义协议处理:** 如果是针对非 HTTP 协议的扫描,重写协议解析和构造逻辑,确保只发送扫描所需的最小数据,并使用非标准的字段顺序 + + + +**4. 载荷定制与动态编码** + +对于渗透模块(如 Exploit),载荷的定制是核心 + +- **动态编码:** 不使用 MSF 默认的编码器(如 `shikata_ga_nai`,它们有已知特征),而是使用**自定义或多重异或/加法编码**,并结合**自定义解码存根** +- **无文件载荷:** 尽可能使用反射型 DLL 注入或其他内存载荷,避免将恶意文件写入磁盘,绕过基于文件哈希和行为的终端检测 +- **载荷分块传输:** 将载荷分割成多个小块,通过不同的请求或连接分阶段传输,最后在目标内存中重组,绕过基于载荷完整性的深度包检测 (DPI) \ No newline at end of file diff --git a/Chapter1/1-4.md b/Chapter1/1-4.md index 5ddb897..92aa107 100644 --- a/Chapter1/1-4.md +++ b/Chapter1/1-4.md @@ -17,6 +17,8 @@ 判断目标操作系统是渗透测试中的一个基本步骤,这可以帮助你选择正确的漏洞利用方法和工具。以下是几种从渗透测试角度判断目标操作系统的方法,从被动到主动,由浅入深 + + **2. 主动指纹识别** 这需要你向目标发送特定的探测请求,并分析其响应 diff --git a/Chapter1/1-5.md b/Chapter1/1-5.md index 9b14d48..7d7e20e 100644 --- a/Chapter1/1-5.md +++ b/Chapter1/1-5.md @@ -10,6 +10,8 @@ CDN 的核心原理就是将你的请求解析到离你最近的节点服务器 你可以使用在线工具如 **nslookup.io**、**`ping` 命令** 或 **`nslookup` 命令** 来进行测试 + + **2. HTTP 响应头分析** 许多 CDN 服务商会在 HTTP 响应头中添加特定的信息来标识自己 @@ -20,11 +22,15 @@ CDN 的核心原理就是将你的请求解析到离你最近的节点服务器 你可以使用 `curl` 命令或浏览器的开发者工具来查看这些 HTTP 头信息。例如:`curl -I http://www.example.com` + + **3. IP 地址归属地查询** - **IP 库查询**: 如果通过 DNS 查询获得了目标 IP 地址,可以利用 IP 地址查询工具来判断其归属地 - **观察归属地**: 如果 IP 地址归属地是一个知名的 CDN 服务商(如 Cloudflare, Akamai, AWS),那么目标就使用了 CDN + + **4. SSL/TLS 证书信息** - **证书颁发者**: 有些 CDN 服务商会提供 SSL/TLS 证书服务,如果证书的颁发者是 Cloudflare 或 Let's Encrypt 等,这可能暗示使用了 CDN \ No newline at end of file diff --git a/Chapter1/1-6.md b/Chapter1/1-6.md index 7b0af6b..a3241ce 100644 --- a/Chapter1/1-6.md +++ b/Chapter1/1-6.md @@ -20,6 +20,8 @@ SVN(Subversion)是一个集中式版本控制系统,它的核心目录是 - `http://example.com/some-dir/.svn/entries` 2. **自动化下载与重构**:使用 `svn-dumper`、`dvcs-ripper` 等工具。这些工具能够自动化完成下载和还原代码的过程 +**** + **Git 源代码泄露** Git 是一个分布式版本控制系统,它的核心目录是 `.git`。和 SVN 类似,当开发者将代码直接在 Web 目录下进行 `git init` 或 `git clone` 操作时,`.git` 目录就会被创建并暴露出来 diff --git a/Chapter1/1-7.md b/Chapter1/1-7.md index 900aaea..a978178 100644 --- a/Chapter1/1-7.md +++ b/Chapter1/1-7.md @@ -13,6 +13,8 @@ - **ICMP/ARP 扫描:** 使用 `ping` 或 `nmap -sn` 对内网 IP 段进行存活主机探测 - **端口扫描:** 发现域内主机开放的服务,特别是 Kerberos (88/TCP)、LDAP (389/TCP)、SMB (445/TCP)、WinRM (5985/TCP) 等与域服务相关的端口 +**** + **阶段二:微观信息枚举** 在初步了解了域环境后,这个阶段的目标是**利用已有的权限(即使是普通用户权限),深入挖掘域内的各种实体信息** diff --git a/Chapter1/1-8.md b/Chapter1/1-8.md index b02d2be..5ca03ff 100644 --- a/Chapter1/1-8.md +++ b/Chapter1/1-8.md @@ -20,6 +20,8 @@ - **优点:** 无需任何额外工具,几乎即时返回结果 + + **2. 通过 DNS 服务查询** 在域环境中,域控会在 DNS 服务器上注册特定的服务记录(SRV Records),这些记录指向其 IP 地址和端口。这是最可靠的定位方法之一 @@ -36,6 +38,8 @@ - **优点:** 几乎所有 Windows 域都依赖 DNS 服务,这种方法非常通用且准确 + + **3. 利用 Windows 内置工具** `nltest` 是一个用于测试和管理网络登录服务的命令行工具,可以用来发现域控 @@ -50,6 +54,8 @@ - **优点:** 无需管理员权限,可以在任何域成员主机上运行,非常方便 + + **4. 使用端口扫描** 域控提供多种核心服务,这些服务都在特定的端口上运行。通过扫描这些端口,可以有效地识别出域控