不能覆写/proc/sys/kernel/modprobe
Closed this issue · 5 comments
cnitlrt commented
veritas501 commented
因为这种“文件”没有page cache。具体的话去看一眼dirtypipe的分析或是啃一遍splice的实现就懂了。
veritas501 commented
具体来说,你可以用这种方式去修改有实体的文件。比如常规思路的suid程序或者/etc/shadow等。你也可以通过修改ELF文件的text段从而影响正在运行的程序代码。此外memfd的内存也可以(因为shm底层的实现),所以可以通过这种方式往runc注入代码。
cnitlrt commented
cnitlrt commented
确实可以,但是比较麻烦的是需要将busybox下载下来然后再ida里面确定偏移,比如poweroff函数的偏移然后将其劫持成shellcode
veritas501 commented
https://elixir.bootlin.com/linux/latest/source/fs/splice.c#L773
注意do_splice_to()中in->f_op->splice_read()
的调用