Samba是一套实现SMB(Server Messages Block)协议,跨平台进行文件共享和打印共享服务的程序。 Samba对用户提交的文件路径名的处理存在远程输入验证问题,远程攻击者可以利用这个漏洞以当前登录用户权限列表、下载、上传所有有权限操作的系统文件。 每个文件路径名会传递给Samba进程,并使用unix_convert()和check_name()函数进行转换和检查,unix_convert()函数先把文件路径名由DOS格式转换为UNIX格式,然后调用unix_clean_name()函数作进一步的处理,该函数会把路径文件名中的所有\'\'//\'\'替换为\'\'/\'\',去除行首的\'\'./\'\',还会对\'\'/../\'\'作处理。check_name()对转换后的文件名进行最后的检查,并调用reduce_name(),此函数会第二次调用unix_clean_name()。其结果可导致攻击者以绝对路径的方式访问计算机的任意文件。 如传递\'\'/./////etc\'\'路径名给unix_clean_name()函数,经过处理后就会转变成\'\'/.///etc\'\',unix_convert()函数会把前面的\'\'/\'\'修剪掉,而路径名变为\'\'.///etc\'\',那么此串再次传递给unix_clean_name()函数时,就会导致最终转换为\'\'/etc\'\',这样可导致攻击者以登录用户的权限列表、下载、上传所有有权限操作的系统文件。
Samba是一套实现SMB(Server Messages Block)协议,跨平台进行文件共享和打印共享服务的程序。 Samba对用户提交的文件路径名的处理存在远程输入验证问题,远程攻击者可以利用这个漏洞以当前登录用户权限列表、下载、上传所有有权限操作的系统文件。 每个文件路径名会传递给Samba进程,并使用unix_convert()和check_name()函数进行转换和检查,unix_convert()函数先把文件路径名由DOS格式转换为UNIX格式,然后调用unix_clean_name()函数作进一步的处理,该函数会把路径文件名中的所有\'\'//\'\'替换为\'\'/\'\',去除行首的\'\'./\'\',还会对\'\'/../\'\'作处理。check_name()对转换后的文件名进行最后的检查,并调用reduce_name(),此函数会第二次调用unix_clean_name()。其结果可导致攻击者以绝对路径的方式访问计算机的任意文件。 如传递\'\'/./////etc\'\'路径名给unix_clean_name()函数,经过处理后就会转变成\'\'/.///etc\'\',unix_convert()函数会把前面的\'\'/\'\'修剪掉,而路径名变为\'\'.///etc\'\',那么此串再次传递给unix_clean_name()函数时,就会导致最终转换为\'\'/etc\'\',这样可导致攻击者以登录用户的权限列表、下载、上传所有有权限操作的系统文件。