Frieza

MS08067安全实验室

  博客园  :: 首页  :: 新随笔  :: 联系 ::  :: 管理

为了方便获取网站域名,开发人员一般依赖于请求包中的Host首部字段,但是这个Host字段值是不可信赖的(可通过HTTP代理工具篡改),如果应用程序没有对Host字段值进行处理,就有可能造成恶意代码的传入

漏洞描述:

  1. HTTP报文中的Host首部字段旨在告知服务器,客户端请求的主机名和端口号,主要用来实现虚拟主机技术,单个主机运行多个站点
  2. 通常情况下Host字段值是不可信赖的,攻击者可通过HTTP代理工具篡改,如果应用程序没有对Host字段值进行处理,可能造成恶意代码的传入
  3. 当Host字段被修改为攻击者构造的恶意地址,将可能触发恶意请求,危害网站的运行安全、系统安全和数据安全

检测

抓包-->修改Host字段值-->提交-->查看响应中是否包含修改后的Host字段值

  1. 正常请求,响应302,Location首部字段指明跳转的地址,其中Location字段值为Host字段指定的地址
    • 将请求包的Host字段值修改为<www.baidu.com>提交,响应包中的Location地址也被更改为<www.baidu.com>
  2. 正常请求,正常响应,将Host字段值拼接到标签属性值中
    • 将请求包的Host字段值修改为<www.baidu.com>提交,响应包中服务器将<www.baidu.com>拼接到了script标签的src属性值中

修复

  1. 对Host字段进行检测。
  2. Nginx,修改ngnix.conf文件,在server中指定一个server_name名单,并添加检测
  3. Apache,修改httpd.conf文件,指定ServerName,并开启UseCanonicalName选项
  4. Tomcat,修改server.xml文件,配置Host的name属性
posted on 2021-03-30 09:30  Frieza_021  阅读(248)  评论(0编辑  收藏  举报