我正在研究一个运行 Linux、busybox 和一些自定义服务的嵌入式设备。我找到了一种获得非特权 shell 访问的方法,并尝试查看是否可以提升特权。
内核很旧,看起来很脆弱,但最大的障碍是整个文件系统是只读的(包括/tmp
and /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/mem
clobberdd
的堆栈(内核是 2.6.39 之前的版本,其中写入/proc/self/mem
被禁用) - 查找在处理命令行或环境参数方面存在漏洞的程序(目前还没有)
- 找到一种能够进行系统调用的脚本语言(唯一的脚本工具是busybox的shell)
- 写入 UNIX 套接字并让监听它的服务做某事(文件系统上不存在允许向 UNIX 套接字发送任意数据的实用程序)
我有没有忽略什么?