用shell实现自动化扫描主机端口爆破服务弱口令

今天看同学写了用shell实现自动化扫描主机端口爆破服务弱口令,感觉很有用,将来进公司可以方便我完成一些工作。

需求
假设现在有一个需求,公司分配给你了一个ip列表,要求你将其中存活的主机筛选出来,检查这些主机是否开启了常用的服务,以及是否存在弱口令。
一般常用的做法就是先利用nmap扫描出存活主机,然后扫描这些主机开放的端口,用hydra对这些端口进行弱口令安全检查。如果将这些命令写在一个shell脚本中,以后再次做相同的工作时直接运行我们编写的.sh文件就可以了,这样的话就能大大提高我们的工作效率,避免重复机械的工作,大大提升效率。

编写shell脚本
1.创建ip.txt:ip列表,里面放着要扫描的ip;
2.创建service.conf:配置文件,里面是我们要检查的服务和其对应的端口号,使用者可以在这里进行设置要检查的服务;
3.创建user.txt:存放着常见的用户名,用于hydra爆破;
4.创建passwd.txt:存放着常见的弱口令,用于hydra爆破;
5.创建shell.sh:编写的shell脚本,可以自动化的完成上述的一系列工作

脚本内容:
1.ip.txt:

2.service.conf:

3.user.txt:

4.passwd.txt:

5.shell.sh:

#!/bin/bash
filename=$1
for port in awk -F ':' '{print $1}' service.conf
do
name=awk -F ':' '/'$port'/{print $2}' service.conf
echo “$name weak password result:”
nmap -sn -iL $filename|awk ‘/Nmap scan/{print $5}’>liveip.txt
nmap -Pn -sS -p $port -iL liveip.txt|grep “open” -B “5”|awk ‘/Nmap scan/{print $5}’>tmpip.txt
if [ ! -s tmpip.txt ]
then
echo “no ip open port $port”
else
result=hydra -L user.txt -P passwd.txt -M tmpip.txt $name -t 4|awk '/password:/{print $0}'
echo $result
fi
done

shell.sh脚本内容:
首先接收命令行的第一个参数,也就是要进行检查的ip列表文件ip.txt,之后循环读取服务配置文件,使用awk工具筛选出要检查的端口号和其对应的服务并赋值给对应的变量,之后用nmap进行主机存活扫描,将存活主机使用awk匹配出来输出到一个文件中,使用nmap对这个文件里的这些存活ip进行端口扫描,利用awk将nmap扫描结果中开放端口的ip筛选出来输出到一个文件里,之后利用hydra对这些ip进行其端口对应服务的弱口令检查。

脚本运行结果,以自己所在内网的ip作为测试,ip段192.168.10.0/24,可以看出针对ssh服务还是检查出很多弱口令的,mysql服务大多数都禁止了远程连接,所以没有扫出弱口令。

这只是我看同学写的博客学习的,肯定会有很多不足,在实现过程中可能也会遇到问题,不过我会尽快完善的。

猜你喜欢

转载自blog.csdn.net/qq_36197704/article/details/81591795