shell-script(二)

案例三:写一个bash script,目的是扫描40台主机的全部端口,服务版本,生成以IP为目录的扫描结果。

扫描网段内在线主机

1
2
3
4
nmap -sn 10.10.10.0/24 -oA 123
-oN 生成nmap类型扫描结果
-oX
-oG

生成gnmap、nmap、xml类型扫描结果,查看后gnmap比较适合解析。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
nmap -sn 10.10.10.0/24 -oG 12

awk 'NR>1 { print $2}' 12 > IP-out.txt
sed -i '$d' IP-out.txt
#获得了在线主机列表IP-out.txt

for line in $(cat IP-out.txt) #依次迭代txt的每一行
do
mkdir /root/Desktop/$line
masscan -p1-65535,U:1-65535 --rate=1000 -e tun0 $line > /root/Desktop/$line/ports.txt
done

for line in $(cat IP-out.txt) #依次迭代txt的每一行
do

ports=$(cat /root/Desktop/$line/ports.txt | awk -F " " '{print $4}' | awk -F "/" '{print $1}' | sort -n | tr '\n' ',' | sed 's/,$//')
nmap -Pn -sV -sC -p$ports ${line} -oN nmap-result
done

for line in $(cat IP-out.txt) #如果web端口开放,则扫描目录
do
cd /root/Desktop/$line
if grep 80/tcp ports.txt;then
wget http://${line}
gobuster -u http://${line} -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt > gobuster-out.txt
fi
done

最终版本

https://raw.githubusercontent.com/Whale3070/ctf-coding/master/range-scan.sh

2019年7月,hackthebox改版,该脚本只能批量扫描在线靶机,不能扫描退休靶机了。

执行效果: