1. Nginx 版本泄露
風險分析:
Nginx 默認會在響應頭中返回 Server: nginx/x.x.x
,攻擊者可利用該信息匹配已知漏洞進行攻擊。
防御措施:
- 修改
nginx.conf
配置文件,隱藏版本信息:server_tokens off;
- 使用 WAF 進行信息隱藏。
2. Tomcat 默認報錯頁面
風險分析:
Tomcat 默認錯誤頁面可能會泄露服務器版本、堆棧信息等,幫助攻擊者制定攻擊策略。
防御措施:
- 修改
web.xml
,自定義錯誤頁面:<error-page><error-code>500</error-code><location>/custom_500.html</location> </error-page>
- 關閉
server.xml
中的server
頭信息。
3. IIS 版本泄露
風險分析:
IIS 默認會在 Server
頭中返回版本信息,如 Server: Microsoft-IIS/10.0
,幫助攻擊者匹配漏洞。
防御措施:
- 在
web.config
文件中添加:<system.webServer><security><requestFiltering removeServerHeader="true" /></security> </system.webServer>
- 配置 WAF 進行信息隱藏。
4. jQuery 版本泄露
風險分析:
如果前端頁面暴露了 jQuery
版本,如 jquery-1.12.4.js
,攻擊者可查找該版本的公開漏洞并利用。
防御措施:
- 使用 CDN 或混淆 JavaScript 文件,避免暴露版本信息。
- 及時更新
jQuery
版本,避免使用已知存在漏洞的版本。
5. X-Powered-By 信息泄露
風險分析:
X-Powered-By
頭通常包含服務器的運行環境(如 PHP/5.4.16
),攻擊者可利用該信息匹配已知漏洞進行攻擊。
防御措施:
- 在 Nginx 配置中移除:
fastcgi_hide_header X-Powered-By;
- 在 PHP 配置文件
php.ini
中禁用:expose_php = Off
6. X-Frame-Options 響應頭丟失
風險分析:
缺少 X-Frame-Options
頭會使站點容易受到 Clickjacking
攻擊。
防御措施:
- 在 Nginx 配置中添加:
add_header X-Frame-Options DENY;
- 在 Apache 配置中添加:
Header always set X-Frame-Options "SAMEORIGIN"
7. Content-Security-Policy 頭缺失
風險分析:
Content-Security-Policy (CSP)
頭缺失會導致網站容易受到 XSS 攻擊。
防御措施:
- 在 Nginx 配置中添加:
add_header Content-Security-Policy "default-src 'self'; script-src 'self'";
8. TRACE 方法啟用
風險分析:
TRACE
方法可被利用進行 Cross-Site Tracing (XST)
攻擊,泄露 HTTP 頭信息。
防御措施:
- 在 Apache 配置中禁用:
TraceEnable Off
- 在 Nginx 配置中攔截:
if ($request_method = TRACE) {return 405; }
9. 使用有漏洞的組件
風險分析:
老舊或有漏洞的第三方庫、框架可被攻擊者利用。
防御措施:
- 定期檢查依賴組件版本(如
npm audit
、OWASP Dependency-Check
)。 - 及時更新框架和庫。
10. 緩慢的 HTTP 拒絕服務攻擊(Slowloris)
風險分析:
攻擊者使用 Slowloris
發送部分 HTTP 請求,占用服務器資源,導致拒絕服務。
防御措施:
- 配置 Nginx 限制請求速率:
limit_conn_zone $binary_remote_addr zone=conn_limit:10m; limit_conn conn_limit 10;
- 使用
mod_reqtimeout
模塊(Apache)。
11. 目標服務器啟用了不安全 HTTP 方法
風險分析:
如果啟用了 PUT
、DELETE
等方法,攻擊者可能上傳惡意文件或刪除資源。
防御措施:
- 在 Nginx 配置中僅允許安全方法:
if ($request_method !~ ^(GET|POST|HEAD)$) {return 405; }
- 在 Apache 配置中限制:
<LimitExcept GET POST>deny from all </LimitExcept>
12. 缺少 Secure 標識
風險分析:
如果 Session
Cookie 沒有 Secure
標識,可能會在非 HTTPS 傳輸中被竊取。
防御措施:
- 在
Set-Cookie
頭中添加Secure; HttpOnly; SameSite=Strict
。 - 在
nginx.conf
配置:add_header Set-Cookie "name=value; Secure; HttpOnly; SameSite=Strict";
13. 敏感數據 GET 傳輸
風險分析:
如果敏感信息(如 password
、token
)通過 GET
傳輸,可能會被日志記錄或瀏覽器緩存暴露。
防御措施:
- 采用
POST
方式傳輸敏感數據。 - 通過
Referer-Policy
限制Referer
頭泄露:add_header Referrer-Policy "strict-origin";
14. SSL 證書無效
風險分析:
無效的 SSL 證書可能會導致用戶數據被中間人攻擊竊取。
防御措施:
- 使用受信任的 CA 機構簽發證書,如
Let's Encrypt
、DigiCert
。 - 啟用
HSTS
頭,防止降級攻擊:add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
結論
以上是常見的 Web 安全“水洞”,這些配置問題雖然看似微不足道,但往往成為攻擊者突破系統安全防線的關鍵點。企業應定期進行安全審計、修復漏洞,確保 Web 應用的安全性。