Frank Martin Asked: 2013-04-11 18:58:45 +0800 CST2013-04-11 18:58:45 +0800 CST 2013-04-11 18:58:45 +0800 CST 如何检查 Web 服务器日志以进行 SQL 注入? 772 如果我有一个托管在 Apache 上的 PHP 站点,有人使用 SQL 注入攻击它,有没有办法通过查看我的 Web 服务器日志来准确找出是哪个脚本导致的? 还是使用其他方式? apache-2.2 3 个回答 Voted Ken Irwin 2018-06-20T07:07:48+08:002018-06-20T07:07:48+08:00 我一直在使用这个 Linux 命令字符串来识别可能的 SQL 注入: egrep -i '\bUNION\b|\bSELECT\b|\bCHAR\b' $access_log 您也可以添加其他关键术语,但这些是我在日志中找到的。 要生成违规 IP 地址列表,请稍微花点心思: egrep -i '\bUNION\b|\bSELECT\b|\bCHAR\b' $access_log | sed -n 's/\([0-9\.]\+\).*/\1/p' | sort | uniq -c 通过实例数计算有问题的 IP: 335 160.153.153.31 1197 175.138.67.67 508 76.72.165.79 208 92.60.66.184 111 95.143.64.185 Best Answer Mark Henderson 2013-04-11T19:02:27+08:002013-04-11T19:02:27+08:00 如果您的 Web 服务器日志正在记录查询参数,则通过日志搜索已知的 SQL(例如SELECT)。 如果他们没有记录查询参数,那么您不太可能通过搜索日志找到任何内容,而是必须寻找模式 - 例如通常不会重复的重复 URL。 Yes Barry 2019-04-25T08:03:08+08:002019-04-25T08:03:08+08:00 我使用与 Ken 类似的方法,但我更喜欢awk. $ access_logs='/var/log/httpd/*access*log*' $ grep -E -hi '\bUNION\b|\bSELECT\b|\bCHAR\b' $access_logs | awk '{print $1}' | sort | uniq -c | sort -nr | head 获得前 10 个 IP 列表。这还将搜索任何使用 gzip 压缩的旧访问日志logrotate。
我一直在使用这个 Linux 命令字符串来识别可能的 SQL 注入:
您也可以添加其他关键术语,但这些是我在日志中找到的。
要生成违规 IP 地址列表,请稍微花点心思:
通过实例数计算有问题的 IP:
如果您的 Web 服务器日志正在记录查询参数,则通过日志搜索已知的 SQL(例如
SELECT
)。如果他们没有记录查询参数,那么您不太可能通过搜索日志找到任何内容,而是必须寻找模式 - 例如通常不会重复的重复 URL。
我使用与 Ken 类似的方法,但我更喜欢
awk
.获得前 10 个 IP 列表。这还将搜索任何使用 gzip 压缩的旧访问日志
logrotate
。