freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

对邮箱系统测试的一些思考
2020-08-14 12:39:45

前言:

某次项目之后,突发奇想写一个全协议的邮箱暴破工具,与kali中的邮箱账户枚举工具配合使用更佳。(metasploit辅助模块:smtp_enum,smtp-user-enum工具)

该工具基于python3,分为6个模块,pop3,pop3S,smtp,smtps,imap,imaps。

不是每个邮箱系统都像163和QQ那么成熟,所以说,一个上线不久的邮件系统一般来说应该有以下挖掘点:

1、邮件伪造

2、账户名枚举

3、账户名密码暴力破解(基于协议层面)

0x00 邮箱伪造

这个已经老生常谈了,原因无非就是服务器没有开启SPF一类的机制,没有把域名和IP绑定在一起所导致的。

参考链接:https://www.freebuf.com/articles/database/188313.html

0x01 账户名枚举

这个挖掘点出现的原因是因为,SMTP服务器没有禁用一些特殊的命令:

参考链接:https://www.freebuf.com/articles/web/182746.html

这篇文章对账户名枚举的姿势进行了一系列的介绍。

0x02 账户名密码暴力破解

基于账户名枚举去做密码暴破的效率应该是最高的,这里我自己写了一个工具希望各位大佬多加指正。

0x03 工具模块介绍

pop3与pop3S

pop3与pop3S,使用python库为poplib

既然要保证效率和准确性,那就使用多线程和锁机制,这里的线程库使用的是threading

首先初始化函数接收的参数为邮箱地址,邮箱端口,用户名列表,密码集 合,然后对类变量进行赋值,确保能够被全局使用。

线程执行函数,先判断服务器的服务是不是开启,如果没有开启,输出错误信息。

之后判断用户名集 合与密码集 合是否为空,否则输出错误信息。

分行读取集 合中的内容,首先定义一个锁对象

定义完锁对象之后,开启同步锁,执行函数前申请锁,执行函数后释放锁。

定义pop3执行函数:

替换掉空格,新建邮箱服务器对象,进行登录,如果正确输出用户名密码信息,否则输出错误信息。

定义完函数之后,放入锁中间。

主函数中调用暴破函数,开启线程

smtp与smtps

smtp与smtps,使用python库为smtplib

smtp与pop3调用和使用过程基本一致,不同点是登录函数不一致

定义初始化:

定义线程执行函数:

定义登录函数与线程锁对象:

定义主文件调用函数:

imap与imaps

imap与imaps,使用python库为imaplib

定义初始化:

定义线程执行函数:

定义登录函数:

imap登录有两种选项,一种是正常登录,一种是MD5加密登录

定义主文件调用:

主文件中各种参数及接收参数定义

GitHub链接如下:https://github.com/shuimuLiu/MailBrust

若有错误及不足之处,希望各位大佬多加指点。

# 渗透测试 # web安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者