HTB Build靶机渗透:从Jenkins备份到容器逃逸

本文详细分析了HTB Build靶机的完整渗透过程,涵盖端口扫描、Jenkins备份解密、Gitea凭据利用、容器内权限提升、网络探测以及通过PowerDNS-Admin配置修改实现rlogin无密码root登录。

HTB: Build

靶机信息

属性
名称 Build (HackTheBox)
发布日期 2025年8月5日
退役日期 2025年8月5日
操作系统 Linux
难度 中等 [30分]
创建者 xct

侦察

初始扫描

Nmap发现七个开放的TCP端口:SSH (22)、DNS (53)、rsync (873)、HTTP (3000)和三个Berkeley r-命令(512-514):

1
oxdf@hacky$ nmap -p- -vvv --min-rate 10000 10.129.234.169

基于OpenSSH版本,主机可能运行Ubuntu 22.40 jammy。两个端口显示为过滤状态(3306通常为MySQL,8081可能是某种Web服务器)。DNS和HTTP端口的TTL为62,比预期少1跳。

Gitea - TCP 3000

该Web服务器是Gitea实例。在"Explore"下有一个公共仓库buildadm/dev,包含单个文件Jenkinsfile。可以注册账户,但不显示额外仓库或人员。

技术栈显示为Gitea版本1.21.11。

rsync - TCP 873

列出rsync可用目录:

1
oxdf@hacky$ rsync --list-only -a rsync://10.129.234.169

存在单个名为backups的目录,包含一个大型tar存档jenkins.tar.gz(近360MB)。

Jenkins备份

解包

提取Jenkins备份存档文件:

1
oxdf@hacky$ tar xf jenkins.tar.gz

域信息

搜索.vl域字符串:

1
oxdf@hacky$ grep -r '\.vl' jenkins_configuration/

服务器使用build.vl域,Gitea可能使用gitea.build.vl。管理员邮箱为admin@build.vl

用户

users/users.xml文件包含Jenkins用户,有一个admin用户,其配置存储在users/admin_8569439066427679502/config.xml中,包含密码哈希。

配置

构建配置存储在jobs/build/config.xml中。连接到Gitea服务器172.18.0.2:3000,每分钟触发一次。包含buildadm用户的凭据,密码已加密。

解密密码

使用jenkins-credentials-decryptor离线解密:

1
oxdf@hacky$ ./jenkins-credentials-decryptor -m jenkins_configuration/secrets/master.key -s jenkins_configuration/secrets/hudson.util.Secret -c jenkins_configuration/jobs/build/config.xml

解密得到用户名buildadm和密码Git1234!

容器内root shell

认证Gitea

使用解密凭据登录Gitea作为buildadm。设置中配置了Webhook(Jenkins容器IP)。

Shell

使用Gitea内置编辑器打开dev仓库中的Jenkinsfile,编辑命令为bash反向shell。提交更改后,一分钟内收到连接。

升级shell使用标准技巧:

1
root@5ac6c7d6fb8e:/var/jenkins_home/workspace/build_dev_main# script /dev/null -c bash

root shell

枚举

容器

主机名为12个十六进制字符,符合Docker默认。文件系统根目录有.dockerenv文件。IP为172.18.0.3

容器文件系统

容器内内容很少。/home无用户主目录。/opt有Java安装和jenkins-plugin-manager.jar

root主目录有:

  • .bash_history -> /dev/null
  • 可读的.rhosts文件
  • .ssh目录含SSH密钥对
  • user.txt

.rhosts配置Berkeley r-命令:

1
2
admin.build.vl +
intern.build.vl +

网络

上传静态编译的nmap扫描C类网络:

1
root@5ac6c7d6fb8e:~# ./nmap 172.18.0.0/24 --min-rate 10000

发现6个主机,包括Gitea、MySQL、PowerDNS等服务。

隧道

使用Chisel通过反向shell创建代理访问其他容器。配置FoxyProxy使用此隧道。

MySQL

无密码信息,但可以root连接:

1
oxdf@hacky$ proxychains4 mysql -h 172.18.0.4 -u root

非默认数据库为powerdnsadmin,包含用户表和域信息。

PowerDNS-Admin

保存admin用户哈希到文件,使用hashcat破解:

1
$ hashcat powerdns.hash /opt/SecLists/Passwords/Leaked-Databases/rockyou.txt -m 3200

破解得到密码winston,登录PowerDNS-Admin。

通过rlogin的Shell

TCP 513 rlogin在主机上开放,.rhosts文件包含两个域。编辑admin.build.vl记录指向主机,然后使用rlogin作为root连接:

1
oxdf@hacky$ sudo rlogin 10.129.234.169

获取root.txt。

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