Nginx "0day" 远程命令执行漏洞影响范围可能比你想得更大
2022-8-2 06:1:8 Author: 安全透视镜(查看原文) 阅读量:376 收藏

                                前言

今天晚上正在复习CISSP (国际注册信息安全专家),看到了管理身份和身份验证这一章里面提到了LDAP, 想起了前两天曝光的所谓Nginx  0day漏洞,好像和LDAP有关。于是查阅一番资料,有了点新的发现。这个漏洞影响范围可能比想象的要广,而且可能和前不久全国很多重要系统信息泄露有关联。

  • 目录

    一、什么是LDAP

    二、为什么要用LDAP

    三、Nginx与LDAP什么关系呢?

    四、为什么说这个漏洞范围影响可能更广?

一、什么是LDAP ?

按照CISSP官方指南的解释,LDAP全称是轻量级目录访问协议(Lightweight Directory Access Protocol)

目录服务是一个集中式数据库,书中将LDAP比喻为网络服务和资产的电话号码簿。用户、客户端和进程可搜索目录服务查找所需要的位置系统或资源驻留。在执行查找之前必须对目录服务进行身份验证。即使通过验证后,目录服务(LDAP)也会根据主体(用户、客户端和进程)分配的权限,显示某些信息。可以用来支持单点登录功能。

英语这玩意,不是母语,个人水平也有限,翻译起来这个语序挺怪的。通俗的来讲就是说LDAP作用就是用来做登录验证的,验证成功便会赋予用户权限所能干的事情(比如查询某些东西,只能显示某些东西)。这里说的权限不是LDAP赋予的,而且用户之前就有这个权限,LDAP只是根据用户角色权限来实现角色权限能干的事情。

LDAP 协议之前有一个 X.500 DAP 协议规范,该协议十分复杂,是一个重量级的协议,后来对 X.500进行了简化,诞生了 LDAP 协议,与 X.500 相比变得较为轻量。由 X.500 DAP -> LDAP。另外目录服务的数据库以「树形方式」存储数据

它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以目录天生是用来查询的。我想这也是Nginx 漏洞可以远程命令执行的原因之一吧。执行查询命令可能较为方便。

二、为什么要用LDAP

市场上或者开源社区上的大多产品都加入了对LDAP的支持,因此对于这类系统,不需单独定制,只需要通过LDAP做简单的配置就可以与服务器做认证交互。“简单粗暴”的统一身份认证,可以大大降低重复开发和对接的成本。

开源系统YAPI 为例配置LDAP单点登录:

{"ldapLogin": {"enable": true,"server": "ldap://l-ldapt1.ops.dev.cn0.qunar.com","baseDn": "CN=Admin,CN=Users,DC=test,DC=com","bindPassword": "password123","searchDn": "OU=UserContainer,DC=test,DC=com","searchStandard": "mail"}

}

PHP脚本作为例子访问:

1. 连接到LDAP服务器;

2. 绑定到LDAP服务器;

3. 在LDAP服务器上执行所需的任何操作;

4.释放LDAP服务器的连接;

$ldapconn = ldap_connect(“10.1.8.78")$ldapbind = ldap_bind($ldapconn, 'username', $ldappass);$searchRows= ldap_search($ldapconn, $basedn, "(cn=*)");$searchResult = ldap_get_entries($ldapconn, $searchRows);ldap_close($ldapconn);

三、Nginx与LDAP什么关系呢?

Nginx是支持配置LDAP实现登录认证的。http_auth_request 模块向 ldap‑auth 守护进程发出 HTTP 子请求,该守护进程充当中介并解释 LDAP 服务器的子请求——它使用 HTTP 与 NGINX Plus 通信,并使用适当的 API 与 LDAP 服务器通信。详细内容可参考:

https://www.nginx.com/blog/nginx-plus-authenticate-users/

以CentOS7 Nginx环境为例,集成LDAP认证实现静态网页认证

# 下载nginx-auth-ldap$ git clone https://github.com/kvspb/nginx-auth-ldap.git

配置ldap server# 修改nginx主配置$ vim /etc/nginx/nginx.conf# 注意,http里面这一段是添加在http{} 里面的。# 将下面的ldap配置,改为自己的ldap实际配置即可。http {# openldap为ldap server的名称,可以自定义ldap_server openldap {url ldap://172.18.73.129:389/dc=test,dc=com?uid?sub?(objectClass=posixAccount);binddn "cn=admin,dc=test,dc=com";binddn_passwd "admin-password";group_attribute memberOf;group_attribute_is_dn on;}}

配置说明:

url:ldap的连接url,指定dc,还有属性,和筛选过滤器。这个要根据你的ldap服务来自定义修改。

binddn:管理员dn的全名

binddn_passwd:管理员dn的密码

group_attribute 和 group_attribute_is_dn,我也没明白具体有什么用,不管怎么设置,不太影响使用,按github上默认设置也行。

require:这里是个坑,在模块的c语言源代码中,根本没有require这个参数,但github上却有这个默认的设置,删掉就好,不然启动nginx时,会报错parser_error解析错误。虽然就算报这个错误也还是能正常使用。

satisfy:这个参数在github上有,但是在源码中也是一样,并没有此参数的解析,设置后同上会报parse_error解析错误

配置到server或location中# 在nginx配置中,类似如下进行设置,在server中设置ldap认证server {listen       8000;server_name  localhost;auth_ldap "LDAP Authentication";auth_ldap_servers openldap

location / {root /usr/share/nginx/html;index index.html index.htm;}}

参数说明:

auth_ldap:这里是验证提示内容,随便自定义

auth_ldap_servers:指定上面我们设置的ldap server的名称,我上面定义的为openldap

重载生效

# 重载nginx配置生效

$ systemctl reload nginx

四、为什么说这个漏洞范围影响可能更广?

前两天不知道是圈内哪位爆出来的Nginx 0day漏洞,圈内传了几天,包括我在内很多人都觉得这个漏洞应该是4月份就出来的,但目前国内好像还没有复现出来这个漏洞。在外网查找资料时候发现下面一个一篇文章。

完整的我也就不截图了,我看这篇文章,很多公众号,博客什么的也都发过了。这也是他们漏洞情报来源依据。

但是我看很少有人关注文章下面一段话。

文章最后一段提到了一个组织叫ATW, 该组织宣称在俄乌网络战争中支持乌克兰。

自称是对抗中国和俄罗斯的黑客。多次数据泄露而闻名,尤其是那些与中国政府有关的数据。这些违规行为包括中国人民银行、中国公安部和中国科技部等公共机构。这段话是重点,回头在看看这篇文章。

标题是“Nginx 零日 RCE 漏洞是误报吗?”,作者引用ATW这个组织的话来证明Nginx RCE的存在,且已经复现。为了证实可信度,又列举了ATW组织做的一些比较出名的事情。作者在这里将Nginx 复现组织与该组织多次获取中国政府有关数据放在一起,难免不让人产生联想。这次的Nginx 漏洞有没有被ATW组织用来攻击国内,这就很难说了,毕竟人家早早就复现出来了。

这个漏洞到底影响范围有多广?

最开始大家都觉得这个漏洞利用起来肯定不容易,毕竟有条件限制,也许是对LDAP不太了解,要Nginx+LDAP加起来才能远程命令执行,影响范围肯定没有log4j那么大。

实际上能够使用LDAP做单点登录来解决多个系统登录场景是非常普遍的,Nginx在目前的web服务中应用也是非常广泛,从应用和场景角度来看,应该是会有很多大企业,政府,银行,等关键组织采用Nginx+LDAP这种架构的。我觉得如果利用起来产生的危害不比log4j小,结合之前外网出售中国公民个人隐私的情况来看。此漏洞或早已被国外黑客组织利用,用于攻击国内。

此漏洞到7月底国内才开始关注,而网上最初复现时间为4月初,漏洞四月之前有没有被境外黑客利用就不得而知。现在国际环境对我们也不好,美国也不允许漏洞通报给中国,中间3个月的时间差,足以干很多事情了。


文章来源: http://mp.weixin.qq.com/s?__biz=MzIxMTg1ODAwNw==&mid=2247491081&idx=1&sn=bc1fb55fd9695d6640bd920ee5d280ca&chksm=974fb931a038302716294b848254cd5db67860b43e5ef9248e0c3b79095565d5494f86de6461#rd
如有侵权请联系:admin#unsafe.sh