路由器有ssh但是无密码.

 

路由器基本信息

捡的.

通电后是openwrt,有web,admin可以登录.

ssh是打开的,admin账户无法SSH登录,要root.

 

尝试破解

 

web页面是大改过的openwrt luci.

 

有备份配置和还原配置,但是导出的配置文件是bin文件,是加密后的文件.

也就是想通过还原配置文件修改root密码不行.

 

没有web启动项设置,被阉割了,想通过写入rc.local执行替换root密码行不通.

 

 

上ttl ,ttl也是需要登录,权限和ssh一样. 

进openwrt修复模式发现也不行.ttl行不通.

 

u-boot中断,发现是breed,懒得我拆spi flash上编程器.

直接breed导出编程器固件.

 

开始破解

 

binwalk分析

 

binwalk  bak4g.bin

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
11712         0x2DC0          Copyright string: "Copyright (C) 2018 HackPascal <hackpascal@gmail.com>"
12180         0x2F94          LZMA compressed data, properties: 0x6D, dictionary size: 33554432 bytes, uncompressed size: 272474 bytes
158464        0x26B00         U-Boot version string, "U-Boot 1.1.3 (Jan 26 2021 - 15:56:10)"
159255        0x26E17         HTML document header
159836        0x2705C         HTML document footer
159935        0x270BF         HTML document header
161150        0x2757E         HTML document footer
161251        0x275E3         HTML document header
161499        0x276DB         HTML document footer
161611        0x2774B         HTML document header
161899        0x2786B         HTML document footer
327680        0x50000         uImage header, header size: 64 bytes, header CRC: 0xD7BACA12, created: 2021-12-30 09:09:45, image size: 1197481 bytes, Data Address: 0x80000000, Entry Point: 0x80000000, data CRC: 0xF6DFBB88, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: "R32"
327744        0x50040         LZMA compressed data, properties: 0x6D, dictionary size: 8388608 bytes, uncompressed size: 3768748 bytes
1525225       0x1745E9        Squashfs filesystem, little endian, version 4.0, compression:xz, size: 5257478 bytes, 2177 inodes, blocksize: 262144 bytes, created: 2021-12-30 08:58:18
6815744       0x680000        JFFS2 filesystem, little endian

 

提取squashfs

dd if=bak4g.bin of=rootfs.squashfs bs=1  skip=1525225

1525225就是分区开始位置.

 

解包squashfs

 

unsquashfs -d rootfs rootfs.squashfs

 

跑字典破解密码

/etc/shadow 有一个root一个admin,将这两个放入target_hashes.txt

用github上常见密码字键跑

hashcat -m 500 -a 0 target_hashes.txt rockyou.txt

很遗憾只跑出admin密码是admin

root密码跑不出来.使用john命令破解也只能破解出admin的密码

 

替换root密码

 

生成一个123456的密码

openssl passwd -1 "123456"

替换root密码.

 

打包squashfs

mksquashfs rootfs/ new_rootfs.squashfs -comp xz -noappend -all-root

尝试直接刷,无论breed和路由器后台都不能刷入.

 

打包编程器固件

 

dd if=new_rootfs.squashfs of=bak4g.bin bs=1 seek=1525225 conv=notrunc

breed刷入

然后breed刷入编程器固件,要保留breed.

 

遗憾发现root密码还是错误的.

 

通过解包JFFS2分区,发现会覆盖shadow文件.导致密码被覆盖.

JFFS2解包后没有好用的打包工具.所以不能在JFFS2分区操作.

通过发现,rc.local文件没有被覆盖.

 

修改rc.local文件

准备一个shadow2 ,这个文件不会被覆盖.

rm -rf /etc/shadow
cp /etc/shadow2 /etc/shadow

exit 0

然后重新打包编程器固件,重新breed刷入固件.

成功进入ssh.

 

二次破解

 

上面已经取得ssh权限,但是编程器固件不太适合打包分发给其他设备.

要想办法在路由器备份还原上操作.

 

查看备份还原代码

是luci控制的,但是简单加密了,无法记事本查看,但是可以看到一些字符,用hex查看.

文件路径

rootfs\usr\lib\lua\luci\controller\system.lua

sysupgrade -b是备份配置的命令. 然后执行了 crypt -e 加密.

 

此步实际上我在编程器固件前面就做了.

发现crypt命令不是linux/openwrt常见命令,我将解包后的crypt拷贝到我hc5661 (极路由1S,CPU相同)上发现缺少so文件,无法运行.

所以在取得ssh后再次开始.

 

手动加解密验证

先用sysupgrade -b备份配置文件,然后用crypt -e加密 crypt -d解密,发现正常的.

 

制作通用破解包

 

tar.gz打包文件

/etc/shadow

/etc/shadow2

/etc/rc.local

然后加密成bin文件导出.

 

 

验证

 

我特意用breed还原成最初编程器固件,也就全是官方固件.

然后进后台web,刷入我导出的配置包.

重启后可以正常用root和123456访问ssh.并且重启后,也可以用.

因为只修改了shadow文件.这种破解文件可以分发到其他设备.而不改变路由器原本其他配置.