- Host 头指的是 HTTP Header 中的 Host 项,在开发 WEB 应用时,为了方便的获得网站域名,开发人员可能会直接使用该值带入到应用上下文中,如果该值可以被攻击者控制,且 web server 没有对 host header 进行校验,则可能导致部分安全问题。
1.测试软件安装破解
链接:https://pan.baidu.com/s/1ZwjrwNG-T5YB_IwKJThiDA
提取码:5r98
点击Manual activation
2020-11-17_204106.jpg
然后一路next
2.设置google浏览器代理
设置->高级->打开您计算机的代理设置
2020-11-17_204855.jpg
设置地址127.0.0.1
端口:1080
3.设置Burp Suite
2020-11-17_205136.jpg2020-11-17_205407.jpg
此处的地址和ip设置和步骤2中的浏览器设置相同即可
4.Host头注入现象
#未作修改的nginx配置,此配置会产生Host头注入问题
upstream web {
server 192.168.52.22:9092;
server 192.168.52.23:9093;
}
server {
listen 8082;
server_name 192.168.52.22;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://web;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
在浏览器输入相应地址,在测试软件中选中这条路径
2020-11-17_222723.jpg
此时Host为 192.168.52.22:8082点击Go可以收到正确响应
2020-11-17_223106.jpg
但是改变Host为aaaa 仍然能收到正确响应,
2020-11-17_223246.jpg
这即为Host头注入
下面修改nginx配置文件
#修改后的nginx配置
upstream web {
server 192.168.52.22:9092;
server 192.168.52.23:9093;
}
server {
listen 8082;
server_name 192.168.52.22;
set $flag 0;
if ( $host = "192.168.52.22"){
set $flag 1;
}
if ( $flag = 0){
return 233;
}
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://web;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
此时修改Host:aaaa发现返回233
2020-11-17_223707.jpg
Host头注入问题解决
网友评论