ซา-หวัด-ดี-ครับ ท่านสมาชิก เอ้ย สวัสดีครับทุกท่าน เนื่องจากอาทิตย์ที่ผ่านมาผมได้มีโอกาสนำเสนอ Security Learning Playground ตัวนึงที่ Office วันนี้ผมจึงนำเรื่องนั้นมาแนะนำอีกทีผ่านทางบทความนี้ เพื่อไว้เพิ่มมุมมองเพิ่มเติมสำหรับการทดสอบเจาะระบบของพี่ ๆ น้อง ๆ กันครับ
ซึ่งตัวนั้นก็คือ… Kubernetes Goat นั้นเองง ฮิ้ววว ถ้าพร้อมแล้วก็ไปผจญภัยกันเลย
***คำเตือน*** เนื่องจากเป็น Security Learning Playground ที่ถูกออกแบบมาให้มีช่องโหว่ เพราะฉะนั้น ควรติดตั้งในคอมพิวเตอร์เสมือน จำพวก VMware หรือ VirtualBox และเมื่อเลิกเล่นควร ปิด Service หรือลบออก เพื่อความปลอดภัยครับ
Kubernetes Goat คืออะไร
Kubernetes Goat คือ Security Learning Playground ตัวหนึ่งที่มีสถานการณ์จำลองที่ถูกออกแบบให้มีช่องโหว่โดยเจตนา เพื่อแสดงให้เห็นถึงการตั้งค่าที่ไม่เหมาะสม ช่องโหว่ที่พบในสถานการณ์จริง และปัญหาด้านความปลอดภัยในคลัสเตอร์ Kubernetes คอนเทนเนอร์ เป็นต้น
Kubernetes Goat เหมาะกับใครบ้าง
Attackers & Red Teams
เพื่อเรียนรู้วิธีโจมตี หรือค้นหาปัญหาด้านความปลอดภัย การตั้งค่าที่ผิดพลาด และช่องโหว่ที่พบได้จริงในระบบคอนเทนเนอร์ Kubernetes และสภาพแวดล้อมคลาวด์สมัยใหม่ เราจะสามารถสำรวจ หาจุดอ่อน และเข้าถึงระบบงานต่าง ๆ ได้โดยตรงจากเว็บเบราว์เซอร์ของเรา
Defenders & Blue Teams
เข้าใจวิธีคิดและการทำงานของแฮกเกอร์ รวมถึงวิธีที่พวกเขาใช้ประโยชน์จากช่องโหว่ด้านความปลอดภัย แล้วนำความรู้นี้ไปใช้ในการตรวจจับ และป้องกันภัยคุกคาม นอกจากนี้ ยังได้เรียนรู้แนวปฏิบัติที่ดีที่สุด วิธีการป้องกัน และเครื่องมือต่าง ๆ ที่ใช้ในการลดความเสี่ยง และตรวจจับภัยคุกคามในสถานการณ์จริง
Developers & DevOps Teams
เรียนรู้เทคนิคการโจมตี วิธีป้องกัน และเครื่องมือต่าง ๆ เพื่อให้เราสามารถคิดเหมือนแฮกเกอร์ได้ แล้วนำความรู้นี้ไปใช้รักษาความปลอดภัยให้กับระบบ Kubernetes คลาวด์ และคอนเทนเนอร์ของเรา โดยเริ่มตั้งแต่ขั้นตอนการออกแบบ การเขียนโค้ด และการวางโครงสร้างระบบ เพื่อป้องกันปัญหาตั้งแต่ต้น
Products & Vendor
ใช้ Kubernetes Goat เพื่อแสดงให้เห็นถึงประสิทธิภาพของเครื่องมือ ผลิตภัณฑ์ และโซลูชันของเรา นอกจากนี้ ยังสามารถใช้เพื่อให้ความรู้แก่ลูกค้า และแบ่งปันความรู้เกี่ยวกับผลิตภัณฑ์ หรือเครื่องมือของเราในรูปแบบที่สามารถลงมือปฏิบัติได้จริง
เรามาเริ่มติดตั้งกันเลย
โดยมีวิธีการติดตั้งในหลาย ๆ ทาง ไม่ว่าจะเป็น GCP GKE, AWS EKS, Fargate, Azure AKS, K3S เป็นต้น
สามารถดูเพิ่มเติมได้ที่นี่ https://madhuakula.com/kubernetes-goat/docs/how-to-run
โดยวันนี้ที่เราจะมาเล่นกัน ผมติดตั้งผ่านตัว Kubernetes ครับ โดย Os ที่ผมใช้เล่นจะเป็นตัว Kali linux
0. ทำการติดตั้ง Docker (https://www.kali.org/docs/containers/installing-docker-on-kali/)
1. ทำการติดตั้ง Minikube (https://minikube.sigs.k8s.io/docs/start/)
2. ทำการติดตั้ง Kubectl (https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/)
3. ทำการติดตั้ง kubernetes-helm (https://www.kali.org/tools/kubernetes-helm/)
เมื่อติดตั้ง Binary เรียบร้อยแล้ว เราก็มาเริ่มกันเลยยยย
โดยเริ่มด้วยการทำการ Start service minikube
$Minikube start
ทำการ Clone Git ลงมาที่เครื่อง โดยใช้คำสั่ง
$git clone https://github.com/madhuakula/kubernetes-goat.git
ต่อมาทำการไปยัง Directory kubernetes-goat โดยใช้คำสั่ง
$cd kubernetes-goat
จากนั้นทำการใช้งาน Script setup-kubernetes-goat.sh เพื่อติดตั้ง Kubenetes goat ลงเครื่องของเรา
$bash setup-kubernetes-goat.sh
เมื่อเราทำการติดตั้ง Kubenetes goat แล้วเรามาตรวจสอบ pod กันว่ามีขึ้นมาแล้วหรือยัง โดยใช้คำสั่ง
$kubectl get pods
จากรูปเมื่อกี๊ pod เรามี STATUS คือ Running ทั้งหมดแล้ว หมายความว่าพร้อมใช้งานแล้ว จากนั้นเรามาใช้งาน Script เพื่อเข้าใช้งาน Service กันโดยใช้คำสั่งดังนี้
$bash access-kubernetes-goat.sh
เพียงเท่านี้เราก็พร้อมเล่นแล้ว โดยเข้าไปยัง http://127.0.0.1:1234 ก็สามารถลองเล่นได้แล้ว
เอาล่ะ! เรามาดูกันต่อว่า Kubenetes Goat มี สถานการณ์จำลอง อะไรกันบ้าง
โดย Kubernetes Goat มีสถานการณ์จำลองมากกว่า 20 รูปแบบ ครอบคลุมทั้งการโจมตี การป้องกัน และการวิเคราะห์ ดังนี้
- Sensitive keys in codebases
- DIND (docker-in-docker) exploitation
- SSRF in the Kubernetes (K8S) world
- Container escape to the host system
- Docker CIS benchmarks analysis
- Kubernetes CIS benchmarks analysis
- Attacking private registry
- NodePort exposed services
- Helm v2 tiller to PwN the cluster — [Deprecated]
- Analyzing crypto miner container
- Kubernetes namespaces bypass
- Gaining environment information
- DoS the Memory/CPU resources
- Hacker container preview
- Hidden in layers
- RBAC least privileges misconfiguration
- KubeAudit — Audit Kubernetes clusters
- Falco — Runtime security monitoring & detection
- Popeye — A Kubernetes cluster sanitizer
- Secure network boundaries using NSP
- Cilium Tetragon — eBPF-based Security Observability and Runtime Enforcement
- Securing Kubernetes Clusters using Kyverno Policy Engine
โดยแต่ละสถานการณ์ก็จะมี Hint และ Solution ให้โดยสามารถไปดูได้ที่
https://madhuakula.com/kubernetes-goat/docs/scenarios
วันนี้ผมจะมาลองเล่นกันสักข้อกันนะครับ นั่นคือ Sensitive keys in codebases
โดยสถานการณ์ให้เราเข้าไปยัง http://127.0.0.1:1230 จากนั้นผมทำการ Brute Force พาธไฟล์ พบว่ามีไฟล์ .git อยู่ โดยเข้าไปยัง http://127.0.0.1:1230/.git/config
จากนั้นเราทำการใช้เครื่องมือ git_dumper ในการ dump source code ออกมาโดยใช้คำสั่ง
$python3 git_dumper.py http://localhost:1230/.git k8s-goat-git
พอเรา dump source code มาแล้ว มาตรวจสอบไฟล์กัน
หลังจากตรวจสอบไฟล์แล้ว ไม่ได้มีอะไรน่าสนใจ เรามาลองดู log กันต่อ โดยใช้คำสั่ง
git log — name-status
เราพบ commit ที่น่าสนใจอันนึงคือ
Inlcuded custom environmental variables
นั่นหมายความว่ามีการเพิ่ม หรือแก้ไขตัวแปรสภาพแวดล้อมที่กำหนดเองในการ commit นั้น
จากนั้นเราใช้คำสั่ง
git checkout <<ตามด้วย commit ที่เราสนใจ>>
เพื่อทำการย้อนดูไฟล์ที่เราสนใจ
เมื่อเราตรวจสอบไฟล์อีกครั้งเราพบว่ามีไฟล์ .env อยู่
เมื่อทำการอ่านไฟล์ .env ก็พบว่ามี flag อยู่
บทสรุป
แล็บบางข้อนั้นยังมีบั๊คอยู่บ้าง อาจจะทำให้เล่นไม่ได้สมบูรณ์ แต่พอได้อ่าน Solution ก็ช่วยให้เข้าใจมากขึ้นว่าในชีวิตจริงเราควรตรวจสอบอะไรบ้าง ดูอะไรบ้าง โดยรวมถือว่าช่วยได้เยอะมากครับ
ถ้าเกิดสงสัยส่วนไหน ก็สามารถเข้าไปถามได้ที่ Community ของพวกเขา : https://rebrand.ly/Kubernetes-Goat/
ก่อนจะจากกันไป ผมอยากให้จำไว้นะครับ ทุกพลังย่อมมาพร้อมความรับผิดชอบ ใช้ความรู้นี้ในทางที่ถูก ช่วยทำให้โลกออนไลน์ปลอดภัยขึ้น อย่าลืมว่าเราเป็นฮีโร่ ไม่ใช่วายร้าย! อย่านำสิ่งที่เรียนรู้จาก Kubernetes Goat ไปใช้ในทางที่ผิดนะครับ
ผมหวังว่าจากนี้ไป ไม่ว่าจะเจอเว็บไหนที่ใช้งาน Kubernetes คุณก็พร้อมที่จะตรวจสอบมันแล้ว! ขอให้โชคดีครับ และอย่าลืม:
“With great power comes great responsibility” — spiderman (2002) 😉🚀
ทั้งนี้หากข้อมูลที่นำมาเล่าผิดพลาดประการใด ทางผมก็ขออภัยมา ณ ที่นี้ด้วยครับ สามารถอ่านโดยละเอียดตามลิงก์ที่แนบไว้ข้างล่างครับ
https://madhuakula.com/kubernetes-goat/docs/
สวัสดีครับ