Permissions

找出“ls /tmp”在安全漏洞中不起作用的原因

  • December 18, 2021

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

引用自:https://unix.stackexchange.com/questions/682964