suexec二进制程序是Apache HTTP服务程序软件包中的帮助工具,允许以脚本所有者的权限而不是服务程序的权限运行脚本。 suexec工具实现上存在多个漏洞,可能允许攻击者以其他用户的权限执行任意指令。 1) 补丁检查竞争条件漏洞 在获得当前目录与更改到该目录之间存在一个竞争条件;在更改到一个目录与检查该目录不是链接之间存在另一个竞争条件。在上述这些操作之间目录结构可能会发生变化,导致对攻击者所选择的任意目录执行lstat()操作。攻击者可以通过重新命名父目录或使用符号链接来利用这些漏洞。 此外在最终符号链接检查与执行目标二进制程序之间页存在一个竞争条件,目录结构可能会在这些调用之间发生变化,导致符号链接检查无效。 2) 路径检查设计错误 suexec工具使用strncmp()检查当前目录是否为文档根目录的子目录。如果目录以相同的序列开始但包含有额外内容的话,这种检查就会成功。例如,如果文档根目录为/var/www/html,则对于/var/www/html_backup和/var/www/htmleditor测试都会成功。 上述检查没有核实到CGI脚本的路径是否为正常的文件。如果路径指向了适当用户和组所有的子目录,且父目录为适当的用户和组所有,就会接受该路径。 3) 任意组Id输入验证漏洞 即使用户不是指定组的成员,suexec二进制程序也会允许从命令行参数所获得的任意用户/组值的组合。如果加载了/proc文件系统的话,攻击者就可以结合其他漏洞来利用这个漏洞。每当suexec丢弃其权限并更改UID和GID时,/proc/{PID}下的所有文件和目录都会将其所有者更改为相应的值。由于suexec进程可以无条件地更改UID和GID,因此可以很容易的创建任意UID和GID所有的文件。
suexec二进制程序是Apache HTTP服务程序软件包中的帮助工具,允许以脚本所有者的权限而不是服务程序的权限运行脚本。 suexec工具实现上存在多个漏洞,可能允许攻击者以其他用户的权限执行任意指令。 1) 补丁检查竞争条件漏洞 在获得当前目录与更改到该目录之间存在一个竞争条件;在更改到一个目录与检查该目录不是链接之间存在另一个竞争条件。在上述这些操作之间目录结构可能会发生变化,导致对攻击者所选择的任意目录执行lstat()操作。攻击者可以通过重新命名父目录或使用符号链接来利用这些漏洞。 此外在最终符号链接检查与执行目标二进制程序之间页存在一个竞争条件,目录结构可能会在这些调用之间发生变化,导致符号链接检查无效。 2) 路径检查设计错误 suexec工具使用strncmp()检查当前目录是否为文档根目录的子目录。如果目录以相同的序列开始但包含有额外内容的话,这种检查就会成功。例如,如果文档根目录为/var/www/html,则对于/var/www/html_backup和/var/www/htmleditor测试都会成功。 上述检查没有核实到CGI脚本的路径是否为正常的文件。如果路径指向了适当用户和组所有的子目录,且父目录为适当的用户和组所有,就会接受该路径。 3) 任意组Id输入验证漏洞 即使用户不是指定组的成员,suexec二进制程序也会允许从命令行参数所获得的任意用户/组值的组合。如果加载了/proc文件系统的话,攻击者就可以结合其他漏洞来利用这个漏洞。每当suexec丢弃其权限并更改UID和GID时,/proc/{PID}下的所有文件和目录都会将其所有者更改为相应的值。由于suexec进程可以无条件地更改UID和GID,因此可以很容易的创建任意UID和GID所有的文件。