nginx代理,指向響應内容不起作用
1.政務雲稽核,應用程式漏洞,是這樣描述的:
由于應用未對輸入的參數值執行适當的邊界檢查,未執行驗證以確定使用者輸入與預期的資料類型是否比對。如果攻擊者構造包含非應用程式預期的參數請求,來探測應用程式(如以下示例所示),攻擊者可以從應用程式對該請求的響應中擷取有用的資訊,且可利用該資訊,以找出應用程式的弱點。 例如,如果參數字段應該是單引号括起來的字元串(如在 ASP 腳本或 SQL 查詢中),那麼注入的單引号将會提前終止字元串流,進而更改腳本的正常流程/文法。 錯誤消息中洩露重要資訊的另一個原因,是腳本編制引擎、Web 伺服器或資料庫配置錯誤。
[1] 除去參數
[2] 除去參數值
[3] 将參數值設定為空值
[4] 将參數值設定為數字溢出(+/- 99999999)
[5] 将參數值設定為危險字元,如 ’ " ’ " )
[6] 将某字元串附加到數字參數值
【漏洞危害】
實體路徑洩露或其他資訊洩露,為進行進一步針對性攻擊提供了資訊
傳回資訊:
500 Internal Server Error
500 Internal Server Error
nginx/1.16.1 解決方案: 不輸出錯誤資訊到頁面*(意思就是嫌暴露的資訊太多了)*
2.查資料顯示,nginx配置檔案中要寫重定向路徑
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
将錯誤響應都定向到傳回 50x.html 界面
結果:還是不起作用
3.再查資料,發現預設情況下,nginx不支援自定義錯誤頁面,隻有這個指令被設定為on,nginx才支援将錯誤重定向
要添加:fastcgi_intercept_errors on 或者 proxy_intercept_errors
預設: fastcgi_intercept_errors off
是以這樣寫:
fastcgi_intercept_errors on
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
儲存重新開機nginx,
結果:重新開機失敗,報錯:nginx: [emerg] invalid number of arguments in “root” directive in nginx/nginx.conf:14
4.再查資料,發現是因為少了分号,真是服了我自己了
是以這樣寫:
fastcgi_intercept_errors on;(記得加;)
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
儲存重新開機nginx,
結果:頁面還是沒變化,證明還是不可以
5.查資料查不到有用的資訊了,看了nginx的錯誤日志
nginx日志路徑: /usr/local/nginx/logs/error.log
2021/05/11 14:54:16 [error] 17520#0: *183649 rewrite or internal redirection cycle while redirect to named location "@router", client: 120.221.xx.xxx, server: 120.221.xx.xx, request: "GET /admin/js/tinymce/db.sql HTTP/1.1", host: "120.221.xx.xx:xxxx", referrer: "http://120.221.xx.xx"
解決方案:把下面這段配置注掉
#location @router {
#rewrite ^.*$ /index.html last;
#}
再次重新開機nginx,運作成功,指向頁面已經替換
注:在查資料的過程中,發現還有一種可能報錯,解決方案是換成絕對路徑,也就是這樣,不過我沒複現這個問題
fastcgi_intercept_errors on;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/security_enterprise_tenant/v2.8.0/dist/wechatweb/html;
}