首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

玄机蓝队靶场_应急响应_02:apache日志分析

编程知识
2024年08月24日 19:47

日志分析这块,感觉都是对grep、awk、sort、wc、uniq,这几个命令的使用。

一:靶场

(1)直接cd到linux日志,
cd /var/log
发现apache2目录,
cd ./apache2
里边只有两种类型的日志,access.log和error.log。

access.log(访问日志):
    记录内容:此日志记录所有对服务器的访问请求,包括访问者的IP地址、请求时间、请求的URL、HTTP方法、响应状态码、响应大小、用户代理信息等。
    用途:用于监控网站的访问情况、分析流量、生成统计数据、检查用户行为等。它帮助管理员了解哪些资源最受欢迎、流量的来源、访问模式等。

error.log(错误日志):
    记录内容:此日志记录服务器运行过程中遇到的错误和警告信息,例如配置错误、缺少文件、服务器崩溃等。还可能记录一些调试信息。
    用途:用于排查和解决问题。当服务器出现错误或异常时,管理员可以通过查看这个日志文件来找到错误的原因,并进行修复。

简单来说,access.log是和流量相关的日志,记录的都是正常请求。error.log日志记录的是服务器本身的日志,和流量没有关系。用户访问时,响应码为404,500,502,503,504的流量除了被记录在access.log中,也会被记录在error.log中(access.log中记录的是相对路径,error.log中记录的是绝对日志)。
访问最多的IP,
cat ./access.log.1 |awk '{print $1}'|sort |uniq -c
(2)
在看日志时可以发现客户端的浏览器,操作系统信息,版本等内容,这些东西,复制做md5加密即可得到对应的md5值:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
(3)
直接过滤'/index.php'而不是'inde.php'
cat ./access.log.1 |grep '/index.php' |wc -l
(4)
这里有一个坑,grep过滤是包含过滤,不是完全匹配的过滤,比如说我要过滤'192.168.200.2',那么'192.168.200.211'也会被包括,这坑卡了我几十分钟。
cat ./access.log.1 |grep '192.168.200.2'|awk '{print $1}'|sort -nr |uniq -c
(5)
这题注意反义字符,还有就是答案是要访问的IP数,而不是访问次数。(没想到::1也算)
cat ./access.log.1 |grep '\[03\/Aug\/2023\:08\:'|awk '{print $1}'|sort -nr |uniq -c

二:收获

(1)apache日志的格式,分为access.log和error.log,access.log是关于访问流量的日志,error.log是关于服务器运行状态的日志。访问流量响应码为404,500,502,503,504的流量会被同时记录在两个类型日志中,里面的访问路径access体现为相对路径,error体现为绝对路径。
Apache+Linux 日志路径一般是以下三种:
/var/log/apache/access.log
/var/log/apache2/access.log
/var/log/httpd/access.log

(2)grep过滤为包含过滤,而不是完全匹配的过滤。
(3)看了其他人写的WP,认识到对日志的格式做解读记录一下是有必要的:

192.168.200.2 - - [03/Aug/2023:08:46:39 +0000] "GET /_admin/ HTTP/1.1" 404 492 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"

    192.168.200.2:客户端的IP地址,表示发起请求的计算机的网络地址。

    -:通常是指客户端的身份验证信息(如用户名),此处没有提供,因此显示为-。

    -:表示请求的身份验证用户名,若无显示为-。

    [03/Aug/2023:08:46:39 +0000]:时间戳,表示请求发生的日期和时间,格式为[日/月/年:时:分:秒 时区]。

    "GET /_admin/ HTTP/1.1":请求行,包括请求方法(GET)、请求的URL(/_admin/)和使用的协议(HTTP/1.1)。

    404:HTTP响应状态码,表示请求的资源未找到。

    492:响应的字节数,表示返回给客户端的数据大小,单位为字节。

    "-":表示请求的来源页(Referer),即发起请求的页面,若无显示为-。

    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36":用户代理字符串(User-Agent),提供了关于客户端浏览器及其版本的信息。

192.168.200.48 - - [03/Aug/2023:08:43:34 +0000] "GET / HTTP/1.1" 200 4220 "-" "curl/7.68.0"

    192.168.200.48:客户端的IP地址,表示发起请求的设备的网络地址。

    -:表示客户端身份验证的用户名,此处未提供,因此显示为-。

    -:同样,表示请求的身份验证用户名,此处也没有提供,因此显示为-。

    [03/Aug/2023:08:43:34 +0000]:时间戳,记录了请求的日期和时间,格式为[日/月/年:时:分:秒 时区]。

    "GET / HTTP/1.1":请求行,包含请求方法(GET)、请求的URL(/,表示主页)和使用的协议(HTTP/1.1)。

    200:HTTP响应状态码,表示请求成功,服务器返回了请求的资源。

    4220:响应的字节数,表示返回给客户端的数据大小,单位为字节。

    "-":表示请求的来源页(Referer),即发起请求的页面,若无显示为-。

    "curl/7.68.0":用户代理字符串(User-Agent),显示请求是由curl工具(版本7.68.0)发出的,而不是由浏览器发出的。

[Thu Aug 03 08:46:45.348890 2023] [php7:error] [pid 1541] [client 192.168.200.2:33166] script '/var/www/html/head.php' not found or unable to stat
    时间戳:2023年8月3日08:46:45
    错误类型:PHP 7的错误
    进程ID:1541
    客户端信息:IP地址和端口号(192.168.200.2:33166)
    错误描述:head.php脚本文件在指定路径下不存在或无法访问(可能由于文件权限问题)。

日志记录格式定义路径/etc/httpd/conf/httpd.conf

LogFormat “%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i”” combined

    %h:客户端的IP地址。例如,192.168.1.1。
    %l:客户端身份验证用户名。通常显示为-(如果没有身份验证或无法确定用户名)。
    %u:用户身份验证用户名。如果没有身份验证,通常显示为-。
    %t:请求的时间和日期。格式通常为[日/月/年:时:分:秒 时区]。例如,[03/Aug/2023:08:43:34 +0000]。
    "%r":请求行,包括请求方法、请求的URL和协议。例如,"GET /index.html HTTP/1.1"。
    %>s:HTTP响应状态码。例如,200表示成功,404表示未找到。
    %b:响应的字节数(不包括HTTP头)。例如,4220字节。
    "%{Referer}i":请求的来源页(Referer)。如果没有来源页信息,通常显示为-。
    "%{User-Agent}i":用户代理字符串(User-Agent),即客户端的浏览器或工具的信息。例如,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"。

查看IP做了什么操作:
cat access.log.1 | grep 192.168.200.2 | awk '{print $1"\t"$8}' | sort | uniq -c | less
查找访问的热点时间(单位是分钟):
awk ‘{print $4}’ access.log.1 |cut -c 14-18|sort|uniq -c|head
(cut -c 14-18 是一个用于提取文本中指定字符范围的命令。具体来说,它从每行中提取第14到第18个字符(包括两个端点的字符).)
结合IP可以得到恶意IP的访问历史。
cat ./access.log.1 |grep '\[03\/Aug\/2023\:08\:'|awk '{print $1}'|sort -nr |uniq -c

参考WP:https://blog.csdn.net/qq_46343633/article/details/139471570

From:https://www.cnblogs.com/blue-red/p/18378227
本文地址: http://shuzixingkong.net/article/1410
0评论
提交 加载更多评论
其他文章 .NET 音频采集
本文介绍Windows下声音数据的采集,用于本地录音、视讯会议、投屏等场景 声音录制有麦克风、扬声器以及混合录制三类方式,麦克风和扬声器单独录制的场景更多点,混合录制更多的是用于本地录音 我们基于NAudio实现,开源组件NAudio已经很稳定的实现了各类播放、录制、转码等功能,WaveIn,Wav
CSP-J 第一轮 2024模拟卷-1
单项选择题 我只写重点!!! 第四题 NOI复赛评测机所用的Linux系统属于() A.UML B.IDE C.OS D.Database 答案:C 解析:UML是一种建模语言,IDE是集成开放环境,Database是数据库,NOI复赛评测机所用的Linux系统属于OS(Operating Syst
预设型 DP
预设型 DP 《美好的一天》--青春学概论 한 잔 술에 취해 잠긴 목엔 沉醉于一杯酒 갈라지는 목소린 다시 带着沙哑的嗓音 두 잔 자기 전엔 기분 좋음 入睡前饮下第二杯让心情愉悦 알 수 없는 세상에 빠져 陷入不可预知的世界 세 잔 또 네 잔 술에 빠진 又沉醉于第三杯第四杯 세상과
预设型 DP 预设型 DP
k8s新版本使用container而不是docker导致创建pod一直提示证书问题
使用 Harbor 仓库作为 Kubernetes 集群私有仓库 Harbor 仓库信息 内网地址:hub.rainsc.com IP 地址:192.168.66.100 问题背景 在许多版本的教程中,会建议在 Docker 的配置中添加忽略证书的列表。然而,截至 2024 年 8 月 24 日,这
讲讲Java的序列化反序列化?
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序列化:把字节序列恢复为对象的过程称为对象的反序列化. 什么时候会用到 当只在本地 JVM 里运行下 Java 实例,这个时候是不需要什么序列化和反序列化的,但当出现以下场景时,就需要序列化和反序列化了: 当需要将内存中的对象持久化到磁盘,数据
apr库编译及队列使用笔记
操作系统 :CentOS 7.9_x64 apr库版本:apr-1.7.4 & apr-util-1.6.3 gcc 版本:4.8.5 队列功能在C++或Python等脚本语言里面,是很容易就可以使用的,但C语言里面,标准库里面没有。 在使用C语言开发新应用时,就会遇到这个问题。阅读Free
apr库编译及队列使用笔记 apr库编译及队列使用笔记 apr库编译及队列使用笔记
Transformer模型:Position Embedding实现
在自然语言处理(NLP)中,Transformer 模型是一个非常重要的里程碑,它通过自注意力(self-attention)机制极大地提高了处理序列数据的能力。在 Transformer 模型中,词嵌入(Word Embedding)是输入层的关键部分,负责将离散的单词转换成连续的向量表示,以便模
全网最适合入门的面向对象编程教程:38 Python常用复合数据类型-使用列表实现堆栈、队列和双端队列
在 Python 中,列表(list)是一种非常灵活的数据结构,可以用来实现堆栈(stack)、队列(queue)和双端队列(deque)。这些数据结构虽然在使用时遵循不同的操作规则,但都可以通过 Python 列表来高效地实现。
全网最适合入门的面向对象编程教程:38 Python常用复合数据类型-使用列表实现堆栈、队列和双端队列 全网最适合入门的面向对象编程教程:38 Python常用复合数据类型-使用列表实现堆栈、队列和双端队列 全网最适合入门的面向对象编程教程:38 Python常用复合数据类型-使用列表实现堆栈、队列和双端队列