分享一个应急响应web日志:access.log文件分析小工具
有时做应急响应的时候,需要提取web日志如access.log日志文件来分析系统遭受攻击的具体原因,由于开源的工具并不是很好用,所以自己用Python3写了一个简单的日志分析工具。
先介绍一下access.log日志
access.log日志文件记录了所有目标对Web服务器的访问请求,当有客户端对网站进行了访问时,access.log就会生成一条访问日志。

日志格式
一条访问日志一般分为7个字段
1.202.114.41 - - [09/Nov/2020:11:08:23 +0800] "GET / HTTP/1.1" 404 146 "https://www.baidu.com/link?url=jBUa" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0"
1.202.114.41 代表是谁访问的服务器
[09/Nov/2020:11:08:23 +0800] 表示访问服务器时,服务器的时间。+0800表示服务器所处时区位于UTC之后的8小时。
GET / HTTP/1.1 请求的方法和访问的路径
404 为服务器响应的状态码,此信息非常有价值,它揭示了请求是否成功以及失败。
146 表示服务器发送给客户端的字节数,但这个字节数,不包括响应头的信息,如果服务器没有向客户端发送任何内容,则该值为“-”
https://www.baidu.com/link?url=jBUa 请求来源,用于表示浏览者在访问该页面之前所浏览的页面,只有从上一页面链接过来的请求才会有该项输出,如果是新开的页面则该项为空。上例中来源页面是从baidu转过来,即用户从baidu的那条链接中点击进来。
"Mozilla/5.0 xx" 表示用户终端浏览器的UserAgent
常见web漏洞攻击日志
通过web日志可以判断目标为恶意请求还是正常请求。如下请求路径中携带危险字符
172.16.2.1 - - [09/Feb/2023:17:57:02 0800] "GET /sqli-labs-master/Less-1/?id=1' order by 3 -- HTTP/1.1" 200 721(SQL注入) 172.16.2.1 - - [09/Feb/2023:17:57:18 0800] "GET /sqli-labs-master/Less-1/?id=1' and sleep(5) -- HTTP/1.1" 200 670 (SQL注入) 172.16.2.1 - - [09/Feb/2023:18:01:19 0800] "GET /sqli-labs-master/Less-1/?id=<script>alert(11)</script> HTTP/1.1" 200 670 (xss攻击) ... |
可以使用正则来匹配每条请求是否存在攻击行为,其中的指纹库finger可以根据需求随时进行扩充
log_tool.py
import re, os, argparse
from urllib.parse import unquote
from colorama import init,Fore,Back
init(autoreset=True)finger = {"命令执行攻击":"/dev/tcp|call_user_func|preg_replace|proc_popen|popen|passthru|shell_exec|exec|/bin/bash|call_user_func_array|assert|eval|fputs|fopen|base64_decode|wget|curl.*ifs|uname|think.*invokefunction|whoami|ifconfig|ip add|echo|net user|phpinfo|jndi:|rmi:|\${","sql注入攻击":"sleep|union|concat|information_schema|table_name|extractvalue|updatexml|order by|sqlmap|md5\(","xss攻击":"<script|img src=|imgsrc=|document\.domain|prompt|alert\(|confirm\(|javascript:|Onerror|onclick","webshell连接":"shell\.asp|shell\.jsp|shell\.jspx|shell\.php|cs\.php|tomcatwar\.jsp","敏感文件攻击":"\.ssh/id_dsa|\.\./|\.\.|/etc/passwd|\.bash_profile|db\.sqlite|/win\.ini|wp-config\.php|\.htaccess|\?pwd|heapdump|/\.git"
}data_list = {'命令执行攻击':[],'sql注入攻击':[],'xss攻击':[],'webshell连接':[],'敏感文件攻击':[]
}def get_parser():logo = r"""______ _____________ ____ / ___/ / ___/\_ __ \_/ ___\ \___ \ \___ \ | | \/\ \___ /____ >/____ > |__| \___ >\/ \/ \/ Author: 山山而川Blog : https://chenchena.blog.csdn.net/?type=lately"""parser = argparse.ArgumentParser(usage='python log_tool.py 日志文件')print(logo)print("正在分析日志信息,请稍等..."+"\n")p = parser.add_argument_group('log_tool.py的参数')p.add_argument("logName", type=str, help="为.log日志文件")args = parser.parse_args()return argsdef extract(filename):with open(filename,'r',encoding='utf-8') as file:for line in file: #获取每一条日志信息line = unquote(line[:-1], 'utf-8')for k,v in finger.items(): #遍历每一条指纹信息result = re.search(v,line,re.I)if result:data = line + Fore.RED+" 匹配指纹[%s]"%result.group()if k == "命令执行攻击":rce = data_list.get('命令执行攻击')rce.append(data)breakif k == "sql注入攻击":sql = data_list.get('sql注入攻击')sql.append(data)breakif k == "xss攻击":xss = data_list.get('xss攻击')xss.append(data)breakif k == "webshell连接":webshell = data_list.get('webshell连接')webshell.append(data)breakif k == "敏感文件攻击":file = data_list.get('敏感文件攻击')file.append(data)breakoutfileName = filename.rsplit(".",1)[0] + "_result.txt"if os.path.exists(outfileName):os.remove(outfileName)for attack_name,attack_record in data_list.items():if attack_record:output = '疑似存在"%s":'%attack_nameprint(Fore.YELLOW+output)with open(outfileName,'a',encoding='utf-8') as f:f.write(output+"\n")for recode in attack_record:if "200" in recode:print(recode + Fore.GREEN + " 响应码200")with open(outfileName,'a',encoding='utf-8') as f:f.write(recode + " 响应码200""\n")else:print(recode)with open(outfileName, 'a', encoding='utf-8') as f:f.write(recode + "\n")with open(outfileName, 'a', encoding='utf-8') as f:f.write("\n")print("")
if __name__ == '__main__':filename = get_parser().logNameextract(filename)
输出的同时会默认保存在本地

相关文章:
分享一个应急响应web日志:access.log文件分析小工具
有时做应急响应的时候,需要提取web日志如access.log日志文件来分析系统遭受攻击的具体原因,由于开源的工具并不是很好用,所以自己用Python3写了一个简单的日志分析工具。先介绍一下access.log日志access.log日志文件记录了所有目标对Web服务器…...
windows注册服务非常实用
方式一:使用Windows自带的sc命令 1、使用管理员权限打开cmd窗口 2、注册服务命令: sc create 服务名 binpath 程序所在路径 type own start auto displayname 服务显示名称 sc create redis binpath d:\tools\redis-x64-5.0.14\redis-server.exe type …...
蓝桥dfs专题
1、dfs 路径打印 小明冒充X星球的骑士,进入了一个奇怪的城堡。 城堡里边什么都没有,只有方形石头铺成的地面。 假设城堡地面是 n x n 个方格。【如图1.png】所示。 按习俗,骑士要从西北角走到东南角。 可以横向或纵向移动,但不能…...
[ 网络 ] 应用层协议——HTTPS协议原理
目录 1.HTTPS是什么 2.加密技术 2.1什么是加密 2.2为什么要加密 2.3加密处理防止被窃听 3.常见的加密方式 对称加密 非对称加密 4.数据摘要&&数据指纹 5.数字签名 6.HTTPS的工作过程探究 方案1——只是用对称加密 方案2——只进行非对称加密 方案3——双方…...
http协议如何操作
、HTTP协议(超文本传输协议) 1.1、http协议是一个基于“请求与响应”模式的、无状态的应用层协议。 http协议采用URL作为定位网络资源的标识。 1.2、URL格式 http://host[:port][path] host:合法的Internet主机域名或IP地址 port:端口号…...
ESP Insights 系列文章
ESP Insights 系列 #1 | 远程查看设备信息,快速解决固件问题 ESP Insights 是一个可远程查看设备固件运行状态和日志的平台,能够帮助开发人员快速定位并解决固件问题。 ESP Insights 系列 #2 | 新增功能 最新版本优化了用户界面、修复了系统稳定性&am…...
如何提高爬虫工作效率
单进程单线程爬取目标网站太过缓慢,这个只是针对新手来说非常友好,只适合爬取小规模项目,如果遇到大型项目就不得不考虑多线程、线程池、进程池以及协程等问题。那么我们该如何提升工作效率降低成本? 学习之前首先要对线程&#…...
React结合Drag API实现拖拽示例详解
Drag API React中的Drag API是用于实现拖放功能的API。该API由React DnD库提供,可用于实现拖放操作,例如将元素从一个位置拖动到另一个位置。 React DnD库提供了两种Drag API:基于HTML5的拖放API和自定义实现的拖放API。 基于HTML5的拖放AP…...
【华为OD机试java、python、c++、jsNode】新学校选址(100%通过+复盘思路)
代码请进行一定修改后使用,本代码保证100%通过率。本文章提供java、python、c++、jsNode四种代码。复盘思路在文章的最后 题目描述 为了解新学期学生暴涨的问题,小乐村要建立所新学校, 考虑到学生上学安全问题,需要所有学生家到学校的距离最短。 假设学校和所有学生家都走在…...
Nacos配置中心,分组配置参考,以及python、go、bash客户端连接获取
Nacos使用说明 nacos官方网站 https://nacos.io/zh-cn/docs/v2/what-is-nacos.html 1、基本配置说明 nacosIP地址:http://xxxxx:8848/nacos/ 服务管理端登录账号:nacos XXX Java最小配置,其他客户端可参考,配置可对应到第三章…...
node-red中有关用户登录,鉴权,权限控制的流程解析
前言 默认地,node-red编辑器可以被任何访问的用户操作,包括修改节点,流数据,重新部署流。 这种默认的部署方式只适用于运行在可靠的网络中。下面我就给大家介绍一下,在公网上部署node-red后,如何对其进行安全加固和权限验证。 主要分为三部分 开启https权限保护编辑器和…...
MQTT协议-使用CONNECT报文连接阿里云
使用网络调试助手发送CONNECT报文连接阿里云 参考:https://blog.csdn.net/daniaoxp/article/details/103039296 在前面文章介绍了如何组装CONNECT报文,以及如何计算剩余长度 CONNECT报文:https://blog.csdn.net/weixin_46251230/article/d…...
每日学术速递3.8
CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Unleashing Text-to-Image Diffusion Models for Visual Perception 标题:释放用于视觉感知的文本到图像扩散模型 作者:Wenliang Zhao, Yongming Rao, Zuya…...
测牛学堂:软件测试之接口测试理论基础总结
接口概念 接口:系统之间数据交互的通道。 这个系统,可以是外部和内部,也可以是两个内部系统之间的通道。 比如我们前端的登录信息,主要是用户名和密码,它通过接口传递给后端,后端校验以后,把结…...
基于土壤数据与机器学习算法的农作物推荐算法代码实现
1.摘要 近年来,机器学习方法在农业领域的应用取得巨大成功,广泛应用于科 学施肥、产量预测和经济效益预估等领域。根据土壤信息进行数据挖掘,并在此基础上提出区域性作物的种植建议,不仅可以促进农作物生长从而带来经济效益&#…...
python中html必备基础知识
<!DOCTYPE html>此标签表示这是一个html文件<heml lang"en">向搜索引擎表示该页面是html语言,并且语言为英文网站,其"lang"的意思就是“language”,语言的意思,而“en”即表示English<head>…...
【专项训练】前言:刻意练习,不断的过遍数才是王道
如何精通一个领域? 拆分知识点刻意练习:每个区域的基础动作分解训练和反复刻意练习反馈(主动反馈、被动反馈、及时反馈)任何知识体系都是一颗树,一定要梳理成思维导图,明确知识与知识之间的关系! 通过7-8周密集训练,练好基本功,彻底攻克LeetCode! 严格执行五毒神掌!…...
【Leetcode】反转链表 合并链表 相交链表 链表的回文结构
目录 一.【Leetcode206】反转链表 1.链接 2.题目再现 3.解法A:三指针法 二.【Leetcode21】合并两个有序链表 1.链接 2.题目再现 3.三指针尾插法 三.【Leetcode160】相交链表 1.链接 2.题目再现 3.解法 四.链表的回文结构 1.链接 2.题目再现 3.解法 一.…...
M1、M2芯片Mac安装虚拟机
目录前言一、安装二、网络设置三、连接SSH客户端前言 一直想着给M1 Mac上安装虚拟机,奈何PD收费,找的破解也不稳定,安装上镜像就起不来。 注:挂长久的分享莫名其妙被封,需要安装包请私信我。 一、安装 虚拟机选择&a…...
算法刷题-只出现一次的数字、输出每天是应该学习还是休息还是锻炼、将有序数组转换为二叉搜索树
只出现一次的数字(位运算、数组) 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗&…...
2026年医疗卫生/护理求职AI工具横评:白衣天使的求职神器大比拼
导语 2026年,医疗卫生行业依然是最具社会价值和就业稳定性的行业之一。随着中国老龄化加速,医护人员需求持续扩大,仅公立医院护士岗位需求量就突破200万。然而,医护求职并不轻松:编制紧张、规培政策复杂、职称考试压力…...
终极指南:如何一键下载国家智慧教育平台电子课本PDF
终极指南:如何一键下载国家智慧教育平台电子课本PDF 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 项目地址: …...
电源设计和效率优化案例C01
本文重点讲清楚三个非常重要的问题: 手把手教会计算电源的效率计算,包括线性电源和开关电源等 1-电源的上下管的 Qg和Rdson为什么是一对矛盾量? 2-单相30A的电流输出电源要求,对上下管子应该如何取舍这两个参数,为什么? 电源设计是硬件设计的核心组成部分,尤其事目前…...
农业大宗商品与气候数据融合:MCP架构下的数据工程实践
1. 项目概述:当农业大宗商品遇上气候数据最近在做一个挺有意思的项目,核心是把农业大宗商品的数据和气候数据给打通了。听起来好像是个挺宏大的概念,对吧?其实说白了,就是想把“地里长的”和“天上变的”这两件事&…...
开源语言模型项目实践:从Transformer核心到训练调优全解析
1. 项目概述:一个开源语言模型的实践与探索最近在GitHub上看到一个名为“angeluriot/Language_model”的项目,点进去一看,是个挺有意思的语言模型实现。虽然项目标题很简单,但内容却涵盖了从数据处理、模型构建到训练推理的完整链…...
LoRa模块信号弱?可能是你的“射频快递”堵车了:深入Sx1262前端电路的信号处理流水线
LoRa模块信号弱?可能是你的“射频快递”堵车了:深入Sx1262前端电路的信号处理流水线 想象一下,你精心打包的快递包裹在运输途中被随意堆放、地址模糊不清,最终导致收件人无法正常签收——这正是许多LoRa模块信号问题的真实写照。当…...
从习题到实战:掌握随机变量及其分布的5个核心场景
1. 从杯子分球看离散型随机变量 想象你面前有4个空杯子和3个乒乓球,随手把球扔进杯子里会发生什么?这个看似简单的游戏,其实是理解离散型随机变量的绝佳案例。X代表"杯子中球的最大个数",它可能取值为1、2、3——这就是…...
傅里叶变换加速视觉模型:频域卷积与FiT架构实战
1. 项目概述:用傅里叶变换为视觉模型“减负”在计算机视觉的模型炼金术里,我们总在追求一个看似矛盾的平衡:既要模型“看得更清”(更高的精度和更强的特征提取能力),又要它“跑得更快”(更低的计…...
外汇延迟套利检测系统演进:从规则到AI的行为博弈
1. 项目概述:当速度优势不再是护城河 在电子外汇交易的世界里,速度套利一直是一个古老而又充满技术魅力的游戏。它的核心逻辑简单到近乎纯粹:如果你能比你的交易对手更快地获取到市场价格变动的信息,你就能在对手更新其报价之前&a…...
跨平台文件自由:Free-NTFS-for-Mac 终极解决方案深度解析
跨平台文件自由:Free-NTFS-for-Mac 终极解决方案深度解析 【免费下载链接】Free-NTFS-for-Mac Nigate: An open-source NTFS utility for Mac. It supports all Mac models (Intel and Apple Silicon), providing full read-write access, mounting, and management…...
