Nginx日志安全分析脚本_如何判断哪些ngix日志是扫描攻击

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

echo " # 支持Nginx日志分析,攻击告警分析等 "
echo " # author:al0ne "
echo " # https://github.com/al0ne "
echo -e “\n”

#此脚本是参考nmgxy/klionsec修改而来,重新添加了一些特征,只用来临时救急,还是推荐到ELK或者Splunk中分析

#功能
###统计Top 20 地址
###SQL注入分析
###SQL注入 FROM查询统计
###扫描器/常用黑客工具
###漏洞利用检测
###敏感路径访问
###文件包含攻击
###HTTP Tunnel
###Webshell
###寻找响应长度的url Top 20
###寻找罕见的脚本文件访问
###寻找302跳转的脚本文件

#如果存在多个access文件或者有多个access.x.gz 建议先zcat access*.gz >> access.log文件中
#设置分析结果存储目录,结尾不能加/
outfile=/tmp/logs
#如果目录以存在则清空,未存在则新建目录
if [ -d $outfile ]; then
rm -rf $outfile/*
else
mkdir -p KaTeX parse error: Expected 'EOF', got '#' at position 12: outfile fi #̲设置nginx日志目录,结尾必…(ls a c c e s s _ d i r {access\_dir} access_dir{access_log}* | wc -l) >/dev/null 2>&1
if [ $num -eq 0 ]; then
echo ‘日志文件不存在’
exit 1
fi
echo -e “\n”

验证操作系统是debian系还是centos

OS=‘None’
if [ -e “/etc/os-release” ]; then
source /etc/os-release
case ${ID} in
“debian” | “ubuntu” | “devuan”)
OS=‘Debian’
;;
“centos” | “rhel fedora” | “rhel”)
OS=‘Centos’
;;
*) ;;
esac
fi

if [ $OS = ‘None’ ]; then
if command -v apt-get >/dev/null 2>&1; then
OS=‘Debian’
elif command -v yum >/dev/null 2>&1; then
OS=‘Centos’
else
echo -e “\n不支持这个系统\n”
echo -e “已退出”
exit 1
fi
fi

检测ag软件有没有安装

if ag -V >/dev/null 2>&1; then
echo -e “\e[00;32msilversearcher-ag已安装 \e[00m”
else
if [ $OS = ‘Centos’ ]; then
yum -y install the_silver_searcher >/dev/null 2>&1
else
apt-get -y install silversearcher-ag >/dev/null 2>&1
fi

fi
#如果检测别的日志请手动替换偏移,例如awk的$7代表url,$9代表状态码,$10代表长度,本脚本是以nginx日志为基础

echo “分析结果日志: o u t f i l e " e c h o " N g i n x 日志目录: {outfile}" echo "Nginx日志目录: outfile"echo"Nginx日志目录:{access_dir}”
echo “Nginx文件名:${access_log}”
echo -e “\n”

echo -e “\e[00;31m[+]TOP 20 IP 地址\e[00m”
ag -a -o --nofilename ‘\d+.\d+.\d+.\d+’ a c c e s s _ d i r {access\_dir} access_dir{access_log}* | sort | uniq -c | sort -nr | head -n 20 | tee -a ${outfile}/top20.log
echo -e “\n”

echo -e “\e[00;31m[+]SQL注入攻击分析\e[00m”
#在SQL注入中排除掉了一些扫描css/js/png图片类等无用告警,并且重点筛选状态码200或者500的告警
ag -a “xp_cmdshell|%20xor|%20and|%20AND|%20or|%20OR|select%20|%20and%201=1|%20and%201=2|%20from|%27exec|information_schema.tables|load_file|benchmark|substring|table_name|table_schema|%20where%20|%20union%20|%20UNION%20|concat(|concat_ws(|%20group%20|0x5f|0x7e|0x7c|0x27|%20limit|\bcurrent_user\b|%20LIMIT|version%28|version(|database%28|database(|user%28|user(|%20extractvalue|%updatexml|rand(0)\*2|%20group%20by%20x|%20NULL%2C|sqlmap” a c c e s s _ d i r {access\_dir} access_dir{access_log}* | ag -v ‘/\w+.(?:js|css|html|jpg|jpeg|png|htm|swf)(?:?| )’ | awk '($9200)||($9500) {print KaTeX parse error: Expected 'EOF', got '}' at position 2: 0}̲' >{outfile}/sql.log
awk ‘{print “SQL注入攻击” NR"次"}’ ${outfile}/sql.log | tail -n1
echo “SQL注入 TOP 20 IP地址”
ag -o ‘(?<=:)\d+.\d+.\d+.\d+’ ${outfile}/sql.log | sort | uniq -c | sort -nr | head -n 20 | tee -a ${outfile}/sql_top20.log

重点关注from查询,是否存在脱裤行为,排除扫描行为

echo “SQL注入 FROM 查询”
cat KaTeX parse error: Undefined control sequence: \bfrom at position 25: …/sql.log | ag '\̲b̲f̲r̲o̲m̲\b' | ag -v 'in…{outfile}/sql_from_query.log
awk ‘{print “SQL注入FROM查询” NR"次"}’ ${outfile}/sql_from_query.log | tail -n1
echo -e “\n”

echo -e “\e[00;31m[+]扫描器scan & 黑客工具\e[00m”
ag -a “acunetix|by_wvs|nikto|netsparker|HP404|nsfocus|WebCruiser|owasp|nmap|nessus|HEAD /|AppScan|burpsuite|w3af|ZAP|openVAS|.+avij|.+angolin|360webscan|webscan|XSS@HERE|XSS%40HERE|NOSEC.JSky|wwwscan|wscan|antSword|WebVulnScan|WebInspect|ltx71|masscan|python-requests|Python-urllib|WinHttpRequest” a c c e s s _ d i r {access\_dir} access_dir{access_log}* | ag -v ‘/\w+.(?:js|css|jpg|jpeg|png|swf)(?:?| )’ | awk '($9200)||($9500) {print KaTeX parse error: Expected 'EOF', got '}' at position 2: 0}̲' >{outfile}/scan.log
awk ‘{print “共检测到扫描攻击” NR"次"}’ ${outfile}/scan.log | tail -n1
echo “扫描工具流量 TOP 20”
ag -o ‘(?<=:)\d+.\d+.\d+.\d+’ ${outfile}/scan.log | sort | uniq -c | sort -nr | head -n 20 | tee -a ${outfile}/scan_top20.log
echo -e “\n”

echo -e “\e[00;31m[+]敏感路径访问\e[00m”
ag -a “/_cat/|/_config/|include=|phpinfo|info.php|/web-console|JMXInvokerServlet|/manager/html|axis2-admin|axis2-web|phpMyAdmin|phpmyadmin|/admin-console|/jmx-console|/console/|.tar.gz|.tar|.tar.xz|.xz|.zip|.rar|.mdb|.inc|.sql|/.config\b|.bak|/.svn/|/.git/|.hg|.DS_Store|.htaccess|nginx.conf|.bash_history|/CVS/|.bak|wwwroot|备份|/Web.config|/web.config|/1.txt|/test.txt” a c c e s s _ d i r {access\_dir} access_dir{access_log}* | awk '($9200)||($9500) {print KaTeX parse error: Expected 'EOF', got '}' at position 2: 0}̲' >{outfile}/dir.log
awk ‘{print “共检测到针对敏感文件扫描” NR"次"}’ ${outfile}/dir.log | tail -n1
echo “敏感文件访问流量 TOP 20”
ag -o ‘(?<=:)\d+.\d+.\d+.\d+’ ${outfile}/dir.log | sort | uniq -c | sort -nr | head -n 20 | tee -a ${outfile}/dir_top20.log
echo -e “\n”

echo -e “\e[00;31m[+]漏洞利用检测\e[00m”
ag -a “%00|/win.ini|/my.ini|../../|/etc/shadow|%0D%0A|file:/|gopher:/|dict:/|WindowsPowerShell|/wls-wsat/|call_user_func_array|uddiexplorer|@DEFAULT_MEMBER_ACCESS|@java.lang.Runtime|OgnlContext|/bin/bash|cmd.exe|wget\s|curl\s|s=/index/\think” a c c e s s _ d i r {access\_dir} access_dir{access_log}* | awk '($9200)||($9500) {print KaTeX parse error: Expected 'EOF', got '}' at position 2: 0}̲' >{outfile}/exploit.log
awk ‘{print “漏洞利用探测” NR"次"}’ ${outfile}/exploit.log | tail -n1
echo “漏洞利用检测 TOP 20”
ag -o ‘(?<=:)\d+.\d+.\d+.\d+’ ${outfile}/exploit.log | sort | uniq -c | sort -nr | head -n 20 | tee -a ${outfile}/exploit_top20.log
echo -e “\n”

echo -e “\e[00;31m[+]webshell\e[00m”
ag -a “=whoami|dbname=|exec=|cmd=|\br57\b|\bc99\b|\bc100\b|\bb374k\b|adminer.php|eval(|assert(|%eval|%execute|tunnel.[asp|php|jsp|aspx]{3,4}|makewebtaski|ma.[asp|php|jsp|aspx]{3,4}|\bup.[asp|php|jsp|aspx]{3,4}|cmd.[asp|php|jsp|aspx]{3,4}|201\d.[asp|php|jsp|aspx]{3,4}|xiaoma.[asp|php|jsp|aspx]{3,4}|shell.[asp|php|jsp|aspx]{3,4}|404.[asp|php|jsp|aspx]{3,4}|tom.[asp|php|jsp|aspx]{3,4}|k8cmd.[asp|php|jsp|aspx]{3,4}|ver[0-9]{3,4}.[asp|php|jsp|aspx]{3,4}|.aar|[asp|php|jsp|aspx]{3,4}spy.|o=vLogin|aioshell|admine|ghost.[asp|php|jsp|aspx]{3,4}|r00ts|90sec|t00ls|editor.aspx|wso.[asp|aspx]{3,4}” a c c e s s _ d i r {access\_dir} access_dir{access_log}* | awk '($9200)||($9500) {print KaTeX parse error: Expected 'EOF', got '}' at position 2: 0}̲' >{outfile}/webshell.log
awk ‘{print “共检测到webshell行为” NR “次”}’ ${outfile}/webshell.log | tail -n1
echo “Webshell TOP 20”
ag -o ‘(?<=:)\d+.\d+.\d+.\d+’ ${outfile}/webshell.log | sort | uniq -c | sort -nr | head -n 20 | tee -a ${outfile}/webshell_top20.log
echo -e “\n”

echo -e “\e[00;31m[+]HTTP Tunnel\e[00m”
#Regeorg代理特征
ag -a “cmd=disconnect|cmd=read|cmd=forward|cmd=connect|127.0.0.1” a c c e s s _ d i r {access\_dir} access_dir{access_log}* | awk ‘($9200)||($9500) {print $0}’ | tee -a ${outfile}/tunnel.log
awk ‘{print “共检测到隧道行为” NR “次”}’ ${outfile}/tunnel.log | tail -n1

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
024b (备注软件测试)**
[外链图片转存中…(img-E2jKjixk-1713148041114)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值