分类: LINUX
2010-01-13 08:36:04
前几天有朋友问我,说他用扫描扫到了一些漏洞,怎么利用。
比如使用findoor,扫描对方服务器的SMTP服务的时候,会显示对方可以使用
RCPT、VRFY、EXPN命令获得用户列表。
_blank>
究竟怎么利用上面的命令来取得用户名列表呢
我来说说吧,都是文字,我就不截图了(上次晕怕了)
一、利用RCPT获得用户名列表
这里用 S 表示向服务器发送的命令,用 R 表示服务器返回的信息
假设的目标服务器是Beta.com
开始:
TELNET Beta.com 25
S: HELO
R: 250 Beta.com Hello
S: MAIL FROM:
R: 250 OK
S: RCPT TO:
R: 250 OK
S: RCPT TO:
R: 550 No such user here
S: RCPT TO:
R: 250 OK
我解释一下,第一句,你发送HELO命令,表示你进入到对方的SMTP系统,打个招呼嘛
然后输入MAIL FROM 发信人信箱,当然你要用真实信箱也没人拦着你
这时候输入RCPT TO: 目标人信箱,看似平常是吧、、
但是,当你将目标人信箱中的域名设置的和当前服务器一样的时候,
服务器就会检查是否有该用户存在。如果用户存在将返回 250通过,如果不存在将报 550错误。
这样以来我们就实现了通过RCPT来猜测用户列表的目的。
二、使用VRFY命令获得用户名列表
VRFY命令是SMTP提供的专门用来验证是否有用户存在于服务器上的一条命令
看这里:
S: VRFY Postel
R: 250 Jon Postel
S: VRFY Jones
R: 550 String does not match anything.
格式很简单:
VRFY 要测试的用户名
然后系统就会进行判断,如果用户存在,将返回 250 和用户全名。如果用户不存在,将返回 550错误。
三、使用EXPN命令获得用户名列表
EXPN命令其实和VRFY命令类似,不同的是,这条命令是用来验证是否有邮件列表存在
看这里:
S: EXPN Example-People
R: 250-Jon Postel
R: 250-Fred Fonebone
R: 250-Sam Q. Smith
R: 250-Quincy Smith <@ISIF,Q-Smith@ISI-VAXA>
R: 250-
R: 250
或者
S: EXPN Executive-Washroom-List
R: 550 Access Denied to You.
示例中,我查询了一个邮件列表,名称叫 Example-People,当这个邮件列表存在的时候
系统酒会返回这个邮件列表中的所有用户名称以及具体的信箱地址。
如果系统禁止了这个命令,将返回550错误。
到这里我给大家介绍了SMTP中的使用 RCPT、VRFY、EXPN 来获得用户名列表
其中的例子都是在RFC文档里稍微修改就拿过来的。所以,如果想真正了解全部的细节
还是自己认真看一看RFC文档来的好。
附一些SMTP服务器的返回值:
501 参数格式错误
502 命令不可实现
503 错误的命令序列
504 命令参数不可实现
211 系统状态或系统帮助响应
214 帮助信息
220 服务就绪
221 服务关闭传输信道
421 服务未就绪,关闭传输信道(当必须关闭时,此应答可以作为对任何命令的响应)
250 要求的邮件操作完成
251 用户非本地,将转发向
450 要求的邮件操作未完成,邮箱不可用(例如,邮箱忙)
550 要求的邮件操作未完成,邮箱不可用(例如,邮箱未找到,或不可访问)
451 放弃要求的操作;处理过程中出错
551 用户非本地,请尝试
452 系统存储不足,要求的操作未执行
552 过量的存储分配,要求的操作未执行
553 邮箱名不可用,要求的操作未执行(例如邮箱格式错误)
354 开始邮件输入,以.结束
554 操作失败