安全事件分析之SQL盲注溯源

访客4年前关于黑客接单921

1. 概述

以下内容为一个CTF题引出的内容,经常玩CTF的大佬们可以直接跳过。

偶然的机会朋友发我一个日志文件,让我看一下服务器access.log文件,说这个是一个CTF的题目,就给了这么一个access文件,然后让找flag,由于自己属于专业划水的,CTF基本没碰过,也不知道怎么弄就试着分析了一下。

打开日志文件文件里面内容基本长这个样子。

1614065261_6034ae6da9ab9f2b35446.png!small?1614065264522

2. 日志分析? ? ?

大概浏览了一下日志文件发现,CTF都这么直接的吗,连点干扰流量都没有,整个文件就只有一个访问者。因此都不需要对找攻击者地址。在实际的安全事件分析过程中会存在大量正常业务流量,因此下面我在进行事件分析的时候还是按照正常的分析过程来展开说明以免有遗漏的地方。

我在进行日志分析的时候主要会执行404统计定位攻击者、500统计、目录遍历定位攻击者、200统计评估攻击影响。

1. 攻击行为取证

(需要注意的是此处的攻击行为取证并非司法取证,司法取证有一套完整的流程和注意事项,如哪位有兴趣可以去研究一下)如果经常进行日志分析师建议使用专业的日志分析工具,以便更好的检索,若日志文件较小,可直接使用notepad++来进行分析,由于样本文件较小因此这里我直接使用notepad++来进行分析。

首先我喜欢先统计一下404响应的数量,因为这样可以最直接的反映出攻击流量的情况,如果该 *** 没有明显结果,则可以通过其他方式进行判断。

1613898581_6032235537154b768b658.png!small

若404状态统计结果较多,通过显示所有404记录,查看404(如果您无法理解404,抱歉这里并不会解释这么详细您可以查看百度百科“HTTP响应头404”)页面产生的原因,本样本日志可以非常明显的看出大部分404流量是由扫描器产生,因此可以断定这个地址非常可疑,至少在一段时间内他在不断的尝试攻击我们的服务器。

1613899150_6032258e7e18a030bd687.png!small

由于样本文件交简单,都是扫描器产生的行为,因此没有500状态的流量,此处就不展开分析,直接带过。在分析过程中记录下来我们发现的异常IP,对异常IP进行攻击流量提取,此处提取是用的notepad++的正则表达式方式进行检索全文,至于正则表达式的具体用法请参考正则表达式基础语法,本文中的主要以上是查找192.168.8.254开头的行,返回状态是404的,进行全部查。

1613900174_6032298ea28cc5034afd4.png!small

通过该 *** ,遍历500、301、302等基本可以检索出攻击者所有攻击行为。

2. 攻击确认

经过上面的过程我们基本可以锁定攻击者及攻击者发动的攻击行为,此阶段需要完成的工作就是评估攻击行为对目标产生的影响。

使用上面取证的 *** 找出攻击者所有200状态的请求

1613901100_60322d2c4df9ae15de4f9.png!small

此处的日志没有任何其他内容,通过日志可直接看出,攻击者在使用SQLMAP进行注入攻击且以攻击成功。

存在漏洞的页面为:/index.php参数为:id

为了便于分析我首先将文件进行url解码,url解码方式有很多,比如这里文件比较小可以直接通过工具网站在线解码URL解码工具,用脚本处理是直接解码也可以。

解码示例如下:

1614065144_6034adf8a3f947c72bd7a.png!small?1614065145927

对文件内容进行url解码后内容比较清晰,可以看到如下内容:

1614065640_6034afe866059484c19df.png!small?1614065641613

通过这三个请求可以判断出这个地方存在一个注入漏洞,攻击者通过盲注方式判断出该漏洞存在。

3. 攻击影响

通过上面的分析工程我们可以确定攻击者在服务上找到了sql注入漏洞,并成功触发了验证了sql漏洞可利用,那么攻击在在是否利用该漏洞进行了其他操作,若攻击者利用了该漏洞,那影响范围都涉及哪些表呢?我们继续分析。

此处纠结3分钟,是否需要补充一部分sql注入的基础知识以完善文章的完整性,最后决定还是简述一下吧,因为这个文章大佬也想看,想看的人若还感觉不完整那就不太好了。

====================分割线以内可以跳过====================

sql盲注基础知识参考sql盲注利用、sql盲注利用,我觉的两位师傅对sql盲注的利用说的已经够详细了我就不具体说明了,这里知识简单提一下:

SQL注入:由于程序在进行开发时未对用户输入内容进行过滤,用户在输入可以操作SQL语句的字符时可以成功带入到sql语句中执行,比如您的程序写的是sql=“select user、passwd from users where user=”.$user."and passwd=".$passwd此时如果user和passwd变量如果是日志前台获取那么用户就可以直接控制您SQL语句的执行了。

盲注:其原理和SQL注入一样,但是成员在开发时可能对程序进行了异常捕获或通过接口方式进行数据提取,系统只向前台输出读取状态,这时候就形成了SQL盲注

利用:SQL盲注主要分为布尔型和时间型,布尔型可以通过CASE WHEN? THEN、ascii+mid、ascii+substr、ord+mid等,时间型盲注可以通过sleep函数来判断系统返回时间。

布尔型/时间型区别:刚开始只使用工具测试注入的时候可能无法很好理解时间型盲注和布尔型盲注的区别,举个简单的例子:程序员对异常输出控制的比较好,所有sql语句执行失败的时候只返回查询失败,查询成功系统返回查询的数据,这种就是布尔型。时间型盲注比如我们在查看一个投票也面的时候,输入查看的对象ID,但系统默认返回全部对象页面,但是系统会在内部执行一次查询。就是查询和显示是无关的,显示内容不会sql语句执行的结果变化而变化。

=====================================================

通过分析可以确定系统存在sql注入漏洞,因此需要评估攻击者在利用该漏洞读取过哪些内容。通过mysql的特性可以通过搜索from INFORMATION_SCHEMA依次分析攻击者读取信息。

上面读取数据库信息,判断数据库名字之一个字符,通过此 *** 依次枚举出数据库名,然后根据读表的顺序依次分析出攻击者获取的表名、列名、以及记录数量。

若一条一条分析日志记录,读取数量大了将异常痛苦,因此我编写一个脚本来自动完成其他分析情况。脚本运行情况如下:

1614063194_6034a65a15f009db090e8.png!small

在进行分析过程中可能会遇到16进制数,如下面这条记录:

1614064871_6034ace782175cfb872ed.png!small

0x666c6167就是16进制转换成字符串即为:flag。

相关文章

淘宝一键铺货能赚钱吗?无需囤货,一件代发月

淘宝一键铺货能赚钱吗?无需囤货,一件代发月

1. 登陆/打开淘宝卖家后台 2. 货源中心-指标发进货 3. 进入1688淘货源 - 4. 进入淘管家 5. 我的货源-常规货源-勾选一件代发/选择货源商家账号,即可显示可铺货...

痛风发作时应如何缓解疼痛?这4个应对小方法或能帮你一把

痛风发作时应如何缓解疼痛?这4个应对小方法或能帮你一把

痛风具有反复发作的特点,所以患有痛风的话就会反复的发作,而当痛风发作的时候常常让患者感到痛不欲生,饱受疼痛的折磨。所以对于众多的痛风患者来说,在痛风反复发作时,知道痛风发作时应如何缓解痛风,是非常急需...

电脑自动待机后打不开怎么设置?教你一分钟快

电脑自动待机后打不开怎么设置?教你一分钟快

Win7系统电脑会自动黑屏怎么办?当我们长时间没有动电脑的话,电脑会出现自动黑屏的情况,那么如何禁止电脑自动息屏呢?下面给大家分享电脑禁止自动黑屏的操作方法。 解决步骤: 1、点击开始菜单—控制面...

怎么才能查询别人的微信聊天记录 别人的手机微

美国俄亥俄州州长约翰·卡西奇的网站25日遭黑客入侵,当天同被黑客入侵的还有多家美国地方政府网站。 自称“dz团队系统”的黑客组织25日“攻陷”卡西奇等一众网站后,留言称“我爱‘伊斯兰国’”。...

2019年春运什么时候开始到什么时候结束(起止时

2019年春运什么时候开始到什么时候结束(起止时

2018年只剩下一个来月时间了,2019年即将到来。又到了春运时间了。那么,2019年春运什么时候呢,春运起止时间哪一天?     今天给大家介绍2019春运相关信息 2019春运时间什么...

百度权重值是什么?分别是多少?

百度权重值是什么?分别是多少?

让本身网站的权重值尽大概的高,是险些所有seo优化人的的根基诉求。首先搞懂百度权重值是什么意思,又是如何分另外,很有须要。 差异的平台对权重的说法纷歧,以站长东西为例,其对假权重的非官方表明如下,包罗...