mysql - Apache 日志文件中的奇怪引荐来源网址 : empty string and what looks like MySQL code

标签 mysql r apache http-referer logfile

我已将我的日志文件读入 R,当我查看 referer 时,有一些奇怪的条目:

> logs <- read.table("logfile")
> referer <- data.frame(table(logs$referer))
> head(referer, 2)
Var1              Freq
1                  157
2             - 250290

Apache 使用破折号 (-) 来表示缺少的引荐来源网址。那是第 2 行。那么第 1 行中的空字符串 (``) 是什么意思?在我看来,只有当 Apache“忘记”将引用者写入日志文件时才会发生这种情况。

这是 157 个带有空 referer 字符串的条目之一(我已经匿名化了客户端 ip 和我的网站 URL):

173.244.xxx.xxx - - [17/Apr/2018:08:07:46 +0200] "GET /feeds/atom.xml HTTP/1.1" 200 18820 www.my-website.com "" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36; +collection@infegy.com" "-"

但最神秘的 referer 是这样的:

554fcae493e564ee0dc75bdf2ebf94caads|a:2:{s:3:"num";s:280:"*/ union select 1,0x272f2a,3,4,5,6,7,8,0x7b24617364275d3 ...

我把最后的字符串剪掉了(它持续了相当长的时间),因为我不知道它是否包含敏感信息。我有大约 20 次这样的 referer 访问,都来自同一个客户端 ip,其中大部分请求的资源在我的服务器上不存在,例如 //user.php//cm.php.

在我看来,这些至少部分是 MySQL 查询。 a:2:{s:3:"num";s:459:" 是序列化数组的开头。我使用这种格式将来自 Web 表单的一些数据存储在 MySQL 数据库中。但是这个处理发生在服务器端并且永远不会发送到用户的浏览器。MySQL 查询如何最终成为引用者?我可以理解有人可能会尝试将 MySQL 代码输入到网络表单中,但这并不构成那部分推荐人的。

任何解释都会很好。

最佳答案

这是针对内部基础设施的攻击。许多组织使用集中式系统来获取日志,然后使用报告基础设施来支持查询日志。开发人员在设计安全系统方面相当糟糕,Referer 字段中的 SQL 正试图利用这一点。

攻击者还可以尝试在 Referer 字段中存储片段,然后将其用于其他类型的攻击。

只要您没有使用制作不当的软件来查询日志,就应该没问题。

这个 — https://resources.infosecinstitute.com/sql-injection-http-headers/ — 提供了一些进一步的信息。

此外,如评论中所述,请考虑用户 webreadr读取 Web 服务器日志文件。

而且,经过进一步审查,这似乎是攻击者团体发起的一场事件,他们试图破坏“Ecshop”内容管理系统 (https://github.com/SecWiki/CMS-Hunter/tree/master/Ecshop/ecshop2.x_code_execute)。如果您正在运行,您可能需要对您的服务器进行三次检查。

关于mysql - Apache 日志文件中的奇怪引荐来源网址 : empty string and what looks like MySQL code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53585075/

相关文章:

r - 使用ggplot2在每个因子内对条形进行排序

从数据框中删除所有值为 NA 的列

apache - Tomcat 多个本地主机实例

php - 漂亮的 URL 条件重写

mysql - MySQL中REFERENCES关键字的使用

php - 如何使用MySQL合并2个表的数据

mysql - 如何编写查询以在日期范围内显示 'breaks'?

mysql - mysql 中的非 ASCII 列名

r - 如何连接两个具有不同类型数据的数据?

javascript - 如何使 JS 和 CSS 可缓存直到更改?