安全:檢測到目標URL存在http host頭攻擊漏洞(nginx+攻擊模擬)


下面是綠盟安全掃描報告:

image

我用的是nginx服務器,代理后面的tomcat,對外只有80和443端口開放。

解決辦法:

server {
        listen 443 ssl http2;
        server_name 192.168.1.32;
 if ($http_Host !~* ^192.168.1.32$) { return 403; }        
        ssl_certificate d:/app/nginx/ssl/server.crt;
        ssl_certificate_key d:/app/nginx/ssl/server.unsecure;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers HIGH:!aNULL:!MD5;    
        location / {
            #代理一個tomcat應用,也可以和upstream的名字一樣
            proxy_pass http://jsjnks;   
            #以下是一些反向代理的配置可刪除
            proxy_redirect             off; 
            #后端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP
            proxy_set_header           Host $host; 
            proxy_set_header           X-Real-IP $remote_addr; 
            proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for; 
            proxy_set_header X-Forwarded-Proto $scheme;
            client_max_body_size       10m; #允許客戶端請求的最大單文件字節數
            client_body_buffer_size    128k; #緩沖區代理緩沖用戶端請求的最大字節數
            proxy_connect_timeout      300; #nginx跟后端服務器連接超時時間(代理連接超時)
            proxy_send_timeout         300; #后端服務器數據回傳時間(代理發送超時)
            proxy_read_timeout         300; #連接成功后,后端服務器響應時間(代理接收超時)
            proxy_buffer_size          4k; #設置代理服務器(nginx)保存用戶頭信息的緩沖區大小
            proxy_buffers              4 32k; #proxy_buffers緩沖區,網頁平均在32k以下的話,這樣設置
            proxy_busy_buffers_size    64k; #高負荷下緩沖大小(proxy_buffers*2)
            proxy_temp_file_write_size 64k; #設定緩存文件夾大小,大於這個值,將從upstream服務器傳
            proxy_redirect  off; 
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }        
        
        #靜態資源訪問
        location  ~ .*\.(jpg|jpeg|gif|png|ico|css|js|pdf|txt|ttf|eot|otf|woff)?$ {
            add_header Access-Control-Allow-Origin *;
        }    
        
         location /public {
             alias  "D:/app/nginx/html/public";
         }   
         location /jsjnks-static {
             alias  "D:/app/nginx/html/jsjnks-static";
         }          
            
        server_tokens off;

        #access_log /var/log/nginx/www.hao.com.access.log;
        #error_log /var/log/nginx/www.hao.com.error.log;
    }

紅色部分是核心,發現只要不是指定host,就一律返回403.

用burp suite測試,測試時改成了http測試,不是https,但是不影響host頭部攻擊回放。

image

設置火狐的代理端口,代理服務器就是burp suite。

image

image

設置完成后,打開火狐瀏覽器訪問應用頁面。

http://192.168.1.32 ,訪問后,burp suite抓到數據包。

image

在http history 中找到訪問的網址(被我誤刪除了,只能截原始圖了),右鍵 send to repeator,連續發送兩次,一次模擬正常的,一次模擬攻擊。

在repeator中

2 這個時原始的,沒有修改過host.

點擊 go,右側 response 可以返回正常的頁面。

image

4 模擬攻擊

把 host 改為 www.baidu.com,點擊go,執行結果顯示了403頁面。

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM