보안 허점에서 "ls /tmp"가 작동하지 않는 이유를 알아보세요

보안 허점에서 "ls /tmp"가 작동하지 않는 이유를 알아보세요

나는 execve("/bin/sh")Apache 프로세스에 대한 보안 훈련을 성공적으로 수행했습니다. 예를 들어, ls 명령은 루트 및 in에서는 제대로 작동 /bin하지만 in에서는 작동하지 않으며 /tmp, 디렉토리가 누구나 읽을 수 있음에도 불구하고 아무 것도 출력하지 않습니다. 또한 foo 에 파일을 만들고 /tmp소유자를 로 변경 www-data했지만 cat: /tmp/foo: No such file or directory.

무엇이 문제일까요?

답변1

PrivateTmp=trueArtem이 언급한 것처럼 Apache 또는 php-fpm은 여기에 언급된 대로 시스템 서비스로 실행될 수 있습니다.https://www.freedesktop.org/software/systemd/man/systemd.exec.html

이렇게 하면 웹 서버가 시스템의 나머지 부분 /tmp과 별도로 자체 마운트 네임스페이스에서 실행됩니다./var/tmp

nsenter이것이 다른 프로세스의 네임스페이스에서 스크립트를 실행하는 데 사용할 수 있는 것이라고 가정합니다. 프로세스 ID 1은 대부분의 시스템과 동일한 네임스페이스에 있어야 합니다.

nsenter -mt 1 /bin/sh

관련 정보