利用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 相关文章推荐
jquery获取tr中控件值并操作tr实现思路
Mar 27 Javascript
jquery中each遍历对象和数组示例
Aug 05 Javascript
JavaScript中document对象使用详解
Jan 06 Javascript
jQuery设置指定网页元素宽度和高度的方法
Mar 25 Javascript
Js获取图片原始宽高的实现代码
May 17 Javascript
AngularJS  双向数据绑定详解简单实例
Oct 20 Javascript
微信小程序 使用canvas制作K线实例详解
Jan 12 Javascript
js实现横向拖拽导航条功能
Feb 17 Javascript
js 去掉字符串前后空格实现代码集合
Mar 25 Javascript
JavaScript错误处理和堆栈追踪详解
Apr 18 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
Sep 20 Javascript
微信小程序wx.navigateTo方法里的events参数使用详情及场景
Jan 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,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
PHP序列化/对象注入漏洞分析
2016/04/18 PHP
php 运算符与表达式详细介绍
2016/11/30 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
Javascript常用运算符(Operators)-javascript基础教程
2007/12/14 Javascript
js 覆盖和重载 函数
2009/09/25 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
jQuery操作input值的各种方法总结
2013/11/21 Javascript
js代码实现点击按钮出现60秒倒计时
2021/01/28 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
2017/10/19 Javascript
原生JS控制多个滚动条同步跟随滚动效果
2017/12/22 Javascript
vue父组件点击触发子组件事件的实例讲解
2018/02/08 Javascript
jQuery时间戳和日期相互转换操作示例
2018/12/07 jQuery
Vue侦测相关api的实现方法
2019/05/22 Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
2020/05/03 Javascript
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
2014/07/11 Python
Python脚本实现格式化css文件
2015/04/08 Python
详解Python中的type()方法的使用
2015/05/21 Python
Flask 让jsonify返回的json串支持中文显示的方法
2018/03/26 Python
Python简单读写Xls格式文档的方法示例
2018/08/17 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
Python selenium抓取虎牙短视频代码实例
2020/03/02 Python
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
加拿大折扣、优惠券和交易网站:WagJag
2018/02/07 全球购物
意大利高端时尚买手店:Stefania Mode
2018/03/01 全球购物
采用冷却技术的超自然舒适度:GhostBed床垫
2018/09/18 全球购物
德国户外商店:eXXpozed
2020/07/25 全球购物
2014年幼儿园教学工作总结
2014/12/04 职场文书
投资意向协议书
2015/01/29 职场文书
教师教育教学随笔
2015/08/15 职场文书
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL