如何格式化Nmap扫描结果以提取HTTP服务IP与端口
从Nmap Grepable结果提取HTTP类端口并自动执行Web扫描
需求背景
需要从Nmap的grepable格式结果中识别http、https、http-alt相关端口,提取IP和端口组合成IP:Port格式,自动调用Dirb和Nikto完成Web应用扫描。
解决方案步骤
- 过滤HTTP相关行:用
grep筛选包含目标服务关键字的行 - 提取IP和端口:通过文本解析工具拆分grepable格式的字段,分离出IP和端口号
- 批量执行扫描:循环处理每个目标,自动调用Dirb和Nikto并保存结果
完整Bash脚本
#!/bin/bash # 检查输入参数是否合法 if [ $# -ne 1 ]; then echo "用法: $0 <nmap_grepable_output.txt>" exit 1 fi NMAP_FILE="$1" # 遍历所有匹配HTTP类服务的行,提取目标并执行扫描 grep -E "(http|https|http-alt)" "$NMAP_FILE" | while read -r line; do # 从grepable格式中提取IP(第2个空格分隔字段) IP=$(echo "$line" | awk '{print $2}') # 提取端口字符串后截取端口号(第5个空格分隔字段,按/拆分取第一部分) PORT=$(echo "$line" | awk '{print $5}' | cut -d'/' -f1) TARGET="${IP}:${PORT}" echo "=== 开始扫描目标: $TARGET ===" # 执行Dirb扫描,结果保存到单独文件 dirb "http://${TARGET}" -o "dirb_${TARGET//:/_}.txt" echo "Dirb扫描完成,结果已保存到dirb_${TARGET//:/_}.txt" # 执行Nikto扫描,结果保存到单独文件 nikto -h "${TARGET}" -o "nikto_${TARGET//:/_}.txt" echo "Nikto扫描完成,结果已保存到nikto_${TARGET//:/_}.txt" echo -e "=== $TARGET 扫描结束 ===\n" done
脚本说明
- 输入要求:传入Nmap生成的grepable格式文件(可通过
nmap -oG 文件名 目标IP/网段生成) - 字段解析逻辑:Nmap grepable格式每行的第2个字段是目标IP,第5个字段是端口状态字符串(如
8000/open/tcp//http-alt///),通过cut -d'/' -f1截取端口号 - 结果管理:每个目标的扫描结果单独保存为文件,避免不同目标结果互相覆盖
- 服务适配:自动匹配
http、https、http-alt三类HTTP相关服务端口
使用示例
- 生成Nmap grepable结果:
nmap -p 1-65535 -oG web_scan_results.txt 192.168.1.0/24
- 赋予脚本执行权限并运行:
chmod +x auto_web_scan.sh ./auto_web_scan.sh web_scan_results.txt
内容的提问来源于stack exchange,提问作者AlexWPryor
相关产品推荐
相关产品推荐

