轻松了解 web 日志分析过程

本文作者 : 木禾 (英文 ID:Ali0th)

日志分析,其实涵盖的面是很广的,什么地方都可以有日志。而本篇文章主要针对 web 日志做一下分析。因为之前去学校里授课的时候有讲过一次,感觉内容挺不错的,就写到了文章里。(可绝不是偷懒什么的呢o(´^`)o)

相关资料及工具

【链接: https://pan.baidu.com/s/1o7FcHui 密码: jpdn】

Lesson1 日志格式学习

一条访问信息记录如下:

218.19.140.242 - - [10/Dec/2010:09:31:17 +0800] "GET /query/trendxml/district/todayreturn/month/2009-12-14/2010-12-09/haizhu_tianhe.xml HTTP/1.1" 200 1933 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 (.NET CLR 3.5.30729)"

共有九项内容:

218.19.140.242

这是一个请求到 apache 服务器的客户端 ip, 默认的情况下,第一项信息只是远程主机的 ip 地址,但我们如果需要apache 查出主机的名字,可以将 HostnameLookups 设置为 on, 但这种做法是不推荐使用,因为它大大的减缓了服务器。另外这里的 ip 地址不一定就是客户主机的 ip 地址,如果 客户端使用了代理服务器,那么这里的 ip 就是代理服务器的地址,而不是原机.

-

The "hyphen" in the output indicates that the requested piece of information is not available. In this case, the information that is not available is the RFC 1413 identity of the client determined by identd on the clients machine. This information is highly unreliable and should almost never be used except on tightly controlled internal networks. Apache httpd will not even attempt to determine this information unless IdentityCheck is set to On

-

这一项又是为空白,不过这项是用户记录用户 HTTP 的身份验证,如果某些网站要求用户进行身份验证,那么这一项就是记录用户的身份信息

[10/Dec/2010:09:31:17 +0800]

第四项是记录请求的时间,格式为 [day/month/year:hour:minute:second zone], 最后的 +0800 表示服务器所处的时区为东八区

"GET /query/trendxml/district/todayreturn/month/2009-12-14/2010-12-09/haizhu_tianhe.xml HTTP/1.1"

这一项整个记录中最有用的信息,首先,它告诉我们的服务器收到的是一个 GET 请求,其次,是客户端请求的资源路径,第三,客户端使用的协议时 HTTP/1.1, 整个格式为 "%m %U%q %H" ,即"请求方法/访问路径/协议"

200

这是一个状态码,由服务器端发送回客户端,它告诉我们客户端的请求是否成功,或者是重定向,或者是碰到了什么样的错误,这项值为 200,表示服务器已经成功的响应了客户端的请求,一般来说,这项值以 2 开头的表示请求成功,以 3 开头的表示重定向,以 4 开头的标示客户端存在某些的错误,以 5 开头的标示服务器端存在某些错误,详细的可以参见 HTTP specification (RFC2616 section 10) http://www.w3.org/Protocols/rfc2616/rfc2616.txt

1933

这项表示服务器向客户端发送了多少的字节,在日志分析统计的时侯,把这些字节加起来就可以得知服务器在某点时间内总的发送数据量是多少。

-

HTTP Referer:告诉服务器我是从哪个页面链接过来的,没有值时可能是直接打开网页的原因。

"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 (.NET CLR 3.5.30729)"

user-agent 这项主要记录客户端的浏览器信息

Lesson2 黑客入侵日志分析

客户的网站被大黑阔入侵了,你现在需要做的是:

1、找到大黑阔的 IP 地址

2、大黑阔是如何找到网站后台的?

3、大黑阔如何进入后台?

4、大黑阔修改了什么文件来写一句话?

5、大黑阔通过一句话后门做了什么?

开始做,下载日志分析【access.log】【error.log】

可以看到是两个黑嫲嫲的日志,看起来不太方便,我们可以使用工具【apache log viewer】看。

世界就变成彩色的了,还有过滤功能,很方便。

找到大黑阔的 IP 地址

因为一般来说,如果不能一下子找到后台的话,就需要用一些目录爆破工具,而爆破的过程中,因为请求了很多不存在的目录,就会出现很多 404 状态的日志。

我们可以看一下报错状态的记录,点击【status】,就能发现了有几个 IP 的请求出现了404。

再往下拉,可以发现很明显的带有 payload 的恶意请求,它们都来自 IP【219.239.105.18】,说明这个 IP 地址就是大黑阔的地址。

大黑阔是如何找到网站后台的?

复制这个 IP 地址。

放到过滤器里,使用包括【include】的方式,然后应用该过滤【Apply Filter】

过滤出来的数据,点击【Date】按递增时间排序,就可以看到第一条记录是【2016/8/9 2:54:12】,即是大黑阔第一次访问时间。

往下看,可以看到出现大量 404 的访问记录,说明是在爆目录。

到了【2016/8/9 22:17:02】之后明显没有 404 访问记录,说明已经停止了爆目录,并且可以看到大黑阔开始访问后台了。

大黑阔如何进入后台?

从【2016/8/9 22:37:30】开始可以看到大量的 POST 请求,几秒之内就有多个请求,说明这是在进行爆破。

而在【2016/8/9 23:02:28】从【http://192.168.0.104/phpcms/index.php?m=admin&c=index&a=public_current_pos&menuid=10】这一条开始,请求的内容都是后台界面才有的,可见大黑阔成功爆破出密码并登录后台。

大黑阔修改了什么文件来写一句话?

我们可以看到最后这一句

GET /index.php?%20%20m=search&c=index&a=public_get_suggest_keyword&url=asdf&q=../../phpsso_server/caches/configs/database.php HTTP/1.1

通过搜索相关资料

http://blog.csdn.net/god_7z1/article/details/7816389

可以知道该漏洞的利用方法如下:

这一部分即是大黑阔在修改的时候发起的请求:

大黑阔通过一句话后门做了什么?

可以看到读取了数据库的帐号密码和系统的帐号密码。

Lesson3 通过 SQL 注入日志分析

客户的网站又被大黑阔入侵了,而且还是 sql 注入的形式,你现在需要做的是

1、大黑阔使用的方法属于 sql 注入中的什么方法?

2、大黑阔从什么时候开始用脚本跑数据的?

3、大黑阔的 payload 格式是怎样的,解译一下。

4、大黑阔拿到了什么数据?数据内容是什么?

下载日志文件之后,发现是都是类似的请求

大黑阔使用的方法属于 sql 注入中的什么方法?

GET /?id=1%27%20and%20ascii(substr((select%20database()),1,1))%3E104%23 HTTP/1.1

很明显是通过盲注的形式跑数据的。使用盲注的脚本可以参考:

https://github.com/yuesecurity/sqli-exploit/blob/master/sqliblind/sqlibaseblind.py

大黑阔从什么时候开始用脚本跑数据的?

从【2017/9/2 12:20:42】开始短时间内发起大量请求。

大黑阔的 payload 格式是怎样的,解译一下。

payload 为

/?id=1%27%20and%20ascii(substr((select%20database()),1,1))=114%23】

其中读取 database(),然后 substr 选择。

选择出来的数据用 ascii 编码,与后面的数字 114 比较。

大黑阔拿到了什么数据?数据内容是什么?

拿到 database() 和 user()。

仔细观察,可以发现是后面的 1 去比较这个 database() 的 1 到 15 位。然后再用 2 去比较 1 到 15 位。

而判断是否匹配的方法是看返回的包的大小:

【654】包的数量比【665】的多很多,【665】的包是盲注匹配成功时候返回的包。

于是把【665】的包里的数值一个个写到表格里,用 http://evilcos.me/lab/xssor/ 转成对应的字符。当然我比较懒,这里没有填完。

还是用脚本跑一下比较爽:

原文发布于微信公众号 - 信安之路(xazlsec)

原文发表时间:2018-11-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏信安之路

web应用渗透测试流程

对于web应用的渗透测试,一般分为三个阶段:信息收集、漏洞发现以及漏洞利用。下面我们就分别谈谈每个阶段需要做的事情。

1290
来自专栏逸鹏说道

Rookey.Frame企业级快速开发框架开源了

Rookey.Frame是一套基于.NET MVC + easyui的企业级极速开发框架,支持简单逻辑模块零代码编程、支持工作流(BPM)、支持二次开发,具有...

4396
来自专栏北京马哥教育

使用 Nginx 提升网站访问速度

本文主要介绍如何在 Linux 系统上安装高性能的 HTTP 服务器 —— Nginx、并在不改变原有网站结构的条件下用 Nginx 来提升网站的访问速度。 N...

4448
来自专栏北京马哥教育

运维架构师进阶:Linux进程管理

来源:IBM 译者:ljianhui 链接:blog.csdn.net/ljianhui/article/details/46718835 1.1 Linu...

3569
来自专栏Hadoop实操

如何为Hadoop集群服务器绑定双万兆网卡

在搭建Hadoop集群时,要求网络使用以太网,最低要求使用千兆网络,推荐使用万兆网络,标准配置是数据网络配备双万兆网卡,管理网络配备双千兆网卡。使用双万兆网卡的...

7381
来自专栏IT笔记

Grafana+Prometheus打造全方位立体监控系统

前言 本文主要介绍如何使用Grafana和Prometheus以及node_exporter对Linux服务器性能进行监控。下面两张图分别是两台服务器: 服务器...

96113
来自专栏杨建荣的学习笔记

jdk版本导致tomcat,eclipse无法启动的问题 (35天)

这几天从官网 下载了swingweb的demo,是一个打包好的tomcat,里面的jar包和脚本都是完整的,直接启动tomcat就可以,通过命令行java -v...

3965
来自专栏芋道源码1024

MongoDB 4.0 正式发布,支持多文档事务

MongoDB 4.0 已正式发布,MongoDB 是一个开源文档数据库,提供高性能、高可用性和自动扩展。

1190
来自专栏Java架构师学习

面对缓存,出现这些问题你要如何思考!

缓存可以说是无处不在,比如 PC 电脑中的内存、CPU 中的二级缓存、HTTP 协议中的缓存控制、CDN 加速技术都是使用了缓存的思想来解决性能问题。 Java...

39810
来自专栏FreeBuf

Shodan新手入坑指南

*本文原创作者:xiaix,本文属FreeBuf原创奖励计划,未经许可禁止转载 亲们~黑五 Shodan Membership 只要5刀,你剁手了没? 什么是 ...

5005

扫码关注云+社区

领取腾讯云代金券