Author: hip@Insight-Labs.org
廠牌: TRENDnet
型號: TV-IP422W
前言:从IP camera进入内网不在是电影上的情节了,希望带给大家有所警觉
弱点分析:
1.Arbitrary Upload Vulnerability
环境介绍:此硬件 CPU 为 ARM ,用 busybox 做为嵌入式 Linux 的文件系统管理
在我测试的环境是装上最新版Firmware
Vulnerabile File: upload.asp
这隻程序出现在2的路径:
1./upload.asp
2./admin/upload.asp
源碼:
这两隻程序都是一样调到 /cgi/debug/upload.cgi 上传功能
Upload.cgi 接受外部两个变量输入,分别为 path0、data0
而这两个变量基本上没有过任何检查,从String中可以得知一些信息
我们直接针对上传点做测试,Tatget0:上传的根目录路径为/server/cgi-bin/,直接传asp webshell看看,由下图得知上传成功,但关键的几个Founction是不支持的,于是换测试cgi backdoor
在测试过程中发现所上传的 cgi 必须符合硬件 format .如果不符合,则会发现虽然是上传成功但会无法解析导致 404 not found.
Cgi是由C编译而成,格式为:
ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), stripped
但是如果都符合格式了上传后会发现,还是404 not found!
感到有点奇怪,该不会档案目录有做白名单吗?
接着再上传一次cgi试试看,这次尝试覆盖原有的cgi,结果成功了:D
如下图
http://domain/reboot.cgi?action=asd;ls;date%3E/dev/null
btw有许多型号有一样的问题
2. TRENDnet Config.cfg Weak encryption
issue
Config.cfg档案内存放了该设备的所有config信息,且经过加密,但这个加密方法可以很简单解密,在国外也有相关的说明,但最新的Firmware貌似也没补丁!
因为硬件有支持FTP跟 SMTP等服务如有使用就会带有账号密码,存在config中且是明文存放
所以先谈他的加密方法:
先进行取反
然后进行异或,异或的值是0x6a
也就是ascii码里的’j’
所以解密就是先异或后取反就搞定了如下图:
解密程序:
decrypt.py def conf_decode(data): r = "" for c in data: x = ord(c) ^ ord('j') x = (~x)&0xff r += chr(x) return r def main(): f = open("config.cfg", 'rb+') d = open("decode.gz", 'wb+') x = f.read() y = conf_decode(x) d.write(y) f.close() d.close() if __name__ == "__main__": main()
3. SecurView Mobile (Android) Insecure Data
Storage – Plaintext password in db
File:SecurViewMobile_1.0.apk
快速分析了一下apk发现了密码储存无任何加密,下面我做了实际测试
流程:
1.开启Android 虚拟器 2.adb install SecurViewMobile_1.0.apk 3.先任意储存一笔记录 4. 进入ddms取出cameraprovider.db 5.开启 cameraprovider.db
文章原始URL: http://insight-labs.org/?p=405