CVE-2016-1247:Debian/Ubuntu发行版Nginx本地提权漏洞

Nginx是一个高性能的HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,其特点是占有内存少,并发能力强。

漏洞发现人:Dawid Golunski

CVE编号  :CVE-2016-1247

发行日期  :15.11.2016

安全级别  :

漏洞描述


Debian、Ubuntu发行版的Nginx在新建日志目录的时,使用了不安全的权限,因此本地恶意攻击者可以从nginx/web用户权限(www-data)提升到ROOT。

漏洞概要


Debian发行版的Nginx本地提权漏洞,该漏洞已经在1.6.2-5+deb8u3中修复

因为该漏洞细节是在官方修复后公布的,因此请低版本的Debian/ubuntu用户及时更新补丁:

补丁修复情况:

Debian: 在Nginx 1.6.2-5+deb8u3中修复

Ubuntu:

Ubuntu 16.04 LTS: 在1.10.0-0ubuntu0.16.04.3中修复

Ubuntu 14.04 LTS: 在1.4.6-1ubuntu3.6中修复

Ubuntu 16.10: 在1.10.1-0ubuntu1.1中修复

漏洞细节


基于Debian系统默认安装的Nginx会在下面的路径使用下面的权限新建Nginx日志目录

root@xenial:~# ls -ld /var/log/nginx/
drwxr-x--- 2 www-data adm 4096 Nov 12 22:32 /var/log/nginx/
root@xenial:~# ls -ld /var/log/nginx/*
-rw-r----- 1 www-data adm 0 Nov 12 22:31 /var/log/nginx/access.log
-rw-r--r-- 1 root root 0 Nov 12 22:47 /var/log/nginx/error.log

我们可以看到/var/log/nginx目录的拥有者是www-data,因此本地攻击者可以通过符号链接到任意文件来替换日志文件,从而实现提权。

攻击者通过符号链接替换了日志文件后,需要等nginx daemon重新打开日志文件,因此需要重启Nginx,或者nginx damon接受USR1进程信号。

这里亮点来了,USR1进程信号会在默认安装的Nginx通过logrotate脚本调用的do_rotate()函数自动触发。

--------[ /etc/logrotate.d/nginx ]--------

/var/log/nginx/*.log {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
[...]
do_rotate() {
start-stop-daemon --stop --signal USR1 --quiet --pidfile $PID --name $NAME
return 0
}
[...]

漏洞验证截图

我们可以看到logrotation脚本会在corn中每天6:25AM自动调用,因此如果/etc/logrotate.d/nginx已经设置了'daily'日志回滚,攻击者将在不需要任何系统管理员交互的情况下,在24小时内实现提权到ROOT


CVE-2016-1247:Debian/Ubuntu发行版Nginx本地提权漏洞

POC


文件链接: https://www.debian.cn/files/CVE-2016-1247.POC.sh


修复方案

升级为最新的Nginx软件包

https://www.debian.org/security/2016/dsa-3701

https://www.ubuntu.com/usn/usn-3114-1/

参考链接


http://legalhackers.com/advisories/Nginx-Exploit-Deb-Root-PrivEsc-CVE-2016-1247.html

中文版链接:http://bobao.360.cn/learning/detail/3195.html

继续阅读
avatar
  • 本文由 发表于 2016年11月17日
  • 除非特殊声明,本站文章许可协议为"署名-非商用-相同方式共享 4.0",转载请保留原链、作者等信息。
Google 开源漏洞扫描系统 Tsunami 安全

Google 开源漏洞扫描系统 Tsunami

谷歌已宣布将其内部使用的 Tsunami 漏洞扫描程序进行开源,以帮助其他组织保护用户数据。Tsunami 将不会成为谷歌的正式品牌产品,而是由开源社区以类似于管理 Kubernetes(另一种谷歌内...
K8S中Pod的四个阶段及状态分析 运维架构

K8S中Pod的四个阶段及状态分析

Kubernetes 中, pod 从创建到成功运行会分别处于不同的阶段,每个阶段又分为不同的状态,本文将简单介绍这个环节。 在 K8S 源码中,使用了 PodPhase 这个变量定义这几个阶段信息,...
Saltstack极高危漏洞: 可获取master权限 安全

Saltstack极高危漏洞: 可获取master权限

这两天开源配置管理工具 saltstack 爆出了CVSS得分为10分的漏洞。如果你对CVSS的评分没有概念,那么前几年震惊互联网的 openssl心脏滴血漏洞,CVSS base评分是5.0,由此可...
avatar
已有 1 条评论
  1. avatar admin

    这个有点扯了,默认情况下就有条件限制,比如 www-data 用户无shell

    2016年11月17日 19:29 回复