Linux SSH 1.2.27-8i.src.rpm允许任意用户登陆系统
发布日期:2000-05-11
更新日期:2000-05-11
受影响系统:
RedHat Linux RPM ssh-1.2.27-8i.src.rpm(打了含有错误补丁代码的版本)
(ftp://ftp.zedz.net/pub/cryptoI/incoming下的该RPM包)
不受影响系统:SSH 1.2.27-7us.rpm
SSH 1.2.27-7i.rpm
描述:
有一个针对SSH-1.2.27的补丁程序,它包含一些错误的代码,没有正确的进行安全审核。
如果使用了这个补丁程序,将导致(本地或者远程)用户可以登陆进系统的任意拥有有效
登陆shell的账号。
这段错误代码在一个补丁文件ssh-1.2.27-pam.patch中:
+#ifdef HAVE_PAM
+ {
+ retval = origretval;
+ pampasswd = xstrdup(password);
+ if (retval == PAM_SUCCESS)
+ retval = pam_authenticate ((pam_handle_t *)pamh, 0);
+ if (retval == PAM_SUCCESS || retval == PAM_AUTH_ERR)
+ retval = pam_acct_mgmt ((pam_handle_t *)pamh, 0);
+ xfree(pampasswd);
+ }
+#else /* HAVE_PAM */
在最后一个'if'判断上,不管pam_authenticate()函数调用是否成功,pam_acct_mgmt()
都会覆盖retval的内容,如果pam_acct_mgmt()调用成功,它将打开一个连接会话,返回
认证成功信号:
+#ifdef HAVE_PAM
+ {
+ if (retval == PAM_SUCCESS)
+ retval = pam_open_session ((pam_handle_t *)pamh, 0);
+ return (retval == PAM_SUCCESS);
+ }
+#endif /* HAVE_PAM */
这段错误代码被插入到auth-passwd.c中的auth_password()代码的745-755行和
879-885行处。
值得注意的问题:
1) 即使一个账号已经被锁了,如果它有一个有效的登陆shell,仍然可以访问
2) 很多标准Linux系统的缺省/常用账号也可以被用来登陆进系统,例如:
'gdm','postgres','mysql'
<* 来源: John McNeely
Dennis Edmonds in SSES, Inc.
www.sses.net
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
如果/etc/ssh/sshd_config文件中包含了'PermitRootLogin=yes',允许root
远程登陆的话,任意用户只要提供一个非空的口令,就可以以root身份登陆进
系统。例如,如果在系统(pigpen)中使用了有问题的sshd包,其中有一个有效
账号(joe),那么远程攻击者可以登陆进这个账号:
% ssh -l joe pigpen
joe@pigpen's password: 123 <--- 输入任意非空口令
... <--- 进行错误的认证判断
[joe@pigpen]$ <--- 获得了shell权限
建议:
建议删除有问题的版本,重新安装1.2.27-7us版本。
或者使用OpenSSH , http://www.openssh.com
浏览次数:7815
严重程度:0(网友投票)