发布于1小时前1小时 背景与测试边界在一次已授权的内网渗透测试中,常见任务是从指定网段识别 Web 服务,再对暴露面和已知漏洞进行低影响验证。这里使用 Kali 中的 Nmap、HTTPX 和 Nuclei 组成一条可复现的验证链路:Nmap 负责端口与服务识别,HTTPX 负责 HTTP 指纹整理,Nuclei 负责模板化检查,最后通过 curl 手工复核结果。以下命令仅适用于书面授权范围。开始前应明确目标网段、排除地址、允许的测试时间、速率上限,以及是否允许访问需要认证的接口。生产环境默认排除 DoS、爆破、模糊测试和 intrusive 类型模板。工具安装与版本留档Kali 中优先使用官方软件源安装工具,避免直接运行来源不明的二进制文件。HTTPX 在 Kali 中的包名通常为 httpx-toolkit,安装后的命令仍为 httpx。sudo apt update sudo apt install --yes nmap httpx-toolkit nuclei jq curl openssl mkdir -p authorized-web-test/evidence cd authorized-web-test umask 077 apt-cache policy nmap httpx-toolkit nuclei | tee evidence/package-policy.txt nmap --version | tee evidence/nmap-version.txt httpx -version 2>&1 | tee evidence/httpx-version.txt nuclei -version 2>&1 | tee evidence/nuclei-version.txt sha256sum "$(command -v nmap)" "$(command -v httpx)" "$(command -v nuclei)" \ | tee evidence/tool-sha256.txt版本记录很重要。同一个目标在不同版本的 Nmap 探针或 Nuclei 模板下可能产生不同结果,缺少版本信息会导致后续无法复现。范围控制与主机发现将授权网段写入 scope.txt,将明确禁止扫描的地址写入 exclusions.txt。不要把临时测试网段直接写死在脚本中,以免复用命令时误扫其他环境。cat > scope.txt <<'EOF' 10.20.30.0/24 EOF cat > exclusions.txt <<'EOF' 10.20.30.1 10.20.30.254 EOF sudo nmap -sn -T3 --max-rate 200 \ -iL scope.txt --excludefile exclusions.txt \ -oA evidence/discovery awk '/Status: Up/{print $2}' evidence/discovery.gnmap \ | sort -u > evidence/alive.txt如果目标禁用了 ICMP,不能直接认定主机离线。此时应从资产清单或 CMDB 取得明确的目标 IP 列表,再使用 -Pn 扫描这些地址,而不是对整个未知网段盲目启用 -Pn。Nmap Web 服务识别第一轮只扫描常见 Web 和管理端口,并限制整体发包速率。--version-light 可减少版本探测请求,http-title 与 http-headers 属于相对低影响的 NSE 脚本,适合用于识别反向代理、默认页面及服务端响应头。sudo nmap -sS -sV --version-light -T3 --max-rate 300 \ -p 80,443,8000,8080,8443,9000 \ -iL evidence/alive.txt --excludefile exclusions.txt \ --script http-title,http-headers \ -oA evidence/web-services排查结果时重点看三类情况:端口开放但 service 显示 unknown:可能是非标准 HTTP 端口、双向 TLS 或自定义协议,需要单独验证。HTTP 标题是默认页面:通常说明虚拟主机未匹配,不能据此判断后端真实业务。版本号命中旧版本:发行版可能回补安全补丁,不能仅根据 Server 响应头直接确认漏洞。使用 HTTPX 统一整理 Web 目标HTTPX 可以同时尝试 HTTP 与 HTTPS,并把状态码、标题、跳转位置和技术指纹输出为 JSONL。这里将速率限制为每秒 20 个请求,失败目标只重试一次,避免对状态较差的应用形成额外压力。httpx -l evidence/alive.txt \ -ports http:80,http:8000,http:8080,http:9000,https:443,https:8443 \ -status-code -title -tech-detect -server -location \ -follow-redirects -max-redirects 3 \ -timeout 8 -retries 1 -rate-limit 20 \ -json -o evidence/httpx.jsonl jq -r 'select(.failed != true) | .url' evidence/httpx.jsonl \ | sort -u > evidence/urls.txt jq -r '[.url, (.status_code|tostring), (.title // "-"), (.webserver // "-")] | @tsv' \ evidence/httpx.jsonl | tee evidence/httpx-summary.tsv如果资产依赖特定 Host 头,通过 IP 直接访问往往只能看到网关默认站点。应从证书 SAN、授权域名清单、DNS 或反向代理配置中补齐域名,再加入 urls.txt。不要在未授权的情况下枚举外部 DNS 或虚拟主机。Nuclei 低影响漏洞验证先更新模板并记录模板集合摘要。生产环境不建议不经检查就运行全部模板,应限制严重等级,并明确排除 DoS、爆破、模糊测试及 intrusive 标签。nuclei -update-templates find "$HOME/nuclei-templates" -type f -print0 \ | sort -z | xargs -0 sha256sum | sha256sum \ | tee evidence/nuclei-templates.sha256 nuclei -l evidence/urls.txt \ -t "$HOME/nuclei-templates/http/" \ -severity medium,high,critical \ -exclude-tags dos,fuzz,intrusive,bruteforce \ -rate-limit 10 -concurrency 5 \ -timeout 8 -retries 1 \ -jsonl -o evidence/nuclei.jsonl jq -r '[.["template-id"], .info.severity, .["matched-at"]] | @tsv' \ evidence/nuclei.jsonl | sort -u \ | tee evidence/nuclei-summary.tsv执行前最好检查实际加载的模板。尤其是包含 POST、文件上传、登录尝试或大响应体下载的模板,即使没有 intrusive 标签,也需要根据项目规则单独审批。扫描期间应同步观察目标的 5xx、响应延迟和连接数;出现异常应立即停止。结果复核与误报排查Nuclei 命中只能作为线索,报告前至少确认请求路径、响应证据、受影响组件和权限条件。以下示例使用带标识的 User-Agent 复核一个已授权的健康检查接口,并保存响应头、响应体和时间信息。TARGET=' curl --silent --show-error --location --max-redirs 3 \ --connect-timeout 5 --max-time 15 \ --header 'User-Agent: Authorized-Security-Validation/1.0' \ --dump-header evidence/manual-headers.txt \ --output evidence/manual-body.bin \ --write-out 'code=%{http_code} remote=%{remote_ip} time=%{time_total}\n' \ "$TARGET" | tee evidence/manual-result.txt sha256sum evidence/manual-headers.txt evidence/manual-body.bin \ | tee evidence/manual-response.sha256复核时可以按以下方法判断误报:仅按版本号匹配的 CVE:检查操作系统包版本、厂商公告和回补补丁记录,不能只看页面 banner。敏感接口暴露:确认未登录状态下是否能获得有效数据,而不是只返回统一错误页或反向代理页面。默认凭据类结果:除非授权明确允许认证测试,否则不要继续尝试其他账号或密码。跳转后的命中:确认 matched-at 对应的是原目标还是第三方登录平台,避免把外部身份服务计入目标资产。状态码命中:200 不等于漏洞成立,应核对响应体关键字段、Content-Type 和实际权限边界。日志留痕与证据保护建议在测试开始时使用 script 记录终端操作,并在结束后对证据目录生成哈希。响应体可能包含令牌、内部地址或个人信息,因此目录权限应保持为 700,报告中只保留证明漏洞所需的最小片段。chmod 700 evidence script -q -f evidence/terminal-session.log # 在子终端中执行已审批的测试命令,完成后输入 exit find evidence -type f ! -name manifest.sha256 -print0 \ | sort -z | xargs -0 sha256sum \ > evidence/manifest.sha256同时保留测试起止时间、出口 IP、操作人员、目标范围和工具版本,方便防守方在 Nginx、Apache、WAF、EDR 或流量审计系统中关联日志。自定义 User-Agent 也有助于区分授权测试和真实攻击流量。风险与修复建议管理接口暴露:将 Actuator、Prometheus、Swagger、数据库控制台等接口限制在管理网或 VPN,配置应用层认证,不要只依赖路径隐藏。旧组件漏洞:优先按厂商公告升级或安装发行版安全包。升级后重新执行相同模板和手工请求,确认漏洞条件已经消失。默认页面与调试功能:关闭 debug、示例应用、目录索引和默认站点,删除不再使用的管理路由。信息泄露:减少 Server、X-Powered-By 等版本信息;错误页不应返回堆栈、文件路径、数据库语句或环境变量。权限边界不清:管理服务应绑定到专用地址或回环地址,并同时配置主机防火墙、网络 ACL 和应用认证,避免单点控制失效。检测能力不足:Web 日志至少记录时间、源地址、Host、URI、方法、状态码、响应大小和 User-Agent,并设置合理留存周期。总结这套流程的重点不是一次运行更多工具,而是保证范围可控、请求低影响、结果可复核。Nmap 用于确认真实开放端口,HTTPX 统一整理 Web 资产,Nuclei 提供模板化线索,最终结论仍应依赖手工验证、版本核对和权限分析。完整保存命令、版本、模板摘要与响应哈希,才能让漏洞验证、修复复测和日志追踪形成闭环。 网络请求、日志与边界流量分析示意 服务器、云资产与权限边界梳理示意
47分钟前47分钟 这套流程建议不要只做简单的“端口发现 → 批量跑模板”,最好先把资产范围、协议识别和 Nuclei 模板分级处理好,否则内网里很容易漏掉非标准端口上的 Web 服务,或者因请求量过大触发告警。 在已授权网段内,可以先用 Nmap 做存活探测和全端口扫描,再把开放端口交给 HTTPX 验证: nmap -sn 10.10.0.0/24 -oG alive.gnmap awk '/Up$/{print $2}' alive.gnmap > alive.txt nmap -sS -Pn -n -p- --min-rate 1000 -iL alive.txt -oA tcp-full nmap -sV -Pn -n --version-light -iL alive.txt -p 80,443,8000,8080,8081,8443,8888,9000,9090 -oA web-services 如果目标对 ICMP 不响应,第一步的 -sn 可能漏主机,可以直接对明确授权的地址段使用 -Pn 扫描常见 Web 端口。扫描生产网时应降低 --min-rate,并配合维护窗口。 从 Nmap XML 中提取地址和端口会比手工拼接更稳,也可以直接让 HTTPX 接收主机列表并探测常见端口: httpx -l alive.txt \ -ports 80,443,8000,8080,8081,8443,8888,9000,9090 \ -probe -follow-redirects \ -status-code -title -tech-detect -web-server -ip \ -json -o httpx.json 这里建议保留 JSON 输出,因为同一个地址可能对应多个虚拟主机、重定向目标或不同技术栈;只保存 URL 文本会损失状态码、标题和指纹等后续筛选信息。遇到 HTTPS 握手失败时,还要检查是否需要按域名访问:直接请求 IP 可能因 SNI 或虚拟主机配置得到错误页面。 Nuclei 阶段可先跑低风险的暴露面与错误配置模板,再根据 HTTPX 的技术识别结果选择产品模板: jq -r '.url' httpx.json | sort -u > web-urls.txt nuclei -l web-urls.txt \ -tags exposure,misconfig,default-login \ -severity info,low,medium,high,critical \ -rate-limit 20 -concurrency 10 \ -jsonl-export nuclei.jsonl 不建议一开始就使用全部模板。部分模板会发送较多请求,甚至包含可能改变目标状态的检测逻辑;执行前可用 nuclei -tl 查看匹配到的模板,并排除 fuzz、dos 等不适合生产环境验证的类别。命中结果也不能直接等同于漏洞成立,至少应结合响应证据、版本信息和人工复测确认,尤其是仅依据 Banner 或状态码得出的结果。
创建帐户或登录后发表意见