freeswitch安全问题研究-从入门到RCE

1 前言

最近接触到了freeswitch的应用,这个应用主要是通过和sip的结合来实现电话机器人。使用的也不是常规的http协议,那个如何对freeswitch的安全问题进行研究,就是本文的重点,下文会重点介绍freeswitch可能会引发的一些安全漏洞,希望能给大家一些帮助。

2 未授权访问/弱密码访问

8021是freeswitch的esl默认端口,通过该端口可以访问freeswitch控制台进行远程命令操作。

2.1 利用准备

连接控制台需要一个官方的客户端 fs_cli,mac下可以通过brew install fs_cli 直接安装该服务。

2.2 漏洞利用

在命令行执行

  • fs_cli -H 目标ip -P 8021

即可连接freeswitch

如果存在密码限制,可以尝试默认密码,执行

  • fs_cli -H 目标ip -P 8021 -p 1234

成功连接后,介绍几个命令:

  • system ,该命令可以直接通过freeswitch执行系统命令,可以直接反弹shell,获取主机权限
  • bg_system ,和system同理,但是在后台执行

2.3安全加固

以下提供2种解决方案

  • 通过acl策略限制8021端口的访问,只允许本地访问
freeswitch/autoload_configs/acl.conf.xml
freeswitch/autoload_configs/event_socket.conf.xml
  • 通过使用强密码的方式防止被登录
    同样是在freeswitch/autoload_configs/event_socket.conf.xml 文件下

2 actuator泄漏

很多freeswitch都是通过java spring boot环境部署,默认开启了actuator服务,我们可以通过构造http://url/actuator/来进行访问,如果开发者未进行设置,就可能导致未授权访问并泄漏敏感信息。这里有几个关注点:

  • heapdump接口。通过该接口可以直接导致env配置中的账号密码明文泄漏,解析heapdump推荐使用https://github.com/wyzxxz/heapdump_tool,可以对照env泄漏的key名称来进行搜索。能造成高危风险。
  • env接口。通过该接口可以获取项目配置的所有参数,如果有配置问题存在,就可能导致明文密码泄漏。可能会造成高危风险。
  • shutdown接口。通过该接口可以直接关闭服务,导致服务宕机。可能会造成高危风险。

3 旧版本漏洞

很多旧版本freewitch还有一些高危漏洞,以后有时间的话可以详细展开写一些