Permissions
找出“ls /tmp”在安全漏洞中不起作用的原因
execve("/bin/sh")
作為安全練習,我已經設法在 Apache 程序中。ls 命令可以正常工作,例如在 root 和 in 中/bin
,但不是 in/tmp
,即使 dir 是世界可讀的,它也不會輸出任何內容。此外,我在 foo 中創建了一個文件/tmp
,將所有者更改為www-data
但我得到了cat: /tmp/foo: No such file or directory
.可能是什麼問題呢?
如 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