关于SMTP服务的渗透测试

关于SMTP服务的渗透测试

针对smtp服务的25端口
作渗透性测试时,可使用 smtp_enum进行用户名枚举和进行telnet IP 25(port) 连接

用户枚举 metasploit

metasploit有辅助模块smtp_enum,也可以用来枚举smtp用户名。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
直接在kali终端输入: msfconsole
msf > use auxiliary/scanner/smtp/smtp_enum
msf auxiliary(scanner/smtp/smtp_enum) > show options

Module options (auxiliary/scanner/smtp/smtp_enum):

Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target address range or CIDR identifier
RPORT 25 yes The target port (TCP)
THREADS 1 yes The number of concurrent threads
UNIXONLY true yes Skip Microsoft bannered servers when testing unix users
USER_FILE /usr/share/metasploit-framework/data/wordlists/unix_users.txt yes The file that contains a list of probable users accounts.

msf auxiliary(scanner/smtp/smtp_enum) > set rhosts 202.xx.xx.xx
rhosts => 202.xx.xx.xx
msf auxiliary(scanner/smtp/smtp_enum) > run

[*] 202.xx.xx.xx - 202.xx.xx.xx25 Banner: 220 mxt.scut.edu.cn ESMTP Postfix
[+] 202.xx.xx.xx - 202.xx.xx.xx:25 Users found: adm, avahi, avahi-autoipd, bin, daemon, fax, ftp, games, gdm, gopher, haldaemon, halt, lp, mail, news, nobody, operator, postgres, postmaster, root, sshd, sync, uucp, webmaster, www
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
爆破出以上用户名

smtp-user-enum是kali自带的枚举工具,也可以通过以下命令来枚举SMTP服务的用户帐户(sendmail)。

1
smtp-user-enum -M VRFY -u root -t IP #验证root用户是否存在

telnet连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
telnet IP Port(一般用25)
EHLO xx.com
(此时若直接进行下面的步骤,则表示存在非登录直接发送邮件的漏洞,
若无法继续,则需要auth login登录,采用base64编码进行登录,
首先输入user@xx.com的base64编码,返回334后,
输入smtp的授权码的base64编码,此时返回235即代表认证成功)
MAIL FROM:a@xx.com #qq和smtp等smtp服务该命令格式不同 mail from:<a@xx.com>
RCPT TO:b@xx.com #qq和smtp等smtp服务该命令格式不同 rcpt to:<a@xx.com>
DATA
from : a@xx.com
to : b@xx.com
subject:主题
正文
. #正文最后回车,以一个点终结,返回250即邮件发送成功
下面以smtp.163.com为例
telnet smtp.163.com 25
220 mtl-mtsp-mta05-in2 ESMTP (SMTP.com v6)

若不须登录即可发送邮件,则存在伪造邮件(钓鱼邮件)漏洞

参考链接

邮件服务返回代码含义
  • 500 格式错误,命令不可识别(此错误也包括命令行过长)

  • 501 参数格式错误

  • 502 命令不可实现

  • 503 错误的命令序列

  • 504 命令参数不可实现

  • 211 系统状态或系统帮助响应

  • 214 帮助信息

  • 220 服务就绪

  • 221 服务关闭传输信道

  • 421 服务未就绪,关闭传输信道(当必须关闭时,此应答可以作为对任何命令的响应)

  • 250 要求的邮件操作完成

  • 251 用户非本地,将转发向

  • 450 要求的邮件操作未完成,邮箱不可用(例如,邮箱忙)

  • 550 要求的邮件操作未完成,邮箱不可用(例如,邮箱未找到,或不可访问)

    • 451 放弃要求的操作;处理过程中出错
  • 551 用户非本地,请尝试

  • 452 系统存储不足,要求的操作未执行

  • 552 过量的存储分配,要求的操作未执行

  • 553 邮箱名不可用,要求的操作未执行(例如邮箱格式错误)

  • 354 开始邮件输入,以. 结束

  • 554 操作失败

  • 535 用户验证失败

  • 235 用户验证成功

  • 334 等待用户输入验证信息 for next connection

[微软关于SMTP服务的命令和定义](https://docs.microsoft.com/zh-cn/previous-versions/exchange-server/exchange-server-2000//aa996114(v=exchg.65))

参考链接:
https://www.sqlsec.com/2017/08/smtp.html