利用python分析access日志的方法


Posted in Javascript onOctober 26, 2016

前言

WAF上线之后,处理最多的是误报消除。

产生误报有多种原因,比如web应用源码编写时允许客户端提交过多的cookie;比如单个参数提交的数值太大。

把误报降低到了可接受的范围后,还要关注漏报。WAF不是神,任何WAF都可能被绕过。所以还需要定位漏过的攻击,明确漏报的原因,才能update WAF的策略。

要定位漏报,就必须分析Web应用的访问日志了。一个站点,每天产生的access日志大概接近1GB,显然靠肉眼看是不现实的。这就需要用python帮助自动分析。

实现思路

拿我司某Web系统举例:

     apache开启了access日志记录

     日志规则是每小时生成一个日志文件,以站点名称为文件名,以日期+时间为后缀。例如:special.XXXXXX.com.cn.2016101001

要分析这些散碎的日志文件,我的思路如下:

     1、根据用户命令行输入获取日志文件所在目录;

     2、遍历目录下所有文件,合并到一个文件;

     3、定义web攻击常见payload的字符串:

          SQLi的:select、union、+?+;

          Struts的:ognl、java

          webshell常见的:base64、eval、excute

使用正则逐行匹配,将命中的日志复制到单独的文件。

实现代码

代码如下:

# -*-coding: utf-8 -*-
import os,re,sys
if len(sys.argv) != 2 :
  print 'Usage : python logaudit.py <path>'
  sys.exit()
logpath = sys.argv[1]
#获取输入参数的文件路径'
merge = re.compile(r'.*(\d[10])')
for root , dirs , files in os.walk(logpath):
  for line in files:
    #遍历日志文件夹,合并所有内容到一个文件
    pipei = merge.match(line)
    if pipei != None:
      tmppath = root + '\\' +line
      logread1 = open(tmppath,'r')
      logread = logread1.read()
      log2txt = open('.\\log.txt','a')
      log2txt.write(logread)
      log2txt.close()
      logread1.close()
    else:
      exit
log = open('.//log.txt','r')
logread = log.readlines()
auditString = re.compile(r'.*[^_][sS][eE][lL][eE][cC][tT][^.].*|.*[uU][nN][iI][Oo][nN].*|.*[bB][aA][sS][eE][^.].*|.*[oO][gG][nN][lL].*|.*[eE][vV][aA][lL][(].*|.*[eE][xX][cC][uU][tT][eE].*')
writelog = open('.//result.txt','a')
for lines in logread:
  auditResult = auditString.match(lines)
  if auditResult != None:
    writelog.write(auditResult.group())
    writelog.write('\n')
  else:
    exit
writelog.close()
log.close()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
js使用栈来实现10进制转8进制与取除数及余数
Jun 11 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
Aug 16 Javascript
JavaScript定义类和对象的方法
Nov 26 Javascript
node.js操作mysql(增删改查)
Jul 24 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
Apr 13 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
May 02 Javascript
layui选项卡效果实现代码
May 19 Javascript
前端主流框架vue学习笔记第二篇
Jul 26 Javascript
React 组件间的通信示例
Jun 14 Javascript
localstorage实现带过期时间的缓存功能
Jun 28 Javascript
layui点击按钮页面会自动刷新的解决方案
Oct 25 Javascript
vue路由实现登录拦截
Mar 24 Vue.js
浅谈jQuery绑定事件会叠加的解决方法和心得总结
Oct 26 #Javascript
关于Jquery中的事件绑定总结
Oct 26 #Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
Oct 25 #Javascript
理解JavaScript原型链
Oct 25 #Javascript
Ztree新增角色和编辑角色回显问题的解决
Oct 25 #Javascript
jQuery+json实现动态创建复杂表格table的方法
Oct 25 #Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
Oct 25 #Javascript
You might like
Apache2 httpd.conf 中文版
2006/11/17 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
2017/06/07 PHP
php DES加密算法实例分析
2019/09/18 PHP
鼠标图片振动代码
2006/07/06 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
2013/04/11 Javascript
页面载入结束自动调用js函数示例
2013/09/23 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
js电话号码验证方法
2015/09/28 Javascript
最原始的jQuery注册验证方式
2016/10/11 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
Node.js 多线程完全指南总结
2019/03/27 Javascript
微信小程序整个页面的自动适应布局的实现
2020/07/12 Javascript
Javascript confirm多种使用方法解析
2020/09/25 Javascript
react antd表格中渲染一张或多张图片的实例
2020/10/28 Javascript
python使用urllib模块和pyquery实现阿里巴巴排名查询
2014/01/16 Python
python多重继承新算法C3介绍
2014/09/28 Python
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
Python编写百度贴吧的简单爬虫
2015/04/02 Python
详解Python map函数及Python map()函数的用法
2017/11/16 Python
Python基于matplotlib实现绘制三维图形功能示例
2018/01/18 Python
python实现将一个数组逆序输出的方法
2018/06/25 Python
python版DDOS攻击脚本
2019/06/12 Python
Python基于pygame实现单机版五子棋对战
2019/12/26 Python
pytorch下使用LSTM神经网络写诗实例
2020/01/14 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
2020/03/08 Python
python实现简单坦克大战
2020/03/27 Python
python实现简单学生信息管理系统
2020/04/09 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
2020/11/27 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
佐卡伊官网:中国知名珠宝品牌
2017/02/05 全球购物
毕业生自荐书
2014/02/03 职场文书
酒店管理专业自荐信
2014/05/23 职场文书
人代会标语
2014/06/30 职场文书
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript