ღ Miranda

Serv-U FTPd Server 5.0 MDTM Command Buffer Overflow

Serv-U 5.0版本的MDTM命令缓冲区溢出漏洞利用。

漏洞验证

系统为windows xp sp3,假设ftp服务器地址为192.168.134.128,用户名密码都为test,尝试在MDTM命令的时间参数输入超长的变量:

发现服务已经崩溃,然后用immunity debugger附加ServUDaemon调试,再次发送发现:

在这句时ESI=41414142,引发了异常,查看SEHchian发现:

异常处理函数地址被覆盖,所以我们间接控制了EIP,通过异常转到异常处理函数。

漏洞利用

通过定位发现payload布局为:

在xp下需要把sehhandler覆盖为pop pop ret的地址,用mona插件我们可以找到很多地址,我随便选择了0x10060f97这个地址,nextseh里填上跳转指令调到后面的shellcode,这里有一个问题就是这里的缓冲区有长度限制,放不下shellcode,这里需要使用egghunt技术,由于文件名长度没有限制,可以放得下shellcode,所以可以在others里存放egghunt代码,把shellcode放在文件名参数中。

这里我一开始使用弹出计算器的shellcode,始终弹不出来,最后用procexp.exe监视进程,发现其实在ServUDaemon下确实创建了calc.exe子进程,服务关闭后仍然存在calc.exe进程,但不显示,所以我使用了exploit-db上的shellcode,开启服务器的53端口等待连接。

脚本如下:

运行:

发表评论

电子邮件地址不会被公开。