首页 > 其他分享 >墨者学院—Webmin未经身份验证的远程代码执行漏洞

墨者学院—Webmin未经身份验证的远程代码执行漏洞

时间:2023-12-07 20:45:05浏览次数:29  
标签:cgi 身份验证 Webmin 漏洞 代码执行 POST nuist

一、概述

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

  2019年8月10日,在pentest上发布了Webmin CVE-2019-15107远程代码执行漏洞。

  该漏洞由于password_change.cgi文件在重置密码功能中存在一个代码执行漏洞,该漏洞允许恶意第三方在缺少输入验证的情况下而执行恶意代码,后经知道创宇404实验室发现,该漏洞的存在实则是sourceforge上某些版本的安装包和源码被植入了后门导致的。

  靶场地址:https://www.mozhe.cn/bug/detail/d01lL2RSbGEwZUNTeThVZ0xDdXl0Zz09bW96aGUmozhe

 

二、解题

    1、打开靶机,看到的是一个POST提交登录界面。对于POST表单提交,我们首先想到的是抓包分析。

  随便输入账号密码,通过burp,获得图中的数据包

 

 

2、在这里我们能看到,页面数据显示为**/session_login.cgi**,而漏洞复现资料里是**/password_change.cgi**,所以在这里要进行修改,对提交的**user=&pass=**进行修改,利用百度漏洞资料中的poc进行模仿构造自己的语句。

user=nuist&pam=1&expired=2&old=nuist|pwd&new1=nuist&new2=nuist

 

3、这里我在POST提交时插入了pwd命令,让我们放包来看看会出现什么。

 

4、这时果然出现了当前所在目录为 /usr/share/webmin/acl。

到这一步为止,说明我们的操作没有问题,所有的问题都迎刃而解了,我们只需要看到看到根目录下的key就完成了。

 

5、最后,直接执行命令查看根目录下key.txt

user=nuist&pam=1&expired=2&old=nuist|cat /key.txt&new1=nuist&new2=nuist

 

成功拿到flag:mozhe778171c9d938bee647b5b766d6e。

 

三、总结

  1.在解题中,并不是第一时间就能找到思路的,在遇到POST提交登陆时,我第一时间想到了POST万能密码登陆的SQL漏洞,后来发现根本行不通,在上网查找之后,才知道了漏洞的位置。

  2.该漏洞存在于password_change.cgi,而不是一开始抓包中的/session_login.cgi,所以要留意每一个细节。

  这里贴上漏洞发现者创宇404实验室的博客,方便大家深入了解:https://blog.csdn.net/qq_43380549/article/details/100011292

 

标签:cgi,身份验证,Webmin,漏洞,代码执行,POST,nuist
From: https://www.cnblogs.com/qianz/p/17883900.html

相关文章

  • IIS 漏洞Http.sys 远程代码执行
     漏洞描述弱点描述:在微软4月14日补丁日发布的补丁中,有一个针对IIS服务器的远程代码执行漏洞危害非常大,安恒信息提醒广大用户注意。漏洞信息远程执行代码漏洞存在于HTTP协议堆栈(HTTP.sys)中,当HTTP.sys未正确分析经特殊设计的HTTP请求时会导致此漏洞。成......
  • hive身份验证
    Hive通过HiveServer2对外提供服务,HiveServer2是一种能使客户端执行Hive查询的服务。HiveServer2实现了一个新的基于Thrift的RPC接口,该接口可以处理客户端并发请求。当前版本支持Kerberos,LDAP以及自定义可插拔身份验证。新的RPC接口也是JDBC和ODBC客户端更好的......
  • SQL Server使用Windows身份验证模式安装后,重新设置SA密码
    首次安装SQLServer使用Windows身份验证模式安装后,要重新设置自带用户SA的密码(1)右键数据库--》属性(2)安全性-->勾选“SQLserver和Windows身份认证模式(S)”(3)数据库下“安全性”-->“登录名”-->“sa”-->"属性"(4)直接输入需要设置的密码(5)给sa用户设置权限,在“服务器角色”设置为public......
  • JetBrains TeamCity 任意代码执行漏洞(CVE-2023-42793)研究
    一、JetBrainsTeamCity简介TeamCity是一款由JetBrains开发的强大的持续集成(ContinuousIntegration,CI)和持续部署(ContinuousDeployment,CD)工具。它帮助开发团队自动化构建、测试和部署过程,以确保软件项目的质量和快速交付。TeamCity的主要特点和优势包括:灵活的构建配......
  • setTimeout可以将字符串当成代码执行,类比eval函数。当遇到setTimeout或者SetInterval,
    请问以下JS代码的输出顺序是?letdate=newDate()setTimeout(()=>{console.log('1')},2000)setTimeout('console.log(2)',1000);setTimeout(function(){console.log('3')},1500);while((newDate()-date)<3000){}A报错B......
  • 零信任模型与多因素身份验证的重要性
    近年来,随着技术的迅速发展,数据和工作变得比以往更数字化。虽然这为许多机会打开了大门,但也为威胁行为者提供了新的入侵机会。因此,预防数据泄漏已经成为每个组织IT基础设施的重要组成部分。因此,预防数据泄漏已经成为每个组织IT基础设施的重要组成部分。 快速变化且充满挑战的......
  • 以下代码执行后,result 的值为 [“75team2017”]
    varresult="75team2017".match(/\d+\w*/g);match()方法检索返回一个字符串匹配正则表达式的结果,匹配成功则返回数组,失败则返回null。在正则表达式中,\d表示匹配数字0-9,+表示匹配前面字符一次或者多次,\w表示匹配字母、数字或者下划线,表示匹配前面字符0次或者多次,修饰符g表示全......
  • 以下代码执行后,输出结果为 抛出ReferenceError
    letx=10;letfoo=()=>{console.log(x);letx=20;x++;}foo();使用let声明的变量,既不会发生变量提升,同时又存在“暂时性死区”,所以在块级作用域内,如果使用let声明一个变量,那么该变量在声明之前是不可用的,否则会抛出ReferenceError异常一楼的回答说:”l......
  • 1. 客户端代码执行流程
    目录1.GIT拉取客户端代码2.tf配置文件结构2.1backend.tf配置terraform状态文件存储在哪(localAWSS3...)2.2main.tfterraform入口文件2.3provider.tf配置terraform供应商2.4terraform.tfvars以及variables.tf配置变量2.5总结1.GIT拉取客户端代码https://wwwin-......
  • Java 静态代码块、代码块、构造方法和多态继承的代码执行顺序
    测试代码importlombok.Getter;publicclassExecutionOrder{{System.out.println("ExecutionOrdercode0");}static{System.out.println("ExecutionOrderstaticcode");}{System.out.println(&......