![查找“ls /tmp”在安全漏洞中不起作用的原因](https://linux22.com/image/199876/%E6%9F%A5%E6%89%BE%E2%80%9Cls%20%2Ftmp%E2%80%9D%E5%9C%A8%E5%AE%89%E5%85%A8%E6%BC%8F%E6%B4%9E%E4%B8%AD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%E7%9A%84%E5%8E%9F%E5%9B%A0.png)
我已经成功地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