利用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 相关文章推荐
javascript数组去掉重复
May 12 Javascript
JQuery入门——用映射方式绑定不同事件应用示例
Feb 05 Javascript
如何在MVC应用程序中使用Jquery
Nov 17 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
Sep 17 Javascript
bootstrap flask登录页面编写实例
Nov 01 Javascript
基于jQuery实现的打字机效果
Jan 16 Javascript
一个Vue页面的内存泄露分析详解
Jun 25 Javascript
详解angularjs跨页面传参遇到的一些问题
Nov 01 Javascript
vue指令做滚动加载和监听等
May 26 Javascript
layui表格设计以及数据初始化详解
Oct 26 Javascript
js实现简单的日历显示效果函数示例
Nov 25 Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
Jul 27 Javascript
浅谈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
ubuntu 编译安装php 5.3.3+memcache的方法
2010/08/05 PHP
php连接数据库代码应用分析
2011/05/29 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
3款值得推荐的微信开发开源框架
2014/10/28 PHP
PHP积分兑换接口实例
2015/02/09 PHP
PHP按指定键值对二维数组进行排序的方法
2015/12/22 PHP
javascript笔试题目附答案@20081025_jb51.net
2008/10/26 Javascript
Javascript 函数对象的多重身份
2009/06/28 Javascript
js event事件的传递与冒泡处理
2009/12/06 Javascript
javascript中parentNode,childNodes,children的应用详解
2013/12/17 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
javascript中setTimeout使用指南
2015/07/26 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
2015/11/30 Javascript
Bootstrap每天必学之按钮(Button)插件
2016/04/25 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
js eval函数使用,js对象和字符串互转实例
2017/03/06 Javascript
vue 动态创建组件的两种方法
2020/12/31 Vue.js
[06:33]3.19 DOTA2发布会 海涛、冷冷、2009见证希望
2014/03/21 DOTA
Python 开发Activex组件方法
2009/11/08 Python
Python datetime和unix时间戳之间相互转换的讲解
2019/04/01 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
pytorch 改变tensor尺寸的实现
2020/01/03 Python
Python对象的属性访问过程详解
2020/03/05 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
Python3开发环境搭建详细教程
2020/06/18 Python
Pytorch 卷积中的 Input Shape用法
2020/06/29 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
美国校园市场:OCM
2017/06/08 全球购物
英国拳击装备购物网站:RDX Sports
2018/01/23 全球购物
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
创新比赛获奖感言
2014/02/13 职场文书
工厂搬迁方案
2014/05/11 职场文书
保密法制宣传月活动总结
2015/05/07 职场文书
聘任通知书
2015/09/21 职场文书
Golang 使用Map实现去重与set的功能操作
2021/04/29 Golang