我已经将日志文件读入了r,当我查看referer时,有一些奇怪的条目:
> logs <- read.table("logfile")
> referer <- data.frame(table(logs$referer))
> head(referer, 2)
Var1 Freq
1 157
2 - 250290
apache使用破折号( -
)表示一个缺少的介绍人。那是第二排。那么第1行中的空字符串(``)是什么意思呢?在我看来,只有当apache“忘记”将referer写入日志文件时,这种情况才会发生。
下面是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" "-"
但最神秘的介绍人是这样的:
554fcae493e564ee0dc75bdf2ebf94caads|a:2:{s:3:"num";s:280:"*/ union select 1,0x272f2a,3,4,5,6,7,8,0x7b24617364275d3 ...
我已经切断了字符串的结尾(它持续了相当长的一段时间),因为我不知道它是否包含敏感信息。我有大约20次这样的引用访问,都来自同一个客户端ip,其中大多数请求的资源在我的服务器上不存在,例如 //user.php
以及 //cm.php
.
在我看来,这些至少部分是mysql查询。 a:2:{s:3:"num";s:459:"
是序列化数组的开头。我使用这种格式在mysql数据库中存储来自web表单的一些数据。但是这种处理发生在服务器端,并且从不发送到用户的浏览器。那么mysql查询如何最终成为referer呢?我可以理解有人可能会尝试将mysql代码输入到webform中,但这并不能成为referer的一部分。
有什么解释都行。
2条答案
按热度按时间zujrkrfu1#
这看起来像是sql注入尝试。日志不会显示sql尝试是否成功。
虽然这通常会显示在url字段中,但它没有理由不能显示在日志中的http referer字段中。
dwthyt8l2#
这是对内部基础设施的攻击。许多组织使用集中式系统接收日志,然后使用报告基础结构支持查询日志。开发人员在设计安全系统和sql方面相当差劲
Referer
菲尔德正试图利用这一点。攻击者还可以尝试将代码段存储在
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). 如果正在运行,则可能需要对服务器进行三重检查。