靶机:Laboratory 难度:Easy
信息收集
|
|
扫描结果
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爆破
|
|
返回[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发现当前页面并没有隐藏其他文件的信息,扫目录也没有结果,只有人名Dexter和Dee Dee,由于Dexter的特殊身份CEO,他在站点中应该有着特殊的权限。
然后从git.laboratory.htb下手,注册邮箱不知道为什么必须使用@laboratory.htb
域名的,先注册再说。
访问help页面获得版本号为12.8.1,使用kali自带的搜索工具searchsploit找漏洞:
|
|
找到12.9.0的任意文件读取漏洞,但是自带的脚本无法使用,不过知道漏洞已经方便了很多。
继续收集信息,在explore路由发现了laboratory.htb
站点的源码,但是没啥用emmm
getshell-1
msf自带攻击脚本(用户名密码均为注册时填写):
|
|
成功getshell。但是只是git权限,几乎等于没有。。。
使用python3 -c 'import pty; pty.spawn("/bin/bash")'
生成交互式终端,不过只有输入命令之后才会回显终端并执行命令,这种情况我也没遇到过。。
getshell-2
随便一搜就能找到任意文件读取exp。
|
|
但是不存在authorized_keys文件,暂时还是没办法登录ssh。
剩下的getshell流程参考https://0xaniket.medium.com/laboratory-hackthebox-walkthrough-2d5cfa8c3244,懒得写了。。。
ssh登录
参考GitLab重置管理员密码和ERROR: "rails console" was called with arguments ["production"],
修改dexter密码
|
|
成功登录。在仓库里面获得id_rsa,ssh登录:
|
|
提权
做到一半被搅屎了,LinEnum.sh文件不知道被谁删了。。(虽然我看过,也没找到啥有用的东西)
直接wp走起,在LinEnum.sh文件发现docker-security
(路径:/usr/local/bin/docker-security
)这个二进制文件有suid属性:
- SUID 权限仅对二进制可执行文件有效
- 如果执行者对于该二进制可执行文件具有 x 的权限,执行者将具有该文件的所有者的权限
- 本权限仅在执行该二进制可执行文件的过程中有效
ls -l
发现该文件所有者是root,但是dexter拥有执行权限,再加上suid属性,dexter执行该文件时拥有root权限。
读取该文件获得部分重要命令:
chmod 700 /usr/bin/docker
chmod 660 /var/run/docker.sock
发现执行了chmod命令,但是并没有限制chmod是/usr/bin/chmod
,因此我们可以劫持chmod伪造环境变量。
|
|
成功提升为root权限。
最后cat /root/root.txt
获得root flag。