|
本帖最后由 Lihewin 于 2022-8-4 15:56 编辑
第一次在数码之家发帖子,如有排版等问题请多包涵。
从淘宝上买的九联路由器,1.5A版本,70元,在宿舍作为AP使用。
在@herman_mo 大神的汇总帖总结98款运营商定制WiFi6 mesh路由的配置中,给予了这款路由器"雷”的评价,原因是固件非常烂,以及自带的usb无法使用。奈何在70元的档次中,它的无线性能还是过于强大了,完全可以忽略固件的缺点。实际使用中体验也很不错。
这个机器有1.5a和2a的版本,除了供电以外,存储和内存容量都不同,但其他配置相同。在海思无法刷机的前提下可以忽略。在acwifi里有这款路由的拆机,这里就不拆了。
以下是喜闻乐见的固件探索:
首先登陆路由器后台
直接输入路由器背后的密码进入后台。
毫无审美的页面,不过倒也算清晰简洁。
在这里可以选择桥接或者网关,作为AP选择桥接即可。
既然是运营商路由器,就最好能找到超级密码:
现在开始尝试打开telnet:
在@nianqing126 这位朋友之前的探索中获得了root的密码router@001,但是他似乎是拆机后使用的ttl登陆的,没有使用远程登陆。
尝试直接登陆telnet:
发现root用户被禁止telnet,我也无法使用常见的CMCCAdmin等管理账户登陆。
尝试连接ssh:
无法连接,现在只好从网页入手,尝试打开telnet。
前端如果要对路由器进行控制会使用js脚本。
好在这里的js完全没有经过混淆,如果能够搜索到控制telnet的脚本便可以尝试诈胡。
这不,他来了。
在这篇脚本中,实际发生作用的只有最下面的set_telnet_save()函数,本来该函数调用了上面的init_telnet_set(),但是估计是由于厂商隐藏的原因,调用被注释掉了。
function set_telnet_save(){
MOD = "save";
var obj = new Object();
obj.mode = "save";
obj.telenet_enabled = getTag("telnet_info","telenet_status_select").select.entity.value;
if (getTag("telnet_info","telenet_status_select").select.entity.value == "0") {
obj.user_name = "";
obj.user_password = "";
}
else
{
obj.user_name = encrypt_info(getTag("telnet_info","telnet_name").text.entity.value);
obj.user_password = encrypt_info(getTag("telnet_info","telnet_password").text.entity.value);
}
setAppDataurl('save','set_telenet_enabled',obj,function(data){
//init_telnet_set();
$.Refresh();
});
}
可以简单看出,打开telnet的方式就是新建一个obj对象,并且将加密的用户名和密码赋值给obj,最后调用setAppDataurl()发送。
明白了原理,就可以尝试编写相应的代码。
var obj = new Object();
obj.mod = "save";
obj.telenet_enabled = "1";
// 将telnet开启设置为非零值
obj.user_name = encrypt_info("user");// 加密用户名
obj.user_password = encrypt_info("RUHNPC27");// 加密密码,
setAppDataurl('save','set_telenet_enabled',obj,function(data){$.Refresh();});// 将数据保存到服务器
将代码放在浏览器控制台中运行。
保存成功,估计应该已经成功开启了本账号的telnet使用权限。
现在尝试登陆:
发现成功登陆,并自动切换为了CMCCAdmin账号。
直接su root,使用router@001登陆。完成。
现在尝试开启路由器的文件管理权限以及ssh。
busybox中内置了一个简化版的ps命令,可以查看进程。
发现正在运行ftp服务器,但是没有ssh服务器运行。
双击tab查看所有可用程序,发现内置了一个dropbear服务器可用于ssh连接。
当场开启并转移到ssh。
完成。
但是ftp服务器却禁止登陆,可能跟vsftpd的配置有关。
find / -name "*vsftpd.conf*" 全盘搜索vsftpd.conf
发现位于/etc中。
vi打开
在这片配置中,chroot_local_user=YES,用户只能访问规定的文件夹
userlist_deny=NO,仅有userlist中的用户能访问。
然而它的userlist中仅有anonymous,却又在上面禁止了anonymous,难怪不能登陆。
更改文件并重启vsftpd。4008是当前vsftpd的pid,通过ps查看。
成功进入ftp服务器。
发现在/usr/httpd/web中存放了网页。
访问maintain网页,移动路由器秒变电信光猫。
查看提供网页的服务,发现是一个叫webServer的程序在提供网页服务,根据猜测应该是一个boa服务器,但是并没有找到提供后端服务的cgi文件。
有一个叫hi_appm的程序在根据一些配置文件服务,也没有找到这个程序的log文件,猜测是一个解决方案,根据配置文件提供服务?
如果有熟悉海思方案的朋友请多多指教。
还有一个hostapd程序,这个是提供无线认证服务的。
一个隐藏的脚本引起了我的注意:
#! /bin/sh
# init appm & ipc
mkdir /var/.appm
mkdir /var/.ipc
# init ucm
sysinfo_conf=/config/worka/sysinfo.xml
board_conf=/etc/board/board.xml
target=/var/.ucm
mkdir -p $target
cp -rf /config/conf $target/
if [ -e $sysinfo_conf
then
cp -rf $sysinfo_conf $target/conf/xml/
fi
cp -rf $board_conf $target/conf/xml/
可以看到这个脚本将ucm程序,appm程序,ipc程序的配置文件复制到var中供使用,而配置文件正是我们需要的。
找到配置路径,发现配置文件被加密。然而被解密的文件就在下面被隐藏了起来。
打开,满满都是数据,而且我做了实验,这个文件是跟着配置动态变换的。
搜索登陆密码,发现密码下面还有一个账户useradmin。不过没有办法登陆,提示的登陆错误。
在配置telnet的部分发现了老熟人CMCCAdmin。不过因为没有放在SYSMNG_ACCOUNT_ATTR_TAB字段中,所以不能直接在后台登录。
所以没有发现能登陆后台的超级密码。
cli命令
不过这是否代表着完全无法调整一些高级设置呢?似乎并不是这样。
实际上在这台机器里面存在着能够允许修改设置的程序hi_ipc,被链接到了cli命令,
通过这个程序可以通过一些预设的脚本调整路由器的行为。
举个例子
通过调整/home/cli/board/led_all_set 可以控制前面板灯光:
可以看到,在该脚本的act字段中,0代表关闭所有灯光,1代表全开,2代表闪烁,3代表自动(即正常模式)。
以下是测试:
灯光全开模式
cli /home/cli/board/led_all_set -v act 1
灯光全关模式
cli /home/cli/board/led_all_set -v act 0
闪烁模式,没有动图看不出来
cli /home/cli/board/led_all_set -v act 2
正常模式就不放图了,
cli /home/cli/board/led_all_set -v act 3
调整upnp以及dmz这些设置,可以通过/home/cli/sal/net/里的脚本完成。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|