文章总结: 该文档详细介绍了网络设备漏洞挖掘的全流程,包括通过弱口令登录后台、利用未授权RCE漏洞获取权限、打包源码进行代码审计、解密加密代码、利用任意文件下载漏洞获取数据库文件,以及最终上传Webshell的方法。文档提供了具体的技术细节和操作步骤,如使用php_unscrew工具解密、编写批量解密脚本、通过SQLite数据库破解密码等实战技巧。 综合评分: 78 文章分类: 渗透测试,漏洞分析,WEB安全,实战经验,红队
网络设备通用漏洞挖掘由黑到白
轩公子谈技术
2026年4月30日 21:51 安徽
在小说阅读器读本章
去阅读
以下文章来源于我不懂安全 ,作者Vlan911
我不懂安全 .
分享挖掘漏洞小技巧,分享安全案例以及一些安全动态,分享实用技术
本文知识点:
- 通过大量的公开设备寻找弱口令,从而进入后台获取突破点
- 进入后台快速寻找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
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:轩公子谈技术 《网络设备通用漏洞挖掘由黑到白》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论