為了方便的獲得**網域名稱,開發人員一般依賴於http host header。例如,在php裡用_server["http_host"]。但是這個header是不可信賴的,如果應用程式沒有對host header值進行處理,就有可能造成惡意**的傳入。
web應用程式應該使用server_name而不是host header。專案**在apache和nginx裡可以通過設定乙個虛擬機器來記錄所有的非法host header。在nginx裡還可以通過指定乙個server_name名單,apache也可以通過指定乙個server_name名單並開啟usecanonicalname選項。
程式編寫中避免使用http_host,如有需要使用server_name替代nginx配置
配置檔案中server_name上設定具體網域名稱.eg:
server_name example.com;
在nginx上設定乙個default_server處理其他網域名稱來處理預設的請求.即,非設定網域名稱返回乙個http status code 4xx 的**
server
apache配置
方法一: 修改\conf\httpd.conf配置檔案中server_name,設定具體網域名稱.eg:
servername example.com:80 # 指定網域名稱和埠號
新增下列行
usecanonicalname on # 使用指定的網域名稱和埠號
namevirtualhost 127.0.0.1
servername 127.0.0.1
order allow,deny
deny from all # 拒絕直接通過ip位址的任何訪問
documentroot "c:\www\example"
servername example.com # 僅允許通過網域名稱訪問
方法三: 修改\conf\httpd.conf檔案,找到"#loadmodule rewrite_module modules/mod_rewrite.so"去除前面的"#"號,新增類似以下配置:
rewriteengine on
rewritecond % !^127.0.0.1$ [nc]
rewriterule ^(.*)$ /error.html
配置修改後都需要重啟nginx/apache
檢測到目標URL存在Http Host頭攻擊漏洞
問題描述 檢測到目標url存在http host頭攻擊漏洞 apache 在未設定servername時,server server name 的值會接收客戶端傳送過來的值,此時可以利用漏洞對伺服器進行攻擊。解決辦法 apache 已經驗證通過,方法可行。apache apache 配置檔案中需要指...
檢測到目標URL存在http host頭攻擊漏洞
檢測到目標url存在http host頭攻擊漏洞 1 引發安全問題的原因 為了方便的獲得 網域名稱,開發人員一般依賴於http host header。例如,在php裡用 server http host 但是這個header是不可信賴的,如果應用程式沒有對host header值進行處理,就有可能...
CTF XXE漏洞攻擊
f12 檢視原始碼 可以看到傳輸的資料是xml型別 payload打一下 1.0 encoding utf 8 doctype any entity xxe system file flag xxe username 111 password user 首先嘗試直接讀 flag檔案,回顯了報錯資訊,...