Hackthebox-Tabby
文章目录
前言
之前一段时间一直在做 Vulnhub,但是感觉自己的能力提升比较有限,于是打算换换口味做做好评如潮的 Hackthebox,毕竟注册都能给人惊喜,还有垂涎已久的 windows 靶机,其次不用花半天时间去下载 vm 再导入虚拟机。于是有了这篇试水之作。
htb 毕竟是一个平台,看了一下有着固定的套路 (如有错误还请指出),渗透的目标是获取 user flag 和 system flag (拿来计算分数,产生排名)。而 htb 的特点是与真实环境的相似性 (更加痛苦与快乐),相比 Vulnhub 感觉更有挑战性。
暂时对 htb 的理解有限,但接入是靠 openvpn 的,不得不说这个网络问题,嗯,很坑,后续会更新我网络环境搭建的心得。
基本介绍
靶机介绍
基本信息都在这张图上,绿色圈圈代表难度为 easy,操作系统为 Linux。
工具列表
名称 | 版本 |
---|---|
Nmap | 7.80 |
curl | 7.72.0 |
metasploit | 5.0.101 |
User flag 部分
端口扫描及服务发现
htb 在 Join Machine 后即会提供靶机的 IP 地址,从而不用做 IP 发现之类的工作,直接从扫端口和服务发现开始,此处分配到的 IP 为 10.10.10.194。由于是远程的靶机,全端口扫描真的很慢,对于这个靶机快速扫描的结果已经完全够用了 (之后进行过全端口扫描然后比对)。
{% blockquote %}
|
|
Not shown: 97 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 8080/tcp open http-proxy {% endblockquote %}
开放了三个端口,枚举服务:
{% blockquote %}
|
|
PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.41 ((Ubuntu)) |_http-server-header: Apache/2.4.41 (Ubuntu) |_http-title: Mega Hosting 8080/tcp open http Apache Tomcat |_http-open-proxy: Proxy might be redirecting requests |_http-title: Apache Tomcat Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Aggressive OS guesses: Linux 3.1 (95%), Linux 3.2 (95%), AXIS 210A or 211 Network Camera (Linux 2.6.17) (94%), Linux 2.6.32 (94%), ASUS RT-N56U WAP (Linux 3.4) (93%), Linux 3.16 (93%), Adtran 424RG FTTH gateway (92%), Linux 2.6.39 - 3.2 (92%), Linux 3.1 - 3.2 (92%), Linux 3.2 - 4.9 (92%) No exact OS matches for host (test conditions non-ideal). Network Distance: 2 hops Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel {% endblockquote %}
Web 探测
首先使用浏览器查看:
果然很贴近正常的业务,点击到 NEWS 出现 404 页面,url 为:
http://megahosting.htb/news.php?file=statement
把 megahosting.htb 换成靶机的 IP 地址得到以下页面:
看 url 似乎是本地文件包含,使用以下的 url 进行验证:
http://10.10.10.194/news.php?file=../../../../etc/passwd
当然这么手动输入没毛病,使用 wfuzz 明显效率更高。
Tomcat
首先查看网页:
默认页面,由于存在 LFI 漏洞,直接读取 tomcat-users.xml 获取账户名和密码,这里我使用了 curl :
{% blockquote %}
|
|
|
|
{% endblockquote %}
由于对于 tomcat 实在是陌生,那几个管理页面也是够绕的,结合请教小伙伴加 google 后,由于账户的 role 为 manager-script,发现可以利用 /manager/text 接口上传恶意 war 包来 getshell:
首先使用 msfvenom 生成 payload:
|
|
这里的 <IP> 为本机 openvpn 对应的接口的 IP 地址,此处也使用 curl 来上传 war 包:
|
|
上传成功会返回: OK - Deploy application at context path [/haha]
接着访问 http://10.10.10.194:8080/haha 来触发 reverse shell,访问之前需要监听对应的端口,使用 nc 即可:
|
|
使用 curl 触发:
|
|
接着发现该机器上有 python3 的环境,使用以下命令得到一个虚拟的 tty :
|
|
横向越权
之前已经得到 /etc/passwd 的内容,了解到存在用户 ash,接着横向越权比较头疼,这部分了解不足。ash 的 home 权限配置没有问题,也没有与 ash 有关的可以修改的脚本之类的,至于 SUID 这块更是没有,系统也是最新的 Ubuntu。参考了他人的 walkthrough 才发现还有以下的操作?
/var/www/html 目录下的 files 目录下有一个 zip 压缩包,使用 nc 将其下载下来。
本机:
|
|
靶机:
|
|
这里 -w 1 参数可在传输结束后 4 秒自动关闭 nc,毕竟这里使用 ctrl-c 会有惊喜。
尝试解压发现有密码,使用 fcrackzip 进行破解:
|
|
最没有想到的,这就是 ash 账户的密码,直接 su 即可:
至此已经可以拿到 user-flag。
System flag 部分
ash 的目录下有 snap 目录,而且用户的属组有 lxd,发现本机存在 lxc / lxd,想到这个与 docker 很相似,LPE 应该不是难事。
这里我参考了 hackingarticles 上的教程,与 docker 提权类似,也是将根目录挂载到了容器里,这里我挂载到了容器内的 /mnt/root 下,最终获得 root 权限:
参考链接
文章作者 Josephine
上次更新 2020-10-11