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

访客3年前关于黑客接单877

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。

相关文章

对手作文(对手作文600字)

对手作文(对手作文600字) 上高外国语学校初一年级 黄智媛 人生的路上总会有一决胜负的时候。 那次运动会,我如往常一样报了100米短跑项目。当时对战人员名单出来时,我看到了一个眼熟的名字,...

电脑被黑客锁住要钱(电脑黑客技术入门)

没有重要的资料就直接重做一个系统,然后把安全做好就行了。不要乱下乱点网站的东西 方法一:开机到欢迎界面时,按Ctrl+Alt+Delete,跳出帐号窗口,输入用户名:administrator,回车,...

乳胶枕怎么枕舒服 哪种乳胶枕好

乳胶枕怎么枕舒服 哪种乳胶枕好

  强弱乳胶枕一边高一边低,主要是按照人体工程理学的原理设计的,两边都可以睡,主要是适合自己的高度就好,没有特别的要求,枕头要契合自己睡眠才会好。 乳胶枕是由橡树汁液做成的,100%的天...

对黑客的反击(对黑客攻击最可靠的方法)

对黑客的反击(对黑客攻击最可靠的方法)

手机被黑客入侵,怎样防止黑客入侵,反击黑客? 使用强密码:确保你的密码强度足够高, 并且定期更改密码。使用包含字母、数字 和特殊字符的复杂密码,避免使用容易猜到的个人信息作为密码。建立强密码:使用不易...

特朗普支持者与反贾静雯弟弟对者同在华盛顿游行

  据多家美国媒体当地时间13日统计,目前全美所有州的选举人票归属已确定,民主党总统候选人拜登获得306张选举人票,共和党总统候选人、现任总统特朗普获得232张选举人票。   而当地时间14日,美国...

石榴云医APP产品体验分析

石榴云医APP产品体验分析

本文从产物轮廓、市场需求阐明、产物业务范畴、产物成果、产物页面机关5个方面来阐明以慢性病复诊偏向切入互联网医疗市场的石榴云医App,但愿辅佐你加深对互联网医疗规模产物的相识。 互联网医疗代表了医疗行...