程序员最难受的事情,就是你开开心心的开发着代码,突然一个维护的事情让你做,别问为什么开发要弄维护的,问就是当初上错了轿。这次的web漏洞是host头攻击,虽然对对方说,我们代码里没有用到host头的地方,无奈对方不理睬,只能硬着头皮整改了。
参考文章:
https://www.jianshu.com/p/690acbf9f321
https://blog.youkuaiyun.com/ImSanJin/article/details/100080904?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
https://blog.youkuaiyun.com/QHJJHQ/article/details/80431714
大致意思就是你代码里如果用到host头这个字段,那么别人就能通过这个字段注入恶意代码。
修复方式:
在nginx配置文件中的Server中添加一下代码,大致意思是判断host头是否是指定的host,如果是则放行,不是就返回403(资源不可用)
server{
listen 6069;
server_name 127.0.0.1;
set $flag = 0;
if($host == "www.baidu.com"){
set $flag = 1;
}
if($flag = 0){
return 403;
}
proxy_pass http://127.0.0.1:6068;
}
漏洞复现可以使用burpsuite来进行复现,具体操作过程就是
先在ie浏览器中,设置 – internet选项 – 连接 – 局域网设置,设置代理服务器。
用burpsuite 的 proxy 中 抓包 请求参数 ,然后修改host 头
点击action – send to repeater
点击send,可以查看效果,如果返回信息里的host头是你修改后的host头信息,则存在此漏洞。反正如果403错误,则视为修复完成。
免责声明 改软件的说明以及截图,只为漏洞复现,和安全学习使用,如果其他人在查看文章后造成的不良影响,由其自身全部承担,本人不承担任何责任。