當使用 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檔案,如圖:
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 高峰費用保護。
--
aws waf blocking file upload