AWS - WAF Enum

AWS - WAF Enum

HackTricks 지원하기

AWS WAF

AWS WAF는 웹 애플리케이션 방화벽으로, 웹 애플리케이션이나 API를 다양한 웹 공격으로부터 보호하기 위해 설계되었습니다. 사용자는 SQL 인젝션이나 크로스 사이트 스크립팅과 같은 일반적인 공격 벡터를 완화하는 보안 규칙을 설정하여 들어오는 트래픽을 제어할 수 있습니다.

주요 개념

웹 ACL (Access Control List)

웹 ACL은 웹 애플리케이션이나 API에 적용할 수 있는 규칙의 모음입니다. 웹 ACL을 리소스와 연결하면 AWS WAF는 웹 ACL에 정의된 규칙에 따라 들어오는 요청을 검사하고 지정된 작업을 수행합니다.

규칙 그룹

규칙 그룹은 여러 웹 ACL에 적용할 수 있는 재사용 가능한 규칙 모음입니다. 규칙 그룹은 다양한 웹 애플리케이션이나 API에서 일관된 규칙 세트를 관리하고 유지하는 데 도움을 줍니다.

각 규칙 그룹에는 관련된 용량이 있으며, 이는 규칙, 규칙 그룹 및 웹 ACL을 실행하는 데 사용되는 운영 리소스를 계산하고 제어하는 데 도움이 됩니다. 생성 중에 값이 설정되면 수정할 수 없습니다.

규칙

규칙은 AWS WAF가 들어오는 웹 요청을 검사하는 데 사용하는 조건 집합을 정의합니다. 규칙의 두 가지 주요 유형은 다음과 같습니다:

  1. 정규 규칙: 이 규칙 유형은 지정된 조건을 사용하여 웹 요청을 허용, 차단 또는 계산할지를 결정합니다.

  2. 비율 기반 규칙: 특정 IP 주소에서 5분 동안의 요청 수를 계산합니다. 여기서 사용자는 임계값을 정의하며, IP에서의 요청 수가 5분 이내에 이 한도를 초과하면 해당 IP에서의 후속 요청은 요청 비율이 임계값 아래로 떨어질 때까지 차단됩니다. 비율 기반 규칙의 최소 임계값은 2000 요청입니다.

관리 규칙

AWS WAF는 AWS 및 AWS Marketplace 판매자가 유지 관리하는 미리 구성된 관리 규칙 세트를 제공합니다. 이러한 규칙 세트는 일반적인 위협으로부터 보호하며, 새로운 취약점을 해결하기 위해 정기적으로 업데이트됩니다.

IP 세트

IP 세트는 허용하거나 차단하려는 IP 주소 또는 IP 주소 범위의 목록입니다. IP 세트는 IP 기반 규칙 관리 프로세스를 단순화합니다.

정규 표현식 패턴 세트

정규 표현식 패턴 세트는 웹 요청에서 검색할 패턴을 정의하는 하나 이상의 정규 표현식(정규식)을 포함합니다. 이는 특정 문자 시퀀스를 필터링하는 것과 같은 더 복잡한 매칭 시나리오에 유용합니다.

잠금 토큰

잠금 토큰은 WAF 리소스를 업데이트할 때 동시성 제어에 사용됩니다. 이는 여러 사용자나 프로세스가 동시에 동일한 리소스를 업데이트하려고 할 때 변경 사항이 우연히 덮어쓰여지지 않도록 보장합니다.

API 키

AWS WAF의 API 키는 특정 API 작업에 대한 요청을 인증하는 데 사용됩니다. 이러한 키는 암호화되어 안전하게 관리되며, 접근을 제어하고 권한이 있는 사용자만 WAF 구성을 변경할 수 있도록 보장합니다.

  • 예시: CAPTCHA API 통합.

권한 정책

권한 정책은 AWS WAF 리소스에서 작업을 수행할 수 있는 사람을 지정하는 IAM 정책입니다. 권한을 정의함으로써 WAF 리소스에 대한 접근을 제어하고 권한이 있는 사용자만 구성을 생성, 업데이트 또는 삭제할 수 있도록 보장할 수 있습니다.

범위

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 리전을 통해 관리됩니다.

주요 기능

모니터링 기준 (조건)

조건은 AWS WAF가 모니터링하는 들어오는 HTTP/HTTPS 요청의 요소를 지정하며, 여기에는 XSS, 지리적 위치(GEO), IP 주소, 크기 제약, SQL 인젝션 및 패턴(문자열 및 정규식 매칭)이 포함됩니다. 국가에 따라 CloudFront 수준에서 제한된 요청은 WAF에 도달하지 않는다는 점에 유의해야 합니다.

각 AWS 계정은 다음을 구성할 수 있습니다:

  • 각 유형에 대해 100 조건 (정규식의 경우 10 조건만 허용되지만 이 한도는 증가할 수 있습니다).

  • 100 규칙50 웹 ACL.

  • 최대 5개의 비율 기반 규칙.

  • 애플리케이션 로드 밸런서와 함께 WAF가 구현될 때 초당 10,000 요청의 처리량.

규칙 작업

작업은 각 규칙에 할당되며, 옵션은 다음과 같습니다:

  • 허용: 요청이 적절한 CloudFront 배포 또는 Application Load Balancer로 전달됩니다.

  • 차단: 요청이 즉시 종료됩니다.

  • 계산: 규칙의 조건을 충족하는 요청을 집계합니다. 이는 규칙 테스트에 유용하며, 허용 또는 차단으로 설정하기 전에 규칙의 정확성을 확인합니다.

  • CAPTCHA 및 챌린지: CAPTCHA 퍼즐 및 침묵 챌린지를 사용하여 요청이 봇에서 오지 않는지 확인합니다.

웹 ACL 내의 어떤 규칙과도 일치하지 않는 요청은 기본 작업(허용 또는 차단)을 수행합니다. 웹 ACL 내에서 정의된 규칙 실행 순서는 중요하며 일반적으로 다음 순서를 따릅니다:

  1. 허용된 화이트리스트 IP.

  2. 차단된 블랙리스트 IP.

  3. 해로운 서명과 일치하는 요청 차단.

CloudWatch 통합

AWS WAF는 모니터링을 위해 CloudWatch와 통합되어 있으며, 허용된 요청, 차단된 요청, 계산된 요청 및 통과된 요청과 같은 메트릭을 제공합니다. 이러한 메트릭은 기본적으로 매분 보고되며, 2주 동안 보존됩니다.

열거

CloudFront 배포와 상호작용하려면 US East (N. Virginia) 리전을 지정해야 합니다:

  • CLI - CloudFront 범위를 사용할 때 US East 리전을 지정합니다: --scope CLOUDFRONT --region=us-east-1 .

  • API 및 SDK - 모든 호출에 대해 리전 엔드포인트 us-east-1을 사용합니다.

지역 서비스와 상호작용하려면 리전을 지정해야 합니다:

  • 유럽(스페인) 리전의 예: --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>

Post Exploitation / Bypass

공격자의 관점에서 이 서비스는 공격자가 WAF 보호 및 다른 웹을 손상시키는 데 도움이 될 수 있는 네트워크 노출을 식별하는 데 도움을 줄 수 있습니다.

그러나 공격자는 이 서비스의 중단에 관심이 있을 수도 있으므로 웹이 WAF에 의해 보호되지 않게 됩니다.

많은 Delete 및 Update 작업에서 lock token을 제공해야 할 필요가 있습니다. 이 토큰은 리소스에 대한 동시성 제어에 사용되며, 여러 사용자 또는 프로세스가 동시에 동일한 리소스를 업데이트하려고 할 때 변경 사항이 우연히 덮어쓰여지지 않도록 보장합니다. 이 토큰을 얻기 위해 특정 리소스에 대해 해당 list 또는 get 작업을 수행할 수 있습니다.

wafv2:CreateRuleGroup, wafv2:UpdateRuleGroup, wafv2:DeleteRuleGroup

공격자는 다음과 같은 방법으로 영향을 받는 리소스의 보안을 손상시킬 수 있습니다:

  • 합법적인 IP 주소에서 합법적인 트래픽을 차단할 수 있는 규칙 그룹을 생성하여 서비스 거부를 초래할 수 있습니다.

  • 규칙 그룹을 업데이트하여 예를 들어 Block에서 Allow로 그 행동을 수정할 수 있습니다.

  • 중요한 보안 조치를 제공하는 규칙 그룹을 삭제할 수 있습니다.

# 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을 삭제하여 영향을 받는 리소스를 완전히 보호받지 못하게 하여 다양한 웹 공격에 노출시킬 수 있습니다.

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"
}

웹 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:PutLoggingConfigurationiam:CreateServiceLinkedRole 권한을 통해 공격자는 로깅 구성을 생성하거나 교체할 수 있으며(삭제한 후), 로깅을 전혀 방지하거나 Amazon S3 버킷, Amazon CloudWatch Logs 로그 그룹 또는 제어하에 있는 Amazon Kinesis Data Firehose와 같은 무단 목적지로 로그를 리디렉션할 수 있습니다.

생성 과정에서 서비스는 지정된 로깅 목적지에 로그를 기록할 수 있도록 필요한 권한을 자동으로 설정합니다:

  • Amazon CloudWatch Logs: AWS WAF는 지정된 CloudWatch Logs 로그 그룹에 리소스 정책을 생성합니다. 이 정책은 AWS WAF가 로그 그룹에 로그를 기록하는 데 필요한 권한을 갖도록 보장합니다.

  • Amazon S3 Bucket: AWS WAF는 지정된 S3 버킷에 버킷 정책을 생성합니다. 이 정책은 AWS WAF가 지정된 버킷에 로그를 업로드하는 데 필요한 권한을 부여합니다.

  • Amazon Kinesis Data Firehose: AWS WAF는 Kinesis Data Firehose와 상호작용하기 위해 특별히 서비스 연결 역할을 생성합니다. 이 역할은 AWS WAF가 구성된 Firehose 스트림에 로그를 전달할 수 있도록 합니다.

웹 ACL당 하나의 로깅 목적지만 정의할 수 있습니다.

# 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>

잠재적 영향: 리소스 변조, 정보 유출, 비용 조작 및 운영 중단.

참고문헌

HackTricks 지원하기

Last updated