FreeSWITCH安全初探

admin 2022年11月4日10:55:17评论125 views字数 2946阅读9分49秒阅读模式




 前 言
笔者近日在日常工作中使用nmap工具进行端口扫描时偶然发现目标系统开放的某个端口中运行着FreeSWITCH组件服务,笔者此前未接触过FreeSWITCH组件,经过利用发现该组件存在的某些安全问题可能会造成远程系统命令执行,故编写文章进行记录。




 FreeSWITCH介绍

FreeSWITCH是一个开源的电话软交换平台,支持实时音视频通信及会议,支持SIP及WebRTC等多种通信协议。其主要开发语言是C,某些模块中使用了C++,以MPL1.1发布。国内外大量企事业单位的的电话客服系统中均使用了FreeSWITCH组件。

FreeSWITCH官方网站为:https://www.freeswitch.com

FreeSWITCH官方开源仓库地址为:https://github.com/signalwire/freeswitch





 FreeSWITCH环境搭建

首先依次执行下面的命令进行依赖软件包的安装

sudo apt-get install -y build-essential g++ make cmake automake autoconf git-core wget libtoolsudo apt-get install -y uuid uuid-devsudo apt-get install -y libshout-dev libmpg123-dev libsndfile-dev libedit-dev libavformat-dev libswscale-dev libpq-devsudo apt-get install -y libncurses5-dev libtiff-dev libjpeg-dev zlib1g-dev libssl-dev libsqlite3-devsudo apt-get install -y libpcre3-dev libspeexdsp-dev libspeex-dev libcurl4-openssl-dev libopus-devsudo apt-get install -y libldns-devsudo apt-get install -y libsndfile-devsudo apt-get install -y libreadline-devsudo apt-get install -y yasmsudo apt-get install -y libasound2 libasound2-devsudo apt-get install -y libopenal-devsudo apt-get install -y libaprutil1 libaprutil1-devsudo apt-get install -y libodbc1sudo apt-get install -y libmp3lame0 libmp3lame-devsudo apt-get install -y libcodec2-devsudo apt-get install -y flite flite1-devsudo apt-get install -y lua5.2 lua5.2-doc liblua5.2-devsudo ln -s /usr/lib/x86_64-linux-gnu/liblua5.2.so /usr/lib/x86_64-linux-gnu/liblua.sogit clone https://github.com/signalwire/libks.git && cd libks && cmake . && make && sudo make installgit clone https://github.com/signalwire/signalwire-c.git && cd signalwire-c && cmake . && make && sudo make install git clone https://github.com/freeswitch/spandsp.git && cd spandsp && ./bootstrap.sh -j && ./configure && make && sudo make install && sudo ldconfiggit clone https://github.com/freeswitch/sofia-sip.git && cd sofia-sip && ./bootstrap.sh -j && ./configure && make && sudo make install && sudo ldconfig

然后下载软件包

wget https://github.com/signalwire/freeswitch/archive/refs/tags/v1.10.7.tar.gz

FreeSWITCH安全初探

tar -zxvf v1.10.7.tar.gz解压

cd freeswitch-1.10.7进入目录

FreeSWITCH安全初探

解压后依次输入以下命令进行编译安装

sudo cp /usr/include/lua5.2/*.h src/mod/languages/mod_lua/./bootstrap.sh./configuremakesudo make installsudo make sounds-installsudo make moh-installsudo make mod_shout-install

安装编译完成后执行下面两条命令创建freeswitch程序启动快捷方式

ln -sf /usr/local/freeswitch/bin/freeswitch /usr/bin/ln -sf /usr/local/freeswitch/bin/fs_cli /usr/bin/

最后执行freeswitch命令即可启动FreeSWITCH,如下图所示

FreeSWITCH安全初探




 FreeSWITCH攻击面

首先使用nmap进行端口扫描

可以看到nmap扫描工具可以识别出FreeSWITCH应用

FreeSWITCH安全初探

查看官方文档,官方文档对8021端口的解释为“Used for mod_event_socket *”

FreeSWITCH安全初探

而mod_event_socket其实就是用来控制FreeSWITCH应用的一个tcp接口

FreeSWITCH安全初探

接下来通过官方文档中提供的控制命令及api接口文档,即可通过8021端口对FreeSWITCH应用进行操作

FreeSWITCH的8021控制接口默认是需要进行认证的,默认口令为ClueCon

首先需要通过nc或者telnet等工具连接目标FreeSWITCH应用的8021端口,会返回一个auth认证提示

FreeSWITCH安全初探

接下来输入auth ClueCon命令并敲击两次回车(所有命令都需要两次回车,下同),使用默认密码进行认证,返回OK提示则证明认证成功

FreeSWITCH安全初探

执行api help命令即可查询提供的所有控制命令及其作用

FreeSWITCH安全初探

如api echo 123456命令即为打印输出一个指定的字符串

FreeSWITCH安全初探

通过查看各个命令及其含义发现FreeSWITCH支持一个人api system的指令,其作用为执行系统命令

FreeSWITCH安全初探

执行下面的两条命令

api system whoamiapi system ifconfig

发现均可以成功通过FreeSWITCH执行系统命令

FreeSWITCH安全初探

通过zoomeye等网络空间搜索引擎也可以查找全世界范围内的FreeSWITCH应用暴露面

FreeSWITCH安全初探





 FreeSWITCH安全建议

1.不要将FreeSWITCH的各个控制端口映射到外部,如有需要设置白名单;

2.FreeSWITCH安装后立即修改默认口令。

FreeSWITCH安全初探

FreeSWITCH安全初探

原文始发于微信公众号(第59号):FreeSWITCH安全初探

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月4日10:55:17
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   FreeSWITCH安全初探https://cn-sec.com/archives/1390385.html

发表评论

匿名网友 填写信息