漏洞描述

近日Webmin被发现存在一处远程命令执行漏洞,经过分析后,初步猜测其为一次后门植入事件。

Webmin是目前功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。据统计,互联网上大约有13w台机器使用Webmin。当用户开启Webmin密码重置功能后,攻击者可以通过发送POST请求在目标系统中执行任意命令,且无需身份验证。

漏洞分析

首先分析msf给出的插件

根据插件,还原出poc如下:

当poc执行后,会向password_change.cgi发送POST请求

接下来看下password_change.cgi

位于37行到188行处,存在if-else语句

他们分别是

1、if ($wuser)

2、elsif ($gconfig{‘passwd_cmd’})

3、elsif ($in{‘pam’})

4、else

我们需要确认,程序到底进入那个if分支了

我们先print $wuser

从上图打印结果看,wuser不为空,所以这里直接进入if ($wuser)分支

在if ($wuser)分支中,首先执行encrypt_password方法,如下图红框处

encrypt_password方法位于aclacl-lib.pl

该方法的底层,调用了crypt方法,如下图,位于acl/md5-lib.pl中

传入该crypt方法的第一个参数为$passwd

打印此时passwd

可见值为 AkkuS|dir,也就是POST请求中的old参数值

encrypt_password底层调用crypt进行编码后,将计算值return,赋值给$enc,如下图

由于我们传入的pass(AkkuS|dir)并不是root用户的密码,下图红框处的eq结果为false

因此触发pass_error,系统需要把Failed to change password : The current password is incorrect这个信息反馈给用户

但是注意上图红框处,在pass_error方法的传参中,$in{’old’}被 qx/ /包裹

了解下qx/ /在perl中的用法:

qx执行外部程序,相当于“

也就是说,$in{’old’}的值会被执行。$in{’old’}就是POST中传入的old参数,可控,所以这里造成了任意代码执行漏洞。

值得注意的是,POST中的old参数,是用户修改密码时所提交的旧密码。众所周知,密码是一个字符串,而非可执行代码,这里将传入的旧密码字符串拿来执行,并非正常业务逻辑所为。

不仅如此,$in{‘old’}的值在被执行后,会拼接在$text{‘password_eold’}参数后面,一同传入pass_error中,如下图

打印$text{‘password_eold’},查看它的值

当我们的$in{’old’}传入”AkkuS|dir”时,dir执行后的返回值会拼接到The current password is incorrect后,传入pass_error

接着,在pass_error中被打印出来

这里不仅仅将用户旧密码拿来执行,更是通过pass_error,把返回值直接打印到返回值中,更加落实了被植入后门的猜测

对比官网 SourceForgegithub三个不同地方下载的Webmin代码发现,官网 SourceForge存在代码执行点,而github不存在

1、官网与SourceForge:

这里存在qx包裹的$in{‘old’}

再来看github上下载的同版本Webmin代码

Pass_error中竟然没有被qx包裹的$in{‘old’}

对比如下:

也就是说,github上下载的Webmin不存在代码执行漏洞,而官网和SourceForge上却存在

被植入后门依据

1、 将用户提交的旧密码通过qx直接执行

正常业务逻辑中旧密码为字符串,而非可执行代码,这里将密码字符串拿来直接执行,不符合逻辑

2、 将执行结果通过报错打印到返回值中

如果仅仅是执行代码,攻击者无法判断后台执行是否成功,以及无法得到执行成功后的返回值,例如”dir”、”ifconfig”这类指令,是需要看回显值的。因此,在这里通过pass_error将执行成功的返回值隐蔽的返回

3、 官网 SourceForge代码中存在漏洞,github代码中无漏洞

通过以上三点,初步猜测,Webmin代码被移植入后门

POC无需管道符

目前业界流传的poc,都是需要使用管道符 “|”的形式:

例如msf给出的poc:”AkkuS|dir ”

但是经过漏洞深入的分析发现,old中的值最终会被直接执行,因此并不需要管道符

可以构造如下poc

有大佬写了一个MSF利用模块,链接:https://www.exploit-db.com/exploits/47230

GitHub上有个Python检测脚本,链接:https://github.com/jas502n/CVE-2019-15107

Webmin官方对Webmin源代码被植入后门的解释说明:http://webmin.com/exploit.html

webmin远程命令执行漏洞(cve-2019-15107)深入分析相关推荐

  1. CVE-2019-15107 Webmin远程命令执行漏洞复现

    0X1 漏洞概述 Webmin的是一个用于管理类Unix的系统的管理配置工具,具有网络页面.在其找回密码页面中,存在一处无需权限的命令注入漏洞,通过这个漏洞攻击者即可以执行任意系统命令.它已知在端口1 ...

  2. flexpaper php 代码,FlexPaper 2.3.6 远程命令执行漏洞 附Exp

    影响版本:小于FlexPaper 2.3.6的所有版本 FlexPaper (https://www.flowpaper.com) 是一个开源项目,遵循GPL协议,在互联网上非常流行.它为web客户端 ...

  3. 【注意】关于Redis存在远程命令执行漏洞的安全公告

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 来源:CNVD漏洞平台 安全公告编号:CNTA-2019-0024 2019年7月10日,国 ...

  4. rmi远程反序列化rce漏洞_Oracle WebLogic 反序列化远程命令执行漏洞预警

    报告编号:B6-2019-041901 报告来源:360-CERT 报告作者:360-CERT 更新日期:2019-04-19 0x00 事件背景 2019年4月17日,国家信息安全漏洞共享平台(CN ...

  5. 远程执行漏洞修复方案_请马上修复!SaltStack远程命令执行漏洞

    [漏洞预警]SaltStack远程命令执行漏洞(CVE-2020-11651.CVE-2020-11652) 2020年5月3日,阿里云应急响应中心监测到近日国外某安全团队披露了SaltStack存在 ...

  6. 详述WebLogic反序列化远程命令执行漏洞的处理过程,云和恩墨技术通讯精选

    各位亲爱的用户/读者朋友们: 为了及时共享行业案例,通告共性问题,达成知识共享和提前预防,我们整理和编辑了<云和恩墨技术通讯>(5月刊),通过对过去一段时间的知识回顾和故障归纳,以期提供有 ...

  7. CVE-2019-19781 Citrix ADCNetScaler远程命令执行漏洞

    未经允许,不得擅自转载,违者必究 一.前言 @Adminxe 因为最近在刷edusrc,由此发现这个漏洞,涉及多所高校,所以过来给大家实战POC测试一波,可直接进行命令执行,Citrix产品中的漏洞使 ...

  8. 邮件传输代理Exim远程命令执行漏洞细节披露,影响全球近一半邮件服务器

    注意:是远程命令执行,不是远程代码执行 Exim是一个MTA(Mail Transfer Agent,邮件传输代理)服务器软件,该软件基于GPL协议开发,是一款开源软件.该软件主要运行于类UNIX系统 ...

  9. 【知道创宇404实验室】Oracle WebLogic远程命令执行漏洞预警

    2019年04月17日,国家信息安全漏洞共享平台(CNVD)官方发布安全公告 http://www.cnvd.org.cn/webinfo/show/4989 称Oracle WebLogic wls ...

最新文章

  1. 正则表达式测试工具 Regex Tester 的使用方法
  2. 手机AI、购物AI...还有哪个“AI+”被忽略了?
  3. 信息收集渠道:文本分享类网站Paste Site
  4. HTML最常用的字符实体
  5. css3实现烟花效果,CSS3 带颤动效果的简易烟花动效
  6. OpenGL Deferred Shading延迟阴影实例
  7. 这个黑科技小音箱,不用连蓝牙、一触即播
  8. 0 0/2 * * * ? linux文本含义,Linux基础2.0
  9. 9.霍夫变换:圆——圆的算法、投票使用技巧、优点和缺点_2
  10. 为什么Linux登录后显示“-bash-3.2#”-转
  11. 全网首发:char数组矩阵转bit的算法
  12. 简单的心形html代码,bat心形代码的简单示例
  13. Github上热搜的Java开源商城项目合集,这个是真的好
  14. springboot+nodejs+vue+Elementui网上商城购物系统
  15. 推荐几款好用的网站CMS管理系统
  16. Idea查看Java类图和接口实现关系
  17. 推荐7款珍藏已久的手机APP,非常实用
  18. 清华大学出来的工资有多高?
  19. Vue项目中实现改变屏幕尺寸重新刷新页面-计算页面尺寸
  20. 如何在 Android 上恢复删除屏幕截图/照片的四种方式

热门文章

  1. 网站 java php_做网站用java还是php
  2. beego mysql session_关于go中beego/session的小总结
  3. Tungsten Fabric SDN — 网络协议
  4. Go 语言编程 — 逻辑控制语句
  5. Ironic 裸金属管理服务的底层技术支撑
  6. STM32 中JTAG 引脚作为普通IO口设置方法
  7. Sublime Text3注册激活和部分配置
  8. Eclipse Open J9:Eclipse OMR项目提供的开源JVM
  9. SpringBoot(二):Web之Filter
  10. 分布式文件系统Fastdfs 详细安装笔记