从RCE到涉及40000名员工的LDAP数据泄露

iso60001  2109天前

22.png

几个月前,我对一家法国公司进行了一次“义务”的安全审计,收获不小。

这家公司旗下有一个主网站,你可以在上面找到公司新闻,联系方式和下载该公司的相关文件。看起来就是一个很普通的,基本上所有公司都会拥有的网站。

在我对它进行测试时,发现当网站加载某些内容,会发送Ajax请求,涉及由两个参数,如下所示,是一个获取新闻内容的请求。

33.png

具体来说,就是从后端服务器获取最新的新闻内容。

远程代码执行

从以上所示的请求可以看出,貌似涉及到后端代码中的classfunction。由此我们可以猜测,这个名为ajax的端点可以指定使用的类和方法。

于是我开始了fuzz,尝试了很多stdClass类和方法,但没有任何惊喜。

这时,我突发奇想,直接删除参数__class会怎样呢?于是,我把参数__class删除,并在__function中填入phpinfo。

44.png55.png

OK!让我们继续!

在PHP中有一个名为system的函数(https://secure.php.net/manual/fr/function.system.php),它能执行命令并返回结果。

system ( string $command [, int &$return_var ] ) : string

system函数是需要输入参数的。为此,我尝试在请求中加入函数的参数,这个参数称为__args,这是我从其他页面得到的启发。

66.png77.png

现在,我终于以执行任何UNIX命令了。接下来,我开始进一步搜索服务器,看看能不能找到更多有用的信息。

LDAP服务器

经过一番搜索,我找了配置文件,并在文件中发现了关于数据库凭证的信息,大概包含一组登录到20个数据库以及一个LDAP服务器的用户名和密码。

88.png99.png

而这个LDAP服务器吸引了我的注意。首先,让我们回忆一下什么是LDAP服务器。

LDAP(轻量级目录访问协议)是一种开放的、跨平台和行业标准的目录服务协议,可以用来实现了资源和信息的统一管理,主要通过Internet协议提供服务。

简单来说,它就是一个用户目录。用户一旦连接上去,就可以访问各种应用程序和网站。而且该目录还允许打开Windows会话。

至于为什么在网站配置文件中有LDAP的信息,应该是用来定义用户在网站的权限。

为了能在MacOS下连接到这个公司的LDAP服务器,我使用了LDAPSoft软件。

如果你能找到开源的替代方案,我会感兴趣,因为这个软件实在是不好用。

我所得到的LDAP凭证仅限于读取数据,无法修改数据。

100.png

现在,我貌似找到了40000人的敏感信息。

这些信息包括:

  • 名字和姓氏,

  • 电子邮件地址,

  • 出生日期,

  • 电话号码,

  • 明文密码(随机数…),

  • 有关RFID标签的信息,

  • 用于启动Windows会话的个人目录。

这些员工的RFID标签能让我进入公司的大楼,我还可以购买空白的RFID标签,往里输入LDAP服务器中的员工信息,从而伪造身份,进入大楼。

我知道这种标签并不昂贵,而且很容易进行编程。

短信紧急警报

我还在这个公司里发现了一个从未见过的系统,这个系统可以向公司的所有员工发送警报短信,以防外人侵入大楼或发生恐怖袭击。

最重要的是,我还在这个短信报警系统的配置文件中发现一个API密钥。

通过这个密钥,我就可以向整体公司的员工发送短信。

结论

  • 我获取40000名前雇员或雇员的信息;

  • 我可以访问大约20个数据库;

  • 我使用RFID标签进入公司大楼(?);

  • 可以获取每个用户的密码,从而深入挖掘敏感信息(?)。

随后,我通报了该公司,公司快速修补了以上安全漏洞。

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源:https://medium.com/@thbcn/from-rce-to-ldap-access-9ce4f9d2fd78

最新评论

昵称
邮箱
提交评论