网络设备通用漏洞挖掘由黑到白

admin 2026-05-04 04:31:07 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细介绍了网络设备漏洞挖掘的全流程,包括通过弱口令进入后台、利用未授权RCE漏洞获取权限、打包源码后进行代码审计、解密加密代码、组合利用任意文件下载漏洞获取数据库文件,最终实现webshell上传的全套技术方案。 综合评分: 75 文章分类: 漏洞分析,渗透测试,WEB安全,代码审计,实战经验


cover_image

网络设备通用漏洞挖掘由黑到白

原创

Vlan911 Vlan911

我不懂安全

2026年4月30日 10:47 北京

在小说阅读器读本章

去阅读

本文知识点:

  • 通过大量的公开设备寻找弱口令,从而进入后台获取突破点
  • 进入后台快速寻找RCE漏洞,获取更高权限
  • 打包源码,实现白盒代码审计
  • 代码加密,如何解密
  • 获取不需要权限的任意文件下载漏洞,组合拳获得数据库文件
  • 还原加密效果,上传可被系统解析的webshell

首先随便输入个密码,然后查看返回包,通过错误密码发现里面的特殊关键字

这种情况可以直接筛选返回包不存在“Authentication failed”关键字的,即可认为他登录成功,虽然有误报的可能,但是机会还是很大的;将所有的目标资产收集好以后,批量测试一下密码admin的弱口令,成功的发现了几个存在弱口令的目标

而后登录进行,快速的定位到了一个RCE漏洞,这块也是老演员了,很多网络设备的命令注入漏洞都在这里

运气很好,这块还是个未授权

看了下固件版本号,发现版本应该是最新的,也可能是次新的,但是经过批量测试发现效果反响平平,不是所有设备都存在这个漏洞,不排除修复的可能,但是我猜测更多的是这里的未授权修复了,因为我批量测试的时候是利用未授权的方式进行测试的

利用tar指令将源码进行备份打包,而后存放到web目录即可下载,下载到本地后,发现代码是MVC架构,但是又不全是,上面发现的ping功能的代码很显然就不符合,奇奇怪怪的

定位到代码打开查看,发现代码加密了

通过PM9SCREW能大致推测出加密方法,screw加密,这个项目在github是有的,想要解密文件需要找到他的加密密钥和加密的长度,这个东西其实藏在 php_screw.so  文件里,想要找到这个文件,要不就是在他的phpinfo里找到 extension-dir 目录,要不就通过find指令直接搜索,正好这里有命令注入,通过命令注入漏洞可以进行检索

利用cp指令将so文件拷贝到web目录而后下载,并使用ida打开进行分析

也可以下载工具https://github.com/DaBoQuan/php_unscrew

将文件解压到kali里,然后编译,这个工具也可以获取key和length

g++ unscrew.cpp -o unscrew -lz

objdump -s -j .data php_screw.so

objdump -s -j .rodata php_screw.so

./unscrew config.php 10 e1xxxxxxxxxxxxx

 编写shell脚本,批量对php文件进行解密

#!/usr/bin/env bash

set -o nounset
set -o pipefail

UNSCREW="./unscrew"
KEY="10"
MODE="xxxxxx"

# 确认 unscrew 存在
if [[ ! -x "$UNSCREW" ]]; then
    echo "[!] unscrew not found or not executable"
    exit 1
fi

# 遍历当前目录及子目录所有 php 文件
find . -type f -name "*.php" ! -name "*_decode.php" | while read -r file; do
    out="${file%.php}_decode.php"

    # 跳过已解密的
    if [[ -f "$out" ]]; then
        echo "[SKIP] $out already exists"
        continue
    fi

    echo "[+] Decoding: $file"

    if "$UNSCREW" "$file" "$KEY" "$MODE" > "$out" 2>/dev/null; then
        if [[ -s "$out" ]]; then
            echo "    -> OK: $out"
        else
            echo "    -> FAIL (empty output)"
            rm -f "$out"
        fi
    else
        echo "    -> ERROR"
        rm -f "$out"
    fi
done

此时再次查看漏洞接口代码,发现程序从请求里获取hostname,然后拼接到cmd变量里执行sudo指令,最后利用popen完成实际执行步骤,因此这里有回显并且存在系统命令注入风险;

同时在此接口里没有任何对session的校验,因为不需要认证即可完成命令执行;

代码拿到手了,还是希望能想办法拿下更多的漏洞,于是先看了下代码的登录逻辑,发现这个程序的数据库是sqllite

可以看到,通过用户名获取对应密码,然后进行md5编码,与sqllite数据库里的值进行比较,所以下一步就是如何能获取这个数据库?

通过进一步的代码审计,发现了一处不需要认证的任意文件下载漏洞

很好,非常的光棍,让我们验证一下漏洞效果

把文件下载到本地后,利用navicat打开

而后只需要解密md5即可获取admin用户的密码,这样就能做到登录效果了,这么做的原因是因为有一些漏洞是做了认证的,只有经过认证才能进行漏洞利用,比如这个注入漏洞

因为后边发现了一些漏洞是需要认证才能用的,所以获取密码是有必要的,获取密码后构造登录数据包获取session值,而后就可以针对一些其他型号的设备进行测试,扩大攻击面,代码就不展示了

后发现的漏洞不多,就很尴尬,因为这几个洞都能黑盒测出来,可能是运气成分,接下来说一下如果想上传webshell想解析,应该怎么做

首先在github下载项目https://codeload.github.com/Luavis/php-screw/zip/refs/heads/master

apt-get install php-dev

phpize    #编译环境

./configure

修改密钥和长度

进入到tools目录进行编译

加密info文件

参考:https://www.cnblogs.com/StudyCat/p/11268399.html


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:我不懂安全 Vlan911 Vlan911《网络设备通用漏洞挖掘由黑到白》

评论:0   参与:  0