因为平时总是接触Web日志,但是苦于Web日志量大,windows下无法直接打开,linux下又得一个一个的去找,太麻烦,算是偷懒,第一次用shell命令写这个分析脚本,边写边改整理了将近1个星期,肯定不如有UI界面的好,但是作为一个Web日志分析小工具来说,也不是一无是处,各位看官也可以给点意见,可以一起帮忙完善这个脚本。
nginx中间件分析脚本 http://pan.baidu.com/s/1sjX33Hj Web中间件分析脚本 http://pan.baidu.com/s/1o74J2GU
自动分析中间件日志,通过从Web日志中,找出存在的SQL注入、XSS脚本攻击等攻击行为,进行筛选。
Web中间件分析脚本:目前仅支持IIS、apache、weblogic中间件 nginx中间件分析脚本:只支持nginx中间件
新加入了针对getshell、敏感文件、以及LFI文件包含攻击的HTTP响应码200和500的分析。并在屏幕输出时,显示每个攻击类型中,出现频率最多的前20个IP地址,并对攻击出现的次数进行统计。 整体脚本的思路:读取日志——->定义攻击特征—–>输出匹配到的含有攻击特征的记录——->输出 日志拷贝回来了,要解决的第一个问题就是读取,apahce日志命名格式为access.log、access_+时间戳。例如:access_2015-04-14.log,而weblogic日志,则是access.log+时间戳(access.log00914)。apache日志、weblog日志的共同点,就是都有access特征字符,知道了特征字符,就比较方便批量读取了。
一、读取文件
按照上面的思路,先解决读取问题。这里我用了判断语句,起初我是想写出类似于 access=more /usr/access.,将这个路径全部加到变量里,方便判断,因为在shell里,只能将固定文件、文件夹作为变量,变量中不能加*号(我是没找到别的方法,有知道大牛请提点下小弟),所以就想了个笨办法,用匹配关键词的方式来判断特定目录下,是apache日志,还是weblogic日志,还是IIS日志,具体判断方法如下:
1 2 3 4 5 6 |
if ls -l /usr/ | egrep "access";then more /usr/access*.* | egrep "多个关键词" else more /usr/ex*.log | egrep “多个关键词” fi |
这样的方式来进行判断,但是这样判断有个缺点,就是中间件日志在/usr/目录下,只能存在一种,比如同时存在apache和IIS的日志,就会优先判断apache的,进而不会执行IIS日志分析的语句。而且,为了不跟之前的历史数据混乱,在脚本执行开始,清空了下数据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
file=/usr/nmgxy/ if [ -e "$file" ];then echo "日志目录存在,跳过创建过程,该操作会清空/usr/nmgxy/目录下所有数据" echo "按回车键开始清空数据,结束请点击Ctrl+c" read key rm -r /usr/nmgxy/* mkdir -p /usr/nmgxy/LFI/ /usr/nmgxy/exp/ /usr/nmgxy/sql/ /usr/nmgxy/scan/ /usr/nmgxy/xss/ /usr/nmgxy/getshell/ /usr/nmgxy/dir/ else mkdir -p /usr/nmgxy/ /usr/nmgxy/LFI/ /usr/nmgxy/exp/ /usr/nmgxy/sql/ /usr/nmgxy/scan/ /usr/nmgxy/xss/ /usr/nmgxy/getshell/ /usr/nmgxy/dir/ fi echo "分析结果日志保存在/usr/nmgxy/目录下" echo ---------------------日志目标文件--------------------------- if ls -l /usr/ | egrep "access";then echo --------------------统计出现次数最多的前20个IP地址----------------- cat /usr/access*.* |awk '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/top20.log echo "统计完成" |
二、定义攻击特征
日志读取的问题解决了,接下来就是定义攻击特征的事儿了,攻击特征比较好定义。例如,SQL注入攻击的判断:
1 2 3 4 5 6 7 8 9 10 11 |
echo ------------------------SQL注入攻击sql.log---------------- echo "开始分析存在SQL注入的攻击行为,并将结果保存在/usr/nmgxy/sql/目录下" more /usr/access*.* |egrep "%20select%20|%20and%201=1|%20and%201=2|%20exec|%27exec| information_schema.tables|%20information_schema.tables|%20where%20|%20union%20|%20SELECT%20|%2ctable_name%20|cmdshell|%20table_schema" >/usr/nmgxy/sql/sql.log echo "分析结束" awk '{print "共检测到SQL注入攻击" NR"次"}' /usr/nmgxy/sql/sql.log|tail -n1 echo "开始统计SQL注入攻击事件中,出现频率最多的前20个IP地址" cat /usr/nmgxy/sql/sql.log |awk -F "[" '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/sql/top20.log echo ---------------------------------------------------------- more /usr/nmgxy/sql/top20.log echo "统计结束" |
我把一些常见的SQL注入攻击的特征写到了里面,去掉了MSSQL数据库存储过程以及MSSQL数据库才会出现的一些注入语句。
三、输出匹配到的含有攻击特征的记录
将匹配到的攻击特征内容,重新输出到了另外一个log里面,相当于做了一次筛选/usr/nmgxy/sql/sql.log
1 2 |
more /usr/access*.* |egrep "%20select%20|%20and%201=1|%20and%201=2|%20exec|%27exec| information_schema.tables|%20information_schema.tables|%20where%20|%20union%20|%20SELECT%20|%2ctable_name%20|cmdshell|%20table_schema" >/usr/nmgxy/sql/sql.log |
然后二次分析这个筛选过的文件,统计SQL注入攻击出现的次数
1 2 |
awk '{print "共检测到SQL注入攻击" NR"次"}' /usr/nmgxy/sql/sql.log|tail -n1 |
输出完毕后,将攻击出现最多的前20个IP地址进行统计并显示到屏幕上
1 2 3 4 5 6 |
echo "开始统计SQL注入攻击事件中,出现频率最多的前20个IP地址" cat /usr/nmgxy/sql/sql.log |awk -F "[" '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/sql/top20.log echo ---------------------------------------------------------- more /usr/nmgxy/sql/top20.log echo "统计结束" |
四、输出结果
这个在代码开头,创建了一些文件夹,用来存放筛选过的记录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 |
mkdir -p /usr/nmgxy/LFI/ /usr/nmgxy/exp/ /usr/nmgxy/sql/ /usr/nmgxy/scan/ /usr/nmgxy/xss/ /usr/nmgxy/getshell/ /usr/nmgxy/dir/ 中间删删改改折腾了好几次。后来针对特定的攻击,我们比较关注(重点是比较好写的= =)的内容做了HTTP响应请求200/500的判断,并输出结果。 echo -------------------------getshell-getshell.log---------------- echo "开始分析存在getshell的攻击行为,并将结果保存在/usr/nmgxy/getshell/目录下" more /usr/access*.* |egrep " eval|%eval|%execute|%3binsert|%20makewebtaski%20|/div.asp|/1.asp|/1.jsp|/1.php|/1.aspx|xiaoma.jsp|tom.jsp|py.jsp|k8cmd.jsp|/k8cmd|ver007.jsp|ver008.jsp|ver007|ver008|%if|\.aar" >>/usr/nmgxy/getshell/getshell.log echo "分析结束" echo "二次分析结果中HTTP响应码为200和500,结果另存为/usr/nmgxy/getshell/ok.log" more /usr/nmgxy/getshell/getshell.log | awk '{if($9=200) {print $1" "$2" "$3" "$4" "$6" "$7" "$8" "$9}}' >/usr/nmgxy/getshell/ok.log more /usr/nmgxy/getshell/getshell.log | awk '{if($9=500) {print $1" "$2" "$3" "$4" "$6" "$7" "$8" "$9}}' >>/usr/nmgxy/getshell/ok.log echo "二次分析结束" awk '{print "共检测到getshell行为" NR "次"}' /usr/nmgxy/getshell/getshell.log|tail -n1 echo "开始统计漏洞利用攻击事件中,出现频率最多的前20个IP地址" cat /usr/nmgxy/getshell/getshell.log |awk -F "[" '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/getshell/top20.log echo --------------------------------------------------------------- more /usr/nmgxy/getshell/top20.log echo "统计结束" 统计HTTP响应状态,IIS和apache有点区别。apache我以默认空格为分隔符,判断第9个分隔符是否为200或500,如果等于,则输出全部内容 more /usr/nmgxy/getshell/getshell.log | awk '{if($9=500) {print $1" "$2" "$3" "$4" "$6" "$7" "$8" "$9}}' 而IIS的,我则是用获取关键词的方式,来进行判断。 more /usr/nmgxy/getshell/getshell.log | egrep " 200" >/usr/nmgxy/getshell/ok.log 用egrep的方式,关键词为” 200″,200前面有个空格,如果不加空格的话,很容易跟其他的参数混起来,那个时候误报就不是一点点了。例如asp?id=200,所以加入了空格做区分。 IIS和nginx的思路类似,唯一的区别就是特征码,稍微有点改动而已,这个就不一一例举了。思路就是这个思路,其实后期想把报告整体输出成HTML的方式,估计工作量挺大,这个还是得闲下来的时候,慢慢修改吧。 PS:这个脚本虽然写的比较粗糙,但是精确度还是有的,测试了几十次,精确度能达到至少80%以上。 分析1个多G的日志文件,需要大致约30多秒左右,我是在虚拟机里做的测试。虚拟机ubuntu系统,1G的内存。 不见得能帮上大忙,至少可以给大家在分析日志时节省点时间。。。。 先贴出apache、weblogic、IIS的脚本代码,weblogic的从网盘直接下载就好。apache、weblogic、IIS的脚本代码: #!/bin/bash echo " " echo "( what are you doing? )" echo --------------------- echo " o ^__^ " echo " o (oo)\_______" echo " (__)\ )\/\ " echo " ||----w | " echo " || || " echo echo "...."中间件日志分析脚本v2.0"..." echo ------------------------------------------------------------ echo "自动分析中间件日志,并将日志中存在的SQL注入、XSS脚本攻击等攻击行为筛选出来" echo "本脚本目前仅支持IIS、apache、weblogic中间件" echo "新加入了针对getshell、敏感文件、以及LFI文件包含攻击的HTTP响应码200和500的分析" echo "执行脚本之前,请将要分析的日志拷贝到/usr/目录下" echo ----------------------按回车开始分析--------------------------- read key file=/usr/nmgxy/ if [ -e "$file" ];then echo "日志目录存在,跳过创建过程,该操作会清空/usr/nmgxy/目录下所有数据" echo "按回车键开始清空数据,结束请点击Ctrl+c" read key rm -r /usr/nmgxy/* mkdir -p /usr/nmgxy/LFI/ /usr/nmgxy/exp/ /usr/nmgxy/sql/ /usr/nmgxy/scan/ /usr/nmgxy/xss/ /usr/nmgxy/getshell/ /usr/nmgxy/dir/ else mkdir -p /usr/nmgxy/ /usr/nmgxy/LFI/ /usr/nmgxy/exp/ /usr/nmgxy/sql/ /usr/nmgxy/scan/ /usr/nmgxy/xss/ /usr/nmgxy/getshell/ /usr/nmgxy/dir/ fi echo "分析结果日志保存在/usr/nmgxy/目录下" echo ---------------------日志目标文件--------------------------- if ls -l /usr/ | egrep "access";then echo --------------------统计出现次数最多的前20个IP地址----------------- cat /usr/access*.* |awk '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/top20.log echo "统计完成" echo ------------------------SQL注入攻击sql.log---------------- echo "开始分析存在SQL注入的攻击行为,并将结果保存在/usr/nmgxy/sql/目录下" more /usr/access*.* |egrep "%20select%20|%20and%201=1|%20and%201=2|%20exec|%27exec| information_schema.tables|%20information_schema.tables|%20where%20|%20union%20|%20SELECT%20|%2ctable_name%20|cmdshell|%20table_schema" >/usr/nmgxy/sql/sql.log echo "分析结束" awk '{print "共检测到SQL注入攻击" NR"次"}' /usr/nmgxy/sql/sql.log|tail -n1 echo "开始统计SQL注入攻击事件中,出现频率最多的前20个IP地址" cat /usr/nmgxy/sql/sql.log |awk -F "[" '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/sql/top20.log echo ---------------------------------------------------------- more /usr/nmgxy/sql/top20.log echo "统计结束" echo -------------------------扫描器scan.log------------------- echo "开始分析存在扫描的攻击行为,并将结果保存在/usr/nmgxy/scan/目录下" more /usr/access*.* |egrep "sqlmap|acunetix|Netsparker|nmap|HEAD" >/usr/nmgxy/scan/scan.log echo "分析结束" awk '{print "共检测到扫描攻击" NR"次"}' /usr/nmgxy/scan/scan.log|tail -n1 echo "开始统计扫描攻击事件中,出现频率最多的前20个IP地址" cat /usr/nmgxy/scan/scan.log |awk -F "[" '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/scan/top20.log echo --------------------------------------------------------------- more /usr/nmgxy/scan/top20.log echo "统计结束" echo -------------------------敏感文件扫描dir.log------------------- echo "开始分析存在扫描的攻击行为,并将结果保存在/usr/nmgxy/dir/目录下" more /usr/access*.* |egrep "\.zip|\.rar|\.mdb|\.inc|\.sql|\.config|\.bak|/login.inc.php|/.svn/|/mysql/|config.inc.php|\.bak|wwwroot|网站备份|/gf_admin/|/DataBackup/|/Web.config|/web.config|/1.txt|/test.txt" >/usr/nmgxy/dir/dir.log echo "分析结束" echo "二次分析结果中HTTP响应码为200和500,结果另存为/usr/nmgxy/dir/ok.log" more /usr/nmgxy/dir/dir.log | awk '{if($9=200) {print $1" "$2" "$3" "$4" "$6" "$7" "$8" "$9}}' >/usr/nmgxy/dir/ok.log more /usr/nmgxy/dir/dir.log | awk '{if($9=500) {print $1" "$2" "$3" "$4" "$6" "$7" "$8" "$9}}' >>/usr/nmgxy/dir/ok.log echo "二次分析结束" awk '{print "共检测到针对敏感文件扫描" NR"次"}' /usr/nmgxy/dir/dir.log|tail -n1 echo "开始统计敏感文件扫描事件中,出现频率最多的前20个IP地址" cat /usr/nmgxy/dir/dir.log |awk -F "[" '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/dir/top20.log echo --------------------------------------------------------------- more /usr/nmgxy/dir/top20.log echo "统计结束" echo -------------------------漏洞利用exp.log------------------- echo "开始分析存在漏洞利用的攻击行为,并将结果保存在/usr/nmgxy/exp/目录下" more /usr/access*.* |egrep "struts|jmx-console|ajax_membergroup.php|iis.txt|phpMyAdmin|getWriter|dirContext|phpmyadmin|acunetix.txt|/e/|/SouthidcEditor/|/DatePicker/" >/usr/nmgxy/exp/exp.log echo "分析结束" awk '{print "共检测到漏洞利用" NR"次"}' /usr/nmgxy/exp/exp.log|tail -n1 echo "开始统计漏洞利用攻击事件中,出现频率最多的前20个IP地址" cat /usr/nmgxy/exp/exp.log |awk -F "[" '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/exp/top20.log echo --------------------------------------------------------------- cat /usr/nmgxy/exp/top20.log echo "统计结束" echo -------------------------文件包含LFI.log-------------------- echo "开始分析存在利用文件包含漏洞的攻击行为,并将结果保存在/usr/nmgxy/LFI/目录下" more /usr/access*.* |egrep "/passwd|%00|/win.ini|/my.ini|/MetaBase.xml|/ServUDaemon.ini|cmd.exe" >/usr/nmgxy/LFI/LFI.log echo "分析结束" echo "二次分析结果中HTTP响应码为200和500,结果另存为/usr/nmgxy/LFI/ok.log" more /usr/nmgxy/LFI/LFI.log | awk '{if($9=200) {print $1" "$2" "$3" "$4" "$6" "$7" "$8" "$9}}' >/usr/nmgxy/LFI/ok.log more /usr/nmgxy/LFI/LFI.log | awk '{if($9=500) {print $1" "$2" "$3" "$4" "$6" "$7" "$8" "$9}}' >>/usr/nmgxy/LFI/ok.log echo "二次分析结束" awk '{print "共检测到LFI本地文件包含" NR"次"}' /usr/nmgxy/LFI/LFI.log|tail -n1 echo "开始统计漏洞利用攻击事件中,出现频率最多的前20个IP地址" cat /usr/nmgxy/LFI/LFI.log |awk -F "[" '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/LFI/top20.log echo --------------------------------------------------------------- more /usr/nmgxy/LFI/top20.log echo "统计结束" echo -------------------------getshell-getshell.log---------------- echo "开始分析存在getshell的攻击行为,并将结果保存在/usr/nmgxy/getshell/目录下" more /usr/access*.* |egrep " eval|%eval|%execute|%3binsert|%20makewebtaski%20|/div.asp|/1.asp|/1.jsp|/1.php|/1.aspx|xiaoma.jsp|tom.jsp|py.jsp|k8cmd.jsp|/k8cmd|ver007.jsp|ver008.jsp|ver007|ver008|%if|\.aar" >>/usr/nmgxy/getshell/getshell.log echo "分析结束" echo "二次分析结果中HTTP响应码为200和500,结果另存为/usr/nmgxy/getshell/ok.log" more /usr/nmgxy/getshell/getshell.log | awk '{if($9=200) {print $1" "$2" "$3" "$4" "$6" "$7" "$8" "$9}}' >/usr/nmgxy/getshell/ok.log more /usr/nmgxy/getshell/getshell.log | awk '{if($9=500) {print $1" "$2" "$3" "$4" "$6" "$7" "$8" "$9}}' >>/usr/nmgxy/getshell/ok.log echo "二次分析结束" awk '{print "共检测到getshell行为" NR "次"}' /usr/nmgxy/getshell/getshell.log|tail -n1 echo "开始统计漏洞利用攻击事件中,出现频率最多的前20个IP地址" cat /usr/nmgxy/getshell/getshell.log |awk -F "[" '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/getshell/top20.log echo --------------------------------------------------------------- more /usr/nmgxy/getshell/top20.log echo "统计结束" echo -------------------------xss跨站脚本攻击xss.log-------------------- echo "开始分析存在XSS跨站脚本攻击的攻击行为,并将结果保存在/usr/nmgxy/xss/目录下" more /usr/access*.* |egrep "<script|javascript| onerror|="" oneclick|="" onload|<img|alert|document|cookie"="">/usr/nmgxy/xss/xss.log echo "分析结束" awk '{print "共检测到XSS跨站脚本攻击" NR"次"}' /usr/nmgxy/xss/xss.log|tail -n1 echo "开始统计XSS跨站脚本攻击事件中,出现频率最多的前20个IP地址" cat /usr/nmgxy/xss/xss.log |awk -F "[" '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/xss/top20.log echo --------------------------------------------------------------- more /usr/nmgxy/xss/top20.log echo "统计结束" echo "分析已完成,请到/usr/nmgxy/目录下查看结果" else echo "IIS日志分析" echo --------------------统计出现次数最多的前20个IP地址----------------- cat /usr/ex*.log |awk '{print $10}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/top20.log echo "统计完成" echo ------------------------SQL注入攻击sql.log---------------- echo "开始分析存在SQL注入的攻击行为,并将结果保存在/usr/nmgxy/sql/目录下" more /usr/ex*.log |egrep "%20select%20|%20and%201=1|%20and%201=2|%20where%20|%20union%20|%20SELECT%20|%2ctable_name%20|cmdshell|%20sysobjects|IS_SRVROLEMEMBER|%20is_srvrolemember|%20IS_MEMBER|db_owner|%20HAS_DBACCESS|%20has_dbaccess" >/usr/nmgxy/sql/sql.log echo "分析结束" awk '{print "共检测到SQL注入攻击" NR"次"}' /usr/nmgxy/sql/sql.log|tail -n1 echo "开始统计SQL注入攻击事件中,出现频率最多的前20个IP地址" cat /usr/nmgxy/sql/sql.log |awk '{print $10}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/sql/top20.log echo --------------------------------------------------------------- more /usr/nmgxy/sql/top20.log echo "统计结束" echo -------------------------扫描器scan.log------------------- echo "开始分析存在扫描的攻击行为,并将结果保存在/usr/nmgxy/scan/目录下" more /usr/ex*.log |egrep "sqlmap|acunetix|Netsparker|nmap|HEAD" >/usr/nmgxy/scan/scan.log echo "分析结束" awk '{print "共检测到扫描攻击" NR"次"}' /usr/nmgxy/scan/scan.log|tail -n1 echo "开始统计扫描攻击事件中,出现频率最多的前20个IP地址" cat /usr/nmgxy/scan/scan.log |awk '{print $10}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/scan/top20.log echo --------------------------------------------------------------- more /usr/nmgxy/scan/top20.log echo "统计结束" echo -------------------------敏感文件扫描dir.log------------------- echo "开始分析存在扫描的攻击行为,并将结果保存在/usr/nmgxy/dir/目录下" more /usr/ex*.log |egrep "\.rar|\.zip|\.mdb|\.inc|\.sql|\.config|\.bak|/login.inc.php|/.svn/|/mysql/|/config.inc.php|\.bak|wwwroot|网站备份|/gf_admin/|/DataBackup/|/Web.config|/web.config|/1.txt|/test.txt" >/usr/nmgxy/dir/dir.log echo "分析结束" echo "二次分析结果中HTTP响应码为200和500,结果另存为/usr/nmgxy/dir/ok.log" more /usr/nmgxy/dir/dir.log | egrep " 200" >/usr/nmgxy/dir/ok.log more /usr/nmgxy/dir/dir.log | egrep " 500" >>/usr/nmgxy/dir/ok.log echo "二次分析结束" awk '{print "共检测到针对敏感文件扫描" NR"次"}' /usr/nmgxy/dir/dir.log|tail -n1 echo "开始统计敏感文件扫描事件中,出现频率最多的前20个IP地址" cat /usr/nmgxy/dir/dir.log |awk '{print $10}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/dir/top20.log echo --------------------------------------------------------------- more /usr/nmgxy/dir/top20.log echo "统计结束" echo -------------------------漏洞利用exp.log------------------- echo "开始分析存在漏洞利用的攻击行为,并将结果保存在/usr/nmgxy/exp/目录下" more /usr/ex*.log |egrep "/jeecms/|/web-console/|struts|/jmx-console/|ajax_membergroup.php|/iis.txt|phpMyAdmin|getWriter|dirContext|phpmyadmin|acunetix.txt|/e/|/SouthidcEditor/|/DatePicker/" >/usr/nmgxy/exp/exp.log echo "分析结束" awk '{print "共检测到漏洞利用" NR"次"}' /usr/nmgxy/exp/exp.log|tail -n1 echo "开始统计漏洞利用攻击事件中,出现频率最多的前20个IP地址" cat /usr/nmgxy/exp/exp.log |awk '{print $10}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/exp/top20.log echo --------------------------------------------------------------- more /usr/nmgxy/exp/top20.log echo "统计结束" echo -------------------------文件包含LFI.log-------------------- echo "开始分析存在利用文件包含漏洞的攻击行为,并将结果保存在/usr/nmgxy/LFI/目录下" more /usr/ex*.log |egrep "/passwd|%00|/win.ini|/my.ini|/MetaBase.xml|/ServUDaemon.ini" >/usr/nmgxy/LFI/LFI.log echo "分析结束" echo "二次分析结果中HTTP响应码为200和500,结果另存为/usr/nmgxy/LFI/ok.log" more /usr/nmgxy/LFI/LFI.log | egrep " 200" >/usr/nmgxy/LFI/ok.log more /usr/nmgxy/LFI/LFI.log | egrep " 500" >>/usr/nmgxy/LFI/ok.log awk '{print "共检测到LFI本地文件包含" NR"次"}' /usr/nmgxy/LFI/LFI.log|tail -n1 echo "二次分析结束" echo "开始统计漏洞利用攻击事件中,出现频率最多的前20个IP地址" cat /usr/nmgxy/LFI/LFI.log |awk '{print $10}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/LFI/top20.log echo --------------------------------------------------------------- more /usr/nmgxy/LFI/top20.log echo "统计结束" echo -------------------------getshell-getshell.log---------------- echo "开始分析存在getshell的攻击行为,并将结果保存在/usr/nmgxy/getshell/目录下" more /usr/ex*.log |egrep "%20exec|%27exec|%3bexec|%27%3Bexec|%eval|%20eval|%execute|%3Binsert|%20makewebtaski|%20disk%20|%3Balter|%3Bdeclare|dbo|hack523|sysname|/1.asp|/1.jsp|/1.php|/1.aspx|xiaoma.asp|yijuhua.asp|yjh.asp|hack.asp|k8cmd.jsp|/k8cmd|ver007.jsp|ver008.jsp|ver007|ver008|\.asa|\.cer|\.ashx|asp;|asa;" >>/usr/nmgxy/getshell/getshell.log echo "分析结束" echo "二次分析结果中HTTP响应码为200和500,结果另存为/usr/nmgxy/getshell/ok.log" more /usr/nmgxy/getshell/getshell.log | egrep " 200" >/usr/nmgxy/getshell/ok.log more /usr/nmgxy/getshell/getshell.log | egrep " 500" >>/usr/nmgxy/getshell/ok.log echo "二次分析结束" awk '{print "共检测到getshell行为" NR "次"}' /usr/nmgxy/getshell/getshell.log|tail -n1 echo "开始统计漏洞利用攻击事件中,出现频率最多的前20个IP地址" cat /usr/nmgxy/getshell/getshell.log |awk '{print $10}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/getshell/top20.log echo --------------------------------------------------------------- more /usr/nmgxy/getshell/top20.log echo "统计结束" echo -------------------------xss跨站脚本攻击xss.log-------------------- echo "开始分析存在XSS跨站脚本攻击的攻击行为,并将结果保存在/usr/nmgxy/xss/目录下" more /usr/ex*.log |egrep "<script|javascript|%20onerror|%20oneclick|%20onload|<img|alert|document|cookie">/usr/nmgxy/xss/xss.log echo "分析结束" awk '{print "共检测到XSS跨站脚本攻击" NR"次"}' /usr/nmgxy/xss/xss.log|tail -n1 echo "开始统计XSS跨站脚本攻击事件中,出现频率最多的前20个IP地址" cat /usr/nmgxy/xss/xss.log |awk '{print $10}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/xss/top20.log echo --------------------------------------------------------------- more /usr/nmgxy/xss/top20.log echo "统计结束" echo "分析已完成,请到/usr/nmgxy/目录下查看结果" fi |
脚本运行截图:


下图为统计出来的文件包含和目录穿越攻击样例

因部分linux或centos系统中未安装中文环境包,可能导致脚本执行时中文部分出现乱码,可直接无视,直接通过vi编辑器来查看/usr/nmgxy/目录下的.log文件。
该脚本无法同时分析IIS和apache或nginx中间件日志,请保证/usr/目录下只有一种类型的中间件日志
