HevenTafese/Penetration-Testing-Walkthrough-Hacksudo-Thor
GitHub: HevenTafese/Penetration-Testing-Walkthrough-Hacksudo-Thor
针对HackSudo Thor靶机的完整黑盒渗透测试演练,记录了从网络侦察、Shellshock RCE利用到多层提权获取root权限的全攻击链,并附带CSRF感知暴力破解工具和Metasploit RPC自动化脚本。
Stars: 0 | Forks: 0
# HackSudo Thor 全面渗透测试演练
## 目录
- [概述](#overview)
- [网络拓扑](#network-topology)
- [攻击链总结](#attack-chain-summary)
- [阶段 1:被动侦察](#phase-1-passive-reconnaissance)
- [阶段 2:网络发现与 pfSense](#phase-2-network-discovery-and-pfsense)
- [阶段 3:目标扫描与枚举](#phase-3-target-scanning-and-enumeration)
- [阶段 4:漏洞评估](#phase-4-vulnerability-assessment)
- [阶段 5:获取访问权限](#phase-5-gaining-access)
- [阶段 6:权限提升](#phase-6-privilege-escalation)
- [阶段 7:后渗透](#phase-7-post-exploitation)
- [阶段 8:痕迹清除](#phase-8-tracks-covering)
- [利用的漏洞](#vulnerabilities-exploited)
- [使用的工具](#tools-used)
- [修复建议](#recommendations)
- [仓库结构](#repository-structure)
- [道德免责声明](#ethical-disclaimer)
## 概述
本仓库记录了对 **HackSudo Thor** 进行的一次部分黑盒渗透测试,这是一台由 Vishal Waghmare 在 VulnHub 上发布的包含已知漏洞的虚拟机。其目标是模拟真实攻击场景,即外部攻击者试图破坏一个隔离的内部系统,主要目的是获取 root 访问权限并读取 `/root/proof.txt` 的内容。
本次评估遵循完整的渗透测试生命周期:被动侦察、网络发现、枚举、漏洞评估、漏洞利用、权限提升、后渗透以及痕迹清除。
使用的主要工具包括:用于网络扫描的 Nmap、用于漏洞评估的 Nessus,以及作为主要漏洞利用和后渗透平台的 Metasploit Framework。在密码破解阶段使用了 John the Ripper、Hashcat 和在线彩虹表,但由于所用哈希算法的强度,所有尝试最终均未成功。
## 网络拓扑
虚拟实验室完全在 VirtualBox 中构建,旨在模拟具有三个不同安全区域的现实企业网络,所有区域均由 pfSense 2.7.2 防火墙管理。三个 NAT 网络配置如下:模拟公共互联网并驻留 Kali 攻击机的 WAN 区域、托管目标机器的 DMZ 区域,以及包含范围外机器的内部 LAN 区域。
```
Internet Zone — NatNetwork (10.0.2.0/24)
│
│ Kali Linux 2025.4 [attacker] — 10.0.2.9
│ pfSense WAN interface — 10.0.2.8
│
├── pfSense Firewall (boundary device)
│
├── DMZ Zone — DMZnat (10.0.4.0/24)
│ ├── HackSudo Thor [TARGET] — 10.0.4.3
│ └── DVWA — 10.0.4.4 (out of scope)
│
└── LAN Zone — LANnat (10.0.3.0/24)
├── Metasploitable 2 — 10.0.3.5 (out of scope)
└── Windows XP Cyberlab — 10.0.3.4 (out of scope)
```

*由 pfSense 管理的逻辑网络拓扑安全区域*
WAN 接口由 DHCP 分配了 `10.0.2.8/24`,LAN 接口设置为 `10.0.3.1/24`,OPT1 (DMZ) 接口设置为 `10.0.4.1/24`。为了在实验室环境中引入故意的配置错误,pfSense 的 WAN 接口上故意暴露了 80 端口,这模拟了现实中常见的管理面板暴露问题,并成为了进入内部网络的主要入口点。
## 攻击链总结
```
[Kali Linux — 10.0.2.9]
│
│ CSRF-aware Python brute force → admin / pfsense
▼
[pfSense webConfigurator — 10.0.2.8:80]
│
│ Firewall rules disabled → DMZ and LAN now reachable
▼
[HackSudo Thor — 10.0.4.3]
│
│ Shellshock RCE (CVE-2014-6271)
│ Apache mod_cgi → /cgi-bin/shell.sh
▼
[Meterpreter shell — www-data]
│
│ sudo -u thor /home/thor/hammer.sh
│ Command injection via eval → bash -i payload
▼
[Interactive shell — thor]
│
│ GTFOBins: sudo service ../../bin/bash
▼
[Root shell]
│
├── /root/proof.txt captured ✅
├── /etc/shadow + /etc/passwd exfiltrated
└── SSH RSA backdoor planted
```
## 阶段 1:被动侦察
在与目标环境进行任何接触之前,仅从公开来源收集信息。两个主要来源是 HackSudo Thor 的官方 VulnHub 页面和作者的公开 GitHub 个人资料。
VulnHub 页面确认目标是一个基于 Linux 的系统,难度评级为简单到中等,目标是找到 `proof.txt` 标志。查阅作者的 GitHub 个人资料提供了额外的洞察。Vishal Waghmare 在设计整个 HackSudo 系列的 Linux boot-to-root 机器时,始终将权限提升作为核心挑战。这塑造了进入主动阶段的威胁模型:HTTP 和 SSH 服务是最可能的攻击面,并且可以预测提权路径将涉及 sudo 配置错误、SUID 二进制文件滥用或自定义服务的漏洞利用。
这种作者模式分析在真实的评估任务中同样重要。了解系统可能是如何设计的,以及其管理员可能重复出现哪类弱点,能够在发送任何一个数据包之前就指明方向。
| 字段 | 详情 |
|-------|--------|
| 目标 | HackSudo Thor |
| 作者 | Vishal Waghmare (@hacksudo) |
| 发布日期 | 2021 年 8 月 3 日 |
| 难度 | 简单到中等 |
| 操作系统 | Linux (Debian) |
| 格式 | VirtualBox OVA |
| DHCP | 已启用 |
| 预测攻击面 | HTTP, SSH, 可能为 sudo 配置错误 |
## 阶段 2:网络发现与 pfSense
此阶段涉及与环境进行直接的主动接触。目标是识别所有存活主机,了解网络边界,并在将焦点缩小到主要目标之前构建完整攻击面的全貌。
### 寻找边界设备
首先对 WAN 子网 (`10.0.2.0/24`) 运行了轻量级的 Nmap ping 扫描 (`-sn`),以极小的噪音发现存活主机。识别出三个主机:`10.0.2.1` 和 `10.0.2.2` 是标准的 VirtualBox 基础设施地址,因此 `10.0.2.8` 成为唯一的非基础设施主机。这台机器成为了直接的焦点。
对 `10.0.2.8` 进行的完整 SYN 隐蔽扫描完全没有返回结果。这是预期行为,而不是错误。企业防火墙旨在对端口扫描无响应,静默丢弃数据包而不是做出回应。没有结果本身便证实了这是一个正在主动过滤流量的网络边界设备。
为了在不依赖数据包扫描的情况下确认实际运行的服务,使用 curl 发出了直接的 HTTP 请求。采用这种方法是因为标准的 Web 请求被过滤的可能性远低于扫描工具。响应返回 `HTTP/1.1 200 OK`,包含 `Server: nginx`,页面标题为 `pfSense`,确认 webConfigurator 可以直接从 WAN 接口的 80 端口访问。
### 绕过 CSRF 以暴力破解 pfSense
确认登录页面后,下一步是尝试恢复凭据。最初选择 Hydra 作为暴力破解工具,但由于两个原因导致尝试失败。首先是实际原因,`rockyou.txt` 包含超过 1400 万条目,使得在本次评估的时间范围内不切实际。第二个是技术原因且更为重要:pfSense 2.7.2 实现了 CSRF token 保护,在每次页面加载时生成一个唯一的加密令牌,必须与凭据一起提交。Hydra 的 HTTP POST 模块提交静态请求体,没有机制为每次尝试动态获取新的 token,因此每次提交都在密码被检查之前就被拒绝了。
为了解决这个问题,编写了一个自定义 Python 脚本来复制完整的浏览器登录过程。对于每次密码尝试,脚本都会打开一个新会话,加载登录页面,从 HTML 表单中提取当前的 CSRF token,然后像浏览器一样将该 token 与凭据一起提交。使用 CeWL 构建了一个自定义字典,通过爬取 pfSense 登录页面并提取相关术语,然后用 `fasttrack.txt` 进行补充,以涵盖已知的默认凭据。
脚本恢复了凭据:**`admin / pfsense`**,即未更改的默认凭据。

*自定义 Python 脚本恢复 pfSense 凭据*
### 映射内部网络
建立仪表板访问权限后,审查了 pfSense 接口配置以了解完整的内部拓扑。这揭示了从 WAN 不可见的两个子网:`10.0.3.0/24` 的 LAN 和 `10.0.4.0/24` 的 DMZ。随后通过 Web 界面禁用了 WAN 防火墙规则,并添加了两条允许规则,以允许来自攻击者 IP 的流量进入这两个子网。
对这两个子网的 Nmap ping 扫描识别出六台存活主机。对其中的四台进行了进一步枚举,排除了属于 pfSense 网关接口的 `10.0.4.1` 和 `10.0.3.1`。对这四台机器同时运行了结合服务枚举、版本检测、默认 NSE 脚本和 OS 指纹识别的综合扫描。将结果与被动侦察进行交叉比对,识别出了拓扑中的每台机器:
| IP 地址 | 关键服务 | 操作系统 | 识别为 |
|------------|-------------|-----|---------------|
| 10.0.4.3 | SSH 7.9p1, Apache 2.4.38, FTP | Linux (Debian) | **HackSudo Thor** |
| 10.0.4.4 | Apache 2.4.29, DVWA v1.10 | Linux (Ubuntu) | DVWA |
| 10.0.3.4 | Microsoft IIS 5.1 | Windows XP/2003 | WinXP Cyberlab |
| 10.0.3.5 | vsftpd 2.3.4, SSH, Apache 2.2.8 | Linux (Ubuntu) | Metasploitable 2 |
目标确认为 `10.0.4.3`。所有后续活动完全集中在这台机器上。
## 阶段 3:目标扫描与枚举
在识别出目标后,对其服务进行了更深入的分析,以映射攻击面并确定可行的利用路径。Metasploit Framework 被用作此阶段的主要平台,特别是因为其 PostgreSQL 后端会在会话之间持久化所有扫描结果——主机、服务和漏洞——这些都存储在数据库中,并可在后续阶段引用而无需重新扫描。
在开始之前,使用 `msfdb init` 初始化 Metasploit,使用 `db_status` 验证数据库连接,所有后续工作都在 `msfconsole` 中进行。
使用 `db_nmap` 命令对 `10.0.4.3` 运行了完整扫描——SYN 隐蔽扫描、服务版本检测、默认 NSE 脚本、OS 指纹识别以及所有 65,535 个 TCP 端口。结果自动存储在数据库中,并可通过 `hosts` 和 `services` 命令检索。确认有三个服务开放:运行 Pure-FTPd 的 21 端口 FTP,运行 OpenSSH 7.9p1 的 22 端口 SSH,以及运行 Apache 2.4.38 的 80 端口 HTTP。
随后使用针对性的 Metasploit 辅助模块对每个服务进行了进一步枚举。HTTP 服务受到了最多的关注。使用 `dir_scanner` 和 `http_crawler` 模块映射了 Web 服务器上所有可访问的路径和端点。由此得出的最重要发现是 `/cgi-bin/` 目录和一个名为 `shell.sh` 的脚本。另外,对 `news.php` HTML 源代码的手动审查揭示了作者留下的一条隐藏注释,其中引用了 `/cgi-bin/` 目录,这是一个指向基于 CGI 漏洞的刻意提示。检查了 FTP 服务的匿名访问(已禁用),并记录了版本字符串以用于 CVE 交叉参考。出于同样目的检索了 SSH banner。
## 阶段 4:漏洞评估
在完全映射了攻击面之后,使用两种方法进行了结构化的漏洞评估:自动化的 Nessus 扫描和针对每个服务的手动攻击者推理。
创建了一个自定义 Nessus 策略,明确启用了 CGI 扫描和 Web 应用程序测试,目标为 21、22 和 80 端口。这些设置默认情况下是不启用的,在这里至关重要;没有它们,就不会测试 CGI 端点。扫描运行了大约 11 分钟,返回了 41 项发现。可操作的发现包括:
| 严重性 | 发现 | CVE | CVSS v3 |
|----------|---------|-----|---------|
| CRITICAL | Shellshock RCE | CVE-2014-6271 | 9.8 |
| CRITICAL | Shellshock 不完整修复 | CVE-2014-6278 | 8.8 |
| MEDIUM | SSH Terrapin 弱点 | CVE-2023-48795 | 5.9 |
| MEDIUM | 可浏览的 Web 目录 | — | 5.3 |
| MEDIUM | 点击劫持 / 无 X-Frame-Options | CWE-693 | 4.3 |
| LOW | ICMP 时间戳泄露 | CVE-1999-0524 | 2.1 |
关于 `/cgi-bin/shell.sh` 的两项 Shellshock 发现立即成为了优先事项。CVE-2014-6271 的 CVSS 评分为 9.8,可实现未经身份验证的远程代码执行,是扫描中影响最大的发现。CVE-2014-6278 代表同一漏洞的不完整补丁,这意味着即使是部分打补丁的系统也仍然可被利用。经评估,在没有中间人位置的情况下,SSH Terrapin 弱点是不可利用的。其余发现在本次评估中没有实质性的利用价值。
在进入漏洞利用阶段之前,使用了直接针对 `/cgi-bin/shell.sh` 的 Nmap `http-shellshock` NSE 脚本独立验证了 Shellshock 发现。在利用之前进行独立验证是该方法论中的重要步骤,因为它确认漏洞是真实的而不是扫描仪的误报,并且避免了浪费时间尝试无效的漏洞利用。NSE 脚本确认该端点存在漏洞,CVE-2014-6271 被选作主要攻击向量。
## 阶段 5:获取访问权限
确认 Shellshock 后,漏洞利用阶段开始。该漏洞的存在是因为 Apache mod_cgi 在调用 CGI 脚本时, HTTP 请求头作为环境变量传递给 Bash。在未打补丁的 Bash 版本中,环境变量中经过特殊构造的函数定义会导致定义后附加的任何命令立即执行。通过将此 payload 注入到对 `/cgi-bin/shell.sh` 请求的 `User-Agent` 头中,可以在无需任何身份验证的情况下在服务器上执行任意命令。
Metasploit 模块 `exploit/multi/http/apache_mod_cgi_bash_env_exec` 完全自动化了这一过程。配置模块的 `RHOSTS` 设置为 `10.0.4.3`,`TARGETURI` 设置为 `/cgi-bin/shell.sh`,payload 设置为 `linux/x86/meterpreter/reverse_tcp`,监听器指回 Kali 机器的 4444 端口。运行该模块发送了恶意请求,服务器执行了 payload,Metasploit 接收到了传入连接,建立了一个作为 `www-data` 运行的 Meterpreter 会话。

*Shellshock 漏洞利用已执行,并以 www-data 身份建立 Meterpreter 反向 shell*
## 阶段 6:权限提升
从 `www-data` 开始,对系统访问的范围最初是未知的。当务之急是了解当前的立足点:谁是活动用户,存在哪些其他账户,以及有哪些向更高权限提升的可用路径。
Meterpreter 会话被降至原始系统 shell,并使用 Python 的 `pty` 模块生成了一个伪终端,以创建一个完全交互式的终端。读取 `/etc/passwd` 并列出 `/home/` 确认了系统上存在一个名为 `thor` 的用户。初始的 `ls -la /home/thor/` 返回了权限拒绝,因此使用 `find / -user thor 2>/dev/null` 搜索文件系统以查找属于 thor 的任何文件,而不受目录权限限制。这定位到了一个位于 `/usr/local/sbin/ls` 的异常二进制文件——一个名为 `ls` 但不是标准系统二进制文件的文件。其内容显示它是一个归 Thor 所有的自定义脚本,已记录以便后续调查。
### 第 1 阶段:www-data 提权至 thor
执行了检查当前用户 sudo 权限的标准后渗透步骤 `sudo -l`。这揭示了允许 `www-data` 以用户 `thor` 的身份执行 `/home/thor/hammer.sh`,无需密码——一个没有任何合法操作理由的 NOPASSWD 规则。

*sudo -l 确认 www-data 可以无密码以 thor 身份运行 hammer.sh*
由于目录权限阻止了直接读取 `hammer.sh`,因此首先执行 `sudo -u thor /home/thor/./hammer.sh` 以观察其行为。该脚本提供了两个交互式提示:“Secret Key”和“Secret Message”。第一个提示将输入作为问候语回显。第二个提示处理输入然后退出。这两种行为之间的区别很重要:如果两个提示都只是简单地回显输入,那么它们都毫无意义。第二个提示在响应之前*处理*了输入,这一事实表明它将值传递给了 shell 命令——这是一种与 `eval` 语句一致的模式,也是记录完善的命令注入攻击面。
在第二次执行时,向第一个提示传递了空输入。向第二个提示提供了注入 payload `bash -i`。这生成了一个作为 `thor` 运行的交互式 shell。

*bash -i payload 注入到 hammer.sh 中*
### 第 2 阶段:thor 提权至 root
以 `thor` 身份再次运行了 `sudo -l`。这揭示了对 `/usr/bin/cat` 和 `service` 拥有不受限制的 root 级别 NOPASSWD 访问权限。`service` 规则最为重要。GTFOBins 的 `sudo service` 技术允许将路径遍历字符串作为服务名称参数传递。提供 `../../bin/bash` 会导致 `service` 二进制文件解析遍历并以 root 权限调用 `/bin/bash`。
```
sudo service ../../bin/bash
```
这产生了一个完整的 root shell。

*通过 GTFOBins sudo service 路径遍历获取的 Root shell 已确认*
## 阶段 7:后渗透
确认 root 身份后,后渗透阶段侧重于三个领域:了解系统环境、提取敏感数据以及建立持久访问。
### 系统信息与 Flag
首先进行了基本的系统枚举,以确认目标身份并为修复建议建立上下文,包括内核版本、OS 版本和网络配置。系统确认为 Debian GNU/Linux 10 (Buster),在 `10.0.4.3` 上运行内核 4.19.0-17-686-pae。
列出了 root 主目录,发现了 `proof.txt` 和 `root.txt`。读取 `proof.txt` 文件以捕获主 flag——本次评估既定的主要目标。

*proof.txt 的内容——主 flag 已获取*
### 凭据提取与密码破解
`/etc/shadow` 和 `/etc/passwd` 文件被复制到 `/tmp` 并通过 Meterpreter 下载到攻击者机器上。这两个文件一起提供了系统用户帐户和离线破解所需的密码哈希。
尝试了几种破解方法。John the Ripper 将两个哈希识别为 SHA-512crypt,其成本因子为 5,000 次迭代。首次使用 `rockyou.txt` 的尝试在运行数小时无果后被中止。SHA-512crypt 的计算成本使得在没有 GPU 加速的情况下,穷举字典攻击非常缓慢。第二次尝试使用从侦察期间收集的情报构建的自定义目标字典,虽然很快完成,但未返回匹配项。
接下来尝试了 CrackStation 作为在线彩虹表服务,但它对这两个条目返回了无法识别的哈希格式。这是预料之中的——SHA-512crypt 在哈希之前为每个哈希添加了唯一的随机 salt,这意味着相同的密码会为每个帐户生成不同的哈希。彩虹表通过为已知密码预计算哈希来工作,但是每个可能的 salt 值都需要一个单独的表,这使得这种方法针对加盐哈希完全不可行。
Hashcat 被用于最后的尝试,连续使用了三个字典:`fasttrack.txt`(4 秒内穷尽)、自定义目标列表(穷尽但无匹配),以及 `rockyou.txt` 的前 100,000 条目(3 分钟后失败)。所有密码破解尝试均未成功。使用带有高迭代计数的加盐 SHA-512crypt 就是原因所在——该算法被设计为计算成本高昂,正是为了抵御这种离线攻击。
### SSH 密钥搜索
还使用 `find` 对 RSA 私钥文件和 PEM 证书进行了文件系统搜索。找到的任何私钥都可能授予对信任相应公钥的其他系统的访问权限,这是一个有价值的横向移动机会。未发现属于其他系统的私钥。
### 后门部署
通过将 RSA 公钥注入到 root 帐户的 `authorized_keys` 文件中实现了持久访问。选择基于 SSH 密钥的身份验证是因为它不依赖于密码,并且除非专门审计 `authorized_keys` 文件,否则难以检测。在 Kali 机器上生成了一个 4096 位的 RSA 密钥对,并将公钥附加到目标机器的 `/root/.ssh/authorized_keys` 中,同时设置了正确的目录和文件权限。使用私钥建立了到目标的回连,以验证后门是否可用。

*通过私钥身份验证确认持久的 root 访问权限*
### 自动化
还开发了一个自定义的 Metasploit RPC Python 脚本 (`thor_full_chain.py`) 来自动化整个后渗透链。该脚本连接到活跃的 Metasploit RPC 会话,并处理完整的序列:`www-data` shell 稳定化、hammer.sh 注入以提权至 thor、GTFOBins 提权至 root、flag 捕获、凭据提取以及带有保存到本地文件的时间戳日志的后门部署。这是一个额外的交付物,展示了使用 Metasploit RPC API 进行攻击链自动化的能力。有关完整实现,请参阅 `scripts/thor_full_chain.py`。
## 阶段 8:痕迹清除
最后阶段涉及从目标系统和 Kali 攻击者机器中清除入侵证据。在目标机器上,Apache 访问日志是最关键的清除文件,因为它包含了触发初始漏洞利用的原始 Shellshock HTTP 请求。auth 日志也被清除,因为它存储了在提权阶段使用的每个 sudo 命令。syslog、二进制登录记录(`wtmp`、`btmp`、`lastlog`)以及 `root` 和 `www-data` 的 bash history 都被覆盖并验证为空。
在 Kali 上,使用 `workspace -d default` 删除了 Metasploit 工作区,移除了下载的凭据文件,删除了 SSH 密钥对,并清除了 bash history。在进入下一步之前验证了每个步骤。
对 SSH 后门做了一个刻意的例外处理,及其关联的密钥文件被保留在目标机器上,并且在这个阶段没有被移除,因为在评估演示中需要用到它们。
## 利用的漏洞
| 漏洞 | CVE | CVSS | 组件 | 方法 |
|--------------|-----|------|-----------|--------|
| Shellshock RCE | CVE-2014-6271 | 9.8 | Apache mod\_cgi + 未打补丁的 Bash | 使用恶意 User-Agent 头的 Metasploit |
| 默认凭据 | — | — | pfSense webConfigurator | 安装后未更改的 `admin / pfsense` |
| Sudo 配置错误 (www-data) | — | — | `/etc/sudoers` | 作为 thor 可执行的 NOPASSWD `hammer.sh` |
| hammer.sh 中的命令注入 | — | — | 自定义 bash 脚本 | 通过 `bash -i` payload 进行的 `eval` 注入 |
| Sudo 配置错误 (thor) | — | — | `/etc/sudoers` | 作为 root 不受限制的 NOPASSWD `service` |
## 使用的工具
| 工具 | 用途 |
|------|---------|
| Nmap | 主机发现、端口扫描、OS 指纹识别、NSE Shellshock 验证 |
| Metasploit Framework | 基于数据库的枚举、漏洞利用、Meterpreter、后渗透 |
| Nessus Essentials | 结合 CGI 和 Web 应用程序扫描的结构化漏洞评估 |
| Hydra | 初始的 pfSense 暴力破解尝试——因 CSRF 保护而失败 |
| CeWL | 通过爬取 pfSense 登录页面生成自定义字典 |
| Python 3 + BeautifulSoup | 感知 CSRF 的 pfSense 暴力破解脚本 |
| pymetasploit3 | 用于完整攻击链自动化的 Metasploit RPC API 客户端 |
| John the Ripper | 离线 SHA-512crypt 哈希破解 |
| Hashcat | GPU 加速的 SHA-512crypt 破解尝试 |
| CrackStation | 在线彩虹表查询 |
| GTFOBins | sudo service 权限提升技术的参考 |
| curl | 针对 pfSense WAN 的 HTTP 服务验证 |
## 修复建议
**立即修补 Bash。** Shellshock 漏洞的存在是因为这台 Debian 10 系统上的 Bash 从未更新过。运行 `apt-get update && apt-get upgrade bash` 即可消除该漏洞。除了打补丁之外,如果在操作上不需要 CGI 脚本,则应在 Apache 配置中完全禁用 `/cgi-bin/` 目录,从而无论 Bash 版本如何都可以消除攻击面。
**审计并加固 sudo 规则。** 两个 NOPASSWD sudo 规则构成了整个权限提升链。这两个规则都没有合法的存在理由。应审查 `/etc/sudoers` 文件并删除这两个条目。最小权限原则应指导未来的所有 sudo 配置;帐户只应拥有其真正需要的特定访问权限,不能更多。
**从 shell 脚本中移除 eval。** `hammer.sh` 脚本将用户输入直接传递到 `eval` 语句中,而没有进行任何验证或过滤。正是这一点使得命令注入成为可能。在接收用户输入的 shell 脚本中应完全避免使用 `eval`,因为它几乎总是一个攻击面。在进行任何处理之前,应根据严格的允许列表对输入进行验证。
**更改 pfSense 默认凭据并限制访问。** webConfigurator 使用未更改的默认凭据 `admin / pfsense` 暴露在 WAN 接口上。安装后应立即更改默认凭据。webConfigurator 永远不应从 WAN 可达;访问应仅限于 LAN 或专用的管理接口。
**实施集中式日志管理。** 在阶段 8 中,所有本地日志都在几分钟内被清除,在目标系统上没有留下任何入侵痕迹。这表明目标缺乏集中式日志管理。在生产环境中日志应实时转发到远程 SIEM。这确保了即使攻击者在本地清除了日志,证据也已经在外部系统中得到保存,并且无法被篡改。
## 仓库结构
```
hacksudo-thor-pentest/
│
├── README.md
├── report.pdf ← Full penetration testing report
│
├── scripts/
│ ├── pfsense_brute.py ← CSRF-aware pfSense brute force script
│ └── thor_full_chain.py ← Metasploit RPC attack chain automation
│
└── screenshots/
├── network.PNG
│
├── Discovery/
│ └── pfsenselogin.png
│
└── exploit/
├── sheellockexploit.PNG
├── sudol.PNG
├── hammer.bash-i.PNG
├── privilage escaltiontoroot.PNG
├── proof.PNG
└── backdoor.PNG
```
## 道德免责声明
本次渗透测试完全在一个建立在 Oracle VirtualBox 中的自包含、隔离的虚拟实验室环境内进行。HackSudo Thor 是一台在 VulnHub 上发布的包含已知漏洞的 CTF 机器,其明确目的仅用于安全教育和实践。
标签:AES-256, Apache mod_cgi, Bash注入, CISA项目, CSRF绕过, CTF学习, CTI, CVE-2014-6271, DOS头擦除, eval注入, HackSudo Thor, Metasploit RPC, Nessus, Nmap, PE 加载器, PoC, RCE, Shellshock, Splunk, Sudo配置不当, VulnHub, 内网渗透, 协议分析, 密码破解, 应用安全, 提权, 攻击链, 数据展示, 暴力破解, 权限提升, 漏洞评估, 红队, 编程工具, 网络安全, 自动化利用, 虚拟驱动器, 远程代码执行, 逆向工具, 隐私保护, 靶场实战, 黑盒测试