对SRS媒体服务器进行漏洞扫描时,SRS的API模块会出现漏洞,如何修补这些漏洞的简单方法

目录

一、引言

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服务器

  1.         状态监控:通过HTTP API,可以实时获取SRS服务器的运行状态信息,如CPU使用率、内存占用、网络连接情况等。这对于服务器的性能监控和故障排查非常有用。
  2.         流管理:管理员可以通过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 微信名片”字样,就会出现我的二维码,欢迎沟通探讨


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1472808.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Qt项目:基于Qt实现的网络聊天室---注册模块

文章目录 基本页面设计创建登录界面创建注册界面优化样式完善注册类界面 客户端逻辑完善客户端增加post逻辑客户端配置管理 邮箱注册服务认证服务读取配置邮箱验证服务联调设置验证码过期封装redis操作类封装redis连接池注册功能Server端接受注册请求封装mysql连接池封装DAO操作…

Tomcat(+Servlet)笔记+代码

Tomcat安装和配置 安装在不含中文的路径,路径不能太长 Apache 官网👇 Apache Tomcat - Welcome! 配置部分 点击下图红框处,找到Tomcat安装位置 添加项目的文件 配好的话,红框这里有个猫 代码部分 新建jsp文件,里…

若依 Vue 前端分离 3.8.8 版中生成的前端代码中关于下拉框只有下拉箭头的问题

生成代码修改前 <el-form-item label"课程学科" prop"subject"><el-select v-model"queryParams.subject" placeholder"请选择课程学科" clearable><el-optionv-for"dict in course_subject":key"dict…

C++ 类和对象 构造函数

一 类的6个默认成员函数&#xff1a; 如果一个类中什么成员都没有&#xff0c;简称为空类。 例&#xff1a; #include <iostream> class Empty {// 空类&#xff0c;什么成员都没有 }; 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&a…

3086.力扣每日一题7/4 Java

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;算法练习关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 目录 思路 解题方法 时间复杂度 空间复杂度 Code 思路 首先通过循环计…

【设计模式】工厂模式(定义 | 特点 | Demo入门讲解)

文章目录 定义简单工厂模式案例 | 代码Phone顶层接口设计Meizu品牌类Xiaomi品牌类PhoneFactory工厂类Customer 消费者类 工厂方法模式案例 | 代码PhoneFactory工厂类 Java高级特性---工厂模式与反射的高阶玩法方案&#xff1a;反射工厂模式 总结 其实工厂模式就是用一个代理类帮…

NoSQL 非关系型数据库 Redis 的使用:

redis是基于内存型的NoSQL 非关系型数据库&#xff0c;本内容只针对有基础的小伙伴&#xff0c; 因为楼主不会做更多的解释&#xff0c;而是记录更多的技术接口使用&#xff0c; 关于redis的介绍请自行搜索查阅。 使用redis数据库首先先去安装&#xff0c; 楼主这里使用的是doc…

信号量(semaphore)

一、信号量简介 前面介绍的消息队列主要用于传输数据&#xff1a;任务与任务之间、任务与中断之间 在有些情况下&#xff0c;不需要传输数据&#xff0c;只需要传递状态即可 • 车开出停车位&#xff0c;你的车可以停进来了 • 课已经录制完成&#xff0c;你可以进行观看了 1.…

【一】m2芯片的mac中安装ubuntu24虚拟机集群

文章目录 1. 虚拟机配置2. 复制虚拟机2.1 修改主机名2.2 修改网络 1. 虚拟机配置 在官方网站下载好ubuntu24-arm版镜像开始安装&#xff0c;安装使用VMWare Fusion的社区免费授权版,使用一台m2芯片的mac电脑作为物理机平台。 为什么选择ubuntu24&#xff1f;因为centOS7目前已…

Android 如何通过代码实时设置EditTextView光标

背景&#xff1a;换肤框架下&#xff0c;QA进行深色浅色切换说输入框光标颜色没有改变&#xff0c;转UI结果UI说需要修改&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 本来有方法可以设置&#xff0c;但是 设置后未生效。重新进入该页面才生效&#xff01;&a…

windows电脑如何运行python的定时任务

这里需要使用&#xff1a;windows系统设置-控制面板里的计划任务 1.打开计划任务之后&#xff0c;选择&#xff1a;创建基本任务 2.填写名称&#xff0c;这里根据自己具体的项目需求填写&#xff0c;然后点击下一步。 3.选择每日&#xff0c;再点击下一步 4.设置时间&…

vue3长列表优化,使用vue-virtual-scroller实现直播间弹幕列表虚拟滚动效果

使用的组件库是&#xff1a;https://github.com/Akryum/vue-virtual-scroller 官方文档&#xff1a;vue-virtual-scroller 安装依赖 npm install --save vue-virtual-scrollernextpnpm install --save vue-virtual-scrollernextyarn add vue-virtual-scrollernext 组件导入…

简过网:教师编制报考要求和条件,都给你汇总好了!

如果你想要考教师编&#xff0c;那么在考试之前你先要明白这些知识&#xff01; ​ 一、什么是教师编&#xff1f; 在编教师拥有的编制为事业编&#xff0c;即在编老师为事业单位工作人员 二、考教师编需要什么条件&#xff1f; 1、普通话 语文学科普通话要求达到二级甲等及…

重定向与转发

转发参数不会自动包含在新的请求中。若要将参数传递给重定向地址&#xff0c;可以在服务器端显式地添加参数到重定向URL中。 在重定向URL中包含参数 import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; impor…

Python + 在线 + 文生音,音转文(中文文本转为英文语音,语音转为中文文本)

开源模型 平台&#xff1a;https://huggingface.co/ars-语言转文本: pipeline("automatic-speech-recognition", model"openai/whisper-large-v3", device0 ) hf: https://huggingface.co/openai/whisper-large-v3 github: https://github.com/openai/wh…

JAVA--JSON转换工具类

JSON转换工具类 import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackso…

C++:特殊类的设计(无线程)

目录 一、设计一个不能拷贝类 二、设计一个只能在堆上创建对象的类 方法一&#xff1a;析构函数私有化 方法二&#xff1a;构造函数私有化 三、设计一个只能在栈上创建对象的类 四、设计一个类不能被继承 五、设计一个只能创建一个对象的类&#xff08;单例模式&#xf…

【MySQL】mysql访问

mysql访问 1.引入MySQL 客户端库2.C/C 进行增删改3.查询的处理细节4.图形化界面访问数据库4.1下载MYSQL Workbench4.2MYSQL Workbench远程连接数据库 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&a…

通过端口和进程pid查找启动文件/脚本

今天审计一个程序又让GPT给我上了一课&#xff0c;记一下笔记&#xff1a; 1、首先该程序开启了8080端口&#xff0c;使用如下命令得到pid为1817 netstat -tunlp|grep 80802、使用pid得到父进程 pstree -ps 1817输出结果如下&#xff1a; 3、看出程序是由systemd启动的&…

[单master节点k8s部署]19.监控系统构建(四)kube-state-metrics

kube-state-metrics 是一个Kubernetes的附加组件&#xff0c;它通过监听 Kubernetes API 服务器来收集和生成关于 Kubernetes 对象&#xff08;如部署、节点和Pod等&#xff09;的状态的指标。这些指标可供 Prometheus 进行抓取和存储&#xff0c;从而使你能够监控和分析Kubern…