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 可以透过 http://domain/backup.cgi 下载取得

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

源链接

Hacking more

...