SMTP协议25端口渗透测试记录

记录了最底层的邮件伪造漏洞的复现

简介

SMTP 为邮件协议,默认端口 25。经常用来邮箱伪造,钓鱼攻击。
还有流行的SMTP 账号信息泄露。如 github,oschina的码云 上的源码托管中的信息泄露。

建立TCP连接

知道了邮件服务器的地址,就可以与它建立 TCP 连接了。SMTP 协议的默认端口是25。使用 Telnet 或 Netcat 命令,都可以连接该端口。

Bash
$ telnet xxxx.com 25 #widnows下测试
# 或者
$ nc xxxxx.com 25   #Linux下测试
  
  
  • 1
  • 2

服务器返回220状态码,就表示连接成功。

Bash
220 MAIL-SERVER Winmail Mail Server ESMTP ready
  
  

    接下来,就可以使用 SMTP 协议的各种命令与邮件服务器交互了。

    HELO 命令和 EHLO 命令

    SMTP 协议规定,连接成功后,必须向邮件服务器提供连接的域名,也就是邮件将从哪台服务器发来。

    Bash
    HELO xxxx.com
      
      

      邮件服务器返回状态码250,表示响应成功。

      250 MAIL-SERVER Winmail Mail Server
        
        

        HELO命令现在比较少用,一般都使用EHLO命令。
        邮件服务器收到EHLO命令以后,不仅会返回250状态码,还会返回自己支持的各种扩展的列表

        Bash
        250-MAIL-SERVER Winmail Mail Server
        250-AUTH LOGIN PLAIN
        250-SIZE 20971520
        250 8BITMIME
          
          
        • 1
        • 2
        • 3

        MAIL FROM 命令

        连接者要使用MAIL FROM命令,向邮件服务器提供邮件的来源邮箱

        Bash
        MAIL FROM:admin@xxxx.com  #伪造管理员身份来发邮件
          
          

          上面代码表示,连接者将从admin@xxxxx.com向邮件服务器发送邮件。邮件服务器返回250状态码,表示响应成功。

          Bash
          250 ok
            
            

            RCPT TO 命令

            使用RCPT TO命令,验证邮件地址是否存在。如果查询的是一个真实的 Email 地址,邮件服务器就会返回250状态码。验证邮箱存在的话,还可以给这个接受者邮箱发送邮件。

            Bash
            RCPT TO:admin@xxxxx.com
            250 ok
              
              
            • 1

            一般来说,状态码 250 和 251 都表示邮箱存在,状态码 5xx 表示不存在,神马影院其他状态码(主要是 4xx)则代表无法确认。

            DATA 伪造邮箱数据

            使用DATA命令来伪造邮箱内容,客户端告诉服务器自己准备发送邮件正文
            服务器返回354,表示自己已经作好接受邮件的准备

            Bash
            DATA
            354 go ahead, end data with CRLF.CRLF
              
              
            • 1

            输入邮件伪造正文

            英文状态的双引号来修饰正文,正文结束后,发送结束符.表明正文的结束。

            Bash
            "这是一个邮件伪造测试"
            .
            250 ok message accepted for delivery
              
              
            • 1
            • 2

            如果合理,服务端返回250表示成功

            退出TCP连接

            邮件发送结束,客户端请求断开连接后,使用QUIT命令关闭 TCP 连接。
            服务器返回211,提示断开申请被采纳,并主动断开连接,整个邮件发送过程结束。

            Bash
            QUIT
            221 MAIL-SERVER Winmail Mail Server
            Connection closed by foreign host.
              
              
            • 1
            • 2

            完整的流程图

            Markdown

            • 0
              点赞
            • 0
              收藏
              觉得还不错? 一键收藏
            • 0
              评论

            “相关推荐”对你有帮助么?

            • 非常没帮助
            • 没帮助
            • 一般
            • 有帮助
            • 非常有帮助
            提交
            评论
            添加红包

            请填写红包祝福语或标题

            红包个数最小为10个

            红包金额最低5元

            当前余额3.43前往充值 >
            需支付:10.00
            成就一亿技术人!
            领取后你会自动成为博主和红包主的粉丝 规则
            hope_wisdom
            发出的红包
            实付
            使用余额支付
            点击重新获取
            扫码支付
            钱包余额 0

            抵扣说明:

            1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
            2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

            余额充值