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

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

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。

相关文章

如何通过ssh找黑客(通过ssh连接树莓派)

1.输入以下在raspbian下面安装一个服务xdrpsudoapt-getinstallxrdp2.在开始菜单附件中打开远程桌面,输入树莓派的ip地址进行连接如果有其。 随着蓝宙电子的树莓派产品出售...

淘宝新手开店无货源一件代发操作流程就是这么

淘宝新手开店无货源一件代发操作流程就是这么

现在开淘宝店的越来越多,之前的数据包传产品很麻烦。需要改好多,现在阿里出了新功能 可以一键铺货到淘宝店铺。非常简单。识字就会!!! 都是一件代发,价格也很优惠,利润很大!! 阿里巴巴-一件代发 (点...

怎样才能查看丈夫微信聊天记录要如何查看到

2020年10月29日,第十九届远程教育大会于北京盛大开幕,本次大会以“大变局 大挑战 大空间”为主题,从战略布局、产业发展、实践探索等多个维度,将理论前沿与实践成果相结合,进行多领域、跨学科、专题性...

宿便怎么排

一、清肠准备:清肠前一天要吃清淡一点。准备好一壶开水,大概有3000毫升的量(。 温馨提醒:肠道内宿便就像腐肉,又臭又脏,宿便所产生的大量毒素被人体吸收后,。 清除宿便的方法一:a.首先是清肠。清肠...

网站建设过程中经常出现的几个错误

拥有一个吸引用户的独特创意网站已不再是一种选择。在2019年,网站必须具备这些功能。无聊和旧式网站不再可行,因为它们不会吸引注意力或使用户想要进一步探索。游客应该有独特的体验。功能齐全且干净的网站至关...

黑客用的最多的编程语言(黑客最常用的编程语言)

黑客用的最多的编程语言(黑客最常用的编程语言)

本文目录一览: 1、Python是什么? 2、黑客需要掌握哪些编程语言 3、为什么黑客都要会python语言,在黑客编程中有什么特别之处么 4、为什么说黑客都用LINUX 5、黑客刚开...