最近在自学python,光看不练嘴把式,还是要多实操的。这就是一个写给自己的小小工具。
主要功能是,便利日志文件夹下的文件,根据设定的关键字查找是否有web攻击行为。
0X01 背景
WAF上线之后,处理最多的是误报消除。
产生误报有多种原因,比如web应用源码编写时允许客户端提交过多的cookie;比如单个参数提交的数值太大。
把误报降低到了可接受的范围后,还要关注漏报。WAF不是神,任何WAF都可能被绕过。所以还需要定位漏过的攻击,明确漏报的原因,才能update WAF的策略。
要定位漏报,就必须分析Web应用的访问日志了。一个站点,每天产生的access日志大概接近1GB,显然靠肉眼看是不现实的。这就需要用python帮助自动分析。
0X02 思路
拿我司某Web系统举例:
- apache开启了access日志记录
- 日志规则是每小时生成一个日志文件,以站点名称为文件名,以日期+时间为后缀。例如:special.XXXXXX.com.cn.2016101001
要分析这些散碎的日志文件,我的思路如下:
- 根据用户命令行输入获取日志文件所在目录;
- 遍历目录下所有文件,合并到一个文件;
- 定义web攻击常见payload的字符串:
- SQLi的:select、union、+–+;
- Struts的:ognl、java
- webshell常见的:base64、eval、excute
- 使用正则逐行匹配,将命中的日志复制到单独的文件。
0X03 实现
代码如下:
0X04 后续
WAF上线后的运维工作,除了消除误报解决漏报以外,还有其他更多的分析工作。这方面的内容,我会整理出来,下次单独成文分享。