前言
跟着看雪上的这位师傅复现的 https://www.kanxue.com/chm.htm?id=17830
好文章 学到了面对一个路由器时的分析思路
模拟
固件下载地址http://www.totolink.cn/home/menu/newstpl.html?menu_newstpl=products&id=65
mipsel架构 模拟脚本
#/bin/sh |
模拟起来后 进入其中配置eth0网络接口与top0位于同一c段
随后打包squashfs-root文件夹 通过scp上传到模拟系统中
以squashfs-root文件夹为根目录
chroot ./squashfs-root/ /bin/sh |
随后启动路由器服务
./usr/sbin/lighttpd -f ./lighttp/lighttpd.conf |
会因为找不到文件而报错
直接在对应目录下创建一个空文件就可以了
成功启动服务
固件分析
首先我们要清楚 我们要从哪个方向来分析这个路由器 这一点是至关重要的 不能漫无目的
我们选择针对登录这一点来分析 首先试着随便输入密码 并且通过抓包来查看登录检测涉及到了哪些文件
可以看到 密码的发送是通过这个包来进行的
同时你可以注意到状态是302 这意味着服务器返回了重定向响应 来看一下跳转的地址是什么
http://192.168.6.1/formLoginAuth.htm?authCode=0&userName=&goURL=phone/login.html&action=login&flag=1 |
有着比较多的参数 应该是用来判断用户的密码是否正确 我们找到这个包对应的cgi文件
搜索username字符串 尝试找到对应的代码
发现了sub_42A2D0函数 其功能似乎是根据其他参数来决定重定向的网址 来看下面的代码
根据v9来判断重定向的网址 这里猜测应该是flag这个参数
http://192.168.6.1/formLoginAuth.htm?authCode=0&userName=&goURL=phone/login.html&action=login&flag=ie8 |
通过单独修改flag为ie8 最后成功重定向到了login_ie.html 证实了猜想 但是好像没有什么软用
接下来想的是为www目录下找到formLoginAuth.htm这个网址 但是好像没有 那么就去lighttpd这个文件来看看
可以看到 根据不同的网址来进入不同的函数 我们来跟进到form_login函数中
if ( v8 ) |
这里可以看到对于v8的值进行了判断 如果不为0则进入if分支 可以看到对于a2进行了操作
而我们看到下面 a2应该是重定向的地址
那么v8的值怎么来的呢 可以看到应该是跟authcode的参数有关系 那么我们将authcode修改为1后试试
结果发现还是跳转回到login.html页面 但是参数确实多了个timestamp
这里应该是由于我们重定向导致的 但是将flag删除掉 也没有办法 因为会进入最后的else分支 默认重定向到/login.html
但是我们仔细观察一下参数 还是有一个叫做goURL的 我们把这个参数删除掉后
成功绕过了登录 进入了后台