WIFI7都发布了,是时候升级到WIFI6了。
前几个月矿难,某类路由器的价格一路狂跌。正好家里最近新增了个NAS,mt7621也性能瓶颈了,该换了。听朋友推荐,入手了这款京东云雅典娜。
 设备说明
 刷机
到手第一件事,肯定是把京东的破系统扬了,毕竟我又不拿来跑pcdn。
看了下网上的教程,都是拆机走9008刷机的。
设备到手,一看,好家伙,2022.10的老库存了,估计是老版rom,说不定不需要拆机。

ROM版本: JDC02-1.5.50.r2204
查了下,果然有漏洞,通过固件的ubus总线更改配置可以开启ssh。
 开启SSH
漏洞原理就不分析了,看了下b站的教程,写得也忒晦涩了。
简单说下原理吧,具体的可以直接用我的脚本一把嗦
/usr/sbin/dropbear 是这个路由器负责启动SSH服务的进程,需要开启SSH服务启动一下这个就行了。
现在我们只需要一个命令注入,能执行命令启动dropbear,正好ipv6的DHCP服务有个漏洞,可以执行命令。
利用流程:
- 篡改/etc/config/dhcp,更新odhcpd配置,设置leasetrigger为我们要启动的dropbear
- 提交配置生效
- 开启ipv6的NAT6服务,触发命令执行,启动SSH
脚本(python版本):
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 
 | import requests
 url = "http://192.168.68.1/jdcapi"
 sessionid = ""
 
 
 def get_dhcp_config():
 r = requests.post(url, json={
 "jsonrpc": "2.0",
 "id": 1,
 "method": "call",
 "params": [
 sessionid,
 "uci",
 "get",
 {
 "config":"dhcp",
 "section":"odhcpd"
 }
 ]
 })
 print(r.json())
 
 def set_dhcp_config():
 r = requests.post(url, json={
 "jsonrpc": "2.0",
 "id": 1,
 "method": "call",
 "params": [
 sessionid,
 "uci",
 "set",
 {
 "config": "dhcp",
 "type":"odhcpd",
 "section": "odhcpd",
 "values":{
 "leasetrigger":"/usr/sbin/dropbear"
 }
 }
 ]
 })
 print(r.json())
 
 r = requests.post(url, json={
 "jsonrpc": "2.0",
 "id": 1,
 "method": "call",
 "params": [
 sessionid,
 "uci",
 "commit",
 {
 "config": "dhcp"
 }
 ]
 })
 print(r.json())
 
 if __name__ == "__main__":
 set_dhcp_config()
 
 | 
浏览器F12,获取下cookie,填写到相应位置,执行上面的脚本。
好多人都不会python,还是改成JS吧。
连夜找deepseek写的。
JS版:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 
 | const sessionid = document.cookie
 .split('; ')
 .find(row => row.startsWith('sessionid='))
 ?.split('=')[1] || '';
 
 const apiUrl = '/jdcapi';
 
 
 async function setDhcp() {
 try {
 
 const setRes = await fetch(apiUrl, {
 method: 'POST',
 headers: { 'Content-Type': 'application/json' },
 body: JSON.stringify({
 "jsonrpc": "2.0",
 "id": 1,
 "method": "call",
 "params": [
 sessionid,
 "uci",
 "set",
 {
 "config": "dhcp",
 "type": "odhcpd",
 "section": "odhcpd",
 "values": { "leasetrigger": "/usr/sbin/dropbear" }
 }
 ]
 })
 });
 console.log('设置结果:', await setRes.json());
 
 
 const commitRes = await fetch(apiUrl, {
 method: 'POST',
 headers: { 'Content-Type': 'application/json' },
 body: JSON.stringify({
 "jsonrpc": "2.0",
 "id": 1,
 "method": "call",
 "params": [
 sessionid,
 "uci",
 "commit",
 { "config": "dhcp" }
 ]
 })
 });
 console.log('提交结果:', await commitRes.json());
 
 } catch (e) {
 console.error('操作失败:', e);
 }
 }
 
 setDhcp()
 
 | 
浏览器F12,控制台执行上面的代码就行了。
执行完脚本后,浏览器进路由器后台,路由设置-上网设置-IPV6网络设置,打开,切换上网方式为NAT6,保存即可触发。

轻松拿下shell。
 刷入uboot
uboot:uboot-JDC_AX1800_Pro-AX6600_Athena-20240510.bin
先刷入uboot,直接scp上传到路由器上
然后开刷
| 12
 3
 4
 
 | 
 dd if=/root/uboot-JDC_AX1800_Pro-AX6600_Athena-20240510.bin of=$(blkid -t PARTLABEL=0:APPSBL -o device) conv=fsync
 dd if=/root/uboot-JDC_AX1800_Pro-AX6600_Athena-20240510.bin of=$(blkid -t PARTLABEL=0:APPSBL_1 -o device) conv=fsync
 
 | 

刷入 u-boot 成功之后,可以按照下面的步骤进入 u-boot 界面,刷入 OpenWrt 固件。
- 拔掉电源下电
- 找个牙签怼住reset按键,上电。可以看到路由器启动从红灯闪烁变成持续蓝灯,等待出现稳定不变的蓝灯后,松开reset案件。
- 插网线,配置静态IP
- IP:192.168.1.2
- 网关:192.168.1.1
- 子网掩码:255.255.255.0
 
- 访问 http://192.168.1.1/
 刷GPT分区表
访问 http://192.168.1.1/img.html
刷入GPT分区:gpt-JDC_AX6600_Athena_dual-boot_rootfs2048M_no-last-partition.bin
刷完以后等两分钟,路由器会长亮红灯。直接下电,按reset进uboot就行。
 刷ROM
uboot首页( http://192.168.1.1/ ),直接刷入线刷包即可。
ROM包右转github/恩山。
 2.5G网口切换
雅典娜提供了一个2.5G网口,默认分给wan口,显然wan口用不上这么大的,改到lan口给nas用才是正道。

先修改lan口的设置,在物理设置里,取消勾选eth0,把eth4(2.5G网口)勾选上

再进wan口和wan6口的设置,更改物理接口到eth0

保存应用后,路由器最右边的接口就变成wan口了,2.5G口直接给nas就ok了。
 分区格式化和挂载
由于我们刷的GPT分区是不带最后一个分区的,需要自己分区、格式化硬盘、挂载。
ssh到路由器上,执行cfdisk /dev/mmcblk0

直接NEW

大小默认就可以

选择Wrtie进行写入分区表操作
然后回到路由器管理后台页面

格式化硬盘

选择ext4格式,空间有点大,需要等几分钟。
格式完创建挂载点即可,这里我使用docker,就挂载到了/opt。也可以参考其他教程,直接挂载到/overlay。

 完结撒花

处理器性能非常够,内存1G跑路由绰绰有余,有需要搭一点小服务也足够用了。
还能看时间,完美~
 参考资料