利用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代码
Dec 04 Javascript
javascript连续赋值问题
Jul 08 Javascript
js+css3制作时钟特效
Oct 16 Javascript
javascript 秒表计时器实现代码
Mar 09 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
Mar 13 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
Sep 02 Javascript
Vue实现购物车场景下的应用
Nov 27 Javascript
基于IView中on-change属性的使用详解
Mar 15 Javascript
vue实现自定义多选按钮
Jul 16 Javascript
如何利用javascript接收json信息并进行处理
Aug 06 Javascript
element-ui和vue表单(对话框)验证提示语(残留)清除操作
Sep 11 Javascript
JS如何操作DOM基于表格动态展示数据
Oct 15 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
一些操作和快捷键的理解和讨论
2020/03/04 星际争霸
PHP开发框架总结收藏
2008/04/24 PHP
php 求质素(素数) 的实现代码
2011/04/12 PHP
php实现博客,论坛图片防盗链的方法
2016/10/15 PHP
50个优秀经典PHP算法大集合 附源码
2020/08/26 PHP
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
jquery、js调用iframe父窗口与子窗口元素的方法整理
2014/07/31 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
jQuery统计指定子元素数量的方法
2015/03/17 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
2015/06/05 Javascript
javascript封装 Cookie 应用接口
2015/08/07 Javascript
javascript学习小结之prototype
2015/12/03 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
浅谈js里面的InttoStr和StrtoInt
2016/06/14 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
2016/10/18 Javascript
canvas简单快速的实现知乎登录页背景效果
2017/05/08 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
webpack下实现动态引入文件方法
2018/02/22 Javascript
详解小程序设置缓存并且不覆盖原有数据
2019/04/15 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
python连接数据库的方法
2017/10/19 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
flask框架单元测试原理与用法实例分析
2019/07/23 Python
简单瞅瞅Python vars()内置函数的实现
2019/09/27 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
一个C/C++编程面试题
2013/11/10 面试题
大学新生军训自我鉴定范文
2014/09/13 职场文书
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
刑事和解协议书范本
2014/11/19 职场文书
党员考试作弊检讨书1000字
2015/02/16 职场文书
护士自我推荐信范文
2015/03/24 职场文书
用Python selenium实现淘宝抢单机器人
2021/06/18 Python