首页 技术 正文
技术 2022年11月12日
0 收藏 611 点赞 3,978 浏览 1259 个字

另寻他径

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

初步分析

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

使用代理软件抓登录时候的数据包,可以看到发送的http请求如上图所示。数据发送给了my_cgi.cgi这个脚本。我们分析一下这个文件看看。

➜  rootfs git:(master) ✗ find . -name my_cgi.cgi
./usr/bin/my_cgi.cgi
➜ rootfs git:(master) ✗ file ./usr/bin/my_cgi.cgi
./usr/bin/my_cgi.cgi: ELF -bit LSB executable, MIPS, MIPS-II version (SYSV), dynamically linked (uses shared libs), stripped

通过抓包知道用户在登录页面输入的两个参数分别是’user_name’和’user_pwd’,那么我们在CGI脚本中搜索这两个字符串看看。

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

有几行字符串看起来是SQL查询的语句,尤其是:

select level from user where user_name='%s' and user_pwd='%s'

看起来应该是根据用户名和密码去数据库查询,看密码是否正确。上一篇文章的分析我们可以知道,这个路由器是使用SQLite做数据库存储密码的。

使用IDA载入my_cgi.cgi。查询”select level from user where user_name“字符串,可以定位到do_login函数。

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

假设&猜想

用户提交的用户名和密码大概是传递给sprintf函数生成SQL语句。存储在sql变量中,最后进入exec_sql函数。看起来这个过程没有对数据进行转义。除非数据在进入do_login函数之前或者在exec_sql中有做转义,不然很可能存在SQL注入的漏洞。如果我们的假设是正确的,数据没有经过处理进入了SQL语句中,那么我们可以使用最传统的万能密码来绕过登录验证:

' or ''='

最后执行的sql就会变成

select level from user where user_name='admin' and user_pwd='' or ''=''

这样查询语句就会返回成功的结果。

验证猜想

我们实验一下:

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

果然跟我们预期的一样。这里需要注意的是能够以管理员身份登陆是需要一定运气的。我们构造的SQL语句where条件是or 1=1所以会返回所有的数据。恰好管理员的记录是第一条所以以管理员的身份登陆了。如果第一条是一个普通用户的数据,那么就会以普通用户的身份登陆了。为了确保一定以管理员身份登陆,可以构造如下语句:

' or level = (select level from user order by level desc limit 1)/*

上面这个语句可以确保最后查询出来的数据室level最高的用户的数据。

这次我们终于看到了逆向分析的冰山一角。下一篇将会讨论使用Qemu虚拟机运行路由器固件,动态调试相关的内容。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,497
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,910
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,744
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,498
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,135
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,300