既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
功能
- 统计Top 20 地址
- SQL注入分析
- 扫描器告警分析
- 漏洞利用检测
- 敏感路径访问
- 文件包含攻击
- Webshell
- 寻找响应长度的url Top 20
- 寻找罕见的脚本文件访问
- 寻找302跳转的脚本文件
Usage
设置报告保存地址 outfile
设置日志分析目录 access_dir
设置日志名称 access_log
./nginx_check.sh
#git https://github.com/al0ne/nginx\_log\_check/blob/master/nginx\_check.sh
#!/usr/bin/env bash
echo ""
echo " ========================================================= "
echo " \ Nginx日志安全分析脚本 V1.0 / "
echo " ========================================================= "
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 $outfile
fi
#设置nginx日志目录,结尾必须加/
access\_dir=/var/log/nginx/
#设置文件名,如果文件名为access那么匹配的是access\*文件
access\_log=access
#判断日志文件是否存在
num=$(ls ${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 "分析结果日志:${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+' ${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" ${access\_dir}${access\_log}\* | ag -v '/\w+\.(?:js|css|html|jpg|jpeg|png|htm|swf)(?:\?| )' | awk '($9==200)||($9==500) {print $0}' >${outfile}/sql.log
awk '{print "SQL注入攻击" NR"次"}' ${outfile}/sql.log | tail -n1
![img](https://img-blog.csdnimg.cn/img_convert/93a14baf8bab9fcf69a8ac007d957eec.png)
![img](https://img-blog.csdnimg.cn/img_convert/1c2674fcf48ed0be0dcc139ecbbbb216.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
sdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**