目录
一、引言
1、srs介绍
2、媒体流介绍
3、应用场景
二、SRS的http_api介绍、及漏洞
1、概述
2、http_api模块的作用
(1)提供HTTP API服务
(2)管理和监控SRS服务器
(3)自定义开发
三、漏洞扫描出现信息泄露的问题
1、概述
2、漏洞扫描结果
(1)漏洞说明
(2)漏洞截图
A、网站存在api接口泄露
B、网站存在该服务器接口处api泄露
3、泄露的信息
四、解决方式
1、解决方法
2、身份验证的解决方式
五、解决结果
一、引言
1、srs介绍
srs(Simple Real-Time Media Server),即简单实时媒体服务器,是一个开源的流媒体服务器软件,旨在提供高效、稳定的实时音视频服务。
它支持多种流媒体协议,包括RTMP、HLS、HTTP-FLV以及WebRTC等,能够广泛应用于多个领域。
2、媒体流介绍
RTMP(Real-Time Messaging Protocol):用于实时数据传输,支持音视频流的推送和播放,可无缝对接Adobe Flash Player和大部分直播推流软件。
HLS(HTTP Live Streaming):兼容iOS设备和现代浏览器,无需插件或Flash。
WebRTC:支持低延迟、高质量的浏览器间音视频通信。
HTTP-FLV是一种流媒体传输协议,它将音视频数据封装成FLV(Flash Video)格式,并通过HTTP(HyperText Transfer Protocol)协议传输给客户端。
3、应用场景
Srs可以应用在如下一些场景:
(1)在线教育:支持大规模在线课程直播,保证教学质量和稳定性。
(2)新闻直播:快速响应新闻事件,实现实时转播。
(3)电竞赛事:低延迟传输,确保观众不错过任何精彩瞬间。
(4)企业协作:提供高效的远程办公解决方案,包括视频会议和屏幕共享功能。
(5)社交媒体:整合到社交应用中,让用户可以轻松分享即时动态。
二、SRS的http_api介绍、及漏洞
1、概述
srs.conf 是srs流媒体服务器的一个核心配置文件,它包含了服务器运行所需的各种配置信息。是一个纯文本文件,使用类似JSON或nginx的配置文件格式,支持嵌套和注释。文件内容包含了多个配置项,每个配置项用于设置服务器的一个或多个参数。
2、http_api模块的作用
(1)提供HTTP API服务
服务访问是通过该端口,外部系统或客户端可以发送HTTP请求到SRS服务器,从而访问SRS提供的各种API接口。这些接口通常用于查询服务器状态、管理视频流(如获取流列表、踢流等)、配置服务器参数等。
(2)管理和监控SRS服务器
- 状态监控:通过HTTP API,可以实时获取SRS服务器的运行状态信息,如CPU使用率、内存占用、网络连接情况等。这对于服务器的性能监控和故障排查非常有用。
- 流管理:管理员可以通过HTTP API对SRS服务器上的视频流进行管理,包括查询流信息、踢除非法流、修改流配置等。
(3)自定义开发
API扩展是基于SRS提供的HTTP API接口,开发者可以自定义开发各种应用,如流媒体管理平台、视频直播系统等。这些应用可以通过HTTP请求与SRS服务器进行交互,实现复杂的功能。
三、漏洞扫描出现信息泄露的问题
1、概述
在一般情况下,用于监听http_api模块的端口可以直接通过http的方式被访问,有可能会造成服务器信息泄露,可能会被非法人员通过针对性的手段进行攻击。
2、漏洞扫描结果
如下图,为一个典型的漏洞扫描报告的部分。
(1)漏洞说明
(2)漏洞截图
A、网站存在api接口泄露
相关的漏洞截图如下:
(通过上图我们可以看到网站存在api接口泄露)
B、网站存在该服务器接口处api泄露
通过上图可以看到网站存在该服务器接口处api泄露
3、泄露的信息
访问API的http接口时,在网页出现泄露的信息,如下图所示:
四、解决方式
1、解决方法
要解决api接口直接被http访问的问题,有多种方法,列举如下:
(1)使用安全的身份验证方式,如基于令牌(Token)的认证,OAuth等。
(2)实施适当的访问控制策略,确保只有经过授权的用户才能访问API接口。
(3)对所有的输入数据进行有效的验证和过滤,确保输入符合预期的格式和内容。
(4)使用白名单、正则表达式等机制,对输入数据进行有效的过滤,防止恶意输入导致的安全问题,如SQL注入、XSS等。
(5)在存储时对敏感数据进行加密处理,以防止数据泄露。
(6)对API接口进行定期的安全审计和漏洞扫描,及时发现和修复潜在的安全问题。
(7)注意及时更新和升级相关的组件和库,以修复已知的安全漏洞。
(8)禁止api目录下接口其他信息泄露。
2、身份验证的解决方式
在http_api模块中,有一个名为Authentication的选项,可以开启对http_api的鉴权,详细配置如下:
http_api {enabled on;listen xxxx;…… ……auth {enabled on;username admin;password admin;}}
上述配置中,我们开启了auth的功能,并为访问api接口设置了用户名和密码。
这样一来,访问这个api接口页面需要通过用户名密码的认证,大大降低了被针对攻击的概率。
在企业进行漏洞扫描时,扫描到相关端口的访问需要认证,也可以增加服务器的安全性。
五、解决结果
配置生效后,通过浏览器访问该服务器的API接口页面,如下图所示:
可以看出,需要输入正确的用户名和密码才可以访问相关页面,漏洞被消除了。问题得到解决!
若想了解更多,文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。