没有合适的资源?快使用搜索试试~ 我知道了~
Cyrus IMAP Server的四个漏洞分析
1 下载量 9 浏览量
2020-03-03
23:40:49
上传
评论
收藏 34KB DOC 举报
温馨提示
试读
5页
Stefan Esser发现了Cyrus IMAP Server的四个漏洞,其中IMAPMAGICPLUS预验证远程缓冲区溢出漏洞最危险,也最容易利用。本文主要介绍对定位漏洞和触发漏洞进行分析,给出了利用程序的实现方法。
资源推荐
资源详情
资源评论
Cyrus IMAP Server 的四个漏洞分析
Stefan Esser 发现了 Cyrus IMAP Server 的四个漏洞,其中 IMAPMAGICPLUS 预验证远程缓
冲区溢出漏洞最危险,也最容易利用。本小节主要介绍对此漏洞的分析。
1 定位漏洞
通过比较 imapd.c 源文件的 Cyrus IMAP Server 2.2.8 和 2.2.9 版本,可以很快发现问题代码
出现在 imapd_canon_user 函数:
!!!!if (config_getswitch(IMAPOPT_IMAPMAGICPLUS)) {
!!!!/* make a working copy of the auth[z]id */
!!!!memcpy(userbuf, user, ulen);
!!!!userbuf[ulen] = ' ';
!!!!user = userbuf;
userbuf 是 imapd_canon_user 函数的一个局部变量,大小是 MAX_MAILBOX_NAME+1,也
就 是 491 。 user 是 imapd_canon_user 函 数 带 入 的 参 数 , 并 没 有 做 长 度 检 查 , 当
IMAPOPT_IMAPMAGICPLUS 选项打开的时候会执行 memcpy 操 作,导致栈溢出,函数返
回地址将被覆盖。在 Cyrus IMAP Server 2.2.9 版本的代码做了如下的修补:
!!!!if (config_getswitch(IMAPOPT_IMAPMAGICPLUS)) {
!!!!/* make a working copy of the auth[z]id */
!!!!if (ulen > MAX_MAILBOX_NAME) {
!!!!!!!!sasl_seterror(conn, 0, "buffer overflow while canonicalizing");
!!!!!!!!return SASL_BUFOVER;
!!!!}
!!!!memcpy(userbuf, user, ulen);
!!!!userbuf[ulen] = ' ';
!!!!user = userbuf;
可以看到这是一个非常典型的栈溢出漏洞。
2 触发漏洞
虽然很容易就找到问题代码,但重要的是找出触发该漏洞的方法。首先得安装一个存在此
漏洞的 Cyrus IMAP Server ,安装过程参见 Cyrus 的文档,本文不再详述。安装完以后
在/etc/imapd.conf 的最后加上如下行:
imapmagicplus: 1
这样就打开了 IMAPMAGICPLUS 选项,然后启动服务。user 变量就是用户输入的用户名,
那么尝试用 python 脚本登陆 Cyrus IMAP Server:
资源评论
weixin_38736011
- 粉丝: 3
- 资源: 920
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功