查看: 757|回复: 7

利用SMTP服务器获得用户名列表

 关闭 [复制链接]

该用户从未签到

发表于 2009-10-14 21:58 | 显示全部楼层 |阅读模式
  前几天有朋友问我,说他用扫描扫到了一些漏洞,怎么利用。比如使用findoor,扫描对方服务器的SMTP服务的时候,会显示对方可以使用RCPT、VRFY、EXPN命令获得用户列表。
究竟怎么利用上面的命令来取得用户名列表呢?
我来说说吧,都是文字,我就不截图了(上次晕怕了)
一、利用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 操作失败
<
PCOS系统下载站:http://zhuangji.wang

该用户从未签到

 楼主| 发表于 2009-10-14 21:58 | 显示全部楼层

利用SMTP服务器获得用户名列表

  前几天有朋友问我,说他用扫描扫到了一些漏洞,怎么利用。比如使用findoor,扫描对方服务器的SMTP服务的时候,会显示对方可以使用RCPT、VRFY、EXPN命令获得用户列表。
究竟怎么利用上面的命令来取得用户名列表呢?
我来说说吧,都是文字,我就不截图了(上次晕怕了)
一、利用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 操作失败
PCOS系统下载站:http://zhuangji.wang
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2009-10-14 21:58 | 显示全部楼层

利用SMTP服务器获得用户名列表

  前几天有朋友问我,说他用扫描扫到了一些漏洞,怎么利用。比如使用findoor,扫描对方服务器的SMTP服务的时候,会显示对方可以使用RCPT、VRFY、EXPN命令获得用户列表。
究竟怎么利用上面的命令来取得用户名列表呢?
我来说说吧,都是文字,我就不截图了(上次晕怕了)
一、利用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 操作失败
PCOS系统下载站:http://zhuangji.wang
回复 支持 反对

使用道具 举报

签到天数: 2586 天

连续签到: 5 天

[LV.Master]至尊海神IIIIII

发表于 2009-10-14 22:01 | 显示全部楼层
来学习下,谢谢楼主
PCOS系统下载站:http://zhuangji.wang
回复 支持 反对

使用道具 举报

签到天数: 981 天

连续签到: 1 天

[LV.10]逍遥海仙III

发表于 2009-10-14 23:19 | 显示全部楼层
呵呵,感谢了啊!
PCOS系统下载站:http://zhuangji.wang
回复 支持 反对

使用道具 举报

签到天数: 1050 天

连续签到: 0 天

[LV.10]逍遥海仙III

发表于 2009-10-15 02:10 | 显示全部楼层
了解下,感谢分享~
PCOS系统下载站:http://zhuangji.wang
回复 支持 反对

使用道具 举报

签到天数: 56 天

连续签到: 0 天

[LV.5]灵化蟹将I

发表于 2009-10-15 10:06 | 显示全部楼层
学习了!辛苦LZ
PCOS系统下载站:http://zhuangji.wang
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2009-10-15 10:45 | 显示全部楼层
了解下,有时间实践下嘿嘿。。
PCOS系统下载站:http://zhuangji.wang
回复 支持 反对

使用道具 举报

本版积分规则