방금 질문을 다시 하라는 조언을 받았습니다.https://security.stackexchange.com/questions/72795/command-execution-dvwa-creating-file-in-tmp여기.
저는 CentOS 7을 사용하고 있으며 명령 실행 공격을 이해하려고 합니다. 파일 생성 작업을 설명하는 튜토리얼을 찾았습니다. 그냥 사용
cat /etc/passwd | tee -a /tmp/passwd
생성해야 합니다 /etc/passwd
. 그렇습니다( cat /tmp/passwd
같은 장소에서 실행하면 이전 명령의 결과가 정확히 예상한 것과 같았습니다). 그러나 /tmp/passwd
(사이트가 아닌) 서버 터미널에서 이 명령을 실행하려고 하면 아무 일도 일어나지 않습니다.
아파치와 PHP를 설정하지 않았습니다.
실종자를 어디서 찾아야 합니까 /tmp/passwd
?
@terdon이 질문한 대로:
mount | grep tmp
다음을 반환합니다:
devtmpfs on /dev type devtmpfs (rw,nosuid,size=1966708k,nr_inodes=491677,mode=755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /sys/fs/cgroup type tmpfs (rw,nosuid,nodev,noexec,mode=755)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
/dev/sda7 on /tmp type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sda7 on /var/tmp type xfs (rw,relatime,attr2,inode64,noquota)
답변1
이는 PrivateTmp라는 systemd의 기능에서 비롯됩니다.
/var/tmp/systemd-private-*
파일의 옵션을 설정하는 서비스입니다 /var/tmp
.PrivateTmp
.service
/tmp/systemd-private-*
서비스용 입니다 /tmp
.
httpd
무언가를 쓰면 에 /tmp
있을 것입니다 /tmp/systemd-private-*-httpd.service-*
.
/tmp
/var/tmp
차이점은 다음과 같습니다.
/var/tmp 디렉토리는 시스템 재부팅 사이에 임시 파일이나 디렉토리를 보존해야 하는 프로그램에서 사용됩니다. 따라서 /var/tmp에 저장된 데이터는 /tmp에 저장된 데이터보다 내구성이 더 좋습니다.
/var/tmp에 있는 파일과 디렉터리는 시스템 시작 중에 삭제하면 안 됩니다. /var/tmp에 저장된 데이터는 일반적으로 사이트별로 삭제되지만 /tmp보다 삭제 빈도를 줄이는 것이 좋습니다.
답변2
Fedora 20에서 찾고 있는 디렉터리는 /var/tmp/systemd-private-${FOO}
이러한 폴더 중 하나(여러 개)에 있습니다. RHEL 7 또는 CentOS 7 시스템에서는 이를 확인할 수 없었지만 동일한 /var/tmp/systemd-private-${FOO}
영역에 있을 것이라고 강력히 의심합니다.
답변3
내 접근 방식은 실행 중인 아파치 프로세스의 PID를 찾는 것이었습니다.
ps ax | fgrep http
합리적으로 보이는 일부 PID 번호를 왼쪽 열에서 살펴보십시오. 그런 다음 /tmp 디렉토리는 /proc의 PID 경로를 통해 액세스됩니다. 이는 약간 보기 흉하지만 이 시스템 버전을 망칠 수 있는 새롭고 흥미로운 방법을 누가 찾았는지 알아내는 시간을 절약해 줍니다.
ls -l /proc/12345/root/tmp
httpd 프로세스에서 볼 수 있는 파일입니다.