利用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解析Json实例详解
Nov 24 Javascript
AngularJS Select(选择框)使用详解
Jan 18 Javascript
js中的面向对象入门
Mar 06 Javascript
利用node.js制作命令行工具方法教程(一)
Jun 22 Javascript
关于vue的语法规则检测报错问题的解决
May 21 Javascript
详解如何在vue项目中使用lodop打印插件
Sep 27 Javascript
vue-router懒加载速度缓慢问题及解决方法
Nov 25 Javascript
详解基于webpack&amp;gettext的前端多语言方案
Jan 29 Javascript
解决layui checkbox 提交多个值的问题
Sep 02 Javascript
Vue2.0 实现页面缓存和不缓存的方式
Nov 12 Javascript
JS实现简单省市二级联动
Nov 27 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
Jan 18 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中的MVC模式运用技巧
2007/05/03 PHP
PHP XML操作类DOMDocument
2009/12/16 PHP
PHP模拟asp.net的StringBuilder类实现方法
2015/08/08 PHP
总结一些js自定义的函数
2006/08/05 Javascript
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
JavaScript获得选中文本内容的方法
2008/12/02 Javascript
继续学习javascript闭包
2015/12/03 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
2016/05/20 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
2016/05/28 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
2016/10/10 Javascript
浅谈jQuery before和insertBefore的区别
2016/12/04 Javascript
详解NodeJs支付宝移动支付签名及验签
2017/01/06 NodeJs
JavaScript实现图像模糊化的方法实例
2017/01/15 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
JavaScript实现的简单Tab点击切换功能示例
2018/07/06 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
javascript中join方法实例讲解
2019/02/21 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
使用webpack搭建pixi.js开发环境
2020/02/12 Javascript
Vue事件处理原理及过程详解
2020/03/11 Javascript
Python利用带权重随机数解决抽奖和游戏爆装备问题
2016/06/16 Python
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
Python实现端口检测的方法
2018/07/24 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
TFRecord文件查看包含的所有Features代码
2020/02/17 Python
vscode配置anaconda3的方法步骤
2020/08/08 Python
聊聊python在linux下与windows下导入模块的区别说明
2021/03/03 Python
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
《春晓》教学反思
2014/04/20 职场文书
入党自传范文2015
2015/06/26 职场文书
人事行政部各岗位职责说明书!
2019/07/15 职场文书
MySQL日期时间函数知识汇总
2022/03/17 MySQL
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers