首页 > 其他分享 >day5

day5

时间:2023-07-14 21:55:04浏览次数:39  
标签:configmaps Kubernetes kubectl -- day5 token API

一、[闽盾杯 2021]DNS协议分析

1.打开流量,过滤dns类型,发现一些类似于base64的编码,并且有规律的出现

image

2.全部提取,ZmxhZ3tlNjYyYWMxNTRjYTM3NmUxYzAwMWVlOGJiZTgxMzE4Yn0K,base64在线解码

image

二、云

1.

1.1得到一个URL,进去后界面显示一个hint的链接

1.2告诉我们整体是一个 Spring Boot应用程序,并且与暴露的Mysql的database连接,database的端口号是31306

1.3提示“By the way, we are in a pod.”去百度pod是什么,得到关键信息,这个远程的系统跟Kubernetes集群有关

Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。

1.4进到hint中,发现只暴露了一个heapdump的端口供下载内存文件heapdump

heapdump是堆转储文件,是一个Java进程在某个时间点上的内存快照,使用MAT进行分析heapdump

image

2.

2.1找Spring boot 和Kuberbetes和有什么关系,发现了一个Spring Cloud K8s的微服务应用程序,就是使用Kubernetes和Spring Cloud来构建,然后就猜测我们可以使用本地的kubectl(kali上的Kubernetes集成工具)通过token去本地连接远程的apiserver,然后就是找在heapdump中找token

2.2直接用MAT搜索TokenFileAuthentication,kubernetes,Mysql等关键词,在class io.kubernetes.client.util.credentials.TokenFileAuthentication中发现了token(后来了解到Spring Cloud K8s 中通常会维护一个持有 class io.kubernetes.client.util.credentials.TokenFileAuthentication 对象的bean,使得serviceaccount Token⻓期驻留在内存中)

image

3.去网站解密一下,发现这段token就是集成了账户等登录信息。在token中我们可以看到namespace :dolphin-ctf(后续命令中需要使用到)那么使用这个token和kubectl就可以去远程访问,详细用法可以看

https://www.mankier.com/1/kubectl
image

4.命令如下:

export KUBE='eyJhbGciOiJSUzI1NiIsImtpZCI6ImtVTWNEcC1QaG5HYXJJTjRPbjJrY0M1UkZURjIyTTZQcGF3WXpNOU5YaUUifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiLCJrM3MiXSwiZXhwIjoxNzE1NDExOTc2LCJpYXQiOjE2ODM4NzU5NzYsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJkb2xwaGluLWN0ZiIsInBvZCI6eyJuYW1lIjoiZGVwbG95LWN0Zi03Zjg1ZDdiNDVjLWhoN2ZsIiwidWlkIjoiMTUyYzU1NWYtNGY4ZS00ZDQxLWExMGYtZDYyZjBiNmUwM2JmIn0sInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJqYXZhLXN1cGVydmlzb3IiLCJ1aWQiOiI0ZjZmYWU5MC00YzdhLTQ1YTYtYTAwMy03ZGE0ZWU4MjdjOGMifSwid2FybmFmdGVyIjoxNjgzODc5NTgzfSwibmJmIjoxNjgzODc1OTc2LCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6ZG9scGhpbi1jdGY6amF2YS1zdXBlcnZpc29yIn0.PMfJjeSPTYq0BrKy-jOCaceTaIGyJNo0e3DqEMclZ69IU4HEbeQAFHDyB8JolZNzy6ZJ34s2j5G5CVYQMXZqELQdnShf7oUkhpt4zZI3xsjfQ0Qq8azdhtwJLZMWuoZP-xmZtFwYZ-pn7Ra_snymFRdX71J6826fMI0CPoWuRz1uUMopyfwHYEb0r7ztmEPK6U8mtiyEIlgcDen4je2kYFTkhnQhYS1Qe4JMonOzrR0vedIG3ZFjrcj5Fx72rYdLmgFboOD7b3rGL-8Dv1ySvn6KHu2USTdDoZBkHuBtX5G02EBz0KKl8t4bMxgZIbX-IwGnp7gbSl50YbGT4IWBUw'

4.1首先使用export设置一个名为KUBE的环境变量,用来导入token(方便后续调用)

alias k='kubectl --token=$KUBE --server=https://dasctf-4-cloud-hacking.cloud.eson.ninja:6443 --insecure-skip-tls-verify=true'

4.2然后定义一个新的命令k(方便后面直接使用命令名称进行获取权限读取文件),--token=$KUBE是指使用token作为身份验证令牌,--server是指连接到指定的Kubernetes API服务器的地址和端口,端口连接的是6443,查一下API接口常用的是443,6443和8080,只有6443连接成功,--insecure-skip-tls-verify=true 表示禁用对API服务器SSL证书的验证。

image

5.

5.1连接集群成功之后,先查看我们拥有哪些权限,就是进行API鉴权,kubectl 提供 auth can-i 子命令,用于快速查询 API 鉴权,命令如下:

k auth can-i --list -n dolphin-ctf

5.2发现我们对configmaps具有get list watch的权利,同时根据最开始题目给的mysql database端口号,猜测我们要获取到集群的数据库的账号和密码,那就找一下配置信息

5.3看了一篇博客

https://blog.csdn.net/yy_diego/article/details/109362884

得知配置信息一般可以在configmaps资源中找到,使用命令找一下

k get configmaps -o json  -n dolphin-ctf

get configmaps 表示获取configmaps资源列表,-o json 表示以json格式输出结果

6.得到配置信息,发现了MYSQL_PASSWORD和MYSQL_DATABASE,得到数据库名和密码,主机地址就是dasctf-4-cloud-hacking.cloud.eson.ninja,使用navicat连,flag就在数据库中

image

标签:configmaps,Kubernetes,kubectl,--,day5,token,API
From: https://www.cnblogs.com/120211P/p/17553406.html

相关文章

  • 2022 省队二轮集训培训日记-Day5
    模拟赛T1非常简单的构造,但是我忘了判断$m=2$和对只有一个点特判的输出错误,导致挂成$20$。具体思路,考虑欧拉路径只能有两个奇点,但是每条边上中间的都是奇点,所以我们需要删掉边缘的一些边,直到剩下两个奇点,然后对于$n,m$都是偶数,或者一个偶数一个奇数,或者两个都是奇数来分别......
  • 你省(福建)省队集训 Day5 T3 乱搞分析
    简要题意有\(1\leT\le10^6\)次询问,每次询问正整数\(x,p\),\(p\)为素数,令\(n=xp^2\),问是否存在三个正整数\(a,b,c\),满足\(ab+bc+ca=n\)。有的话给出构造,否则输出\(-1\)。solution打表注意到只有\(n=4,18\)是无解的。打表namespaceDB{ constintN=1e5; struc......
  • 算法学习day58单调栈part01-739、496
    packageLeetCode.stackpart01;importjava.util.Deque;importjava.util.LinkedList;/***739.每日温度*给定一个整数数组temperatures,表示每天的温度,返回一个数组answer,其中answer[i]是指对于第i天,下一个更高温度出现在几天后。*如果气温在这之后都不会升高,请......
  • 算法学习day59单调栈part02-503、42
    packageLeetCode.stackpart02;importjava.util.Arrays;importjava.util.Stack;publicclassNextGreaterElementII_503{publicint[]nextGreaterElements(int[]nums){//边界判断if(nums==null||nums.length<=1){return......
  • 算法学习day57动态规划part17-516、647
    packageLeetCode.DPpart17;/***516.最长回文子序列*给你一个字符串s,找出其中最长的回文子序列,并返回该序列的长度。*子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。**/publicclassLongestPalindromicSubsequence_51......
  • 算法学习day55动态规划part15-115、392
    packageLeetCode.DPpart15;publicclassDistinctSubsequences_115{publicintnumDistinct(Strings,Stringt){int[][]dp=newint[s.length()+1][t.length()+1];for(inti=0;i<s.length()+1;i++){dp[i][0]=......
  • 算法学习day56动态规划part16-583、72
    packageLeetCode.DPpart16;/***583.两个字符串的删除操作*给定两个单词word1和word2,返回使得word1和word2相同所需的最小步数。*每步可以删除任意一个字符串中的一个字符。**/publicclassDeleteOperationforTwoStrings_583{publicintminDist......
  • 每日一练 | 华为认证真题练习Day57
    1、两台路由器通过PPP链路互连,管理员在两台路由器上配置了OSPF,且运行在同一个区域中,如果它们的RouterID相同,则下面描述正确的()。A.两台路由器将会建立正常的完全邻居关系B.两台路由器将不会互相发送hel1o信息C.两台路由器将会建立正常的完全邻接关系D.VRP会提示两台路由器的Rou......
  • 算法练习-day5
    哈希表242.有效的字母异位词题意:给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。示例:    思路:我们可以先创建一个unordered_map用于记录s中元素出现的次数,然后再遍历t,让t出现元素次数减去s出现......
  • 算法学习day52动态规划part13-674、300、718
    packageLeetCode.DPpart13;/***674.最长连续递增序列*给定一个未经排序的整数数组,找到最长且连续递增的子序列,并返回该序列的长度。*连续递增的子序列可以由两个下标l和r(l<r)确定,*如果对于每个l<=i<r,都有nums[i]<nums[i+1],*那么子序列[nums[......