记某网络安全设备逻辑缺陷导致的getshell

简介: 记某网络安全设备逻辑缺陷导致的getshell

写在前面

听某位师傅说cnvd的证书对就业有帮助,特别是安全厂商类型的cnvd证书含金量更高。听到这里,我便开始跃跃欲试,便有了此篇文章出现。本篇文章就来讲讲这次挖掘安全厂商产品0day通用漏洞的过程。本章中所有漏洞均已提交至cnvd并获得证书。

过程

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

然后我就用网络空间搜索引擎再次进一步收集信息,最后把目标定在了一个页面看着相对简陋的网络安全设备Web管理界面上:

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

要不就是提示我:用户名不存在!

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

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

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

可是这里却暴露了其绝对路径,这里马上便可以推断出其搭建在Windows系统上。再看看文件后缀名均为php,那么这是一个php+windows的情况。

php+windows的情况下:如果文件名+::$DATA会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,然后这里便把文件的源代码给展示了出来:

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

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

<?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,密码先随便输。然后提示我用户名不存在!

那么这里把密码换成输入dandain12345,居然成功了。这也证实了我之前的观点:不论用户名是否存在,只要随便输入一个用户名,密码输入dandain12345,最后都能够成功登录进去。

那么这里在选一个存在的用户名admin,然后密码随便输。提示我密码不正确!

这里再把密码换成输入dandain12345,也成功了,而且还是管理员权限:

最后我在管理员的权限下经过寻找可用上传点和尝试,最后成功传上去了一句话木马,并用蚁剑成功连接了

执行ipconfig

相关文章
|
1月前
|
网络协议 网络架构
|
3月前
|
Java
【思维导图】JAVA网络编程思维升级:URL与URLConnection的逻辑梳理,助你一臂之力!
【思维导图】JAVA网络编程思维升级:URL与URLConnection的逻辑梳理,助你一臂之力!
56 1
|
14天前
|
监控 安全
公司上网监控:Mercury 在网络监控高级逻辑编程中的应用
在数字化办公环境中,公司对员工上网行为的监控至关重要。Mercury 作为一种强大的编程工具,展示了在公司上网监控领域的独特优势。本文介绍了使用 Mercury 实现网络连接监听、数据解析和日志记录的功能,帮助公司确保信息安全和工作效率。
85 51
|
25天前
|
网络协议 安全 网络安全
|
29天前
|
存储 网络安全 数据安全/隐私保护
|
11天前
|
网络虚拟化 数据安全/隐私保护 数据中心
对比了思科和华为网络设备的基本配置、接口配置、VLAN配置、路由配置、访问控制列表配置及其他重要命令
本文对比了思科和华为网络设备的基本配置、接口配置、VLAN配置、路由配置、访问控制列表配置及其他重要命令,帮助网络工程师更好地理解和使用这两个品牌的产品。通过详细对比,展示了两者的相似之处和差异,强调了持续学习的重要性。
25 2
|
13天前
|
消息中间件
由于网络延迟造成逻辑锁失败的问题
【11月更文挑战第5天】本文介绍了网络延迟对逻辑锁的影响及其解决方法。逻辑锁用于控制并发访问共享资源,但在高网络延迟下,可能会导致多个客户端同时获取锁,引发数据不一致等问题。文章详细分析了锁获取、持有和释放阶段的网络延迟影响,并提出了优化网络环境、采用异步通信、使用冗余和重试机制以及调整超时设置等解决方案。
|
26天前
|
运维 监控 负载均衡
|
1月前
|
负载均衡 安全 网络安全
|
2月前
|
安全 物联网 定位技术
2G网络和基站的撤销对物联网设备的影响
2G网络和基站的撤销对物联网设备的影响是多方面的,以下是对这一影响的详细分析:
2G网络和基站的撤销对物联网设备的影响
下一篇
无影云桌面