文章

3.1-主动目标侦查基础

1 nmap经典四次扫描

nmap 端口扫描(第一扫)

sudo nmap -sS --min-rate 5000 -p- <ip address> -oA <nmapscan_ports>

NmapPorts=`grep portid nmapscan_ports.xml|awk -F'/' '{print $1}'|paste -sd ','`

sudo nmap -sT --min-rate 5000 -p- <ip address>|grep open|awk -F'/' '{print $1}'|paste -sd ','

NmapPorts=`grep portid nmapscan/ports.xml|awk -F'"' '{print $4}'|paste -sd ','`

echo $NmapPorts

nmap 详细扫描(第二扫)

sudo nmap -sS -sV -sC -O --version-all -p$NmapPorts <ip address> -oA <nmapscan_detail>

nmap UDP扫描(第三扫)

sudo nmap -sU --top-ports 20  <ip address> -oA <nmapscan_udp>

nmap 脚本扫描(第四扫)

sudo nmap --script=vuln -p$NmapPorts <ip address> -oA <nmapscan_vuln>

sudo nmap --script=vuln -sU -p$NmapPorts <ip address> -oA <nmapscan_vuln>
```bash
sudo nmap --script "smb-vuln*,http-vuln*,ssl-*,vulscan,vulners" -p$NmapPorts <ip address> -oA <nmapscan_vuln>

nmap隐蔽扫描

隐蔽式端口扫描(无Ping扫描+随机化扫描顺序+限制扫描速率)

sudo nmap -sS -Pn --min-rate 500 --randomize-hosts -p- 10.10.11.44 -oA scan_stealth

| 功能 | 写法 |
| ———————– | —————————————————————————————————————————— |
| 随机扫描延迟 | nmap -T2 –max-rtt-timeout 500ms –scan-delay random |
| 通过代理扫描 | proxychains nmap -sT -Pn 10.10.11.44 |
| 使用随机User-Agent与冗余Header | nmap -p80 –script http-headers –script-args http.useragent=“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36…” |
| Payload编码混淆​ | sqlmap -u “http://target.com?id=1” –tamper=hexencode |
| 禁用ICMP协议(ping) | -Pn |
| 随机化扫描顺序 | –randomize-hosts |
| 限制扫描速率 | –min-rate 500 |

nmap4scan.sh

#/bin/bash
#nmap四次一键脚本

if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
  echo "# \$1: target ip"
  echo "# \$2: scan log dir"
  exit
elif [ -z "$1" ]; then
  echo "ERROR! You need to add the parameters."
  echo "# \$1: target ip"
  echo "# \$2: scan log dir"
  exit
fi

echo "|------< 创建存储目录 >------|"
mkdir -p $2
ls $2

echo "|------< 执行扫描命令 >------|"
#NO.1
echo "| Nmap Scan NO.1 ports >----------|"
echo "|-> nmap -sT -Pn --min-rate 5000 -p- $1 -oN $2/nmap4scan_1_ports"
nmap -sT -Pn --min-rate 5000 -p- $1 -oN $2/nmap4scan_1_ports

NmapPorts=`grep open $2/nmap4scan_1_ports|awk -F'/' '{print $1}'|paste -sd ','`

#NO.2
echo "| Nmap Scan NO.2 detail >---------|"
echo "|-> nmap -sT -sV -sC -O -Pn --min-rate 5000 -p $NmapPorts $1 -oN $2/nmap4scan_2_detail"
nmap -sT -sV -sC -O -Pn --min-rate 5000 -p $NmapPorts $1 -oN $2/nmap4scan_2_detail

#NO.3
echo "| Nmap Scan NO.3 udp >------------|"
echo "|-> nmap -sU --top-ports 30 -Pn --min-rate 5000 $1 -oN $2/nmap4scan_3_udp"
nmap -sU --top-ports 30 -Pn --min-rate 5000 $1 -oN $2/nmap4scan_3_udp

#NO.4
echo "| Nmap Scan NO.4 vuln >-----------|"
echo "|-> nmap --script=vuln -Pn --min-rate 5000 -p $NmapPorts $1 -oN $2/nmap4scan_4_vuln"
nmap --script=vuln -Pn --min-rate 5000 -p $NmapPorts $1 -oN $2/nmap4scan_4_vuln

echo "|------< WEB Directory Scanning >------|"

for i in `grep open $2/nmapscan_ports*|grep http|awk -F/ '{print $1}'`
do
    echo "|-> dirsearch -u "http://$1:$i" -o $2/dirsearch_out_$i.log"
    dirsearch -u "http://$1:$i" -o $2/dirsearch_out_$i.log
done

echo "|------< 脚本执行完成 >------|"
echo "|------< 扫描报告目录: >------|"
echo "|nmap4scan_log_dir: $2/"

nerubianScan.sh

#!/bin/bash
# nerubian主动侦查脚步
# 1、根据第一参数进行判断
#    如果是网段,则根据网段参数进行扫描,展示扫描结果,进行交互式的选择
#    如果是IP,则进入下一阶段
# 2、进行nmap四级扫描
# 3、根据端口号进行针对扫描
#    21服务
#    80、443或其他http服务
#        目录扫描:gobuster
#        技术栈扫描:Wappalyzer或Whatweb
#        子域名扫描:GoBuster或MassDNS
#        wpscan
#        
#    smb服务
#    NFS服务
#set -x

    echo '╔══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗'
    echo '║                                                                                                                      ║' 
    echo '║                                          █████      ███                       █████████                              ║'
    echo '║                                         ░░███      ░░░                       ███░░░░░███                             ║'
    echo '║  ████████    ██████  ████████  █████ ████░███████  ████   ██████  ████████  ░███    ░░░   ██████  ██████  ████████   ║'
    echo '║ ░░███░░███  ███░░███░░███░░███░░███ ░███ ░███░░███░░███  ░░░░░███░░███░░███ ░░█████████  ███░░███░░░░░███░░███░░███  ║'
    echo '║  ░███ ░███ ░███████  ░███ ░░░  ░███ ░███ ░███ ░███ ░███   ███████ ░███ ░███  ░░░░░░░░███░███ ░░░  ███████ ░███ ░███  ║'
    echo '║  ░███ ░███ ░███░░░   ░███      ░███ ░███ ░███ ░███ ░███  ███░░███ ░███ ░███  ███    ░███░███  ██████░░███ ░███ ░███  ║'
    echo '║  ████ █████░░██████  █████     ░░████████████████  █████░░████████████ █████░░█████████ ░░██████░░████████████ █████ ║'
    echo '║ ░░░░ ░░░░░  ░░░░░░  ░░░░░       ░░░░░░░░░░░░░░░░  ░░░░░  ░░░░░░░░░░░░ ░░░░░  ░░░░░░░░░   ░░░░░░  ░░░░░░░░░░░░ ░░░░░  ║'
    echo '║                                                                                                                      ║' 
    echo '╠══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣'
    echo "║ ----------------< 执行权限检测 >------------------------------------------------------------------------------------ ║" 
if [ "$(id -u)" != "0" ]; then
    echo "║ ----当前脚本没有以 sudo 执行, 请用sudo或root用户执行当前脚本  ------------------------------------------------------------- ║"   
    echo '╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝'
    exit
else
    echo "║ ----------------< 当前脚本以 sudo 执行 >---------------------------------------------------------------------------- ║"   
fi

#帮助信息
HELP_MESSAGE(){
    echo "║ ---------------------< 帮助信息 >-----------------------------------------------------------------------------------" 
    echo '║ # 使用方法1: kali初始化设置                                                                                          ║'
    echo '║ sudo sh NerubianScan.sh first                                                                                        ║' 
    echo '║                                                                                                                      ║' 
    echo '║ # 使用方法2: 渗透测试主动侦察                                                                                        ║'
    echo '║ sudo sh NerubianScan.sh <eth0> <target ip/netmask> <scan log dir>                                                    ║'
    echo "║ -- \$1: eth0                                                                                                          ║"
    echo "║ -- \$2: target ip/netmask                                                                                             ║"
    echo "║ -- \$3: scan log dir                                                                                                  ║"
    echo '╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝'
}

if [ "$1" = "-h" ] || [ "$1" = "--help" ] || [ "$1" = "" ]; then
    HELP_MESSAGE
    exit
elif [ "$1" = "first" ];then
    #修改镜像源
    KALI_ORG_NU=$(grep -v "kali.org" /etc/apt/sources.list|grep -c ^deb)
    if [ "$KALI_ORG_NU" -eq 0 ]; then
        cat << EOF > /etc/apt/sources.list
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
EOF
        echo "║ ----------------< /etc/apt/sources.list  >----------------------------------------------------------------- ║"
    fi

    #镜像源外网测试
    if ! apt -y install vim > /dev/null 2>&1 ; then
        echo "║ ----------------< 镜像源网络异常,请修复网络后重试 >------------------------------------------------------- ║"
    fi

    #安装必备工具【离线】
    for tool in "gobuster" "enum4linux" "whatweb" "wpscan" "nmap" "showmount" "medusa" "smtp-user-enum" "smbclient" "smbmap" "nikto" "dirsearch"
    do
        if apt install -y $tool > /dev/null 2>&1; then
            echo "║ # $tool installed successfully "
        else
            echo "║ # $tool installation failed "
        fi
    done

    #字典安装与解压
    gunzip /usr/share/wordlists/rockyou.txt.gz
    apt install seclists -y

    echo '║ # Kali Linux first setup execution completed                                                                ║'
    echo '╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════╝'
    exit
else
    echo "║ # \$1:$1"
fi

# 检查第二参数是否为合法 IP 或网段
if ! echo "$2" | grep -qE '^([0-9]{1,3}\.){3}[0-9]{1,3}(/[0-9]{1,2})?$'; then
    echo "║ # 没有扫描到合法的IP地址或网段参数,请检查修正后重试                                                              ║"
    echo "║ # \$2:$2"
    HELP_MESSAGE
    exit
fi

if echo "$2" | grep -q "\/"; then
    # 输入为网段
    echo "║ # \$2:$2"
    ip_local=$(ip a |grep "$(echo "$2" | awk -F'.' '{print $1"."$2"."$3}')"| awk '{print $2}'| awk -F/ '{print $1}')
    echo "║ ----------------< \$2合法,开始主机发现 >-------------------------------------------------------------------- ║"
    while true
    do
        echo "║ fping -agq $2"
        nmap_result=$(fping -agq "$2")

        # 将结果写入临时文件
        echo "$nmap_result" > .ip_list.txt

        # 检查ip临时文件中的行数是否为0,为0则报错退出
        ip_list_wc=$(wc -l .ip_list.txt|awk '{print $1}')
        if [ "$ip_list_wc" -eq 0 ]; then
            echo "║ ERROR! 没有扫描到合法IP地址,退出                                                                           ║"
            echo '╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════╝'
            exit 2
        fi    

        # 将临时文件内容输出展示,同时增加序号
        echo "║ 当前网卡$1对应的IP为: $ip_local"
        echo "║  PS:输入任意字母将重新执行IP扫描, 输入其他字符将导致脚本错误"    
        echo "║  序号   IP地址"
        echo "     0    退出当前脚本"
        cat -n .ip_list.txt

        # 交互式选择IP
        read -rp "║ 请输入序号: " selected_index

        # 判断输入是否包含字母
        if echo "$selected_index" | grep -qE "[a-z]"; then
            echo "║ ERROR! 你输入的值[$selected_index]包含字母,请重新输入。"
            echo '║ ----------------------------------------------------------------------------------------------------------- ║'
        # 判断输入为0
        elif [ "$selected_index" -eq 0 ]; then
            echo "║ EXIT! 你输入的值为 0 ,退出脚本。                                                                           ║"
            echo '╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════╝'
            exit 1
        elif ! [[ "$selected_index" =~ ^[0-9]+$ ]]; then
            echo "║ ERROR! 你输入的值[$selected_index]不是整数,请重新输入。"
            echo '║ ----------------------------------------------------------------------------------------------------------- ║'   
        # 判断不是合法区间的数字
        elif [ "$selected_index" -gt "$ip_list_wc" ] || [ "$selected_index" -lt 1 ]; then
            echo "║ ERROR! 你输入的值[$selected_index]不是一个介于 1 至 $ip_list_wc 之间的整数,请重新输入。"
            echo '║ ----------------------------------------------------------------------------------------------------------- ║'
        else
            # 在这里的 $selected_ip 可以作为后续操作的变量
            selected_ip=$(head -n "$selected_index" .ip_list.txt | tail -n 1)
            # 判断扫描IP和本机IP是否相同
            if [ "$selected_ip" = "$ip_local" ]; then
                echo "║ 你选择的IP是:$selected_ip 是本机IP,请重新选择"
            else
                echo "║ 你选择的IP是:$selected_ip ,开始执行扫描指令"
                break 1        
            fi
        fi
    done
else
    # 输入为单个 IP
    selected_ip="$2"
    ip_local=$(ip a |grep "$(echo "$selected_ip" | awk -F'.' '{print $1"."$2"."$3}')"| awk '{print $2}'| awk -F/ '{print $1}')
    if [ "$selected_ip" = "$ip_local" ]; then
        echo "║ 你输入的IP是:$selected_ip 是本机IP,请重新输入合法的目标IP。"
        exit 1
    fi
    echo "║ 你输入的IP是:$selected_ip ,开始执行扫描指令"
fi

echo "║ ----------------< Creating a Storage Catalog >------------------------------------------------------------- ║"
rm -rf "$3"
su kali -c "mkdir -p $3"
ls "$3"
echo "║ # \$3:$3"

# 二、nmap扫描
echo '║ ----------------------------------------------------------------------------------------------------------- ║'
echo "║ ---------------------< IP testing >------------------------------------------------------------------------ ║"

if ping -c 1 "$selected_ip" > /dev/null 2>&1; then
    echo "║ # OK!IP is alive                                                                                           ║"
else
    echo "║ # ERROR! IP is not alive                                                                                    ║"
    echo '╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════╝'
    exit
fi

echo "║ ---------------------< The nmap ports scanning >----------------------------------------------------------- ║"

# nmap扫描文件保留级别
# -oN/-oX/-oS/-oG/-oA <file>
Log_output_format="N"

# NO.1
echo "║"
echo "║ ---------------------< The nmap NO.1 scanning >------------------------------------------------------------ ║"
echo "║ sudo nmap -sT --min-rate 5000 -p- $selected_ip -o$Log_output_format $3/nmapscan_1_ports"
nmap -sT --min-rate 5000 -p- "$selected_ip" -o"$Log_output_format" "$3"/nmapscan_1_ports
NmapPorts=$(grep open "$3"/nmapscan_1_ports*|awk -F'/' '{print $1}'|paste -sd ',')

# NO.2
echo "║"
echo "║ ---------------------< The nmap NO.2 scanning >------------------------------------------------------------ ║"
echo "║ sudo nmap -sT -sV -sC -O -p$NmapPorts $selected_ip -o$Log_output_format $3/nmapscan_2_detail"
nmap -sT -sV -sC -O -p "$NmapPorts" "$selected_ip" -o"$Log_output_format" "$3"/nmapscan_2_detail

# NO.3
echo "║"
echo "║ ---------------------< The nmap NO.3 scanning >------------------------------------------------------------ ║"
echo "║ sudo nmap -sU --top-ports 20  $selected_ip -o$Log_output_format $3/nmapscan_3_udp"
nmap -sU --top-ports 20 "$selected_ip" -o"$Log_output_format" "$3"/nmapscan_3_udp

# NO.4
echo "║"
echo "║ ---------------------< The nmap NO.4 scanning >------------------------------------------------------------ ║"
echo "║ sudo nmap -sV --script=vuln,auth -p $NmapPorts $selected_ip -o$Log_output_format $3/nmapscan_4_script"
nmap -sV --script=vuln,auth -p "$NmapPorts" "$selected_ip" -o"$Log_output_format" "$3"/nmapscan_4_script

# web
grep open "$3"/nmapscan_2_detail*|grep '/tcp'|grep -i http|grep -v Warning|awk '{print $1}'|awk -F/ '{print $1}' > .web_port.txt
while read -r i
do
    if [ "$i" -ne 0 ]; then
        # 技术栈扫描
        echo '║ ----------------------------------------------------------------------------------------------------------- ║'
        echo "║ -------------< web technology stack scanning >------------------------------------------------------------- ║"
        echo "║ whatweb http://$selected_ip:$i --log-verbose=$3/whatweb_$i.log "
        whatweb "http://$selected_ip:$i" --log-verbose="$3"/whatweb_"$i".log
        # 技术栈扫描
        echo '║ ----------------------------------------------------------------------------------------------------------- ║'
        echo "║ -------------< web nikto scanning >-------------------------------------    ----------------------------------- ║"
        echo "║ nikto -host \"http://$selected_ip:$i\" -output $3/nikto_$i.txt"
        nikto -host "http://$selected_ip:$i" -output "$3"/nikto_"$i".txt
        # 目录扫描
        echo "║ ----------------< web directory scanning 1 >--------------------------------------------------------------- ║"
        echo "║dirsearch -u \"http://$selected_ip:$i\" -w /usr/share/wordlists/dirb/big.txt -o $3/dirsearch_out_$i.log"
        dirsearch -w /usr/share/wordlists/dirb/big.txt -u "http://$selected_ip:$i" -o "$3"/dirsearch_out_"$i".log
        # 目录扫描2
        echo "║ ----------------< web directory scanning 2 >--------------------------------------------------------------- ║"
        #echo "║gobuster dir -w /usr/share/wordlists/dirb/big.txt -u "http://$selected_ip:$i" -x html,htm,zip,bak,txt,php,sql,rar,md,tar,xml,asp > $3/gobuster_dir_out_$i.log" 
        #gobuster dir -w /usr/share/wordlists/dirb/big.txt -u "http://$selected_ip:$i" -x html,htm,zip,bak,txt,php,sql,rar,md,tar,xml,asp > $3/gobuster_dir_out_$i.log
        echo "║gobuster dir -w /usr/share/wordlists/dirb/big.txt -u \"http://$selected_ip:$i\" > $3/gobuster_dir_out_$i.log" 
        gobuster dir -w /usr/share/wordlists/dirb/big.txt -u "http://$selected_ip:$i" > "$3"/gobuster_dir_out_"$i".log
        echo
        # 子域名扫描
        echo "║ ----------------< web subdomain scanning >----------------------------------------------------------------- ║"
        echo "║gobuster dns -d \"http://$selected_ip:$i\" -w /usr/share/dnsrecon/namelist.txt > $3/namelist_out_$i.log    "
        gobuster dns -d "http://$selected_ip:$i" -w /usr/share/dnsrecon/dnsrecon/data/namelist.txt > "$3"/namelist_out_gobuster_"$i".log    
        if [ "$(grep -ic wordpress "$3"/nmapscan_2_detail*)" -ne 0 ]; then
            # 扫描用户名并尝试破解
            echo "║ ------------< 扫描wordpress用户名并尝试破解 >-------------------------------------------------------------- ║"
            wpscan --api-token vkd34m0eKZcO3Cpa4NekrsSyQpHicgxGm7JEY4GL8CE --url "http://$selected_ip:$i" -e u --wordlist /usr/share/wordlists/metasploit/password.lst
            # 常用目录扫描
            echo "║ ----------------< wordpress常用目录扫描 >------------------------------------------------------------------ ║"
            echo "║ wpscan --api-token vkd34m0eKZcO3Cpa4NekrsSyQpHicgxGm7JEY4GL8CE --url \"http://$selected_ip:$i\" --enumerate tt"
            wpscan --api-token vkd34m0eKZcO3Cpa4NekrsSyQpHicgxGm7JEY4GL8CE --url "http://$selected_ip:$i" --enumerate tt
        fi
    else
        break
    fi
done < ".web_port.txt"
rm -f ".web_port.txt"

# smb
if [ "$(grep -ic smb "$3"/nmapscan_2_detail*)" -ne 0 ]; then
    echo '║ ----------------------------------------------------------------------------------------------------------- ║'
    echo "║ ---------------------< SMB Scanning >---------------------------------------------------------------------- ║"
    smbmap -H "$selected_ip"
    smbclient -L ///"$selected_ip"
    enum4linux -a -o "$selected_ip"
fi

# smtp
if [ "$(grep -ic smtp "$3"/nmapscan_2_detail*)" -ne 0 ]; then
    echo '║ ----------------------------------------------------------------------------------------------------------- ║'
    echo "║ ---------------------< SMTP user name Scanning >----------------------------------------------------------- ║"
    smtp-user-enum -M VRFY -U /usr/share/metasploit-framework/data/wordlists/unix_users.txt -t "$selected_ip"|grep "$selected_ip"|awk '{print $2}' > smtp_user.list
    echo "║ ---------------------< SMTP password Scanning >------------------------------------------------------------ ║"
    medusa -h "$selected_ip" -U smtp_user.list -P /usr/share/wordlists/rockyou.txt -M smtp
fi

# nfs
NFS_lines=$(grep -ic nfs "$3"/nmapscan_2_detail*)
if [ "$NFS_lines" -ne 0 ]; then
    echo '║ ----------------------------------------------------------------------------------------------------------- ║'
    echo "║ ---------------------< NFS Scanning >---------------------------------------------------------------------- ║"
    showmount -e "$selected_ip"
fi
# SQL注入漏洞测试

# 文件包含漏洞测试

# 命令注入漏洞测试

echo
echo "║ ---------------------< 脚本执行完成 >---------------------------------------------------------------------- ║"
echo "║ 生成以下扫描报告:                                                                                           ║"
echo '║                                                                                                             ║'
tree "$3"
echo '╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════╝'

更多nmap参数请查看:

nmap命令参数详解

https://blogs.sans.org/pen-testing/files/2013/10/NmapCheatSheetv1.1.pdf

https://www.nerubian.cn/archives/3a935015-6c6e-4452-86b7-3261902a6d99

2 页面审计

技术栈识别

火狐插件User-Agent Switcher and Manager

火狐插件X-Forwarded-For Header

1. Wappalyzer

  • 介绍:Wappalyzer是一个浏览器扩展,能够揭示在网站上使用的技术。它可以检测内容管理系统、电子商务平台、Web服务器、JavaScript框架、分析工具等。
  • 下载地址
    • https://addons.mozilla.org/zh-CN/firefox/addon/wappalyzer/
    • https://chromewebstore.google.com/detail/wappalyzer-technology-pro/gppongmhjkpfnbhagpmjfkannfbllamg?utm_source=ext_app_menu

2. HackTools

  • 介绍:HackTools是一个方便web应用程序渗透测试的web扩展,如XSS有效载荷、反向shell等。
  • 下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/hacktools/

3. HackBar v2

  • 介绍:HackBar工具栏有助于测试SQL注入、XSS漏洞和网站的安全性,帮助开发人员做代码的安全审计。
  • 下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/hackbar/

4. Tamper Data

  • 介绍:Tamper Data可以篡改数据来查看和修改HTTP/HTTPS头和后置参数,跟踪和记录HTTP响应/请求。通过修改POST参数来测试Web应用程序的安全。
  • 下载地址:https://addons.mozilla.org/en-US/firefox/addon/tamper-data/

5. User Agent Switcher

  • 介绍:User Agent Switcher用户代理切换器扩展增加了菜单和工具栏按钮,用于切换浏览器的用户代理。
  • 下载地址:https://addons.mozilla.org/en-US/firefox/addon/user-agent-switcher/

6. FindSomething

  • 介绍:FindSomething用于快速在网页的HTML源码或JS代码中提取一些有趣的信息,包括可能请求的资源、接口的URL、可能请求的IP和域名、泄漏的证件号、手机号、邮箱等。
  • 下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/findsomething/

7. FoxyProxy(或FoxyProxy Standard)

  • 介绍:FoxyProxy是一个高级的代理管理工具,完全替代了Firefox有限的代理功能。它提供比多个其他代理管理工具更多的功能,可以快速便捷地切换浏览器所使用的代理。
  • 下载地址:由于原文中存在敏感词提示,正确地址需去除括号及括号内提示内容,即https://addons.mozilla.org/zh-CN/firefox/addon/foxyproxy-standard/(注意:将“(火狐)及括号内容”去除)

8. Open Multiple URLs

  • 介绍:Open Multiple URLs可以快速在浏览器打开多个URL,减少了手动打开URL的麻烦。
  • 下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/open-multiple-urls/

9. Firebug

  • 介绍:Firebug为Firefox集成了丰富的开发工具,可以对任何网页的CSS、HTML和JavaScript进行实时编辑、调试和监控。
  • 下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/firebug/

10. Live HTTP Headers

  • 介绍:Live HTTP Headers可以在浏览网页时查看页面的HTTP头部信息。
  • 下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/live-http-headers/

11. EditThisCookie

  • 介绍:EditThisCookie是一个cookie管理器,允许您在Firefox浏览器中添加、删除、编辑、搜索、锁定和屏蔽cookies。这对于渗透测试人员来说非常有用,因为cookies经常用于存储会话信息和身份验证令牌。
  • 下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/edit-this-cookie/

12. CrytoFox

  • 介绍:CrytoFox是一个加密和解密的工具,提供了多种加密算法和工具,方便渗透测试人员进行数据加密和解密操作。
  • 下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/cryptofox/(注意:该插件可能因版本更新而更改名称或地址,请确保从官方或可信来源下载)

13. Flagfox

  • 介绍:Flagfox会显示一个图标来告知Web服务器位置,同时也包含Whois、ping等功能。这对于渗透测试人员来说非常有用,因为了解目标服务器的地理位置和相关信息可以帮助他们更好地制定测试策略。
  • 下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/flagfox/

14. HTTP Header Live

介绍:HTTP Header Live是一个用于实时查看和分析HTTP头部的工具。它可以帮助渗透测试人员了解目标网站的HTTP请求和响应头部信息,从而发现潜在的安全漏洞。

  • 下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/http-header-live/(注意:该插件可能因版本更新而更改名称或地址,请确保从官方或可信来源下载)

15. Web Developer

  • 介绍:Web Developer是一个为浏览器添加多种web开发工具的插件,包括查看和编辑DOM、CSS、JavaScript等。这对于渗透测试人员来说非常有用,因为他们需要了解和分析目标网站的前端代码来发现潜在的安全问题。
  • 下载地址:https://addons.mozilla.org/de/firefox/addon/web-developer/(注意:该插件的下载地址可能因语言或版本更新而有所变化,请确保从官方或可信来源下载)

    Whatweb

指纹识别工具WhatWeb使用教程,图文教程(超详细)-CSDN博客

使用命令行工具 whatweb 提取 web 服务器、支持框架和应用程序的版本

whatweb http://192.168.56.104/textpattern/

wapiti 自动化WEB漏洞扫描:

sudo wapiti -u http://192.168.223.131

enum4linux

  • 功能:枚举 Windows 网络信息(含 DNS 相关)。
  • 常用参数
    sudo enum4linux -D http://192.168.56.104/textpattern/
    

builtwith库识别框架版本:

python3 -m pip install builtwith && builtwith http://192.168.56.104/textpattern/index.php

检查页面内容

Firefox Debugger 工具(在 Web Developer 菜单中找到,或通过按 Ctrl Shift K 键)显示页面的资源和内容,这会因应用程序而异。

Debugger 工具可能会显示 JavaScript 框架、隐藏的输入字段、注释、HTML 中的客户端控件、JavaScript 等等。为了证明这一点,我们可以在浏览 www.megacorp.one 时打开 Debugger

查看响应标头

Firefox Web Developer菜单启动的网络工具,以查看HTTP请求和响应

curl 查看请求头

curl -IL https://www.RedteamNotes.com

检查网站地图

使用curl从www.google.com检索robots.txt文件

curl -IL https://www.RedteamNotes.com/robots.txt

证书

如果正在使用 HTTPS,SSL/TLS 证书是另一个潜在的宝贵信息来源。浏览到

https://10.10.10.10/ 并查看证书会显示详细信息,往往包括电子邮件地址和公司名称。

如果这在评估的范围内,这些信息可能被用来进行网络钓鱼攻击。

定位控制台

定位可登录的后台入口

工具审计

  • 使用 NC 查看 banner
    nc -nv <ip-address> <port>
    

Nikto 检查web敏感信息

进行对web服务器的多种检查,包括超过6700个潜在的危险文件/CGIs,查找过时的版本和版本特定问题

nikto -port {web ports} -host <ip address> -o <output file.txt>

WEB爬取工具

gospider

gospider -d 3 -w /usr/share/wordlists/dirb/big.txt -u http://10.10.11.47

使用方法:

# 基础爬取(深度 3,自定义 User-Agent)
gospider -s http://startbootstrap.com -d 3 -u "Mozilla/5.0 (Windows NT 10.0; Win64; x64)..."

# 使用代理和第三方数据源
gospider -s https://example.com -p http://127.0.0.1:8080 -a -w

主要参数说明:

| 参数 | 说明 |
| —————————- | ————————————————————————– |
| -s, --site string | 目标站点(例如:http://example.com) |
| -S, --sites string | 站点列表文件(每行一个站点) |
| -p, --proxy string | 代理服务器(格式:http://127.0.0.1:8080) |
| -o, --output string | 输出结果的文件夹路径 |
| -u, --user-agent | 用户代理设置:
- web:随机桌面浏览器 UA
- mobi:随机移动设备 UA
- 自定义 UA(默认值:web) |
| --cookie string | 使用的 Cookie(格式:testA=a; testB=b) |
| -H, --header | 自定义请求头(可多次使用该参数添加多个头部) |
| --burp string | 从 Burp HTTP 请求文件中加载头部和 Cookie |
| --blacklist string | 需要过滤的 URL 正则表达式(黑名单) |
| -t, --threads int | 线程数(并行处理多个站点,默认值:1) |
| -c, --concurrent int | 每个目标站点的最大并发请求数(默认值:5) |
| -d, --depth int | 爬取深度(0 表示无限递归,默认值:1) |
| -k, --delay int | 同站点请求间隔时间(秒) |
| -K, --random-delay int | 在 --delay 基础上增加随机延迟(秒) |
| -m, --timeout int | 请求超时时间(秒,默认值:10) |
| --sitemap | 尝试爬取 sitemap.xml |
| --robots | 尝试爬取 robots.txt(默认开启) |
| -a, --other-source | 从第三方数据源(Archive.org/CommonCrawl/VirusTotal)发现 URL |
| -w, --include-subs | 包含第三方数据源中的子域名(默认仅主域名) |
| -r, --include-other-source | 同时爬取第三方数据源的 URL(默认仅发现不请求) |
| --debug | 开启调试模式 |
| --verbose | 开启详细输出 |
| --no-redirect | 禁用自动重定向 |
| --version | 查看版本信息 |
| -h, --help | 显示帮助文档 |

3 目录枚举

Feroxbuster

feroxbuster -u http://192.168.56.104 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,html,txt -o feroxbuster.log

dirsearch

常用预设:

sudo dirsearch -u http://192.168.56.104 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --full-url -o dirsearch.log

递归枚举

sudo dirsearch -t 100 -r -e php,html,txt -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --max-recursion-depth 3 --random-agent -u http://10.10.11.48/ --full-url --recursion-status 301,200 -o sudo dirsearch.log

解释:

    -u http://10.10.11.48 :指定要扫描的目标 URL
    -w /usr/share/wordlists/dirb/big.txt:指定使用的字典文件
    -r 启用递归扫描
    -e 站点文件类型列表,默认配置:php,aspx,jsp,html,js,"*"指代所有类型
         -e zip,jpg,png,jpeg,tiff,bmp,gif
    -X 不需要扫描的站点文件类型列表
    -q --quiet-mode 静音模式
    -t 指定线程数
    --max-recursion-depth 3:设置递归扫描的最大深度为 3
    --threads 100:使用 100 个线程进行扫描
    --random-agent:使用随机的用户代理(User-Agent)发送请求
    --full-url:在输出结果中显示完整的 URL
    --recursion-status 301,200:只对状态码为 301 和 200 的页面进行递归扫描
    -i    仅现实指定的状态码,指定多个通过逗号分隔 
    -l    目标url列表文件

请求设置:
    -m METHOD,--http-method=METHOD  指定请求方式,默认GET
    -d DATA,--data=DATA  HTTP请求数据
    -H HEADERS,--header=HEADERSHTTP请求头,支持多个标志(例如:-H 'Referer: example.com')
    --header-list=FILE 文件包含HTTP请求头
    -F,--follow-redirects 遵循HTTP重定向
    --random-agent 为每个请求选择一个随机的用户代理
    --auth-type=TYPE 身份验证类型(基本,摘要,承载,ntlm)
    --auth=CREDENTIAL 身份验证凭据(用户:密码或承载令牌)
    --user-agent=USERAGENT
    --cookie=COOKIE              可以设置访问cookie
    -x(--exclude-status)        不显示指定的状态码,指定多个通过逗号分隔 
    --exclude-sizes=SIZES        不显示的响应包大小(Example: 123B,4KB)
    --exclude-texts=TEXTS        不显示的响应包关键字 (Example: "Not found", "Error")

代理设置:
    --proxy=PROXY 支持HTTP和SOCKS(localhost:8080,socks5://localhost:8088)
    --proxy-list=FILE    文件包含代理服务器
    --replay-proxy=PROXY 用找到的路径重播的代理

输出保存:
    默认保存路径:/usr/lib/python3/dist-packages/sudo dirsearch/
    -o FILE, --output=FILE  指定保存扫描结果的文件名称,但只有指定了绝对路径才能改变保存路径,可以使用变量(~$HOME),但是./无效
    --format=FORMAT     输出格式指定 (Available: simple, plain, json, xml, md, csv, html)

dirb

dirb http://192.168.56.104:80 /usr/share/wordlists/dirb/big.txt

选项:

-a "Mozilla/5.0 (iPod; U )"  

指定移动设备的user agent请求头爆破

dirb http://192.168.56.104:80 /usr/share/wordlists/rockyou.txt -a "Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us)AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2Safari/6533.18.5" 

gobuster

常用预设:

sudo gobuster dir -w /usr/share/wordlists/dirb/big.txt -u http://192.168.56.104:80 -x html,htm,zip,bak,txt,php,sql,rar,md,tar,xml,asp

递归枚举

sudo gobuster dir -u http://192.168.56.104:80 -w /usr/share/wordlists/dirb/big.txt -t 100 -e -x php -s 301 -r -o outlog.txt

解释

gobuster dir:表示使用 Gobuster 进行目录枚举操作。
-u http://10.10.11.48 :指定要扫描的目标 URL
-w /usr/share/wordlists/dirb/big.txt:指定要使用的字典文件
-t 1000:使用 1000 个线程进行扫描
-e:显示完整的 URL
-x php:仅查找后缀为 .php 的文件。
-s 301,200:仅对指定状态码的页面进行递归枚举
-r:启用递归扫描
-o outlog.txt:将扫描结果输出到 outlog.txt 文件中

使用方法:

 使用:
 gobuster [选项] [参数] <target>

 选项:
   completion 生成指定外壳的自动完成脚本
   dir        使用目录/文件枚举模式
   dns        使用DNS子域枚举模式
   fuzz       使用模糊模式。替换URL、报头和请求体中的关键词FUZZ
   gcs        使用gcs桶枚举模式
   help       帮助任何命令
   s3         使用AWS桶枚举模式
   tftp       使用TFTP枚举模式
   version    显示当前版本
   vhost      使用VHOST枚举模式(你最可能想使用IP地址作为URL参数)

参数:
   -u                    指定扫描目标地址
       --debug           启用调试输出
       --delay duration  每个线程在请求之间等待的时间(例如1500ms)
   -x                    指定寻找的文件后缀(默认不会寻找这些文件格式)
   -h, --help            gobuster帮助
       --no-color        禁用颜色输出
       --no-error        不显示错误
   -z, --no-progress     不显示进度
   -o, --output string   输出文件写入结果(默认为stdout)
   -p, --pattern string  包含替换模式的文件
   -p                    指定 HTTP 或 HTTPS 代理
   -q, --quiet           不打印横幅和其他噪声
   -t, --threads 并发线程数(默认10)
   -v, --verbose         详细输出(错误)
   -w, --wordlist        字符串 字典的路径。设置为-使用标准输入。
       --wordlist-offset 整数 从字典中给定的位置恢复(默认为0)
   -r                    启用递归模式,对每个子目录进行深度扫描
   -d, --depth           设置扫描深度(多层后缀的文件,例如。tar.gz)
   -t                    线程数
   -e                    对目标 URL 进行 URL 编码,处理包含特殊字符的 URL,例如空格、中文字符、特殊符号等。
   -k                    跳过 SSL/TLS 证书验证
   -a, --useragent       指定User-Agent

Wfuzz

wfuzz -w /usr/share/wordlists/dirb/big.txt -u https://10.10.10.126:12380/FUZZ -H "X-Forwarded-For: http://127.0.0.1" --hc 404

    -w 字典
    -H "X-Forwarded-For: 127.0.0.1"  伪造请求地址
    --hc 过滤结果,如--hc 404 :不显示404的结果

ffuf

ffuf -H "头信息" -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.110/FUZZ -e .php,.zip,.txt,.pdf

目录枚举字典

| SIZE | PATH |
| ———- | ——————————————————————————— |
| 10 | /usr/share/wordlists/dirb/indexes.txt |
| 29 | /usr/share/wordlists/dirb/extensions_common.txt |
| 49 | /usr/share/wordlists/dirb/mutations_common.txt |
| 161 | /usr/share/wordlists/dirb/catala.txt |
| 197 | /usr/share/wordlists/dirb/euskera.txt |
| 449 | /usr/share/wordlists/dirb/spanish.txt |
| 959 | /usr/share/wordlists/dirb/small.txt |
| 4614 | /usr/share/wordlists/dirb/common.txt |
| 8930 | /usr/share/wordlists/dirbuster/apache-user-enum-1.0.txt |
| 10355 | /usr/share/wordlists/dirbuster/apache-user-enum-2.0.txt |
| 20469 | /usr/share/wordlists/dirb/big.txt |
| 24349 | /usr/share/wordlists/dirb/all.txt |
| 58688 | /usr/share/wordlists/dirbuster/directories.jbrofuzz |
| 81643 | /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-small.txt |
| 81643 | /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-small.txt |
| 87664 | /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt |
| 87664 | /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-small.txt |
| 141708 | /usr/share/wordlists/dirbuster/directory-list-1.0.txt |
| 141708 | /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt |
| ==207643== | /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt |
| 207643 | /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt |
| 220559 | /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt |
| 220560 | /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt |
| 1185254 | /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-big.txt |
| 1273832 | /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt |

大佬的字典项目

https://github.com/Fuzzdb-project/Fuzzdb
https://github.com/danielmiessler/SecLists

4 DNS枚举

DNS记录类型

A 记录:将域名指向一个IPv4地址。  
AAAA记录:将域名指向一个IPv6地址。  
CNAME记录:别名,用于将多个名字映射到同一台计算机。  
MX记录:邮件交换记录,用于电子邮件路由。  
TXT记录:一般用于保存关于主机的一些文本信息。  
NS记录:指定由哪些DNS服务器对该区域进行解析。

DNS记录查询

1. dig

  • 功能:查询 DNS 记录(A、AAAA、MX、NS、TXT 等),支持高级查询。

  • 常用参数

    dig example.com          # 查询 A 记录
    dig -t MX example.com   # 查询 MX 记录
    dig -x 192.168.1.1      # 反向 DNS 解析
    dig example.com +short  # 简洁输出
    
  • 反向 DNS 解析

    for ip in 192.168.1.{1..254}; do dig -x $ip +short; done
    

2. nslookup

  • 功能:简单的 DNS 查询工具,适合交互式操作。
  • 常用参数
    nslookup example.com          # 查询默认 DNS 服务器
    nslookup example.com 8.8.8.8  # 指定 DNS 服务器
    

3. host

查域名ip

host www.megacorpone.com

查邮件服务器等其他记录类型

host -t mx megacorpone.com
host -t txt megacorpone.com

批量枚举域名对应ip

for ip in $(cat list.txt); do host $ip.megacorpone.com; done

批量枚举ip对应域名

for ip in $(seq 200 254); do host 51.222.169.$ip; done | grep -v "not found"

使用工具自动枚举

dnsrecon -d megacorpone.com -t std
dnsrecon -d megacorpone.com -D ~/list.txt -t brt
dnsenum megacorpone.com

A记录枚举

nslookup mail.megacorptwo.com

指定DNS服务器枚举

nslookup -type=TXT info.megacorptwo.com 192.168.50.151

子域名枚举

4. dnsrecon

  • 功能:强大的 DNS 枚举工具,支持暴力破解、区域传输、子域名发现。

  • 常用参数

    dnsrecon -d example.com -t std   # 标准扫描
    dnsrecon -d example.com -t axfr  # 尝试区域传输
    dnsrecon -d example.com -t brt   # 暴力破解子域名(需字典)
    
  • 自动化脚本

    # 批量扫描多个域名
    cat domains.txt | while read domain; do dnsrecon -d $domain -o $domain.txt; done
    
  • 区域传输测试

    dnsrecon -d example.com -t axfr
    

6. fierce

  • 功能:子域名发现和 DNS 信息收集。
  • 常用参数
    fierce -dns example.com
    

ffuf

ffuf -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt -u http://alert.htb -H "Host:FUZZ.alert.htb" -ac
002 Findomain v0.9.3

最快且跨平台的子域枚举器

项目地址:github.com/Edu4rdSHL/fi
其最大的优势就是:快,测试结果为 5.5 秒内收集 84110 个子域。

特征

  • 子域监控
  • API查询
  • DNS over TLS 支持
  • 判断域名是否解析
  • 输出为文件等等

    gobuster

    vhost

开始扫描

gobuster vhost -t 50 -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt --append-domain -u http://linkvortex.htb/ 
dns

将 DNS 服务器如 1.1.1.1 添加到 /etc/resolv.conf 文件中

echo 'nameserver 1.1.1.1' >> /etc/resolv.conf

开始扫描

gobuster dns -t 50 -w /usr/share/SecLists/Discovery/DNS/namelist.txt -u http://linkvortex.htb/ 

5. dnsmap DNS 分析工具

  • 功能:通过字典暴力破解子域名。
  • 常用参数
    dnsmap example.com -w /usr/share/wordlists/dnsmap.txt
    

7. drone

  • 功能:自动化 DNS 侦察,集成多种工具。
  • 常用参数
    drone -d example.com
    

8. dnschef DNS 欺骗的工具

  • 功能:DNS 欺骗(中间人攻击)。
  • 常用参数
    dnschef --fakedns example.com:192.168.1.100
    

9. dmitry

  • 定位:dmitry 是一款轻量级信息收集工具,主要用于对目标域名或 IP 进行基础信息收集。
  • 核心功能
    • 域名信息:查询 Whois 信息、DNS 记录(如 A、MX、NS 记录)、子域名枚举(基础字典爆破)。
    • 端口扫描:支持简单的端口扫描(如 TCP SYN 扫描),识别开放端口。
    • 服务探测:初步识别端口对应的服务(如 HTTP、FTP),但功能较基础。
    • 漏洞线索:通过检查常见服务的 banner 信息,获取可能的漏洞线索(如软件版本)。
  • 常用参数
    dmitry -winse example.com
    

10. dnstracer 跟踪 DNS 查询路径

  • 功能:跟踪 DNS 查询路径。
  • 常用参数
    dnstracer example.com
    

3. dnsenum

  • 功能:子域名枚举、区域传输测试、反向解析等。
  • 常用参数
    dnsenum example.com                         # 基础扫描
    dnsenum --enum example.com                  # 全面枚举(子域名、MX、NS)
    dnsenum --file domains.txt --threads 5      # 批量扫描多个域名
    

wfuzz

wfuzz -c -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt -u http://FUZZ.alert.htb/

手动枚举

https://blog.csdn.net/weixin_63124284/article/details/126956627

DNS枚举字典

安装 SecLists字典

sudo apt install seclists -y

| 行数 | 字典路径 |
| ——- | ———————————————————————————- |
| 986 | /usr/share/seclists/Miscellaneous/dns-resolvers.txt |
| 17576 | /usr/share/wordlists/dnsmap.txt |
| 19966 | /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt |
| 49928 | /usr/share/seclists/Discovery/DNS/deepmagic.com-prefixes-top50000.txt |
| 114441 | /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt |
| 100000 | /usr/share/seclists/Discovery/DNS/bitquark-subdomains-top100000.txt |
| 102582 | /usr/share/seclists/Discovery/DNS/sortedcombined-knock-dnsrecon-fierce-reconng.txt |
| 151265 | /usr/share/seclists/Discovery/DNS/namelist.txt |
| 2171687 | /usr/share/seclists/Discovery/DNS/dns-Jhaddix.txt |

License:  CC BY 4.0