web中间件日志分析脚本3.0(shell脚本)

2023-05-16

  • 新添功能
  • 保存的日志
  • 代码


新添功能

3.0版本加了ssrf、目录遍历文件包含、优化自动创建目录功能。
一般使用1、6、7即可
在这里插入图片描述
在这里插入图片描述


3.1版本

框架漏洞检测、封面字体颜色改变

在这里插入图片描述

保存的日志

fi
在这里插入图片描述
目录遍历
在这里插入图片描述
sqli
在这里插入图片描述
ssrf
在这里插入图片描述
xss
在这里插入图片描述

代码

#!/bin/bash

# 字体颜色
Green_font_prefix="\033[32m"
Red_font_prefix="\033[31m"
Font_color_suffix="\033[0m"

# 分割线
line(){
for i in {1..100};do
  if [ $i -ne 100 ];then
    echo -ne "-"
  else
    echo -e "-"
  fi
  done
}

# 选项一
diffip(){
    line
    echo -e "查看排名前(数字):"
    read -e -p "(默认:全部)" num
    [[ -z $num ]] && cut -d- -f 1 "$logfile"|sort| uniq -c | sort -rn || cut -d- -f 1 "$logfile"|sort| uniq -c | sort -rn | head -n $num
}

# 选项二
oneip(){
    while true;do
    echo -e "请输入需要分析的IP:" 
    read -e ip
    line
    if [ "$(grep ^$ip $logfile |wc -l)" -ne 0 ];then
        grep ^$ip $logfile| awk '{print $4."]",$1,$7,$9}'
        break
    else
        echo -e "${Red_font_prefix}未找到该IP!请重新输入!!${Font_color_suffix}"
        line
        continue
    fi
    done
}

# 保存文件
savefile(){
    
    echo -e "是否保存到文件中(Y/n):" 
    read -e -p  "(默认:保存)" choose
    [[ -z $choose ]] || [[ $choose == [Yy] ]] && grep ^$ip $logfile| awk '{print $4."]",$1,$7,$9}' > "$path$ip.txt"  && echo -e "${Red_font_prefix}已保存到$path$ip.txt中${Font_color_suffix}"

}

# 选项三
howmanyip(){
    line
    awk '{print $1}' $logfile|sort|uniq|wc -l
}

# 选项四
keyword(){
    while true;do
        line
        read -e -p "请输入关键词(q为退出):" key
        if [ $key == "q" ];then
            break
        fi
        more "$logfile" | grep "$key" | awk '{print $4."]",$1,$7,$9}'
    done
}

# 选项五
webshell(){
    line
    echo -e "请输入文件上传的URI(如upload.php):"
    read -e -p  "(默认:退出)" upload
    [[ -z $upload ]] || cat $logfile |grep -nP "POST.*$upload.*$upload" > ""$path$filename"_webshell.txt"
    time=$(cat ""$path$filename"_webshell.txt" |wc -l )
    echo -e "检测完毕!!共检测出${Red_font_prefix}$time${Font_color_suffix}条日志"
    echo -e "检测结果保存在"$path$filename"_"webshell.txt""
}

# 选项六
dirscan(){
    line
        echo -e "[+] 正在检测目录扫描中。。。"
    for i in $(awk '{print $1}' $logfile|sort|uniq);do
        time=$(cat $logfile | grep -P "^$i.*\b404\b" | wc -l)
        [[ time -gt 20 ]] && echo -e "$i 可能存在目录扫描行为,共请求失败${Red_font_prefix}$time${Font_color_suffix}次" && echo -e "$i 可能存在目录扫描行为,共请求失败${Red_font_prefix}$time${Font_color_suffix}次" >> "$path$filename"_"DirScan.txt"
    done
        echo -e "检测完毕!!"
        echo -e "检测结果保存在"$path$filename"_"DirScan.txt""
        line
        echo -e "是否自动下载异常IP的访问日志(Y/n):"
        read -e -p "(默认:保存)" choose1
        ip_list=$(cat "$path$filename"_"DirScan.txt" | grep -oE '.* ')
        if [[ -z $choose1 ]];then
            for ip in $ip_list;do
                grep ^$ip $logfile| awk '{print $4."]",$1,$7,$9}' > "$path$ip.txt"  && echo -e "${Red_font_prefix}已保存到$path$ip.txt中${Font_color_suffix}"
            done
        fi
    
}

# 选项七
sqlicheck(){
    line
    echo -e "[+] 正在检测${Red_font_prefix}sql注入${Font_color_suffix}中。。。"
    word="%20select%20|%20and%20|%20or%20|%20exec|%27exec| information_schema.tables|%20information_schema.tables|%20where%20|%20union%20|%20SELECT%20|%2ctable_name%20|cmdshell|%20table_schema"
    grep -E "$word" $logfile | awk '{print $4."]",$1,$7,$9}'> ""$path$filename"_sqli.txt"
    time=$(cat ""$path$filename"_sqli.txt" |wc -l )
    echo -e "检测完毕!!共检测出${Red_font_prefix}$time${Font_color_suffix}条日志"
    echo -e "检测结果保存在"$path$filename"_sqli.txt"
}

xsscheck(){
    line
    echo -e "[+] 正在检测${Red_font_prefix}xss${Font_color_suffix}中。。。"
    grep -E "alert|script|<|>|%3C|%3c|%3e|%3E" $logfile | awk '{print $4."]",$1,$7,$9}' > ""$path$filename"_xss.txt"
    time=$(cat ""$path$filename"_xss.txt" | wc -l )
    echo -e "检测完毕!!共检测出${Red_font_prefix}$time${Font_color_suffix}条日志"
    echo -e "检测结果保存在"$path$filename"_xss.txt"
}

ssrfcheck(){
    line
    echo -e "[+] 正在检测${Red_font_prefix}ssrf${Font_color_suffix}中。。。"
    grep -E "=http://|=https://" $logfile | awk '{print $4."]",$1,$7,$9}' > ""$path$filename"_ssrf.txt"
    time=$(cat ""$path$filename"_ssrf.txt" | wc -l )
    echo -e "检测完毕!!共检测出${Red_font_prefix}$time${Font_color_suffix}条日志"
    echo -e "检测结果保存在"$path$filename"_ssrf.txt"
}

pathtravelcheck(){
    line
    echo -e "[+] 正在检测${Red_font_prefix}目录遍历${Font_color_suffix}中。。。"
    grep -E "\.\.|\.%2e/|\.%%32%65|%2e%2e" $logfile | awk '{print $4."]",$1,$7,$9}' > ""$path$filename"_pathtravel.txt"
    time=$(cat ""$path$filename"_pathtravel.txt" | wc -l )
    echo -e "检测完毕!!共检测出${Red_font_prefix}$time${Font_color_suffix}条日志"
    echo -e "检测结果保存在"$path$filename"_pathtravel.txt"
}

fileinclude(){
    line
    echo -e "[+] 正在检测${Red_font_prefix}文件包含${Font_color_suffix}中。。。"
    awk '{print $4."]",$1,$7,$9}' $logfile | grep -E "=.*jsp\b|=.*php\b|=.*txt\b|=.*jpg\b" > ""$path$filename"_fi.txt"
    time=$(cat ""$path$filename"_fi.txt" | wc -l )
    echo -e "检测完毕!!共检测出${Red_font_prefix}$time${Font_color_suffix}条日志"
    echo -e "检测结果保存在"$path$filename"_fi.txt"
}

# 列出当前路径的文件
echo -e "当前路径下的文件" && ls 
# 选择需要分析的日志
while true;do
    read -e -p "请输入需要分析的日志:" logfile
    find "$logfile" &>/dev/null
    if [ $? -ne 0 ];then
        echo -e "${Red_font_prefix}未找到日志,请输入文件名或绝对路径!!${Font_color_suffix}"
        line
    else
        break
    fi
done



filename=$(echo -e "$logfile"| awk -F '/' '{print $NF}')  # bbb.log
if [[ $logfile == */* ]];then          # logfile=aaa/bbb.log
# 1.绝对路径
path=$(echo -e "$logfile"|grep -o '.*/')  # aaa/bbb.log  -> aaa/
dirName=$(echo -e "$filename"| awk -F '.' '{print $2}')   # log (dir)
[[ -d $dirName ]] || mkdir $path$dirName   #aaa/log
path="$path$dirName/"  # aaa/log/
# 2.相对路径                            # logfile=bbb.log
else
dirName=$(echo -e "$logfile"| awk -F '.' '{print $2}')  # log
[[ -d $dirName ]] || mkdir $path$dirName
path="$dirName/"    # log/
fi
# *****************************************
# ************** 主  面  板****************
# *****************************************
line
while true; do
echo -e "web中间件日志分析脚本 ${Red_font_prefix}[v1.0]${Font_color_suffix}

${Green_font_prefix}1.${Font_color_suffix} 不同IP访问次数
${Green_font_prefix}2.${Font_color_suffix} 单IP访问内容
${Green_font_prefix}3.${Font_color_suffix} IP访问数统计
${Green_font_prefix}4.${Font_color_suffix} 关键词筛选
${Green_font_prefix}5.${Font_color_suffix} 上传webshell检测
${Green_font_prefix}6.${Font_color_suffix} 目录扫描检测
${Green_font_prefix}7.${Font_color_suffix} 常规漏洞检测(sqli、xss、ssrf、目录遍历、文件包含)
${Green_font_prefix}8.${Font_color_suffix} 退出脚本
"
read -e -p "请输入数字 [1-8]:" num

if [ "$num" == "1" ];then
    diffip

elif [ "$num" == "2" ];then
    oneip
    savefile

elif [ "$num" == "3" ];then
    howmanyip

elif [ "$num" == "4" ];then
    keyword

elif [ "$num" == "5" ];then
    webshell

elif [ "$num" == "6" ];then
    dirscan

elif [ "$num" == "7" ];then
    sqlicheck
    xsscheck
    ssrfcheck
    pathtravelcheck
    fileinclude

elif [ "$num" == "8" ];then
    echo -e ""
    echo -e "${Green_font_prefix}
    *****************************************
    *********** 谢谢您的使用,再见************
    *****************************************
 ${Font_color_suffix}"
    exit 0

else
    echo -e "${Red_font_prefix}请输入正确数字!!${Font_color_suffix}"
    line
    continue
fi
line
done


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

web中间件日志分析脚本3.0(shell脚本) 的相关文章

  • Grep 递归和计数

    需要在具有大量子目录的目录中搜索文件内的字符串 我在用着 grep c r string here 我怎样才能找到总数量 如何仅输出至少具有一个实例的文件 使用 Bash 的进程替换 这给出了我认为是您想要的输出 如果不是 请澄清问题 gr
  • #*/ 在 UNIX Shell 脚本中使用

    谁能详细说明 在 UNIX Shell 脚本中的工作原理 我已经看到它在 Korn Shell 中的使用 它专门用于删除文件的扩展名 例如 func write app log o 删除状态文件 CIE STATUS FILE 这里假设文件
  • 从命令行更改 konsole 选项卡标题并使其持久?

    如何更改 konsole 选项卡标题 默认情况下 它设置为 u n 所以它总是自动改变 我可以这样设置 qdbus org kde konsole KONSOLE DBUS SESSION setTitle 1 My Title 但是一旦您
  • 将您的应用程序链接到现有页面

    我搜索了又搜索 似乎找不到任何与此相关的信息 我们有一个 Facebook 页面 facebook com companyname 我们在 Facebook 上也有一个应用程序 apps facebook com companyname 我
  • wix 安装程序/创建网站并分配新的或现有的 Web 应用程序池

    我尝试使用 wix 安装创建一个新网站 没关系 没有问题 但我无法将新的或现有的网络应用程序池分配给新网站 iis website 标记不包含 WebAppPool 属性 我如何将网络应用程序池分配给网站 你可以在下面看到我的代码 感谢您的
  • sed 和 rev shell 命令转换为 Python 脚本 [重复]

    这个问题在这里已经有答案了 有一个shell命令 我正在尝试将逻辑转换为python 但我不知道该怎么办 我需要一些帮助 shell命令是这样的 cd tests src main test ls find name vrlp while
  • Ruby 在特定目录中运行 shell 命令

    我知道如何在 Ruby 中运行 shell 命令 例如 x cmd 但是 如何指定运行此命令的目录 有没有类似的脱壳方式 类似subprocess Popen在Python中 subprocess Popen r c mytool tool
  • 如何在不使用 MacPorts 或 Fink 的情况下在 OS X Leopard 上安装 lxml?

    我过去曾多次尝试过此操作并遇到问题 有没有人有在没有 MacPorts 或 Fink 的情况下在 OS X 上安装 lxml 的方法 并且绝对有效 最好有完整的 1 2 3 步骤来下载和构建每个依赖项 感谢 Twitter 上的 jesse
  • Unix shell脚本找出脚本文件所在的目录?

    基本上我需要使用与 shell 脚本文件位置相关的路径运行脚本 如何将当前目录更改为与脚本文件所在的目录相同 在 Bash 中 你应该得到你需要的东西 如下所示 usr bin env bash BASEDIR dirname 0 echo
  • LaunchAgent 不运行 shell 脚本

    在 Catalina 之前的 macOS 下 我有一个每天运行 shell 脚本的 LaunchAgent 升级并切换到 zsh 后 它不起作用 我检查过的事情 shebang 切换到 zsh shell脚本可以从命令行手动执行 sh 在系
  • PHP 日志文件颜色

    我正在编写一个 PHP 日志文件类 但我想为写入文件的行添加颜色 我遇到的问题是颜色也会改变终端的颜色 我想要实现的是仅更改写入日志文件的行的颜色 class logClass extends Singleton private funct
  • 缩小 HTML、CSS 和 Javascript 是一个坏主意吗?

    维基百科定义缩小 http en wikipedia org wiki Minification 28programming 29 as 从源代码中删除所有不必要的字符而不改变其功能的过程 这些不必要的字符通常包括空格字符 换行符 注释 有
  • 如何使用 exec.Command 在 golang 中执行 Mysql 脚本

    您好 我正在尝试执行一个脚本以使用 Golang 将数据填充到数据库中 func executeTestScript cmd exec Command usr local mysql bin mysql h127 0 0 1 P3333 u
  • 如何使用ansible运行询问用户输入的脚本?

    我想使用 ansible 运行 shell 脚本 但 shell 脚本需要用户输入才能成功执行 例如 我的 shell 脚本询问唯一的 idossec agent 通过ansible我可以预定义我的unique id user input
  • 从动态服务器中抓取 html 列表数据

    哈喽大家好 抱歉提出转储问题 这是我最后的手段 我发誓我尝试了无数其他 Stackoverflow 问题 不同的框架等 但这些似乎没有帮助 我有以下问题 一个网站显示一个数据列表 前面有大量的 div li span 等标签 它是一个很大的
  • Bash:替换管道标准输入中的子字符串

    我尝试用新的子字符串替换标准输入中的某个子字符串 在读取几个文件后 我必须从管道获取标准输入cat 然后我想将更改后的字符串向前推到管道中 这是我尝试做的 cat file1 file2 echo cat path to file path
  • 有没有办法以编程方式下载网页的部分内容,而不是整个 HTML 正文?

    我们只需要 nytimes com technology 上的 HTML 文档中的特定元素 该页面包含许多文章 但我们只想要文章的标题 该标题位于 如果我们使用 wget cURL 或任何其他工具或某些包 例如Python 中的请求 htt
  • 仅当 url 以 www 为前缀时才会发生 CORS 错误

    我目前遇到一个关于 CORS 跨源资源共享 的问题 奇怪的是 只有当我使用 www url 前缀时 才会出现这种情况 例如 当我使用以下网址访问我的网站时 http example com index http example com in
  • 导出多个 LD_LIBRARY_PATH 的正确方法

    对于linux的使用 我是一个新手 根据有关我的项目的指南 我必须多次导出 LD LIBRARY PATH 并且我不确定是否不覆盖它们 Cupti Tensorflow CUDAit export LD LIBRARY PATH LD LI
  • Drupal 模板/主题资源或建议?

    我有兴趣为我正在开发的 Drupal 网站创建自定义主题 我是 Drupal 的新手 但是我在处理构建主题 CSS PHP HTML 所需的基本概念方面拥有相当多的经验 所以 我的问题是 我从哪里开始 有创建 Drupal 主题的规范指南吗

随机推荐

  • 树莓派连接vnc教程

    1 输入 sudo raspi config 进入到系统设置中开启vnc服务 2 进入后选择 Interfacing Options 进入 3 选择 VNC 进入 4 yes 下载软件 xff1a VNC Viewer 5 连接vnc xf
  • Hive之解析Json数组

    目录 Hive自带的json解析函数1 get json object函数2 json tuple函数 Hive解析json数组一 嵌套子查询解析json数组二 使用 lateral view 解析json数组 Hive自带的json解析函
  • MobaXterm实现代理功能及把内网服务器,用公网地址转发出去。

    MobaXterm实现代理功能及把内网服务器 xff0c 用公网地址转发出去 1 MobaXterm配置 192 168 1 82为内网 xff0c 需要公网连接上来 xff0c 所以用公网服务器做代理使用 xff0c 实现ssh 公网ip
  • docker-compose 搭建 nextcloud + onlyoffice 实现在线编辑,云存储等多项功能。

    添加源 yum span class token function install span epel release y 关闭防火墙 xff0c selinux systemctl stop firewalld systemctl dis
  • WiFi 中继/桥接功能 — 基于OpenWRT路由器

    一 中继和桥接介绍 1 网络拓扑图 2 功能介绍 1 无线中继 无线中继 xff0c 即无线分布系统 WDS 组网 xff0c 其工作原理是将无线信号从上一个中继点接力传递到下一个中继点 xff08 下一个点可以在不同信道上接收和转发 xf
  • 经典数学问题——三门问题(数据分析面试题)

    三门问题出自美国的电视游戏节目 Let s Make a Deal xff0c 问题名字来自该节目的主持人蒙提 霍尔 xff08 Monty Hall xff09 xff0c 所以三门问题又叫做蒙提霍尔悖论 让我们来看看三门问题 xff1a
  • N5095-Ubuntu系统开启Jellyfin硬件解码

    N5095 Ubuntu系统开启Jellyfin硬件解码 一 升级Ubuntu内核至5 18 ubuntu22 04安装后 xff0c 默认的内核版本为5 15 xff0c 而这个版本内含一个bug xff0c 导致11代IntelCPU无
  • 国产银河麒麟系统V10忘记密码重置操作

    国产电脑有忘记密码的 xff0c 因为银河麒麟系统是基于linux系统的 xff0c 不必像windows操作系统那样需要使用U盘来进行重置密码 xff0c 好像还简单一些 基本的操作也就3步 1 重启电脑进入Grub引导菜单 2 编辑引导
  • CentOS7安装xrdp(windows远程桌面连接linux)

    前提 CentOS安装桌面 xff0c 如果无桌面 xff0c 请执行 xff1a yum y groups install GNOME Desktop startx 1 安装xrdp 更具自己的系统位数选择对应的包 如果是32位使用则选择
  • Git命令测试(含结果图)

    Git命令测试 xff08 含结果图 xff09 一 文件添加 提交 xff08 一 xff09 初始化本地仓库 xff08 二 xff09 新建一个本地文件hello txt xff08 三 xff09 将该文件进行添加 xff08 四
  • OSPF协议实验

    目录 OSPF 三个阶段 OSPF实验 1拓扑搭建 2配置PC的ip信息 3配置路由 4完成配置进行测试 总结 OSPF OSPF Open Shortest Path First开放式最短路径优先 xff09 是一个内部网关协议 Inte
  • Linux 安装软件是错误:正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程

    原因是 xff1a 一般出现这种原因是因为文件上锁或者被占用解决办法 xff1a 删除lock xff1a sudo rm var cache apt archives lock删除lock xff1a sudo rm var lib dp
  • 封神台(尤里的复仇Ⅱ 回归)渗透第一步 信息收集1

    前言解题过程 前言 做这道题的时候 xff0c 我的心情真是跌宕起伏 为什么这么说 xff0c 且听我娓娓道来 解题过程 打开传送门 xff0c 被传送到这个网站 随便点了几个模块 xff0c 感觉都没有可利用的漏洞 xff0c 直接扫描目
  • 封神台(尤里的复仇Ⅱ 回归)绕过防护getshell

    解题思路 习惯在url后加admin xff0c 看是不是管理后台 一看发现是 xff0c 就不用目录扫描工具了 填入正确的验证码 xff0c 抓包输入 39 xff0c 查看有无报错 发现报错了 xff0c 存在报错注入 xff0c 看报
  • sql注入绕过安全狗4.0

    1 前言2 前置知识3 绕过关键字主要思路3 1绕过连体关键字思路3 2绕过单个关键字思路 4 以sqli labs Less 1 为例 xff0c 绕过安全狗4 1拦截order by4 2拦截union select4 3拦截datab
  • error during connect: This error may indicate that the docker daemon is not running解决方法

    因为我的截图工具截屏快捷键是ctrl 43 q xff0c docker desktop退出的快捷键也是ctrl 43 q xff0c 所以当我按了ctrl 43 q之后 xff0c docker desktop退出了 xff0c 然后我在
  • getshell思路

    getshell能干嘛文件上传getshell文件包含getshellsql注入getshell操作系统漏洞getshellRCE getshell总结 授人以鱼 xff0c 不如授人以渔 getshell能干嘛 1 执行终端命令 2 文件
  • hackmyvm入门(靶机网络配置)

    hackmyvm概述hackmyvm靶机下载地址靶机网络配置测试环境环境搭建 愉快玩耍 hackmyvm概述 hackmyvm是一个平台 xff0c 包含了大量靶机 xff0c 类似于vulnhub hackthebox等平台 xff0c
  • hackmyvm Rei靶机练习

    主机发现端口扫描漏洞挖掘权限提升 主机发现 攻击机ip 靶机ip sn 发送arp请求包探测目标ip是否在线 端口扫描 p 所有端口扫描 sV 查询开放端口的服务 这里65333是ssh服务 xff0c 63777是http服务 最好拿个记
  • web中间件日志分析脚本3.0(shell脚本)

    新添功能保存的日志代码 新添功能 3 0版本加了ssrf 目录遍历文件包含 优化自动创建目录功能 一般使用1 6 7即可 3 1版本 框架漏洞检测 封面字体颜色改变 保存的日志 fi 目录遍历 sqli ssrf xss 代码 span c