나는 execve("/bin/sh")
Apache 프로세스에 대한 보안 훈련을 성공적으로 수행했습니다. 예를 들어, ls 명령은 루트 및 in에서는 제대로 작동 /bin
하지만 in에서는 작동하지 않으며 /tmp
, 디렉토리가 누구나 읽을 수 있음에도 불구하고 아무 것도 출력하지 않습니다. 또한 foo 에 파일을 만들고 /tmp
소유자를 로 변경 www-data
했지만 cat: /tmp/foo: No such file or directory
.
무엇이 문제일까요?
답변1
PrivateTmp=true
Artem이 언급한 것처럼 Apache 또는 php-fpm은 여기에 언급된 대로 시스템 서비스로 실행될 수 있습니다.https://www.freedesktop.org/software/systemd/man/systemd.exec.html
이렇게 하면 웹 서버가 시스템의 나머지 부분 /tmp
과 별도로 자체 마운트 네임스페이스에서 실행됩니다./var/tmp
nsenter
이것이 다른 프로세스의 네임스페이스에서 스크립트를 실행하는 데 사용할 수 있는 것이라고 가정합니다. 프로세스 ID 1은 대부분의 시스템과 동일한 네임스페이스에 있어야 합니다.
nsenter -mt 1 /bin/sh