AWS - WAF Enum
Reading time: 29 minutes
AWS - WAF Enum
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
AWS WAF
AWS WAFは、ウェブアプリケーションファイアウォールであり、ウェブアプリケーションやAPIをさまざまなウェブの脅威から保護するために設計されています。これにより、ユーザーはSQLインジェクションやクロスサイトスクリプティングなどの一般的な攻撃ベクトルを軽減するセキュリティルールを設定することで、受信トラフィックを制御できます。また、カスタムフィルタリングルールを定義することも可能です。
Key concepts
Web ACL (アクセス制御リスト)
Web ACLは、ウェブアプリケーションやAPIに適用できるルールのコレクションです。Web ACLをリソースに関連付けると、AWS WAFはWeb ACLで定義されたルールに基づいて受信リクエストを検査し、指定されたアクションを実行します。
Rule Group
Rule Groupは、複数のWeb ACLに適用できる再利用可能なルールのコレクションです。ルールグループは、異なるウェブアプリケーションやAPI全体で一貫したルールセットを管理および維持するのに役立ちます。
各ルールグループには、そのルール、ルールグループ、およびWeb ACLを実行するために使用されるオペレーティングリソースを計算および制御するのに役立つキャパシティが関連付けられています。作成時にその値が設定されると、変更することはできません。
Rule
ルールは、AWS WAFが受信ウェブリクエストを検査するために使用する条件のセットを定義します。主に2種類のルールがあります:
- 通常のルール:このルールタイプは、指定された条件を使用してウェブリクエストを許可、ブロック、またはカウントするかを判断します。
- レートベースのルール:特定のIPアドレスからのリクエストを5分間にわたってカウントします。ここで、ユーザーはしきい値を定義し、IPからのリクエスト数がこの制限を超えると、そのIPからの後続のリクエストはしきい値が下回るまでブロックされます。レートベースのルールの最小しきい値は2000リクエストです。
Managed Rules
AWS WAFは、AWSおよびAWS Marketplaceの販売者によって管理される事前構成されたマネージドルールセットを提供します。これらのルールセットは、一般的な脅威からの保護を提供し、新しい脆弱性に対処するために定期的に更新されます。
IP Set
IP Setは、許可またはブロックしたいIPアドレスまたはIPアドレス範囲のリストです。IPセットは、IPベースのルールを管理するプロセスを簡素化します。
Regex Pattern Set
Regex Pattern Setは、ウェブリクエスト内で検索するパターンを定義する1つ以上の正規表現(regex)を含みます。これは、特定の文字列のシーケンスをフィルタリングするなど、より複雑なマッチングシナリオに役立ちます。
Lock Token
Lock Tokenは、WAFリソースの更新時に同時実行制御に使用されます。これにより、複数のユーザーまたはプロセスが同時に同じリソースを更新しようとした場合に、変更が誤って上書きされないようにします。
API Keys
AWS WAFのAPIキーは、特定のAPI操作へのリクエストを認証するために使用されます。これらのキーは暗号化され、安全に管理されてアクセスを制御し、認可されたユーザーのみがWAF構成を変更できるようにします。
- 例:CAPTCHA APIの統合。
Permission Policy
Permission Policyは、AWS WAFリソースに対して誰がアクションを実行できるかを指定するIAMポリシーです。権限を定義することで、WAFリソースへのアクセスを制御し、認可されたユーザーのみが構成を作成、更新、または削除できるようにします。
Scope
AWS WAFのスコープパラメータは、WAFルールと構成が地域アプリケーションまたはAmazon CloudFrontディストリビューションに適用されるかどうかを指定します。
- REGIONAL:Application Load Balancers (ALB)、Amazon API Gateway REST API、AWS AppSync GraphQL API、Amazon Cognitoユーザープール、AWS App Runnerサービス、AWS Verified Accessインスタンスなどの地域サービスに適用されます。これらのリソースが存在するAWSリージョンを指定します。
- CLOUDFRONT:グローバルなAmazon CloudFrontディストリビューションに適用されます。CloudFrontのWAF構成は、コンテンツが提供される場所に関係なく、
us-east-1
リージョンを通じて管理されます。
Key features
Monitoring Criteria (条件)
条件は、AWS WAFが監視する受信HTTP/HTTPSリクエストの要素を指定します。これには、XSS、地理的位置(GEO)、IPアドレス、サイズ制約、SQLインジェクション、およびパターン(文字列とregexマッチング)が含まれます。国に基づいてCloudFrontレベルで制限されたリクエストはWAFに到達しないことに注意することが重要です。
各AWSアカウントは次のように構成できます:
- 各タイプごとに100条件(Regexの場合は10条件のみ許可されますが、この制限は増加可能です)。
- 100ルールおよび50 Web ACL。
- 最大5レートベースのルール。
- アプリケーションロードバランサーと共にWAFが実装されている場合、1秒あたり10,000リクエストのスループット。
Rule actions
アクションは各ルールに割り当てられ、選択肢は次のとおりです:
- Allow:リクエストは適切なCloudFrontディストリビューションまたはApplication Load Balancerに転送されます。
- Block:リクエストは即座に終了します。
- Count:ルールの条件を満たすリクエストをカウントします。これは、ルールのテストや、AllowまたはBlockに設定する前にルールの正確性を確認するのに役立ちます。
- CAPTCHAとChallenge:リクエストがボットから来ていないことを確認するために、CAPTCHAパズルやサイレントチャレンジを使用します。
Web ACL内のいずれのルールにも一致しないリクエストは、デフォルトアクション(AllowまたはBlock)を受けます。Web ACL内で定義されたルールの実行順序は重要で、通常は次の順序に従います:
- ホワイトリストに登録されたIPを許可。
- ブラックリストに登録されたIPをブロック。
- 有害なシグネチャに一致するリクエストをブロック。
CloudWatch Integration
AWS WAFはCloudWatchと統合されており、AllowedRequests、BlockedRequests、CountedRequests、PassedRequestsなどのメトリクスを提供します。これらのメトリクスはデフォルトで毎分報告され、2週間の期間保持されます。
Enumeration
CloudFrontディストリビューションと対話するには、リージョンUS East (N. Virginia)を指定する必要があります:
- CLI - CloudFrontスコープを使用する際にリージョンUS Eastを指定します:
--scope CLOUDFRONT --region=us-east-1
。 - APIおよびSDK - すべての呼び出しで、リージョンエンドポイントus-east-1を使用します。
地域サービスと対話するには、リージョンを指定する必要があります:
- リージョンEurope (Spain)の例:
--scope REGIONAL --region=eu-south-2
# Web ACLs #
## Retrieve a list of web access control lists (Web ACLs) available in your AWS account
aws wafv2 list-web-acls --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve details about the specified Web ACL
aws wafv2 get-web-acl --name <value> --id <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve a list of resources associated with a specific web access control list (Web ACL)
aws wafv2 list-resources-for-web-acl --web-acl-arn <value> # Additional permissions needed depending on the protected resource type: cognito-idp:ListResourcesForWebACL, ec2:DescribeVerifiedAccessInstanceWebAclAssociations or apprunner:ListAssociatedServicesForWebAcl
## Retrieve the Web ACL associated with the specified AWS resource
aws wafv2 get-web-acl-for-resource --resource-arn <arn> # Additional permissions needed depending on the protected resource type: cognito-idp:GetWebACLForResource, ec2:GetVerifiedAccessInstanceWebAcl, wafv2:GetWebACL or apprunner:DescribeWebAclForService
# Rule groups #
## List of the rule groups available in your AWS account
aws wafv2 list-rule-groups --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve the details of a specific rule group
aws wafv2 get-rule-group [--name <value>] [--id <value>] [--arn <value>] [--scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>]
## Retrieve the IAM policy attached to the specified rule group
aws wafv2 get-permission-policy --resource-arn <rule-group-arn> # Just the owner of the Rule Group can do this operation
# Managed rule groups (by AWS or by a third-party) #
## List the managed rule groups that are available
aws wafv2 list-available-managed-rule-groups --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## List the available versions of the specified managed rule group
aws wafv2 list-available-managed-rule-group-versions --vendor-name <value> --name <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve high-level information about a specific managed rule group
aws wafv2 describe-managed-rule-group --vendor-name <value> --name <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--version-name <value>]
## Retrieve high-level information about all managed rule groups
aws wafv2 describe-all-managed-products --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve high-level information about all managed rule groups from a specific vendor
aws wafv2 describe-managed-products-by-vendor --vendor-name <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
# IP sets #
## List the IP sets that are available in your AWS account
aws wafv2 list-ip-sets --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve the specific IP set
aws wafv2 get-ip-set --name <value> --id <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve the keys that are currently being managed by a rate-based rule.
aws wafv2 get-rate-based-statement-managed-keys --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>\
--web-acl-name <value> --web-acl-id <value> --rule-name <value> [--rule-group-rule-name <value>]
# Regex pattern sets #
## List all the regex pattern sets that you manage
aws wafv2 list-regex-pattern-sets --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieves the specified regex pattern sets
aws wafv2 get-regex-pattern-set --name <value> --id <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
# API Keys #
## List API keys for the specified scope
aws wafv2 list-api-keys --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
## Retrieve decrypted API key
aws wafv2 get-decrypted-api-key --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> --api-key <value>
# Logs #
## List of logging configurations (storage location of the logs)
aws wafv2 list-logging-configurations --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--log-scope <value>]
## Retrieve the logging configuration settings associated with a specific web ACL
aws wafv2 get-logging-configuration --resource-arn <value> [--log-scope <CUSTOMER | SECURITY_LAKE>] [--log-type <value>]
# Miscelaneous #
## Retrieve a list of the tags associated to the specified resource
aws wafv2 list-tags-for-resource resource-arn <value>
## Retrieve a sample of web requests that match a specified rule within a WebACL during a specified time range
aws wafv2 get-sampled-requests --web-acl-arn <value> --rule-metric-name <value> --time-window <value> --max-items <1-500> --scope <value>
## Obtains the web ACL capacity unit (WCU) requirements for a specified scope and ruleset
aws wafv2 check-capacity --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> --rules <value>
## List of available releases for the AWS WAFv2 mobile SDK
aws wafv2 list-mobile-sdk-releases --platform <IOS | ANDROID>
## Retrieves information for the specified mobile SDK release
aws wafv2 get-mobile-sdk-release --platform <value> --release-version <value>
ポストエクスプロイテーション / バイパス
tip
攻撃者の視点から見ると、このサービスは攻撃者がWAFの保護やネットワークの露出を特定するのに役立ち、他のウェブを侵害するのに役立つ可能性があります。
しかし、攻撃者はこのサービスを妨害して、ウェブがWAFによって保護されないようにすることにも興味を持つかもしれません。
多くの削除および更新操作では、ロックトークンを提供する必要があります。このトークンはリソースに対する同時実行制御に使用され、変更が複数のユーザーまたはプロセスによって同時に同じリソースを更新しようとする際に偶発的に上書きされないようにします。このトークンを取得するには、特定のリソースに対して対応するリストまたは取得操作を実行することができます。
wafv2:CreateRuleGroup
, wafv2:UpdateRuleGroup
, wafv2:DeleteRuleGroup
攻撃者は、影響を受けたリソースのセキュリティを侵害することができます:
- 正当なIPアドレスからの正当なトラフィックをブロックするルールグループを作成し、サービス拒否を引き起こすことができます。
- ルールグループを更新し、例えばそのアクションをブロックから許可に変更することができます。
- 重要なセキュリティ対策を提供するルールグループを削除することができます。
# Create Rule Group
aws wafv2 create-rule-group --name <value> --capacity <value> --visibility-config <value> \
--scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--rules <value>] [--description <value>]
# Update Rule Group
aws wafv2 update-rule-group --name <value> --id <value> --visibility-config <value> --lock-token <value>\
--scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--rules <value>] [--description <value>]
# Delete Rule Group
aws wafv2 delete-rule-group --name <value> --id <value> --lock-token <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
以下の例は、特定のIPアドレスからの正当なトラフィックをブロックするルールグループを示しています:
aws wafv2 create-rule-group --name BlockLegitimateIPsRuleGroup --capacity 1 --visibility-config SampledRequestsEnabled=false,CloudWatchMetricsEnabled=false,MetricName=BlockLegitimateIPsRuleGroup --scope CLOUDFRONT --region us-east-1 --rules file://rule.json
rule.json ファイルは次のようになります:
[
{
"Name": "BlockLegitimateIPsRule",
"Priority": 0,
"Statement": {
"IPSetReferenceStatement": {
"ARN": "arn:aws:wafv2:us-east-1:123456789012:global/ipset/legitIPv4/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f"
}
},
"Action": {
"Block": {}
},
"VisibilityConfig": {
"SampledRequestsEnabled": false,
"CloudWatchMetricsEnabled": false,
"MetricName": "BlockLegitimateIPsRule"
}
}
]
潜在的影響: 不正アクセス、データ漏洩、及び潜在的なDoS攻撃。
wafv2:CreateWebACL
, wafv2:UpdateWebACL
, wafv2:DeleteWebACL
これらの権限を持つ攻撃者は以下のことが可能です:
- 新しいWeb ACLを作成し、悪意のあるトラフィックを通過させるか、正当なトラフィックをブロックするルールを導入し、WAFを無効にするか、サービス拒否を引き起こす。
- 既存のWeb ACLを更新し、以前はブロックされていたSQLインジェクションやクロスサイトスクリプティングなどの攻撃を許可するようにルールを変更したり、正当なリクエストをブロックすることで正常なトラフィックの流れを妨げる。
- Web ACLを削除し、影響を受けたリソースを完全に無防備にし、広範囲なウェブ攻撃にさらす。
note
ManagedByFirewallManagerがfalseの場合にのみ、指定されたWebACLを削除できます。
# Create Web ACL
aws wafv2 create-web-acl --name <value> --default-action <value> --visibility-config <value> \
--scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--rules <value>] [--captcha-config <value>] [--description <value>]
# Update Web ACL
aws wafv2 update-web-acl --name <value> --id <value> --default-action <value> --visibility-config <value> --lock-token <value>\
--scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--rules <value>] [--captcha-config <value>] [--description <value>]
# Delete Web ACL
aws wafv2 delete-web-acl --name <value> --id <value> --lock-token <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
次の例は、特定のIPセットからの正当なトラフィックをブロックするためにWeb ACLを更新する方法を示しています。オリジンIPがこれらのIPのいずれとも一致しない場合、デフォルトのアクションもそれをブロックすることになり、DoSを引き起こします。
元のWeb ACL:
{
"WebACL": {
"Name": "AllowLegitimateIPsWebACL",
"Id": "1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f",
"ARN": "arn:aws:wafv2:us-east-1:123456789012:regional/webacl/AllowLegitimateIPsWebACL/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f",
"DefaultAction": {
"Allow": {}
},
"Description": "",
"Rules": [
{
"Name": "AllowLegitimateIPsRule",
"Priority": 0,
"Statement": {
"IPSetReferenceStatement": {
"ARN": "arn:aws:wafv2:us-east-1:123456789012:regional/ipset/LegitimateIPv4/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f"
}
},
"Action": {
"Allow": {}
},
"VisibilityConfig": {
"SampledRequestsEnabled": false,
"CloudWatchMetricsEnabled": false,
"MetricName": "AllowLegitimateIPsRule"
}
}
],
"VisibilityConfig": {
"SampledRequestsEnabled": false,
"CloudWatchMetricsEnabled": false,
"MetricName": "AllowLegitimateIPsWebACL"
},
"Capacity": 1,
"ManagedByFirewallManager": false,
"LabelNamespace": "awswaf:123456789012:webacl:AllowLegitimateIPsWebACL:"
},
"LockToken": "1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f"
}
Web ACLを更新するコマンド:
aws wafv2 update-web-acl --name AllowLegitimateIPsWebACL --scope REGIONAL --id 1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f --lock-token 1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f --default-action Block={} --visibility-config SampledRequestsEnabled=false,CloudWatchMetricsEnabled=false,MetricName=AllowLegitimateIPsWebACL --rules file://rule.json --region us-east-1
rule.json ファイルは次のようになります:
[
{
"Name": "BlockLegitimateIPsRule",
"Priority": 0,
"Statement": {
"IPSetReferenceStatement": {
"ARN": "arn:aws:wafv2:us-east-1:123456789012:regional/ipset/LegitimateIPv4/1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f"
}
},
"Action": {
"Block": {}
},
"VisibilityConfig": {
"SampledRequestsEnabled": false,
"CloudWatchMetricsEnabled": false,
"MetricName": "BlockLegitimateIPRule"
}
}
]
潜在的な影響: 不正アクセス、データ漏洩、及び潜在的なDoS攻撃。
wafv2:AssociateWebACL
, wafv2:DisassociateWebACL
wafv2:AssociateWebACL
権限は、攻撃者がリソースにウェブACL(アクセス制御リスト)を関連付けることを可能にし、セキュリティ制御を回避して不正なトラフィックがアプリケーションに到達することを許可し、SQLインジェクションやクロスサイトスクリプティング(XSS)などの脆弱性につながる可能性があります。逆に、wafv2:DisassociateWebACL
権限を持つ攻撃者は、セキュリティ保護を一時的に無効にし、リソースを検出されることなく脆弱性にさらすことができます。
保護されるリソースの種類に応じて、追加の権限が必要になります:
- 関連付け
- apigateway:SetWebACL
- apprunner:AssociateWebAcl
- appsync:SetWebACL
- cognito-idp:AssociateWebACL
- ec2:AssociateVerifiedAccessInstanceWebAcl
- elasticloadbalancing:SetWebAcl
- 切り離し
- apigateway:SetWebACL
- apprunner:DisassociateWebAcl
- appsync:SetWebACL
- cognito-idp:DisassociateWebACL
- ec2:DisassociateVerifiedAccessInstanceWebAcl
- elasticloadbalancing:SetWebAcl
# Associate
aws wafv2 associate-web-acl --web-acl-arn <value> --resource-arn <value>
# Disassociate
aws wafv2 disassociate-web-acl --resource-arn <value>
潜在的影響: リソースのセキュリティが侵害され、悪用のリスクが増加し、AWS WAFによって保護されたAWS環境内でのサービスの中断の可能性があります。
wafv2:CreateIPSet
, wafv2:UpdateIPSet
, wafv2:DeleteIPSet
攻撃者はAWS WAFによって管理されているIPセットを作成、更新、削除することができます。これは危険であり、悪意のあるトラフィックを許可するために新しいIPセットを作成したり、正当なトラフィックをブロックするためにIPセットを変更したり、悪意のあるIPアドレスを含めるために既存のIPセットを更新したり、信頼されたIPアドレスを削除したり、重要なリソースを保護するために意図された重要なIPセットを削除したりする可能性があります。
# Create IP set
aws wafv2 create-ip-set --name <value> --ip-address-version <IPV4 | IPV6> --addresses <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
# Update IP set
aws wafv2 update-ip-set --name <value> --id <value> --addresses <value> --lock-token <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
# Delete IP set
aws wafv2 delete-ip-set --name <value> --id <value> --lock-token <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
次の例は、希望するIPセットで既存のIPセットを上書きする方法を示しています:
aws wafv2 update-ip-set --name LegitimateIPv4Set --id 1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f --addresses 99.99.99.99/32 --lock-token 1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d5e6f --scope CLOUDFRONT --region us-east-1
潜在的な影響: 不正アクセスと正当なトラフィックのブロック。
wafv2:CreateRegexPatternSet
, wafv2:UpdateRegexPatternSet
, wafv2:DeleteRegexPatternSet
これらの権限を持つ攻撃者は、特定のパターンに基づいて受信トラフィックを制御およびフィルタリングするためにAWS WAFで使用される正規表現パターンセットを操作することができます。
- 新しい正規表現パターンを作成することで、攻撃者は有害なコンテンツを許可することができます。
- 既存のパターンを更新することで、攻撃者はセキュリティルールを回避することができます。
- 悪意のある活動をブロックするために設計されたパターンを削除することで、攻撃者は悪意のあるペイロードを送信し、セキュリティ対策を回避することができます。
# Create regex pattern set
aws wafv2 create-regex-pattern-set --name <value> --regular-expression-list <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> [--description <value>]
# Update regex pattern set
aws wafv2 update-regex-pattern-set --name <value> --id <value> --regular-expression-list <value> --lock-token <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
# Delete regex pattern set
aws wafv2 delete-regex-pattern-set --name <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1> --id <value> --lock-token <value>
潜在的影響: セキュリティ制御をバイパスし、悪意のあるコンテンツを許可し、機密データを露出させたり、AWS WAFによって保護されたサービスやリソースを中断させる可能性があります。
(wavf2:PutLoggingConfiguration
& iam:CreateServiceLinkedRole
), wafv2:DeleteLoggingConfiguration
wafv2:DeleteLoggingConfiguration
の権限を持つ攻撃者は、指定されたWeb ACLからログ設定を削除することができます。その後、wavf2:PutLoggingConfiguration
および iam:CreateServiceLinkedRole
の権限を使用して、攻撃者はログ設定を作成または置き換えることができ(削除した後)、ログを完全に防止するか、Amazon S3バケット、Amazon CloudWatch Logsロググループ、または制御下のAmazon Kinesis Data Firehoseなどの不正な宛先にリダイレクトすることができます。
作成プロセス中、サービスは指定されたログ宛先にログが書き込まれるために必要な権限を自動的に設定します:
- Amazon CloudWatch Logs: AWS WAFは指定されたCloudWatch Logsロググループにリソースポリシーを作成します。このポリシーは、AWS WAFがロググループにログを書き込むために必要な権限を持っていることを保証します。
- Amazon S3バケット: AWS WAFは指定されたS3バケットにバケットポリシーを作成します。このポリシーは、AWS WAFが指定されたバケットにログをアップロードするために必要な権限を付与します。
- Amazon Kinesis Data Firehose: AWS WAFはKinesis Data Firehoseと対話するために特にサービスリンクロールを作成します。このロールにより、AWS WAFは構成されたFirehoseストリームにログを配信することができます。
note
Web ACLごとに1つのログ宛先のみを定義することが可能です。
# Put logging configuration
aws wafv2 put-logging-configuration --logging-configuration <value>
# Delete logging configuration
aws wafv2 delete-logging-configuration --resource-arn <value> [--log-scope <CUSTOMER | SECURITY_LAKE>] [--log-type <value>]
潜在的な影響: セキュリティイベントの可視性が不明瞭になり、インシデントレスポンスプロセスが困難になり、AWS WAFで保護された環境内での秘密の悪意のある活動を助長します。
wafv2:DeleteAPIKey
この権限を持つ攻撃者は、既存のAPIキーを削除でき、CAPTCHAが無効になり、フォーム送信やアクセス制御など、それに依存する機能が妨げられます。このCAPTCHAの実装によっては、CAPTCHAのバイパスや、リソースでエラーマネジメントが適切に設定されていない場合にはDoSにつながる可能性があります。
# Delete API key
aws wafv2 delete-api-key --api-key <value> --scope <REGIONAL --region=<value> | CLOUDFRONT --region=us-east-1>
潜在的な影響: CAPTCHA保護を無効にするか、アプリケーションの機能を妨害し、セキュリティ侵害やデータ盗難の可能性を引き起こす。
wafv2:TagResource
, wafv2:UntagResource
攻撃者は、Web ACL、ルールグループ、IPセット、正規表現パターンセット、ログ設定などのAWS WAFv2リソースからタグを追加、変更、または削除することができる。
# Tag
aws wafv2 tag-resource --resource-arn <value> --tags <value>
# Untag
aws wafv2 untag-resource --resource-arn <value> --tag-keys <value>
潜在的影響: リソースの改ざん、情報漏洩、コスト操作、運用の中断。
参考文献
- https://www.citrusconsulting.com/aws-web-application-firewall-waf/#:~:text=Conditions%20allow%20you%20to%20specify,user%20via%20a%20web%20application
- https://docs.aws.amazon.com/service-authorization/latest/reference/list_awswafv2.html
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。