我只是被建议重新提出我的问题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
,如果我尝试从服务器的终端(而不是从站点)运行此命令,则不会出现任何情况。
我没有对 apache 和 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
它来自 systemd 的一个名为 PrivateTmp 的功能。
/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
我的方法是找到正在运行的apache进程的PID
ps ax | fgrep http
在左侧栏中查找一些看似合理的 PID 编号。然后通过 /proc 的 PID 路径访问 /tmp 目录,这有点难看,但可以节省时间来弄清楚谁找到了一个新的、令人兴奋的方法来搞乱这个版本的系统。
ls -l /proc/12345/root/tmp
这些是 httpd 进程看到的文件。