查找来自 Apache/PHP 的出站连接

查找来自 Apache/PHP 的出站连接

一个客户网站最近被入侵,我们正在分析此次攻击造成的损失和暴露。我们发现一个脚本正在“呼叫”一个 URL,我们可以在日志中轻松找到它,但是这个 URL 被记录下来了吗?在哪里?

/usr/local/apache/logs/access_log

出站连接(带有 URL 包装器的连接file_get_contents,如 HTTP)是否记录在此文件中或任何地方?

答案1

您可以修改 suhosin 以执行实际模拟的模拟模式,然后将用于打开外部连接的命令列入黑名单。前几天我发布了代码修复,但是,该帖子被删除了。

suhosin-0.9.27/execute.c 的第 1588 行,注释掉 goto execute_internal_bailout;

if(SUHOSIN_G(func_blacklist) != NULL) {
    if(zend_hash_exists(SUHOSIN_G(func_blacklist), lcname, function _name_strlen+1)) {
        suhosin_log(S_EXECUTOR, "function within blacklist called: %s()", lcname);
        // goto execute_internal_bailout;
    }
}

(维基百科弄乱了该代码,我不会花时间去尝试弄清楚)

模拟模式为默认模式:

suhosin.simulation = on
suhosin.executor.func.blacklist = include,include_once,require_once,open,file_get_contents

添加您想要记录的任何其他命令。您将获得如下日志条目:

6 月 24 日 06:32:07 machinexx suhosin[1086]: ALERT-SIMULATION - 黑名单内的函数调用:exec()(攻击者“11.22.71.67”,文件“/var/www/domain.com/tp/top_thumb.php”,第 283 行)

从那里,至少你有一组目标文件可以查看。我不建议以这种方式使用 suhosin,但是,当你在大海捞针时,有时你需要让工具按应有的方式工作。

答案2

除非您的 PHP 应用程序/网站有日志系统,否则您无法看到谁做了什么。

Apache 或 PHP 不保留出站连接日志。

答案3

是的,php 和 apache 不记录任何出站连接。无论如何,要运行 php 脚本,您需要有来自用户的请求。您始终可以看到谁启动了脚本。要监控出站连接,您可以设置防火墙并记录所有出站内容,然后配置日志系统以捕获您想要的每个包的出站连接。

相关内容