#1741·Nginx

http upstream sticky: `$host` 可以通过 `domain` 注入 Cookie 属性

作者: bupt-Yy-young创建于 2026年9月8日更新于 2026年9月15日
标签bugrefined

QQ 错误概览

当我用 “ domain=$host” 配置标准 “ngx http upstream sticky module” 时, 客户端控制的“ host” 标题中的分号会被复制到“ Set Cookie” 标题中。 因此,nginx释放出一个出乎意料的额外饼干属性,而不是验证运行时的饼干域.

例如,请求:

东道主:受害者.实例;安全

生产:

Set-Cookie: 路由=.; 域名=被害者. 例如; 安全; 路径=/

• 预期行为

当“域”的评价值包含对饼干域无效的字符时,nginx应拒绝该值或省略“域”属性。

它不应直接将数值序列化为“Set-Cookie”,以便注入更多的饼干属性。

复制臭虫的步骤

  1. 启动本地 HTTP 后端:
python3 - m http.server 8080-bind 127.0.0.1 互联网档案馆的存檔,存档日期2013-12-20.
  1. 开始nginx 1.31.5,配置如下:
  2. 发出下列请求:
bash
卷曲-http1.1-i\
-HH'Host:受害者.例; 安全?
http://127.0.0.1:8081/ (中文(简体) ).
  1. nginx 返回一个类似 :
HTTP/1.1 200 已经确定
Set-Cookie: 路由=.; 域名=被害者. 例如; 安全; 路径=/

" 安全 " 标志作为额外的饼干属性被发布。 与其他饼干属性可以观察到同样的行为,例如:

主机:受害人.例;仅Http
主机:victim.example;同Site=拉克斯
主机:受害者.实例;Max-Age=0

NGINX 配置

工人 流程1; 事件{ 工人-连接 64; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? http { access log 关闭; 上游后端{ 服务器 127.0.0.1:8080; 粘性饼干路由域名=$host路径=/; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? 服务器{

  • 听8081; 服务器 名称 ; 位置 / { 代理 通过 http://backend; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

QQ NGINX 版本并构建配置选项

“nginx-V”的产出:

nginx 版本: nginx/1.31.5
由gcc 11.4.0(Ubuntu 11.4.0‐1ubuntu1~22.04.3)建造 .
配置参数 : -- prefix=/tmp/nginx- run- 1.31.5- 与 cc- opt=''O0- 克'

提交 :

231a60ee3e90a43b829b9ca0a3013a8359b98d7e 互联网档案馆的存檔,存档日期2013-12-02.

NGINX正在建设和/或部署的环境

  • 目标部署平台:当地Linux环境
  • 目标OS:Ubuntu 22.04.5 LTS
  • 后端: Python 3 HTTP 服务器
  • 正在建造和/或部署NGINX的建筑

莱诺·阿桑西姆林克沃里特 5.15.0-152- generic #162-Ubuntu SMP Wed Jul 23 09:48:42 UTC 2025 x86 64 x86 64 x86 64 GNU/Linux

QQ NGINX 调试日志

未提供。 已测试的正辛醇/水分配系数二进制没有用“---debug”编译。 这个问题可以从HTTP响应头复制而无需调试日志.

++ 附加上下文

无回复( N)