ios
Snipuzz

Background

Iot 通用的通信架构

为了与设备外的输入进行交互,大多数物联网设备实现了类似的高级通信体系结构(如下图)。主要分为以下几个部分

  1. Sanitizer

接收外部的输入后对输入进行过滤(安全检查)、匹配(白名单检查)、解析(找出功能命令和执行内容),如果不满足任意一种情况,则会返回带有错误信息的响应结果(跳转到 Replier 处理),否则将匹配到的功能命令送入下一步。

libnvram.so编译教程
  1. 使用交叉编译环境
  2. 进行符号链接配置
sudo ln -s ~/am-toolchains/brcm-arm-sdk/hndtools-arm-linux-2.6.36-uclibc-4.5.3 /opt/brcm-arm
echo "PATH=\$PATH:/opt/brcm-arm/bin" >> ~/.profile
source ~/.profile
CVE-2022-42475

首先需要进行环境搭建参考获取 shell 进阶

以及调试环境搭建 gdb-server 配置

复现过程

根据文章 https://wzt.ac.cn/2022/12/15/CVE-2022-42475/,可以快速定位到可控制的溢出点,但是不同环境的原因 貌似溢出点地址有变,例如我 init 中在 0000000001780BFB

调试 exp 时建议在此处下断点,不是百分百触发该位置,因为有时会覆盖到其他 结构位置 在赋值时导致错误。

利用VMware获取shell-进阶

解包

gzip -d rootfs.gz
sudo cpio -idmv < ./rootfs
sudo chroot . /sbin/xz --check=sha256 -d /bin.tar.xz
sudo chroot . /sbin/ftar -xf /bin.tar

Patch init 文件

文件所在位置 /bin/init ,注意这个是解包后才能拿到的文件

patch 位置在 0x04518E5

利用VMware获取shell

获取 vmlinuz

方式一

对于 vmdk 没有加密的虚拟设备来说,可以直接通过挂载磁盘的方式提取出 vmlinuz 文件,但是要注意磁盘中的内核文件命名可能不同!!!