一个客户网站最近被入侵,我们正在分析此次攻击造成的损失和暴露。我们发现一个脚本正在“呼叫”一个 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 脚本,您需要有来自用户的请求。您始终可以看到谁启动了脚本。要监控出站连接,您可以设置防火墙并记录所有出站内容,然后配置日志系统以捕获您想要的每个包的出站连接。