通过网站日志分析sql注入攻击的痕迹

一次偶然的机会,我的朋友给我发了一个日志文件,让我看一下服务器access.log文件,说是CTF的题目,给了它这样一个access文件,随后要了flag。因为我是专业划水的,CTF基本上不碰它,我也不知道怎么做,所以我试着分析了一下下。打开网站日志文件。文件里的内容基本都很长。浏览完日志文件,发现CTF这么直接,没有干扰流量,整个文件只有一个访客。因此,不需要找到攻击者的地址。在实际的安全事件分析过程中会有大量的正常流量,所以我会按照正常的分析过程来解释,避免任何遗漏。


我在做日志分析的时候,主要会开展404统计定位攻击者,500统计,目录遍历定位攻击者,200统计评估攻击的影响。(需要注意的是,这里的攻击取证不是司法取证,司法取证有一套完美的程序和常见注意事项。有兴趣的可以探讨一下下。)要是日志分析师经常推荐采用专业的日志分析软件开展更好的检索,要是日志文件较为小,可以直接采用notepad++开展分析。由于样本文件比较小,我在这里直接用notepad++开展分析。


首先我喜欢统计404响应的数量,因为它最能直接反映攻击流量情况。要是这种方法没有明显的效果,可以用其他方法来判断。如果有很多404状态的统计结果,利用显示所有404记录,看看404的页面(如果你不能理解404,很抱歉这里不会解释得这么详细。可以看看百度百科的“HTTP响应头404”)。这个样本日志可以清楚的看到,404流量大部分是扫描器生成的,所以可以断定这个地址非常可疑,至少在一段时间内,他在不断的试图攻击我们的服务器。由于样本文件比较容易提交,都是扫描仪生成的,所以没有500态流量,这里就不开展分析了。在分析过程中,我们记录了发现的异常IP,并从异常IP中提取出攻击流量。在这里,我们采用了notepad++正则表达式来检索全文。至于正则表达式的具体用法,请参考正则表达式的基本语法。本文主要是找192.168.8.254开头的行,返回状态是404,可以全部搜索。利用这种方法,基本上可以利用遍历500、301、302来检索攻击者的所有攻击行为。经过以上过程,我们基本可以锁定攻击者以及攻击者发起的攻击行为。这个阶段需要做的工作是评估攻击行为对目标的影响。

采用上述取证方法,找出攻击者的所有200个状态请求。这里日志里没有其他内容。从日志中可以直接看到,攻击者正在采用SQLMAP开展注入攻击,攻击成功。


易受攻击的页面是:/index.php参数是:id。为了便于分析,我先解码文件的url。有许多方法可以解码网址。例如文件比较小,可以利用软件网站在线直接解码URL解码软件,也可以利用脚本处理直接解码。利用上述分析项目,我们可以确定攻击者在服务中发现了sql注入漏洞,并成功触发和验证了sql漏洞可以被利用。随后,攻击者利用该漏洞执行其他操作。要是攻击者利用了该漏洞,影响范围涉及哪些表?我们继续分析。我在这里挣扎了3分钟。是否需要补充一些sql注入的基础知识来提高文章的完整性,我最后决定简单说一下,由于大部分人都想看这篇文章,要是还是觉得不完美对想看的人不好。利用分析,可以确定系统中存在sql注入漏洞,因此需要评估攻击者利用该漏洞读取了什么。借助mysql的特性,攻击者的阅读信息可以利用搜索fromINFORMATION_SCHEMA来依次分析。读取数据库信息,判断数据库名称的第一个字符,用这种方法依次枚举数据库名称,随后按照读取表的顺序依次分析攻击者得到的表名、列名和记录号。

分享: