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还有一些高危漏洞,以后有时间的话可以详细展开写一些