手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>服务器技术>安全防护>列表

OpenSSH UseLogin 参数远程漏洞

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
OpenSSH UseLogin 参数远程漏洞

发布日期:2000-06-10
更新日期:2000-06-11

受影响系统:

所有打开了"UseLogin"开关并且版本低于 2.1.1的OpenSSH
描述:

OpenSSH缺省安装时并不打开"UseLogin"开关,因此缺省并不存在安全问题。
但是如果"UseLogin"开关被打开,那么所有低于2.1.1的OpenSSH都可能被
用来远程获取root权限。

如果"UseLogin"开关被使能,sshd不会自己将当前uid切换到登录的用户的uid.
而是使用login(1)程序来完成这个工作。如果用户指定一个命令来执行,login
将不能正确处理,既然sshd没有正确丢弃root权限,因此这个命令就将以sshd当
前运行的权限来执行,通常是root权限。

<* 来源: Markus Friedl <markus.friedl@INFORMATIK.UNI-ERLANGEN.DE> *>


建议:
更新到OpenSSH 2.1.1,可以在www.openssh.com下载。

临时解决方法:

关闭UseLogin开关,可以在/etc/sshd_config中做如下设置:

UseLogin no

也可以使用下面的补丁程序,重新编译OpenSSH:

1. OpenSSH-1.2.2

--- sshd.c.orig Thu Jan 20 18:58:39 2000
sshd.c Tue Jun 6 10:12:00 2000
@@ -2231,6 2231,10 @@
struct stat st;
char *argv[10];

/* login(1) is only called if we execute the login shell */
if (options.use_login && command != NULL)
options.use_login = 0;

f = fopen("/etc/nologin", "r");
if (f) {
/* /etc/nologin exists. Print its contents and exit. */

2. OpenSSH-1.2.3

--- sshd.c.orig Mon Mar 6 22:11:17 2000
sshd.c Tue Jun 6 10:14:07 2000
@@ -2250,6 2250,10 @@
struct stat st;
char *argv[10];

/* login(1) is only called if we execute the login shell */
if (options.use_login && command != NULL)
options.use_login = 0;

f = fopen("/etc/nologin", "r");
if (f) {
/* /etc/nologin exists. Print its contents and exit. */

3. OpenSSH-2.1.0

--- session.c.orig Wed May 3 20:03:07 2000
session.c Tue Jun 6 10:10:50 2000
@@ -744,6 744,10 @@
struct stat st;
char *argv[10];

/* login(1) is only called if we execute the login shell */
if (options.use_login && command != NULL)
options.use_login = 0;

f = fopen("/etc/nologin", "r");
if (f) {
/* /etc/nologin exists. Print its contents and exit. */





文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!