我已经成功地execve("/bin/sh")
在 Apache 进程中进行了安全练习。例如, ls 命令在 root 和 in 中工作正常/bin
,但在 in 中则不然/tmp
,即使目录是全局可读的,它也不会输出任何内容。此外,我在 中创建了一个文件 foo /tmp
,将所有者更改为www-data
但我得到了 cat: /tmp/foo: No such file or directory
。
可能是什么问题呢?
答案1
正如 Artem 提到的,apache 或 php-fpm 可能作为 systemd 服务运行,PrivateTmp=true
此处提到https://www.freedesktop.org/software/systemd/man/systemd.exec.html
这将导致 Web 服务器在其自己的挂载命名空间中运行,并且/tmp
与/var/tmp
系统的其余部分不同。
nsenter
假设这是您可以用来在另一个进程的命名空间中执行脚本的问题。进程 ID 1 应该与系统的大部分位于同一命名空间中。
nsenter -mt 1 /bin/sh