视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
利用python分析access日志的方法
2020-11-27 14:27:24 责编:小采
文档


前言

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常见的:base、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('
')
 else:
 exit
writelog.close()
log.close()

下载本文
显示全文
专题