Tar解压路径绕过漏洞分析(CVE-2016-6321)

安全研究人员Harry Sintonen等发现了linux中利用tar解压时存在目录传送绕过漏洞,原始漏洞分析在此处

影响范围

  • GNU tar 1.14 to 1.29 (包含1.29)
  • Red Hat、Alpine Linux、Red Star OS等(任何使用GNU tar的linux)

漏洞原因

利用tar指令在解压压缩包时,遇到文件名为..时,会将..及之前的目录结构去掉以使得文件名变得更加安全;并且使得剩下的文件名与解压目录成相对路径,但这同样会导致安全问题。

漏洞测试

下载测试exp,以root权限执行tar指令

在根目录下解压,不指定解压文件

1
root@kali:/# tar xvf tar-poc.tar

可以发现etc/mod/../被删除后,在当前目录(根目录)下的相对地址为etc/shadow,从而得到解压后的绝对地址为/etc/shadow,导致shadow被覆盖了。

在任一目录下解压,不指定解压文件

1
root@kali:/home/wps2015# tar xvf tar-poc.tar

可以看到文件被解压到了当前目录下的etc/shadow

在任意目录下解压,指定解压目录”-C /“

1
root@kali:/home/wps2015# tar xvf tar-poc.tar -C /

可以看到/etc/shadow被覆盖成功

在任意目录下解压,指定解压文件

1
root@kali:/home/wps2015# tar xvf tar-poc.tar etc/motd/

指定解压文件也可以解压成功

总结

该漏洞需要满足较多条件,如需要较高权限(root),需要在指定目录下解压文件等。