利用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 相关文章推荐
csdn 论坛技术区平均给分功能
Nov 07 Javascript
jquery 无限级联菜单案例分享
Mar 26 Javascript
禁用JavaScript控制台调试的方法
Mar 07 Javascript
基于jQuery的图片不完全按比例自动缩小
Jul 11 Javascript
JavaScript运动减速效果实例分析
Aug 04 Javascript
JavaScript 拖拽实例代码
Sep 21 Javascript
JavaScript中关键字 in 的使用方法详解
Oct 17 Javascript
canvas学习之API整理笔记(一)
Dec 29 Javascript
javascript设计模式之中介者模式学习笔记
Feb 15 Javascript
Angular2学习笔记之数据绑定的示例代码
Jan 03 Javascript
jQuery判断自定义属性data-val用法示例
Jan 07 jQuery
sortable+element 实现表格行拖拽的方法示例
Jun 07 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
php cli 方式 在crotab中运行解决
2010/02/08 PHP
php获得url参数中具有&amp;的值的方法
2014/03/05 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
PHP简单实现冒泡排序的方法
2016/12/26 PHP
详谈PHP中的密码安全性Password Hashing
2017/02/04 PHP
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
详解JavaScript中void语句的使用
2015/06/04 Javascript
js自调用匿名函数的三种写法(推荐)
2016/08/19 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
Node.js用readline模块实现输入输出
2016/12/16 Javascript
Angularjs 依赖压缩及自定义过滤器写法
2017/02/04 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
2017/04/14 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
解决vue移动端适配问题
2018/12/12 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
2019/08/16 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
Python去掉字符串中空格的方法
2014/03/11 Python
python中os模块详解
2016/10/14 Python
谈谈Python中的while循环语句
2019/03/10 Python
python小程序实现刷票功能详解
2019/07/17 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
利用python绘制数据曲线图的实现
2020/04/09 Python
茵宝(Umbro)英国官方商店:英国足球服装生产商
2016/12/29 全球购物
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
澳大利亚制造的蜡烛和扩散器:Glasshouse Fragrances
2018/05/20 全球购物
Omio英国:搜索并比较便宜的巴士、火车和飞机
2019/08/27 全球购物
Feelunique澳大利亚:欧洲的化妆品零售电商
2019/12/18 全球购物
介绍一下Transact-SQL中SPACE函数的用法
2015/09/01 面试题
教学实习自我评价
2014/01/28 职场文书
五水共治一句话承诺
2014/05/30 职场文书
2015年国庆节寄语
2015/08/17 职场文书
my.ini优化mysql数据库性能的十个参数(推荐)
2021/05/26 MySQL