下面是绿盟安全扫描报告:
我用的是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头部攻击回放。
设置火狐的代理端口,代理服务器就是burp suite。
设置完成后,打开火狐浏览器访问应用页面。
http://192.168.1.32 ,访问后,burp suite抓到数据包。
在http history 中找到访问的网址(被我误删除了,只能截原始图了),右键 send to repeator,连续发送两次,一次模拟正常的,一次模拟攻击。
在repeator中
2 这个是原始的,没有修改过host.
点击 go,右侧 response 可以返回正常的页面。
4 模拟攻击
把 host 改为 www.baidu.com,点击go,执行结果显示了403页面。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:安全:检测到目标URL存在http host头攻击漏洞(nginx+攻击模拟) - Python技术站