FreeSWITCH是一个开源的电话软交换平台,支持实时音视频通信及会议,支持SIP及WebRTC等多种通信协议。其主要开发语言是C,某些模块中使用了C++,以MPL1.1发布。国内外大量企事业单位的的电话客服系统中均使用了FreeSWITCH组件。
FreeSWITCH官方网站为:https://www.freeswitch.com
FreeSWITCH官方开源仓库地址为:https://github.com/signalwire/freeswitch
首先依次执行下面的命令进行依赖软件包的安装
sudo apt-get install -y build-essential g++ make cmake automake autoconf git-core wget libtool
sudo apt-get install -y uuid uuid-dev
sudo apt-get install -y libshout-dev libmpg123-dev libsndfile-dev libedit-dev libavformat-dev libswscale-dev libpq-dev
sudo apt-get install -y libncurses5-dev libtiff-dev libjpeg-dev zlib1g-dev libssl-dev libsqlite3-dev
sudo apt-get install -y libpcre3-dev libspeexdsp-dev libspeex-dev libcurl4-openssl-dev libopus-dev
sudo apt-get install -y libldns-dev
sudo apt-get install -y libsndfile-dev
sudo apt-get install -y libreadline-dev
sudo apt-get install -y yasm
sudo apt-get install -y libasound2 libasound2-dev
sudo apt-get install -y libopenal-dev
sudo apt-get install -y libaprutil1 libaprutil1-dev
sudo apt-get install -y libodbc1
sudo apt-get install -y libmp3lame0 libmp3lame-dev
sudo apt-get install -y libcodec2-dev
sudo apt-get install -y flite flite1-dev
sudo apt-get install -y lua5.2 lua5.2-doc liblua5.2-dev
sudo ln -s /usr/lib/x86_64-linux-gnu/liblua5.2.so /usr/lib/x86_64-linux-gnu/liblua.so
git clone https://github.com/signalwire/libks.git && cd libks && cmake . && make && sudo make install
git 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 ldconfig
git 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
tar -zxvf v1.10.7.tar.gz解压
cd freeswitch-1.10.7进入目录
解压后依次输入以下命令进行编译安装
sudo cp /usr/include/lua5.2/*.h src/mod/languages/mod_lua/
./bootstrap.sh
./configure
make
sudo make install
sudo make sounds-install
sudo make moh-install
sudo 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,如下图所示
首先使用nmap进行端口扫描
可以看到nmap扫描工具可以识别出FreeSWITCH应用
查看官方文档,官方文档对8021端口的解释为“Used for mod_event_socket *”
而mod_event_socket其实就是用来控制FreeSWITCH应用的一个tcp接口
接下来通过官方文档中提供的控制命令及api接口文档,即可通过8021端口对FreeSWITCH应用进行操作
FreeSWITCH的8021控制接口默认是需要进行认证的,默认口令为ClueCon
首先需要通过nc或者telnet等工具连接目标FreeSWITCH应用的8021端口,会返回一个auth认证提示
接下来输入auth ClueCon命令并敲击两次回车(所有命令都需要两次回车,下同),使用默认密码进行认证,返回OK提示则证明认证成功
执行api help命令即可查询提供的所有控制命令及其作用
如api echo 123456命令即为打印输出一个指定的字符串
通过查看各个命令及其含义发现FreeSWITCH支持一个人api system的指令,其作用为执行系统命令
执行下面的两条命令
api system whoami
api system ifconfig
发现均可以成功通过FreeSWITCH执行系统命令
通过zoomeye等网络空间搜索引擎也可以查找全世界范围内的FreeSWITCH应用暴露面
1.不要将FreeSWITCH的各个控制端口映射到外部,如有需要设置白名单;
2.FreeSWITCH安装后立即修改默认口令。
原文始发于微信公众号(第59号):FreeSWITCH安全初探
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论