天天看點

nginx代理,指向響應内容不起作用500 Internal Server Error

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,運作成功,指向頁面已經替換

nginx代理,指向響應内容不起作用500 Internal Server Error

注:在查資料的過程中,發現還有一種可能報錯,解決方案是換成絕對路徑,也就是這樣,不過我沒複現這個問題

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;

}