使用 Auditd 确定 httpd PHP 脚本

信息安全 linux php 阿帕奇 审计 centos
2021-09-02 09:57:22

背景

我的服务器上有一个问题,其中一些漏洞允许将恶意 PHP 文件写入 Web 根目录下的任何全球可写目录。它目前没有造成任何伤害,因为我阻止了所有这些目录提供 php 脚本(或其他任何东西,除非其中一些是图像/视频),并且在其中创建任何内容后立即收到电子邮件通知,但我显然想要修复它。

我已经采取了各种措施,例如确保服务器上的 Joomla 和 Wordpress 安装是最新的,但它仍在继续。服务器上有一个运行相当旧版本的电子商务系统的客户端站点,我怀疑这可能是罪魁祸首。

问题

因此,我已设置auditd监视所有这些全局可写目录,并等待问题再次发生以收集一些日志,但我已经有一些日志条目可以从发生的正常活动中查看。

正如我所怀疑的那样,当然,当 PHP 脚本写入文件auditd时,exe 的所有显示都是/usr/sbin/httpd. 请参阅下面的示例输出。有可能基于 了解问题来自哪个站点CWD,但这可能会改变并且不可靠。还知道特定的脚本会很有用。

所以我想知道,是否可以auditd记录生成操作的脚本名称(编辑:或者调用堆栈)/usr/sbin/httpd,或者任何接近该信息的内容?

时间->2016 年 11 月 30 日星期三 14:36:30

type=PATH msg=audit(1480516590.911:180239): item=1 name="/home/web/www.example.com/html/cache/example.php" inode=539842913 dev=08:05 mode=0100644 ouid= 48 ogid=48 rdev=00:00 objtype=CREATE

type=PATH msg=audit(1480516590.911:180239): item=0 name="/home/web/www.example.com/html/cache/" inode=539833631 dev=08:05 mode=040777 ouid=634 ogid= 634 rdev=00:00 objtype=PARENT

type=CWD msg=audit(1480516590.911:180239): cwd="/home/web/www.example.com/html"

type=SYSCALL msg=audit(1480516590.911:180239): arch=c000003e syscall=2 成功=yes exit=36 a0=7f9baf272550 a1=241 a2=1b6 a3=9 items=2 ppid=26483 pid=30957 auid=4294967295 uid= 48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" key="write_to_open_web_directories"

1个回答

auditd无法执行堆栈跟踪或获取其他信息,因为它仅在系统调用或文件访问时调用。堆栈跟踪只能从用户空间访问,并且需要展开堆栈,这会产生大量开销。

如评论中所述,您可以添加%P到访问日志配置以获取与 相关的 PID auditd,或记录来自 的完整请求mod_security

您还可以修改mod_php或使用LD_PRELOAD向打开文件的相关请求添加信息。