在只读文件系统上从 shell 运行本机代码

信息安全 linux 文件系统 特权升级
2021-08-28 13:59:41

我正在研究一个运行 Linux、busybox 和一些自定义服务的嵌入式设备。我找到了一种获得非特权 shell 访问的方法,并尝试查看是否可以提升特权。

内核很旧,看起来很脆弱,但最大的障碍是整个文件系统是只读的(包括/tmpand /dev/shm),即 644/755 并且一切都归 root 所有。

有哪些可能的方法可以在只读文件系统上执行自定义本机代码,只有 shell 访问?

我尝试过的一些可能的途径:

  • 让系统挂载您的文件系统(需要 root 或物理访问权限)
  • 让系统将 ELF 二进制文件保存在文件系统的某个位置,然后/lib/ld-linux.so.2使用它运行(找不到这样做的方法)
  • /lib/ld-linux.so.2使用管道运行或/proc/self/environ(不起作用,ld-linux需要文件能够mmap
  • 用于dd of=/proc/self/memclobberdd的堆栈(内核是 2.6.39 之前的版本,其中写入/proc/self/mem被禁用)
  • 查找在处理命令行或环境参数方面存在漏洞的程序(目前还没有)
  • 找到一种能够进行系统调用的脚本语言(唯一的脚本工具是busybox的shell)
  • 写入 UNIX 套接字并让监听它的服务做某事(文件系统上不存在允许向 UNIX 套接字发送任意数据的实用程序)

我有没有忽略什么?

1个回答

查找在处理命令行或环境参数方面存在漏洞的程序(目前还没有)

这可能是最有希望的途径。

就我而言,我终于能够在处理自定义专有实用程序的未记录参数时找到缓冲区溢出。