利用python分析access日志的方法
前言
WAF上線之后,處理最多的是誤報(bào)消除。
產(chǎn)生誤報(bào)有多種原因,比如web應(yīng)用源碼編寫時(shí)允許客戶端提交過多的cookie;比如單個(gè)參數(shù)提交的數(shù)值太大。
把誤報(bào)降低到了可接受的范圍后,還要關(guān)注漏報(bào)。WAF不是神,任何WAF都可能被繞過。所以還需要定位漏過的攻擊,明確漏報(bào)的原因,才能update WAF的策略。
要定位漏報(bào),就必須分析Web應(yīng)用的訪問日志了。一個(gè)站點(diǎn),每天產(chǎn)生的access日志大概接近1GB,顯然靠肉眼看是不現(xiàn)實(shí)的。這就需要用python幫助自動(dòng)分析。
實(shí)現(xiàn)思路
拿我司某Web系統(tǒng)舉例:
apache開啟了access日志記錄
日志規(guī)則是每小時(shí)生成一個(gè)日志文件,以站點(diǎn)名稱為文件名,以日期+時(shí)間為后綴。例如:special.XXXXXX.com.cn.2016101001
要分析這些散碎的日志文件,我的思路如下:
1、根據(jù)用戶命令行輸入獲取日志文件所在目錄;
2、遍歷目錄下所有文件,合并到一個(gè)文件;
3、定義web攻擊常見payload的字符串:
SQLi的:select、union、+–+;
Struts的:ognl、java
webshell常見的:base64、eval、excute
使用正則逐行匹配,將命中的日志復(fù)制到單獨(dú)的文件。
實(shí)現(xiàn)代碼
代碼如下:
# -*-coding: utf-8 -*- import os,re,sys if len(sys.argv) != 2 : print 'Usage : python logaudit.py <path>' sys.exit() logpath = sys.argv[1] #獲取輸入?yún)?shù)的文件路徑' merge = re.compile(r'.*(\d[10])') for root , dirs , files in os.walk(logpath): for line in files: #遍歷日志文件夾,合并所有內(nèi)容到一個(gè)文件 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()
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
Node.js實(shí)現(xiàn)簡(jiǎn)單管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Node.js實(shí)現(xiàn)簡(jiǎn)單管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09Nodejs中使用puppeteer控制瀏覽器中視頻播放功能
本項(xiàng)目主要功能為在瀏覽器中自動(dòng)播放視頻,并且實(shí)現(xiàn)音量控制,快進(jìn)快退,全屏控制,播放暫??刂频裙δ?。對(duì)Nodejs中使用puppeteer控制瀏覽器中視頻播放功能感興趣的朋友跟隨小編一起看看吧2019-08-08node.js 和HTML5開發(fā)本地桌面應(yīng)用程序
這篇文章主要介紹了node.js 和HTML5開發(fā)本地桌面應(yīng)用程序的相關(guān)資料,需要的朋友可以參考下2016-12-12