AWS WAF 設定, 無法上傳檔案的問題 (403 Forbidden error)

2024-02-26
當使用 AWS WAF 內定的防火牆規則,於網站中上傳檔案時會出現 "403 Forbidden error"

跟這 upload 問題有關的規則有 5個:
  • SQLi_BODY
  • WindowsShellCommands_BODY
  • CrossSiteScripting_BODY
  • GenericLFI_BODY
  • SizeRestrictions_BODY

將這兩項 GenericLFI_BODY、SizeRestrictions_BODY
設定 "Override to Allow" 或 "Override to Count"
不然無法 upload檔案,如圖:
waf 規則設定

aws官方有提供另一個設定方式:
How do I explicitly allow file uploads that an AWS WAF rule blocks without excluding the rule?
文章底下 有人反應無效,
我也試不出來,不清楚哪個環節有問題??!!


若上傳的檔案中含有敏感文字
例如 SQL Injection、XSS文字:<script>alert("hello")</script>、../  之類的,也會被擋 403
就需再設定 SQLi_BODY、CrossSiteScripting_BODY

上傳這樣的 "純文字檔" 都會出現 403
後來發現 刪掉第一行 <!DOCTYPE html> 就可正常upload:
---
<!DOCTYPE html>
<html>
<head>
    <title>TEST</title>
</head>
<body>
</body>
</html>

SQLi_BODY

規則集:AWSManagedRulesSQLiRuleSet
主要是檢查上傳的檔案中(無論是 .sql 或是 .txt),是否含有惡意 SQL 程式碼 (SQL Injection)

 

WindowsShellCommands_BODY

規則集:AWSManagedRulesWindowsRuleSet
我沒使用 Windows,未使用此規則
 

CrossSiteScripting_BODY

規則集:AWSManagedRulesCommonRuleSet
使用內建的檢查要求主體是否有常見的跨網站指令碼 (XSS) 模式。
AWS WAF 跨網站指令碼攻擊規則陳述式範例模式包括 <script>alert("hello")</script> 之類的指令碼。

我上傳一個 .txt 檔案
只有一行內容,就被 403 擋掉:
<script>alert("hello")</script>

 

GenericLFI_BODY

規則集:AWSManagedRulesCommonRuleSet
檢查 request body(上傳的檔案內容) 中是否含有敏感文字
例如,上傳的檔案內出現 ../ 就會 403
 

SizeRestrictions_BODY

規則集:AWSManagedRulesCommonRuleSet
檢查超過 8 KB (8,192 位元組) 的要求主體。

檢查超過 8 KB (8,192 位元組) 的 request body(upload file)
可以設定 5 種狀態
Override to Allow
Override to Block
Override to Count
Override to CAPTCHA
Override to Challenge




相關參考:
How do I upload files that are blocked by AWS WAF?

基準規則群組 - AWS WAF、AWS Firewall Manager 與 AWS Shield Advanced

AWS WAF 如何处理对 HTTP 请求的正文检查?

CAPTCHA and Challenge action behavior

Rule action



另外,根據 AWS 的文件
AWS Shield Standard 標準版 就有提供 AWS Shield Standard (擋 DDoS ) 功能

所有 AWS 客戶都能使用 AWS Shield Standard 提供的自動保護,無須額外付費。AWS Shield Standard 可保護您的網站或應用程式,免於常見且經常發生的網路與傳輸層 DDoS 攻擊。當您將 AWS Shield Standard 與 Amazon CloudFront 和 Amazon Route 53 搭配使用時,可獲得所有已知基礎設施 (Layer 3 和 4) 攻擊的全面可用性保護。


也可以再付費購買 AWS Shield Advanced
每個月是 USD 3,000

如果 Amazon Elastic Compute Cloud (EC2)、Elastic Load Balancing (ELB)、Amazon CloudFront、AWS Global Accelerator 和 Amazon Route 53 資源上執行的應用程式需要更高水準的攻擊防護,可訂閱 AWS Shield Advanced。除了 Standard 配備的網路與傳輸層保護之外,Shield Advanced 也針對大型精密 DDoS 攻擊提供額外偵測與防護功能,除了能近乎即時地掌握攻擊情況,也整合 Web 應用程式防火牆 AWS WAF。此外,您還可以透過 Shield Advanced 全天候使用 AWS Shield 反應團隊 (DRT) 服務,並同時享有與 DDoS 相關的 EC2、ELB、CloudFront、Global Accelerator 或 Route 53 高峰費用保護。






 
分類:雲端      411
Tag AWS , Cloud , WAF , DDoS , Firewall ,
留言

留言
top