原文链接
在我大二时任技术交流协会信安部部长时我曾给学弟学妹们介绍过这个关于SLMail
的缓冲区溢出漏洞,给他们讲的原因是想扩展一下他们的知识面,现在我再重新温习一下这个漏洞来跟现阶段学习的Linux缓冲区漏洞做一个对比
环境搭建
首先需要搭建实验环境,系统可选用Windows_XP
,因为Windows7及以上的系统内置了多种安全措施使得此漏洞难以利用,本实验用到的软件及下载链接如下:
其中软件的安装都按照默认安装即可,mona.py需要放到Immunity Debugger的安装目录中:\Immunity Inc\Immunity Debugger\PyCommands
至此环境配置完成,查看一下邮件的相关服务是否已经开启
netstat -nao
win+r
向运行窗口中输入services.msc
查看相关服务的状态
可以看到服务已经启动
附加进程到调试器
此时打开Immunity Debugger
,点击菜单栏中的File
选中Attach
选择如图的进程,此进程监听的端口包含110端口
附加此进程后调试器界面如下
此调试器的各个窗口我就不多介绍了,跟其他调试器大同小异
附加到进程后此进程会进入暂停状态,需要点击运行按钮使此进程正常进行
远程连接,进行FUZZ测试
程序正常运行后可以打开Kali Linux对此进程进行远程连接
我们已知此程序的PASS字段存在缓冲区溢出漏洞,现需确认产生溢出的位置,可使用脚本对不同长度的PASS字段的值进行FUZZ
测试,当socket连接失败时及代表程序崩溃,已产生溢出,也可以使用pattern_creat
产生足够长度的字符串
FUZZ脚本如下
#/usr/bin/python
#coding:utf-8
from pwn import *
payload="PASS "
len=0
while 1:
r=remote('192.168.229.134',110)
r.send("USER administrator\n")
print r.recv()
payload+="A"*200
len