某安全厂商产品0day通用逻辑缺陷漏洞到Getshell全过程

admin 2021年12月3日11:43:03评论114 views字数 2676阅读8分55秒阅读模式

更多全球网络安全资讯尽在邑安全

写在前面

本篇文章是挖掘某安全厂商产品0day通用逻辑缺陷漏洞到Getshell过程。过程挺奇幻的,请各位师傅耐心观看~

过程

这里首先先到目标主站进行信息收集,看看他们有哪些产品等等。

然后我就用网络空间搜索引擎再次进一步收集信息,最后把目标定在了一个页面看着相对简陋的网络安全设备Web管理界面上:
某安全厂商产品0day通用逻辑缺陷漏洞到Getshell全过程

然后这里到网上尝试寻找该安全厂商旗下这个产品的通用弱口令,费了一番功夫算是找到了,可是尝试了以后要不就是提示我密码不正确!
某安全厂商产品0day通用逻辑缺陷漏洞到Getshell全过程

要不就是提示我:用户名不存在!
某安全厂商产品0day通用逻辑缺陷漏洞到Getshell全过程

看来有可能是之前已经有人发现过该问题并提交了通用弱口令漏洞了,安全厂商可能已经修复了。这里为了验证我的观点,我便到cnvd的漏洞列表里进行高级搜索,把这家安全厂商的相关产品关键字输入进去进行查询,果然找到了该产品的弱口令漏洞信息,看来是我晚了一步啊,可惜了。那么这里我们明显不知道修复后的用户账号和相对应的密码,这里必须得开始进一步信息收集了。

经过了一些时间的信息收集,真是功夫不负有心人,我发现存在http://x.x.x.x/data,发现该路径下存在目录遍历漏洞。

某安全厂商产品0day通用逻辑缺陷漏洞到Getshell全过程

这倒给我的信息收集省下了不少的麻烦。这里直接来找找有没有敏感文件和敏感信息泄露。可是找了半天,并没有什么敏感文件,都是一些Web源代码文件。本想着既然找不到敏感文件,那么就来审计下代码,看看会不会存在有漏洞直接打进去,可是这里并不能看到源代码:

某安全厂商产品0day通用逻辑缺陷漏洞到Getshell全过程

可是这里却暴露了其绝对路径,这里马上便可以推断出其搭建在Windows系统上。再看看文件后缀名均为php,那么这是一个php+windows的情况。
php+windows的情况下:如果文件名+::$DATA会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,然后这里便把文件的源代码给展示了出来:

某安全厂商产品0day通用逻辑缺陷漏洞到Getshell全过程

那么这里就开始了代码审计。然后便在/data/login.php,即登录的文件中发现了疑点:

某安全厂商产品0day通用逻辑缺陷漏洞到Getshell全过程

这里的部分代码我展示出来:

<?php
/**
系统登录设置
*/
include(' ../ commmon/ connDb. php');
$dbQuery = new DataBaseQuery();
$userName=$_POST['userName'];
$password=$_POST['password'];
$system=$_POST['system'];
$userInfo = $dbQuery->querySing1eRow('select passward,roleld from user_info where name="' . $userName. '"' , true);
if($password == "dandain12345")
{
@session_start();
$_SESSION['userName’]=$userName;
$_SESSION['system’]=$system;
$_SESSION['roleId']=$userInfo['roleId'];
$mainMenuIds = fetchMainMenu($dbQuery,$userInfo['roleId']);
$_SESSION['mainMenulds']=$mainMenuIds;
$subMenuIds = fetchSubMenu($dbQuery,$userInfo['roleId']);
$_SESSION['subMenuIds']=$subMenuIds;
modifyXML($system) ;
echo "0";
$dbQuery->closeDb() ;
}
else
{
if(count($userInfo)==0){//用户名不存在
echo "1";
$dbQuery->closeDb() ;
return;
}else{//用户名存在
if ($userInfo['password' ] !=$password){//密码不正确
echo "2";
$dbQuery->closeDb();
return;
}else{//正确登录
@session_start();
$_SESSION['userName’]=$userName;
$_SESSION['system’]=$system;
$_SESSION['roleId']=$userInfo['roleId'];
$mainMenuIds = fetchMainMenu($dbQuery,$userInfo['roleId']);
$_SESSION['mainMenulds']=$mainMenuIds;
$subMenuIds = fetchSubMenu($dbQuery,$userInfo['roleId']);
$_SESSION['subMenuIds']=$subMenuIds;
modifyXML($system) ;
echo "0";
$dbQuery->closeDb() ;
}

这里发现if($password == "dandain12345")语句代码和下面的当用户名存在并正确登录成功的实现的代码完全一样,那么这里理论便有一个逻辑缺陷漏洞了:即不论用户名是否存在,只要随便输入一个用户名,密码输入dandain12345,最后都能够成功登录进去。

这里分析完后,马上进行尝试:
比如:随便输入一个用户名为
test,密码先随便输。然后提示我用户名不存在!
某安全厂商产品0day通用逻辑缺陷漏洞到Getshell全过程

那么这里把密码换成输入dandain12345,居然成功了。这也证实了我之前的观点:不论用户名是否存在,只要随便输入一个用户名,密码输入dandain12345,最后都能够成功登录进去。
某安全厂商产品0day通用逻辑缺陷漏洞到Getshell全过程

那么这里在选一个存在的用户名admin,然后密码随便输。提示我密码不正确!
某安全厂商产品0day通用逻辑缺陷漏洞到Getshell全过程

这里再把密码换成输入dandain12345,也成功了,而且还是管理员权限:
某安全厂商产品0day通用逻辑缺陷漏洞到Getshell全过程

最后我在管理员的权限下经过寻找可用上传点和尝试,最后成功传上去了一句话木马,并用蚁剑成功连接了
某安全厂商产品0day通用逻辑缺陷漏洞到Getshell全过程

某安全厂商产品0day通用逻辑缺陷漏洞到Getshell全过程

执行ipconfig某安全厂商产品0day通用逻辑缺陷漏洞到Getshell全过程

至此完成了这次的0day通用漏洞的挖掘。本章中所有漏洞均已提交至cnvd并获得证书。

原文来自: xz.aliyun.com

原文链接: https://xz.aliyun.com/t/9925

欢迎收藏并分享朋友圈,让五邑人网络更安全

某安全厂商产品0day通用逻辑缺陷漏洞到Getshell全过程

欢迎扫描关注我们,及时了解最新安全动态、学习最潮流的安全姿势!


推荐文章

1

新永恒之蓝?微软SMBv3高危漏洞(CVE-2020-0796)分析复现

2

重大漏洞预警:ubuntu最新版本存在本地提权漏洞(已有EXP) 



本文始发于微信公众号(邑安全):某安全厂商产品0day通用逻辑缺陷漏洞到Getshell全过程

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月3日11:43:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   某安全厂商产品0day通用逻辑缺陷漏洞到Getshell全过程https://cn-sec.com/archives/447893.html

发表评论

匿名网友 填写信息