sersync本地提权漏洞

简介:

这两天在我在做一些关于同步镜像和备份的工作。选择的软件是sersync,在使用过程中发现了sersync的一个本地提权漏洞,给大家分享一下。

项目地址:http://code.google.com/p/sersync/

项目简介:

sersync主要用于服务器同步,web镜像等功能。基于boost1.43.0,inotify api,rsync command.开发。目前使用的比较多的同步解决方案是inotify-tools+rsync ,另外一个是google开源项目Openduckbill(依赖于inotify- tools),这两个都是基于脚本语言编写的。相比较上面两个项目,本项目优点是:
  1. sersync是使用c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤(详细见附录,这个过滤脚本程序没有实现),所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。
  2. 相比较上面两个项目,sersync配置起来很简单,其中bin目录下已经有基本上静态编译的2进制文件,配合bin目录下的xml配置文件直接使用即可。
  3. 另外本项目相比较其他脚本开源项目,使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。
  4. 本项目有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则按设定时长对同步失败的文件重新同步。
  5. 本项目自带crontab功能,只需在xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次。无需再额外配置crontab功能。
  6. 本项目socket与http插件扩展,满足您二次开发的需要。

漏洞存在版本:sersync2.5 (可能以前版本也包含此漏洞)

漏洞内容:

  sersync的配置文件confxml.xml中有这样一行

 
 
  1. <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once--> 

 

 主要的功能是在同步某些文件失败的时候,生成一些命令,放到/tmp/rsync_fail_log.sh文件里面,这些命令主要功能就是再次同步本次失败的数据,timeToExecute就是设置执行rsync_fail_log.sh的时间间隔,默认是60分钟。

  现在问题出现了,由于默认这个文件放在/tmp下面,所有普通用户删除此文件,然后在伪造一个相同的文件名,里面放入一些usermod 之类的命令,将普通用户改成uid为0,然后sersync会每隔60去执行这个文件。这样就可以提权成功。

 处理的方法:

1、修改默认配置,把此文件放到其他只有root可以访问的目录

2、sersync生成此文件后,需要手工修改权限为744,此文件默认生成的时候是777权限。





本文转自 fenghao.cn 51CTO博客,原文链接:http://blog.51cto.com/linuxguest/584957,如需转载请自行联系原作者
目录
相关文章
|
安全 Linux Shell
|
安全 Linux API
Supervisord 远程命令执行漏洞(CVE-2017-11610)
Supervisord是一款Python开发,用于管理后台应用(服务)的工具,其角色类似于Linux自带的Systemd。
265 0
Supervisord 远程命令执行漏洞(CVE-2017-11610)
|
运维 安全 NoSQL
攻击你,与你有何相干!rsync你还敢这么玩?
rsync服务/命令在企业中运用非常广泛,主要是轻量、便捷、高效。在数据同步中,不管是做服务还是命令使用,都非常方便、快速。
111 0
|
Shell 开发工具 git
sudo提权
参考文献:http://zone.secevery.com/article/989https://www.anquanke.com/post/id/158511 sudo概念: sudo (Substitute User and Do 的简写)临时授权,可以临时让其以root 权限运行某个程序。
2976 0
|
Ubuntu 安全 应用服务中间件
|
安全 测试技术 Linux