对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.mfbz.cn/a/775298.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

昆虫学(书籍学习资料)

包括昆虫分类(上下册)、昆虫生态大图鉴等书籍资料。

搜索+动态规划

刷题刷题刷题刷题 ​​​​​​​​​​​​​​Forgery - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路: 需要两个数组,一个数组全部初始化为".",另一个数组输入数据,每碰到一个“.”就进行染色操作,将其周围的…

Django学习第五天

启动项目命令 python manage.py runserver 图像验证码生成随机字母或者数字 import random from PIL import Image, ImageDraw, ImageFont, ImageFilterdef check_code(width120, height40, char_length5, font_fileZixunHappyBold.ttf, font_size28):code []img Image.new…

在C#/Net中使用Mqtt

net中MQTT的应用场景 c#常用来开发上位机程序,或者其他一些跟设备打交道比较多的系统,所以会经常作为拥有数据的终端,可以用来采集上传数据,而MQTT也是物联网常用的协议,所以下面介绍在C#开发中使用MQTT。 安装MQTTn…

【ARMv8/v9 GIC 系列 5.1 -- GIC GICD_CTRL Enable 1 of N Wakeup Function】

请阅读【ARM GICv3/v4 实战学习 】 文章目录 GIC Enable 1 of N Wakeup Function基本原理工作机制配置方式应用场景小结GIC Enable 1 of N Wakeup Function 在ARM GICv3(Generic Interrupt Controller第三代)规范中,引入了一个名为"Enable 1 of N Wakeup"的功能。…

图像的对数变换

对数变换在图像处理中通常有以下作用: 因为对数曲线在像素值较低的区域斜率较大,像素值较高的区域斜率比较低,所以图像经过对数变换之后,在较暗的区域对比度将得到提升,因而能增强图像暗部的细节。图像的傅里叶频谱其…

Ubuntu多显示器设置不同缩放比例

Ubuntu多显示器设置不同缩放比例 设备问题解决方案 设备 笔记本屏幕分辨率为2560 \times 1600,外接显示器的分辨率为3840 \times 2160。 问题 Ubuntu默认的显示器设置中,缩放仅能选择100%,200%,300%,400%。假…

C++中的引用——引用做函数参数

作用:函数传参时,可以利用引用的技术让形参修饰实参 优点:可以简化指针修改实参 示例: 1.值传递 运行结果: 2.地址传递 运行结果: 3.引用传递 运行结果:

ES6模块化学习

1. 回顾:node.js 中如何实现模块化 node.js 遵循了 CommonJS 的模块化规范。其中: 导入其它模块使用 require() 方法 模块对外共享成员使用 module.exports 对象 模块化的好处: 大家都遵守同样的模块化规范写代码&#xff…

一对一服务,定制化小程序:NetFarmer助力企业精准触达用户

在当今这个日新月异的数字化时代,小程序以其独特的魅力和广泛的应用场景,正逐步成为企业出海战略中的璀璨明星。NetFarmer,作为业界领先的数字化出海服务商,不仅深谙HubSpot营销自动化的精髓,更在小程序领域展现了卓越…

【UE5.3】笔记8 添加碰撞,检测碰撞

添加碰撞 打开BP_Food,添加Box Collision组件,与unity类似: 调整Box Collision的大小到刚好包裹物体,通过调整缩放和盒体范围来控制大小,一般先调整缩放找个大概大小,然后调整盒体范围进行微调。 碰撞检测 添加好碰撞…

CTF常用sql注入(二)报错注入(普通以及双查询)

0x05 报错注入 适用于页面无正常回显,但是有报错,那么就可以使用报错注入 基础函数 floor() 向下取整函数 返回小于或等于传入参数的最大整数。换句话说,它将数字向下取整到最接近的整数值。 示例: floor(3.7) 返回 3 floor(-2…

Python脚本:将Word文档转换为Excel文件

引言 在文档处理中,我们经常需要将Word文档中的内容转换成其他格式,如Excel,以便更好地进行数据分析和报告。针对这一需求,我编写了一个Python脚本,能够批量处理指定目录下的Word文档,将其内容结构化并转换…

pandas,dataframe使用笔记

目录 新建一个dataframe不带列名带列名 dataframe添加一行内容查看dataframe某列的数据类型新建dataframe时设置了列名,则数据类型为object dataframe的保存保存为csv文件保存为excel文件 dataframe属于pandas 新建一个dataframe 不带列名 df pd.DataFrame() 带…

【C++】unordered系列容器的封装

你很自由 充满了无限可能 这是很棒的事 我衷心祈祷你可以相信自己 无悔地燃烧自己的人生 -- 东野圭吾 《解忧杂货店》 unordered系列的封装 1 unordered_map 和 unordered_set2 改造哈希桶2.1 模版参数2.2 加入迭代器 3 上层封装3.1 unordered_set3.2 unordered_map 4 面…

C++基础22 字符串与字符数组及其相关操作

这是《C算法宝典》C基础篇的第22节文章啦~ 如果你之前没有太多C基础,请点击👉C基础,如果你C语法基础已经炉火纯青,则可以进阶算法👉专栏:算法知识和数据结构👉专栏:数据结构啦 ​ 目…

c++重定向输出和输出(竞赛讲解)

1.命令行重定向 在命令行中指定输出文件 指令 .\重定向学习.exe > 1.txt 效果 命令行输入和输出 指令 .\重定向学习.exe < 2.txt > 1.txt 效果 代码 #include<bits/stdc++.h> using namespace std; int n; int main(){cin>>n;for(int i=0;i<n;i…

4、SSD主控

简述 主控是个片上系统&#xff0c;由硬件和固件组成一个功能完整的系统&#xff1b;上文所述的FTL就属于主控的固件范畴。主控闪存构成了整个SSD&#xff0c;在闪存确定的情况下&#xff0c;主控就反映了各家SSD的差异。实时上各家SSD的差异也主要反应在主控上&#xff0c;毕…

VMware虚拟机Ubuntu网络有线线缆已拔出问题

1、问题描述 VMware虚拟机Ubuntu不能联网&#xff0c;打开设置中&#xff0c;网络显示“有线 线缆已拔出”。 2、查看虚拟网络连接 查看主机的网络连接&#xff0c;确保虚拟网络已启用。 3、启动虚拟机网络服务 打开主机的 ‘服务’&#xff08;winr&#xff0c;运行框中输入…

46.修复HOOK对代码造成的破坏

上一个内容&#xff1a;45.使用hook点链表实现指定跳转 以 45.使用hook点链表实现指定跳转 它的代码为基础进行修改 此代码已实现无敌与秒杀功能 HOOKPOINT.h文件里的修改 #pragma oncetypedef struct CPUINFO {unsigned eflags;unsigned edi;unsigned esi;unsigned ebp;un…