CVE-2022-3323:研华iView SQL注入漏洞复现

CVE-2022-3323:研华iView SQL注入漏洞复现

时间:2023-02-10 作者:安帝科技-CSX安全实验室


Advantech iView 是中国台湾研华(Advantech)公司的一个基于简单网络协议(SNMP)来对 B + B SmartWorx 设备进行管理的软件。

研华iView 5.7.04.6469版本存在SQL注入漏洞,该漏洞源于在其ConfigurationServlet端点中存在缺陷,攻击者可利用漏洞在setConfiguration操作中创建一个特殊的column_value参数,以绕过com.imc.iview.utils.CUtils.checkSQLInjection()中的检查来执行SQL语句,获取数据库数据。

Part1 漏洞状态

Part2 漏洞描述

Part3 漏洞复现

1. 复现环境
靶机:Win10(192.168.44.131)
软件:研华 iView 5.7.04.6469

2. 复现步骤
第一步:打开Apache Tomcat服务,确保其已开启,如下图所示:

第二步:执行python 脚本,脚本如下:

当com.imc.iview.utils.CUtils.checkSQLInjection()对column_value参数检查存在缺陷时,脚本执行完毕后可以获取iView管理员密码,如下图所示:

Part4 漏洞分析

Python脚本执行过程中会发起post请求,当column_vaule的值为“(SELECT IF(LENGTH((SELECT`strUserPassword`FROM(user_table) /*!WHERE*/ strUserName = ‘admin’)) = 8,0,99999999999999999))”时,post请求的返回值为“Configuration Update Success.”,如下图所示:

通过监控Mysql命令执行情况发现上图请求会执行如下SQL命令,通过该命令可以实现对user_table表中账户为“admin”的密码的长度进行判断,SQL命令如下图所示:

分析com.imc.iview.ui.components.configuration.ConfigurationServlet.doPost(),当page_action_type为setConfiguration时调用
com.imc.iview.ui.components.configuration.ConfigurationServlet .setConfiguration(),如下图所示:

跟踪setConfiguration()发现其会调用com.imc.iview.utils.CUtils.checkSQLInjection()对column_value进行检查,如果检查通过则执行78行代码,在该行会调用com.imc.iview.database. setConfigurationItem(),如下图所示:

跟进com.imc.iview.database. setConfigurationItem(),此处会先进行SQL命令拼接之后执行拼接后的命令,如下图所示:

通过上述分析可知SQL命令执行的前提是column_value值可以通过checkSQLInjection()的检测,分析com.imc.iview.utils.CUtils.checkSQLInjection()发现其虽然对关键字进行了检测,但是检测不严格,如当column_value中同时包含“select”和“from”时调用com.imc.iview.utils.Cutils.checkCommentStr()做进一步检查,如下图所示:

跟进com.imc.iview.utils.Cutils.checkCommentStr()发现,该方法仅对 “select”和“from”之间是否包含“/*”、“*/”及空格做了检查,很明显检查不严格,造成SQL注入漏洞。

Part5 修复建议

建议将软件更新至5.7.04.6583或更高版本以解决漏洞。

————————————————
获取更多情报
联系我们,获取更多漏洞情报详情及处置建议,让企业远离漏洞威胁。
电话:18511745601
邮箱:shiliangang@andisec.com