BUGTRAQ ID: 30027
CNCAN ID:CNCAN-2008070202
wordtrans-web是一款基于Web的多语言字典查询工具。
wordtrans-web存在输入验证问题,远程攻击者可以利用漏洞以WEB进程权限执行任意命令。
-发送变量"command"设置为'show_desc'的GET请求,"link_options"从用户数据中接收参数,通过使用GET方法的"advanced"变量传递。然后"link_options"变量与"exec_wordtrans"变量进行链接,由于"exec_wordtrans"传递给"passthru"函数时没有任何特殊字符检查,攻击者可以发送类似|或; shell字符以WEB进程权限执行任意指令。如下是有问题的代码:
...
$exec_wordtrans = $wordtrans . "-d \"$dict\" ";
switch ($_GET['command']) {
case "show_desc":
$exec_wordtrans .= "--desc ";
$link_options = "--html-link-options \"?lang=$lang_case&advanced=".$_GET['advanced']."&\" ";
$exec_wordtrans .= $link_options;
passthru($exec_wordtrans);
break;
...
要利用此漏洞,"Magic Quotes"选项必须不设置。
-发送不使用"command"变量或者未定义命令并且"word"变量中没有任何数据的请求,"link_options"从用户数据中接收参数,通过使用POST方法的"advanced"变量传递。然后"link_options"变量与"exec_wordtrans"变量进行链接,由于"exec_wordtrans"传递给"passthru"函数时没有任何特殊字符检查,攻击者可以发送类似|或; shell字符以WEB进程权限执行任意指令。如下是有问题的代码:
...
$exec_wordtrans = $wordtrans . "-d \"$dict\" ";
switch ($_GET['command']) {
...
default:
if ($_POST['word'] != "") {
if ($_POST['fullwords']) $exec_wordtrans .= " +w "; else $exec_wordtrans .= " -w ";
if ($_POST['casesensitive']) $exec_wordtrans .= " +c "; else $exec_wordtrans .= " -c ";
if ($_POST['invertir']) $exec_wordtrans .= " +i "; else $exec_wordtrans .= " -i ";
if ($_POST['noacentos']) $exec_wordtrans .= " +g "; else $exec_wordtrans .= " -g ";
$link_options = "--html-link-options \"?lang=$lang_case&advanced=".$_POST['advanced']."&\" ";
$exec_wordtrans .= $link_options;
$exec_wordtrans .= "\"".$_POST['word']."\"";
passthru($exec_wordtrans);
...
要利用此漏洞,"Magic Quotes"选项必须不设置。
Wordtrans Wordtrans-web 1.1pre15
+ RedHat Linux 7.3
目前没有解决方案提供
暂无评论