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

初步分析

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

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

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

etc git:(master) ✗ ls -al
total
drwxrwxrwx root wheel .
drwxrwxrwx root wheel ..
-rwxrwxrwx root wheel fstab-rwxr-xr-x root wheel icon.ico-rwxrwxrwx root wheel inittabdrwxrwxrwx root wheel rc.d
lrwxrwxrwx root wheel : resolv.conf -> ../var/etc/resolv.conf

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

➜  etc git:(master) ✗ cd rc.d➜  rc.d git:(master) ✗ ls -altotal 8drwxrwxrwx   root  wheel        .
drwxrwxrwx root wheel ..
-rwxrwxrwx root wheel 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 -bit LSB executable, MIPS, MIPS-II version (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 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..1option subnet 255.255..0option domain
start 192.168..101end 192.168..199option lease 604800static_lease ::d1:b6:: 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 &#;/&#;/lib/ld-uClibc.so./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 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 bytes in 0.1 seconds
tftp> quiteve@eve:~$ file rt.db
rt.db: SQLite .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 &#;&#;, "user_pwd" VARCHAR DEFAULT &#;&#;, "level" CHAR DEFAULT &#;&#;);
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

逆向路由器固件之敏感信息泄露 Part2的更多相关文章

  1. 逆向路由器固件之解包 Part1

    这个系列的文章以逆向路由器固件的方式来挖掘路由器中存在的漏洞. 本篇文章主要以介绍解包固件工具为主.文中演示用的固件可以在这里下载.由于针对设备的攻击越来越多,很多厂商把不提供固件下载作为一种安全策略 ...

  2. 【转】Android应用开发allowBackup敏感信息泄露的一点反思

    转载:http://blog.csdn.net/yanbober/article/details/46417531 1 背景 其实这篇文章可能有些小题大作,但回过头想想还是很有必要的,有点阴沟里翻船的 ...

  3. Android应用开发allowBackup敏感信息泄露的一点反思

    1 背景 [工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处.尊重劳动成果] 事实上这篇文章可能有些小题大作,但回过头想想还是非常有必要的,有点阴沟里翻船的感觉. ...

  4. Nginx敏感信息泄露漏洞(CVE-2017-7529)

    2017年7月11日,为了修复整数溢出漏洞(CVE-2017-7529), Nginx官方发布了nginx-1.12.1 stable和nginx-1.13.3 mainline版本,并且提供了官方p ...

  5. 敏感信息泄露 - Pikachu

    概述: 由于后台人员的疏忽或者不当的设计,导致不应该被前端用户看到的数据被轻易的访问到. 比如:---通过访问url下的目录,可以直接列出目录下的文件列表;---输入错误的url参数后报错信息里面包含 ...

  6. pikachu 目录遍历 敏感信息泄露

    目录遍历漏洞概述在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能变的更加灵活. 当用户发起一个前端的请求时,便会将请求的这个文件的值(比如文件名称)传递到后台,后台再执 ...

  7. Pikachu-URL重定向、目录遍历、敏感信息泄露模块

    一.不安全的URL跳转 1.概述 不安全的url跳转问题可能发生在一切执行了url地址跳转的地方.如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地 ...

  8. 逆向路由器固件之SQL注入 Part3

    另寻他径 在前面的内容中,我们使用TEW-654TR路由器的tftp服务实现了获取目标的管理权限.但是要是tftp没有开放到外网怎么办?另寻他径:在这一篇中会我们来分析一个web应用上的漏洞. 初步分 ...

  9. ThinkPHP5 SQL注入漏洞 && 敏感信息泄露

    访问看到用户名被显示了 http://192.168.49.2/index.php?ids[]=1&ids[]=2 访问http://your-ip/index.php?ids[0,updat ...

随机推荐

  1. Ubuntu 14.04 禁用ipv6

    参考: 关闭IPV6,ubuntu 14.04 Ubuntu 14.04 禁用ipv6 1.检查ipv6是否开启: cat /proc/sys/net/ipv6/conf/all/disable_ip ...

  2. 05_Flume_timestamp interceptor实践

    1.目标场景 2.Flume Agent配置 # specify agent,source,sink,channel a1.sources = r1 a1.sinks = k1 a1.channels ...

  3. python flask demo

    from flask import Flask, jsonify from flask import abort from flask import make_response from flask ...

  4. shell while 语句

    普通循环格式: while condition do command done 例子一 #!/bin/bash )) do echo $int let "int++" done 结 ...

  5. pandas时间序列分析和处理Timeseries

    pandas最基本的时间序列类型就是以时间戳(TimeStamp)为index元素的Series类型. 生成日期范围: pd.date_range()可用于生成指定长度的DatetimeIndex.参 ...

  6. 《F4+2团队项目系统设计改进》

    项目软件系统设计改进 1引言 1.1编写目的 本阶段完成系统的大致设计并明确系统的数据结构与软件结构.本概要设计说明书的目的就是进一步细化软件设计阶段得出的软件概貌,把它加工成在程序细节上非常接近与源 ...

  7. js 几个重要的特性

    背景: 语法借鉴    java 函数借鉴    scheme 原型继承借鉴    self 正则表达式借鉴    Perl 1.动态语言 函数的定义和调用  形参与实参不需要一致 形参可由 argu ...

  8. android适配各种分辨率的问题

    Android设备屏幕的尺寸是各式各样的,如小米是4英寸的,Xoom平板是10英寸:分辨率也千奇百怪,800×480,960×540等:Android版本的碎片化问题更是萦绕于心,不过在设计应用时可以 ...

  9. C#复制数据到剪切板

    C#复制数据到剪切板 1. 复制固定的数据到剪切板 Clipboard.SetText("123456"); 于是123456就已经复制到剪切板中了,无论在任何地方粘贴都会出现‘1 ...

  10. ArcGis For Silverlight API,地图显示Gis,绘制点,线,绘制图等--绘制点、线、圆,显示提示信息

    ArcGis For Silverlight API,地图显示Gis,绘制点,线,绘制图等--绘制点.线.圆,显示提示信息 /// <summary> /// 绘制界面上的点和线 ///  ...