信息搜集

完整 Google Hacking 语法列表

  1. 基础操作符
操作符 说明 示例
site: 限定搜索特定域名或子域名 site:example.com
intitle: 标题包含关键词 intitle:"login"
allintitle: 标题包含所有指定关键词 allintitle:"admin" "dashboard"
inurl: URL 路径包含关键词 inurl:/admin
allinurl: URL 路径包含所有指定关键词 allinurl:login.php?user=
filetype: 搜索特定文件类型 filetype:pdf "confidential"
ext: 按文件扩展名搜索(同 filetype: ext:sql "password"
intext: 正文内容包含关键词 intext:"数据库密码"
allintext: 正文包含所有指定关键词 allintext:"username" "password"
cache: 查看 Google 缓存的页面 cache:example.com
related: 查找类似网站 related:github.com
info: 获取网站的 Google 摘要信息 info:example.com
define: 搜索词语定义 define:SQL注入
  1. 逻辑操作符
操作符 说明 示例
AND 或 空格 同时满足多个条件 site:example.com 密码
OR 满足任意一个条件 漏洞 OR 后门
- 排除关键词 登录 -site:gov.cn
() 组合复杂逻辑 (inurl:admin OR intitle:admin) -论坛
  1. 高级操作符
操作符 说明 示例
* 通配符(匹配任意字符) "username:* password:*"
"..." 精确匹配短语 "您的密码错误"
.. 数值范围搜索 价格 $100..$500
AROUND(N) 关键词间距不超过 N 个词 "密码" AROUND(5) "泄露"
weather: 搜索某地天气 weather:北京
stocks: 搜索股票代码 stocks:GOOG
  1. 隐藏功能
功能 说明 示例
时间筛选 限定时间范围(通过搜索工具栏) 最近一年、自定义日期
图片搜索 通过图片反向搜索敏感信息 上传图片查找来源
地图数据 搜索暴露的地理标记信息 intitle:"security camera" site:google.com/maps

二、组合示例大全(按场景分类)

  1. 敏感文件泄露
场景 示例 说明
数据库备份 filetype:sql "DROP TABLE" site:example.com 搜索 SQL 备份文件
配置文件 intitle:"index of" "config.php" 查找 PHP 配置文件
日志文件 ext:log "error" "password" 包含密码的日志文件
密钥文件 filetype:key private 私钥文件泄露
  1. 后台与登录页面
场景 示例 说明
管理员后台 intitle:"admin login" inurl:/admin 未授权访问的管理页面
默认密码 "默认密码" site:routerlogin.net 设备默认凭据
弱口令提示 intext:"用户名或密码错误" inurl:login 登录页面错误信息
  1. 漏洞利用
场景 示例 说明
SQL 注入点 inurl:"id=" & intext:"Warning: mysql" 存在报错信息的注入点
目录遍历 intitle:"index of /" "parent directory" 开放目录列表
API 接口暴露 inurl:/api/v1 intext:"apikey" 泄露的 API 密钥
  1. 设备与系统
场景 示例 说明
网络摄像头 inurl:/view.shtml intitle:"Live View" 公开的摄像头流
路由器管理 intitle:"RouterOS" "admin" 未授权的路由器配置页面
打印机控制台 inurl:"/hp/device/this.LCDispatcher" 惠普打印机管理界面
  1. 开源情报(OSINT)
场景 示例 说明
员工信息 site:linkedin.com "CTO" "example.com" 通过 LinkedIn 收集员工职位
文档元数据 filetype:docx "作者:张三" 从 Office 文档提取创建者信息
GitHub 泄露 "github.com" "password" extension:env GitHub 中的敏感环境变量文件
  1. 错误信息泄露
场景 示例 说明
调试模式 intext:"DEBUG MODE" "PHP" 开启调试模式的网站
数据库报错 "ORA-12541: TNS 无监听程序" Oracle 数据库错误信息
堆栈跟踪 intext:"at java.lang.Thread" Java 应用崩溃日志

三、高阶组合技巧

  1. 通配符与模糊搜索
技巧 示例
搜索带参数的 URL inurl:*.php?id= *
查找密码重置链接 "password reset" site:example.com inurl:token=*
  1. 时间范围限定
技巧 示例
查找近期泄露的数据库 filetype:sql "INSERT INTO users" after:2023-01-01
  1. 混合逻辑精准定位
技巧 示例
排除干扰结果 (intitle:"管理后台" OR inurl:/admin) -site:gov.cn
组合文件类型与关键词 filetype:xls "员工工资" site:example.com
  1. 利用错误消息
技巧 示例
发现 SQL 注入漏洞 "You have an error in your SQL syntax"
识别配置错误 "Access denied for user 'root'@'localhost'"

四、防御建议

措施 说明
robots.txt 配置 禁止爬虫访问敏感路径(如 /admin/config
文件权限控制 避免将备份文件(.bak.sql)存放在 Web 目录
错误信息隐藏 自定义错误页面,避免暴露堆栈跟踪
定期搜索自身 site:yourdomain.com 检查公开信息泄露

五、工具增强

类型 工具 说明
Google Dork 自动化 GHDB 直接搜索预定义的漏洞语法
Google Dork 自动化 DorkGenius 自动生成高级 Dork 语句
监控与告警 Google Alerts 监控公司关键词(如 site:example.com password

六、合法与道德提醒

⚠️ 重要提示

  • 仅用于授权测试:渗透前需获得书面许可
  • 漏洞报告:发现漏洞后联系管理员,参考《漏洞披露规范》
  • 避免敏感数据:示例中的关键词均为演示用途,请勿针对真实系统测试

七、常见语法解析与示例

  1. index of /admin
项目 内容
用途 搜索开放目录列表中的 /admin 目录(常见管理后台路径)
风险 暴露后台登录页面、未授权访问管理界面
防御 禁用目录列表(Apache: Options -Indexes),设置访问权限(如 IP 白名单)
  1. index of /passwd
项目 内容
用途 查找 Unix/Linux 系统中的 /etc/passwd 文件(用户账户信息)
风险 泄露用户名、UID/GID 等敏感信息(现代系统密码存储在 /etc/shadow
防御 确保 /etc/passwd 文件权限为 644,禁止 Web 访问系统文件
  1. index of /password
项目 内容
用途 搜索包含 “password” 关键词的目录或文件(如明文密码文件)
风险 直接获取明文密码或哈希值
防御 避免在代码或文件中明文存储密码,使用环境变量或密钥管理服务
  1. index of /mail
项目 内容
用途 查找邮件服务器或邮件存储目录(如 /var/mail
风险 泄露用户邮件内容、账户信息
防御 限制邮件目录的 Web 访问权限,加密存储敏感数据
  1. "index of /" +passwd
项目 内容
用途 在根目录下搜索 passwd 文件
风险 可能发现 /etc/passwd 被错误链接到 Web 根目录
防御 检查 Web 目录中是否存在符号链接到系统文件
  1. "index of /" +password.txt
项目 内容
用途 查找 Web 根目录下的 password.txt 文件
风险 明文密码文件可直接下载
防御 删除测试或临时文件,禁用目录列表
  1. "index of /" +.htaccess
项目 内容
用途 暴露 Apache 服务器的 .htaccess 配置文件
风险 泄露重定向规则、认证凭据(如 AuthUserFile 路径)
防御 限制 .htaccess 文件权限(如 600),避免存储敏感信息
  1. "index of /root"
项目 内容
用途 搜索 Unix 系统超级用户(root)的主目录
风险 泄露 root 用户的 SSH 密钥、脚本或日志
防御 确保 /root 目录权限为 700,禁止 Web 服务器访问
  1. "index of /cgi-bin"
项目 内容
用途 查找 CGI 脚本目录(常见于老旧系统)
风险 利用 CGI 漏洞(如 Shellshock)执行远程代码
防御 升级或禁用 CGI 模块,设置严格的脚本权限
  1. "index of /logs"
项目 内容
用途 暴露日志文件目录(如访问日志、错误日志)
风险 日志中可能包含敏感信息(如 SQL 错误中的数据库密码)
防御 将日志存储在非 Web 目录,定期清理并加密存档
  1. "index of /config"
项目 内容
用途 查找配置文件目录(如数据库连接信息)
风险 泄露 config.phpsettings.ini 等文件
防御 将配置文件移出 Web 目录,使用环境变量注入配置

FOFA

简介:

FOFA(Fingerprinting Organizations with Advanced Tools)是一家总部位于中国的网络安全公司提供的一款网络搜索引擎,专注于帮助用户收集和分析互联网上的设备和服务信息。FOFA 的主要特点包括:

  • 设备指纹识别: FOFA 可以通过对设备的指纹信息进行识别,帮助用户发现和查找特定类型的设备。
  • 漏洞扫描: FOFA 提供了一些漏洞扫描功能,可以帮助用户检测目标设备中可能存在的漏洞。
  • 定制搜索: 用户可以使用 FOFA 的搜索语法和过滤器,根据特定的条件和关键词来执行定制搜索,以找到目标设备和服务。
  • 图形化界面: FOFA 提供图形化的搜索界面,使用户能够直观地查看搜索结果、图表和图谱,从而更好地理解互联网上的设备布局。
  • 历史数据: FOFA 记录了历史搜索结果,用户可以查看设备和服务的历史信息,帮助他们了解网络的发展和变化。
  • API 支持: FOFA 提供了 API,使用户能够通过编程方式访问其搜索引擎,从而集成 FOFA 的功能到自己的应用程序或工作流程中。

搜索语法:

title=“标题”

domain=”域名”

host=”域名”

ip=”IP地址”/ip=”IP 地址/子网掩码”

body=”搜索内容”

srever=”服务器”

header=”搜索内容”

port=”端口号”

status_code=”服务器状态码”

protocol=”协议类型”

country=”国家编码”

region=”行政区”

city=”城市”

os=”操作系统”

app=”设备”

应用指纹 (app) —— 基于多维度特征综合识别

应用指纹是FOFA通过分析目标的多项特征,综合判断后给资产打上的“软件标签”。它不是你直接搜索一个词,而是FOFA帮你识别好了这是什么软件或框架。

核心原理:
FOFA的识别引擎会从多个维度提取特征,并与庞大的指纹库进行比对。这些维度主要包括:

特征维度 具体分析内容 举例
HTTP响应头 ServerX-Powered-By等字段 出现 Server: nginx 可能标记为Nginx
HTML内容 网页源码中的特定注释、JavaScript路径、CSS样式等 包含特定的版权信息或JS文件路径
协议行为 TLS握手特征(JARM指纹)、特定端口服务 Cobalt Strike的HTTPS通信有独特的JARM指纹
证书信息 SSL证书的颁发者、组织名等 大量自签名证书的特定格式

所以当你用 app="Microsoft-Exchange" 时,FOFA会把所有符合Exchange Server多项特征(如特定的owa登录页、响应头等)的资产都找出来。

icp=”备案号”

ICP备案号 (icp) —— 基于网页公开的备案信息

ICP备案号是中国大陆网站根据法规要求在页面底部展示的公开信息,形如“京ICP证030173号”。

核心原理:

  • FOFA会抓取并提取网页HTML代码中符合ICP备案号格式的字符串
  • 同一个公司主体下的不同网站,通常会使用相同或有关联的备案号

实际应用:
搜索 icp="京ICP证030173号" 可以找出所有挂在同一个公司主体名下的网站。这在红队评估或企业资产梳理中非常有效——当你面对一个目标时,可以先找到其官网底部的备案号,然后反查出该公司所有的已备案域名,从而扩大资产收集范围。

图标哈希(Icon Hash)

图标哈希是根据网站根目录下的 favicon.ico 文件(就是浏览器标签页上显示的那个小图标)计算出来的唯一特征值。

核心原理:

  • FOFA在抓取网站时,会自动下载并计算该网站图标的哈希值(hash),作为这个图标文件的“数字指纹”
  • 很多同一机构、同一套建站系统或同一品牌的网站,会使用完全相同的网站图标
  • 关键特点:即使网站换了IP、域名甚至改版了登录页面,只要图标文件没变,它的 icon_hash 就不会变

实际应用:
在实战中,你可以先找到目标网站,计算出它的图标哈希值(或直接通过FOFA结果页获取),然后搜索 icon_hash="这个哈希值",就能精准找到所有使用了相同图标的网站。这常用于发现同一机构下的“影子资产”或使用同一套模板的站群。

icon_hash=”-247388890” (fofa网站的图标哈希)

证书

cert.subject.cn=”*.baidu.com”

证书来源:

当通过 https:// 访问一个网站时(比如 https://www.baidu.com),网站服务器为了证明自己是合法的、并加密你们之间的通信,会向你的浏览器出示一个数字身份证,这个身份证就是 SSL/TLS证书

cert.subject.cn 中的 cnCommon Name(通用名称) 的缩写。它表示这张证书是为哪个域名颁发的。

  • 简单理解cert.subject.cn 的值,就是证书上写的“此证书授权给以下域名使用”。
  • 最常见的情况
    • 单域名证书:cert.subject.cn = "www.example.com"
    • 通配符证书:cert.subject.cn = "*.example.com"* 代表任意子域名,比如 a.example.comb.example.com 都行)

工作步骤:

cert.subject.cn="*.baidu.com" 去搜索,FOFA 会做以下两步:

  1. 读取证书:找到所有网站的SSL证书,并读出证书里 subject.cn 这个字段的值。
  2. 匹配文字:筛选出那些 subject.cn 字段的文字恰好是 *.baidu.com 的网站。

关键点:cert.subject.cn 的值,是证书里的“文字”,它不一定等于你当前访问的域名。

cert.subject.cn 的强大之处:它能帮你找到那些在证书层面“共享身份”的资产,即使它们的域名完全不同

子域名搜集

在渗透测试中,主站 (如:www.baidu.com) 往往防守严密,像一座堡垒。但它的子域名 test.baidu.com(测试系统)可能被管理员忽视,使用了弱口令或存在漏洞。攻陷了子域名,就可能以此为跳板,最终拿下整个目标。

总结一句话:子域名搜集的本质,就是绘制目标的攻击面地图,找到最薄弱的突破口

子域名搜集思路:

第一步:被动搜集(安静,不接触目标)

这是最安全的阶段,所有信息都来自公开渠道,不向目标发送任何数据包,不会留下任何日志

1. 搜索引擎语法
利用百度、Google 等搜索引擎的特定语法,直接搜索公开的页面。

  • Google / 百度
    • site:cuit.edu.cn: 最基本语法,搜索该域名下的所有网页。
    • site:cuit.edu.cn -www: 排除 www 这个常见的子域名,往往能发现意想不到的结果。
    • site:cuit.edu.cn intitle:管理: 搜索子域名中标题包含“管理”的后台。

2. 网络空间搜索引擎
利用 FOFA、Shodan、ZoomEye 等平台,它们已经帮你把互联网上的资产爬好了。

  • FOFA 示例
    • domain="cuit.edu.cn": 最核心语法,直接列出所有子域名。
    • cert.subject.cn="cuit.edu.cn": 查找所有使用了百度证书的网站,包括很多非 baidu.com 域名的资产。

3. DNS历史解析记录
很多子域名解析过,后来不用了,但记录还留存在历史数据中。

  • 工具/网站:SecurityTrails, DNSdumpster, VirusTotal。
    • 直接访问 securitytrails.com,输入 cuit.edu.cn,它会给你一份非常详尽的历史子域名列表。

第二步:主动爆破(动静较大,数据丰富)

使用工具和字典,强行猜测子域名是否存在。注意:这种方式会直接向目标的DNS服务器发送大量请求,动静较大,实战中需要控制速度。

1. 字典爆破
使用一个强大的子域名字典,挨个去猜。

  • 推荐工具subfinder, oneforall, ksubdomain

  • 命令示例(以 subfinder 为例)

    bash

    1
    subfinder -d cuit.edu.cn -o baidu_subdomains.txt

2. 排列组合爆破
不仅猜单词,还根据已有的子域名,智能生成新的可能性。

  • 推荐工具altdns
    • 比如它已经发现了 mail.cuit.edu.cn,就会尝试 mail2.cuit.edu.cnmail-test.cuit.edu.cn 等排列组合。

第三步:证书透明(CT)日志——最容易被忽视的宝库

这是目前公认的最有效、最安静、信息最准确的方法。任何网站要启用HTTPS,都必须申请SSL证书,而证书的申请记录是公开写入日志的。

  • 核心原理:证书中包含 Subject Common Name (CN)Subject Alternative Name (SAN) 字段,这两个字段里会列出这个证书为哪些域名(包括所有子域名)提供加密服务。
  • 查询方式
    • 网站crt.sh,直接搜索 %.cuit.edu.cn% 是通配符)。
    • FOFAcert.subject.cn="cuit.edu.cn"cert.subject.c="cuit.edu.cn"
    • 工具ctfr.py 等脚本。

举个例子:百度的证书 SAN 字段里,可能会列出 *.baidu.com, *.map.baidu.com, *.cloud.baidu.com 等几十上百个子域名。这些都是百度的真实资产

工具介绍

OneForAll

介绍:OneForAll 是由 shmilylty 在 Github 上开源的子域名收集工具。它具有强大的收集能力和灵活的处理功能,支持多线程操作,速度极快

功能特点:
收集能力强大:利用证书透明度、常规检查、爬虫档案、DNS 数据集、DNS 查询、威胁情报平台、搜索引擎等多种方式收集子域。

支持子域爆破:支持字典爆破、自定义 fuzz 模式,批量爆破和递归爆破。

子域验证:自动解析子域 DNS,获取 title 和 banner,判断子域存活情况。

子域接管:支持子域接管风险检查和自动接管(目前支持 Github)。

处理功能强大:支持多种格式导出结果(rst、csv、tsv、json、yaml、html、xls、xlsx、dbf、latex、ods)。

速度极快:利用多线程和异步多协程技术,收集速度达到10000pps

运行:

py -3.14 oneforall.py --target example.com run

再在result文件夹里找到相应结果

结果(cuit.edu.cn)如下:

灯塔(ARL)

简介:

ARL(Asset Reconnaissance Lighthouse)资产侦察灯塔系统,旨在快速侦察与目标关联的互联网资产,构建基础资产信息库。 协助甲方安全团队或者[渗透测试人员奏效侦察和检索资产,发现存在的薄弱点和攻击面。

其特性如下:

1、域名资产发现和整理
2、IP/IP 段资产整理
3、端口扫描和服务识别
4、WEB 站点指纹识别指纹识别
5、资产分组管理和搜索
6、任务策略配置
7、计划任务和周期任务
8、Github 关键字监控
9、域名/IP 资产监控
10、站点变化监控
11、文件泄漏等风险检测
12、nuclei PoC 调用
13、WebInfoHunter 调用和监控

密探

简介:

密探渗透测试工具包含资产信息收集,子域名爆破,搜索语法,资产测绘(FOFA,Hunter,quake, ZoomEye),指纹识别,敏感信息采集,文件扫描、端口扫描、批量信息权重查询、密码字典等功能

资产测活

工具:

HTTPX

简介:

HTTPX 是一个功能强大的 HTTP 客户端工具,用于执行各种网络任务,例如发现 Web 应用程序漏洞、探测域名和端口等。它使用了 retryablehttp 库来运行多个探测器,旨在通过增加线程数来提高结果的可靠性。
HTTPX 支持多种 HTTP 请求方法,可以使用自定义标头和数据,并且可以设置请求超时时间、重试次数和批处理大小等选项。此外,HTTPX 还支持代理、SSL 和身份验证,并且可以查找和打印链接、横幅和技术指纹等信息。
HTTPX 还内置了 Wappalyzer 技术检测集成,可以自动识别网站所使用的 CMS 和 Web 服务器,并且可以保存输出为 JSON 格式,方便进一步处理。HTTPX 还有许多其他有用的参数和选项,可以帮助您更好地执行各种网络任务。

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
httpx.exe -h

标志:
输入:
-l,-list string 包含要处理的主机列表的输入文件
-rr,-request string 包含原始请求的文件
-u,-target string[] 要探测的目标主机

探测器:
-sc,-status-code 显示响应的状态码
-cl,-content-length 显示响应的内容长度
-ct,-content-type 显示响应的内容类型
-location 显示重定向位置
-favicon 显示 /favicon.ico 文件的 mmh3 哈希值
-hash string 显示响应体散列值(支持的算法:md5,mmh3,simhash,sha1,sha256,sha512)
-jarm 显示 jarm 指纹哈希值
-rt,-response-time 显示响应时间
-lc,-line-count 显示响应体行数
-wc,-word-count 显示响应体单词数
-title 显示页面标题
-server, -web-server 显示服务器名称
-td, -tech-detect 基于 wappalyzer 数据集显示正在使用的技术
-method 显示 HTTP 请求方法
-websocket 显示使用 websocket 的服务器
-ip 显示主机 IP
-cname 显示主机 CNAME
-asn 显示主机 ASN 信息
-cdn 显示正在使用的 CDN
-probe 显示探针状态

无头:
-ss,-screenshot 启用使用 headless 浏览器保存页面截图
-system-chrome 启用使用本地安装的 Chrome 进行截屏

匹配器:
-mc,-match-code string 匹配具有指定状态码的响应(例如:-mc 200,302)
-ml,-match-length string 匹配具有指定内容长度的响应(例如:-ml 100,102)
-mlc,-match-line-count string 匹配具有指定行数的响应体(例如:-mlc 423,532)
-mwc,-match-word-count string 匹配具有指定单词数的响应体(例如:-mwc 43,55)
-mfc,-match-favicon string[] 匹配具有指定 favicon 哈希值的响应(例如:-mfc 1494302000)
-ms,-match-string string 匹配具有指定字符串的响应(例如:-ms admin)
-mr,-match-regex string 匹配具有指定正则表达式的响应(例如:-mr admin)
-mcdn,-match-cdn string[] 匹配使用指定 CDN 提供商的主机(例如:cloudfront、fastly、google、leaseweb)
-mrt,-match-response-time string 匹配指定响应时间的响应,单位为秒(例如:-mrt '< 1')
-mdc,-match-condition string 使用 DSL 表达式条件匹配响应

提取器:
-er,-extract-regex string[] 显示与匹配的正则表达式相匹配的响应内容
-ep,-extract-preset string[] 显示由预定义的正则表达式(url、ipv4、mail)匹配的响应内容
-fc,-filter-code string 过滤具有指定状态码的响应(例如:-fc 403,401)
-fl,-filter-length string 过滤具有指定内容长度的响应(例如:-fl 23,33)
-flc,-filter-line-count string 过滤响应体具有指定行数的响应(例如:-flc 423,532)
-fw,-filter-word string[] 过滤包含指定单词的响应体(例如:-fw admin,password)
-fcdn,-filter-cdn string[] 过滤使用指定 CDN 提供商的主机(例如:cloudfront、fastly、google、leaseweb)
-frt,-filter-response-time string 过滤指定响应时间的响应,单位为秒(例如:-frt '>2')
-fdc,-filter-condition string 使用 DSL 表达式条件过滤响应。

速率限制:
-t,-threads int 要使用的线程数 (默认值为 50)
-rl,-rate-limit int 每秒发送的最大请求数 (默认值为 150)
-rlm,-rate-limit-minute int 每分钟发送的最大请求数

杂项:
-pa,-probe-all-ips 探测与同一主机关联的所有 IP
-p,-ports string[] 要探测的端口 (nmap 语法: 如 http:1,2-10,11,https:80)
-path string 要探测的路径或路径列表(逗号分隔的文件)
-tls-probe 在提取的 TLS 域名上发送 http 探针 (dns_name)
-csp-probe 在提取的 CSP 域上发送 http 探针
-tls-grab 执行 TLS(SSL) 数据抓取
-pipeline 探测和显示支持 HTTP1.1 管道的服务器
-http2 探测和显示支持 HTTP2 的服务器
-vhost 探测并显示支持 VHOST 的服务器
-ldv,-list-dsl-variables 列出支持 dsl 匹配器/过滤器的 json 输出字段键名

更新:
-up,-update 将 httpx 更新到最新版本
-duc,-disable-update-check 禁用 httpx 的自动更新检查

输出:
-o,-output string 要写入输出结果的文件
-sr,-store-response 将 http 响应存储到输出目录
-srd,-store-response-dir string 将 http 响应存储到自定义目录
-csv 以 csv 格式存储输出
-csvo,-csv-output-encoding string 定义输出编码
-json 以 JSONL(ines) 格式存储输出
-irr,-include-response 在 JSON 输出中包含 http 请求/响应 (-json only)
-irrb,-include-response-base64 在 JSON 输出中包含 base64 编码的 http 请求/响应 (-json only)
-include-chain 在 JSON 输出中包含重定向 http 链 (-json only)
-store-chain 在响应中包含 http 重定向链 (-sr only)

配置:
-r,-resolvers string[] 自定义解析器列表 (文件或逗号分隔)
-allow string[] 允许处理的 IP/CIDR 列表 (文件或逗号分隔)
-deny string[] 拒绝处理的 IP/CIDR 列表 (文件或逗号分隔)
-sni, -sni-name string 自定义 TLS SNI 名称
-random-agent 启用随机 User-Agent 使用 (默认为 true)
-H, -header string[] 自定义要发送的 http 请求头
-http-proxy, -proxy string 要使用的 http 代理 (例如 http://127.0.0.1:8080)
-unsafe 发送跳过 golang 规范化的原始请求
-resume 使用 resume.cfg 恢复扫描
-fr, -follow-redirects 跟踪 http 重定向
-maxr, -max-redirects int 每个主机要跟踪的最大重定向数量 (默认值为 10)
-fhr, -follow-host-redirects 在同一主机上跟踪重定向
-vhost-input 获取一个 vhosts 列表作为输入
-x string 要探测的请求方法,使用 'all' 探测所有 HTTP 方法
-body string 在 http 请求中包含 post body
-s, -stream 流模式 - 开始详细说明输入目标而不进行排序
-sd, -skip-dedupe 禁用去重输入项(仅与流模式一起使用)
-ldp, -leave-default-ports 在 host header 中保留默认的 http/https 端口 (例如 http://host:80 - https://host:443
-ztls 使用 ztls 库,并自动回退到 tls13 的标准库
-no-decode 避免解码响应体

调试:
-health-check, -hc 运行诊断检查
-debug 在 cli 中显示请求/响应内容
-debug-req 在 cli 中显示请求内容
-debug-resp 在 cli 中显示响应内容
-version 显示 httpx 版本
-stats 显示扫描统计信息
-profile-mem string 可选的 httpx 内存配置文件转储文件
-silent 静默模式
-v, -verbose 详细模式
-si, -stats-interval int 在显示统计更新之间等待的秒数 (默认值为 5)
-nc, -no-color 禁用 cli 输出中的颜色

优化:
-nf, -no-fallback 显示探测的协议 (HTTPS 和 HTTP)
-nfs, -no-fallback-scheme 使用输入中指定的协议方案进行探测
-maxhr, -max-host-error int 跳过剩余路径/ s 前每个主机的最大错误计数 (默认值为 30)
-ec, -exclude-cdn 跳过 CDNs 的完整端口扫描 (仅检查 80、443)
-retries int 重试次数
-timeout int 超时时间,单位为秒 (默认值为 10)
-delay duration 每个 http 请求之间的持续时间 (例如:200ms,1s) (默认值为-1ns)
-rsts, -response-size-to-save int 要保存的最大响应体字节数 (默认值为 2147483647)
-rstr, -response-size-to-read int 要读取的最大响应体字节数 (默认值为 2147483647)

常用命令:

1
1.探测网址的基本信息:httpx.exe -u https://www.example.com

1
2.从文件中扫描多个网址:httpx.exe -l targets.txt
1
3.使用自定义请求头进行扫描:httpx.exe -u https://www.example.com -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
1
4.禁止重定向并设置超时:httpx -u http://sdfadsf.com  -timeout 10
1
5.显示 Web 服务器和 CDN 信息:httpx.exe -u https://baidu.com -cdn -web-server
1
6.根据指定的状态码过滤响应:httpx.exe -l .\url.txt -fc 403,404
1
7.启用随机 User-Agent 并避免解码响应体:httpx -url https://www.example.com -random-agent -no-decode
1
2
3
8.批量探测
httpx.exe -l .\url.txt -cdn -web-server -fc 404,500 -o output.txt -random-agent -timeout 10

1
2
3
9.批量二:探测成功的url输出
httpx.exe -l .\url.txt -cdn -fc 404,500,400,403 -o output.txt -random-agent -timeout 10

DDDD

简介:

dddd(常被戏称为“带带弟弟”)是一款专为红队和渗透测试人员设计的自动化侦察与漏洞探测工具。它的核心理念是把信息收集、指纹识别到漏洞扫描的整个流程整合起来,帮助安全人员在攻防演练或合规测试中,从海量目标中快速、精准地定位高风险资产,抢占时间先机

简单来说,可以把 dddd 理解为一个功能高度集成的自动化“打点”利器,它能帮你把繁琐的重复性工作自动化,让你更专注于漏洞的验证和利用

示例:最基本的扫描命令

1
dddd.exe -t 192.168.134.128

指纹识别

什么是指纹

在渗透测试的语境下,一个系统的“指纹”是其软件、框架、中间件、操作系统甚至是配置在网络上留下的各种细微特征。这些特征本身可能是无害的,但组合起来就能拼凑出系统的完整画像

一个指纹通常由两部分构成:

  • Web组件:指具体的软件名称,比如 Nginx、Tomcat、WordPress、jQuery 等。
  • 识别规则:一组用于匹配该组件的特征。

常见的指纹特征可以归纳为以下几类

特征类别 具体说明 举个栗子
HTTP响应头 服务器返回的HTTP头字段,信息量很大。 Server: nginx/1.18.0 X-Powered-By: PHP/7.4.33 Set-Cookie: JSESSIONID=... (Java应用)
HTML内容 页面源码里的特殊标记、注释、引用的文件等。 <meta name="generator" content="WordPress 5.8"> <script src="/wp-content/themes/twentytwentyone/..."> 页面底部的 © 2024 Powered by Discuz!
URL结构 网站特有的目录路径、文件命名习惯。 /wp-admin/ (WordPress 后台目录) /wls-wsat/ (Weblogic 组件) /robots.txt 中的特定字段
特定文件MD5 一些不常更改的静态文件(如图标、CSS)的哈希值。 网站的 favicon.ico 指纹图标就很独特。通过计算其MD5值,与指纹库中的记录对比,就能快速锁定目标。
错误页面 访问不存在的页面时,服务器返回的错误信息。 Tomcat、IIS、Apache 的默认404页面都各不相同,能透露其身份。

指纹识别的作用

在渗透测试的信息收集阶段,指纹识别的主要作用是通过分析目标系统的响应特征,快速定位其使用的具体软件、版本、框架及配置,从而缩小攻击面并精准选择利用方式

脆弱资产

在渗透测试或网络安全评估的信息搜集阶段,脆弱资产通常指那些存在已知或潜在安全弱点、且可能被攻击者利用以达成进一步目标(如获取权限、横向移动、破坏系统)的目标资源

简单理解:就是**“容易被打且打完之后有价值”**的东西。

具体可以从以下几个维度来识别:

常见类型

  • 老旧或未打补丁的系统:例如仍在使用Windows 7、Server 2008,或存在EternalBlue(永恒之蓝)、Log4j等已知漏洞但未修复的服务器。
  • 弱口令或默认凭证:例如后台admin/admin,数据库root/空密码,SSH允许弱口令登录。
  • 暴露的非标准端口或服务:在公网或内网开放了如Redis 6379(未授权访问)、Docker 2375(API暴露)、Elasticsearch 9200(数据可读)等服务。
  • 具有已知漏洞的应用组件:如Struts2、Shiro反序列化漏洞、ThinkPHP远程执行等。
  • 泄露的敏感信息源:代码仓库(GitHub、GitLab)中的密钥、配置文件,或在JS文件中暴露的API接口、内网地址。
  • 缺乏访问控制的资源:目录浏览、备份文件可下载(.git/.svn/.bak/.sql)、swagger未鉴权等。
  • 配置错误的云资产:可公开读写的S3存储桶、未授权的Kubernetes API Server。

为什么在信息搜集时要关注脆弱资产?

  • 降低攻击门槛:相比寻找0day,脆弱资产通常能用现成工具或公开PoC直接利用,快速获得突破口。
  • 提升渗透效率:在大量资产中筛选出“大概率可突破”的目标,避免在强防护系统上浪费精力。
  • 构建攻击路径:很多脆弱资产(如弱密码开发机、测试环境)虽非核心,但可作为跳板进入内网,再攻击高价值目标。

漏洞扫描

nuclei

简介:

Nuclei 是一个基于模板的自动化漏洞扫描器,专门用来快速检测目标系统中是否存在已知的安全漏洞或配置问题

具体使用

YAML

YAML 是什么?

  • 全称:YAML Ain‘t Markup Language(递归缩写,意为“YAML 不是标记语言”)

  • 本质:一种人类可读的数据序列化格式,用来表示键值对、列表、字典等数据结构。

  • 用途:常用于配置文件(如 Docker Compose、Ansible)、数据交换(如 API 返回)、以及漏洞 POC 编写

总结:YAML 是一种书写格式/语言,POC 是漏洞检测逻辑的内容,我们通常用 YAML 这种格式来编写 POC 文件(文件后缀为 .yaml.yml

Nuclei 是一个执行引擎,而 YAML 编写的 POC 是它能够识别和运行的“漏洞检测脚本”

YAML PoC 基础结构

一个标准的 YAML PoC 包含以下核心部分:

1
2
3
4
5
6
7
8
9
10
11
12
13
id: poc-example-name
info:
name: 漏洞名称
author: 作者
severity: 严重程度
description: 漏洞描述
transport: http # 使用HTTP协议
rules:
- method: GET
path:
- /vulnerable-path
expression: |
response.status == 200 && "特征字符串" in response.body

Nuclei的YAML标准格式(HTTP 协议模板):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
id: git-config          # 模板唯一标识

info: # 基础信息区块
name: Git Config File
author: Ice3man
severity: medium
description: |
Searches for the pattern /.git/config on passed URLs.
This file may contain sensitive information.
tags: git,config,exposure

# HTTP 协议请求定义
http:
- method: GET # HTTP 请求方法
path:
- "{{BaseURL}}/.git/config" # 包含 Nuclei 变量的请求路径
# 规则判断部分,定义漏洞存在的条件
matchers: # 匹配器,用于从响应中查找特定模式[reference:8]
- type: word # 匹配类型为单词
words:
- "[core]" # 响应体中包含 "[core]" 字样
  • 1. id (唯一标识)

    • 说明:模板的唯一标识符,用于后续追踪和调用。
    • 格式要求string 类型,不能包含空格
    • 示例id: CVE-2023-28432
  • 2. info (基础元数据)

    • 说明:描述漏洞的基本信息,帮助用户理解该模板的用途和严重性,方便管理和分类。

    • 必要字段name (漏洞名称), author (作者), severity (严重等级), description (详细描述)。

    • 推荐字段tags (标签,如 cve, rce, 用于分类), reference (参考链接)。

    • 示例:

      yaml

      1
      2
      3
      4
      5
      6
      7
      info:
      name: Git Config File
      author: L1uxsn
      severity: medium
      description: Searches for the pattern /.git/config on passed URLs.
      reference: https://www.acunetix.com/vulnerabilities/web/git-repository-found/
      tags: git,config
  • 3. Protocol (协议定义)

    • 说明:这是模板的核心部分,定义了要执行的实际测试逻辑。Nuclei 支持多种协议。根据选择的协议不同,数据结构也不同。

接口和路由

找到网站隐藏的接口和路由,是信息收集阶段的一项核心工作。这能极大地增加攻击面,发现那些前端未显示但功能完整的模块

  • 路由 是服务器根据URL路径和HTTP方法,将请求映射到具体处理函数(后端代码)的规则集合。
    • 例如:GET /user/profileUserController.getProfile()
  • 接口 通常指一个具体的、可访问的端点(Endpoint),由 URL路径 + HTTP方法 组成,它是前后端交互的实际入口。
    • 例如:POST /api/loginDELETE /api/post/123

在渗透测试中的作用

1. 扩大攻击面
现代Web应用大量功能依赖前端JS动态渲染,很多接口并未在HTML链接中直接暴露,而是藏在JS代码中(如/api/user/list/admin/config)。发现这些“隐藏”的路由/接口,就能绕过页面的限制,直接攻击后端逻辑

2. 测试越权与未授权访问
找到接口后,可以尝试:

  • 不携带Cookie/Session访问,检查是否存在未授权访问。
  • 修改请求中的身份标识(如?user_id=123),测试水平/垂直越权。
  • 对管理员接口(如/admin/deleteAll)尝试低权限访问。

3. 挖掘参数注入漏洞
每个接口都可能存在SQL注入、命令注入、XXE、SSRF等。通过分析接口的请求参数(尤其是隐藏参数,如debug=true),可以构造恶意负载。

4. 发现业务逻辑漏洞
有些接口虽然不直接在页面上使用,但可能仍有后端代码支撑。例如:

  • 修改订单状态的接口(/order/status?orderid=xxx&status=paid
  • 批量操作的接口(/batch/delete
  • 测试环境遗留下来的接口(/debug/health/api/swagger

5. 指纹识别与信息泄露
某些接口的返回值会泄露版本信息、内部IP、代码路径、配置信息等,有助于后续精准攻击。

可以使用findsomething和查看js查看接口和路由

网站时光机

介绍:

“网站时光机”(Wayback Machine)是信息收集中一个宝藏般的存在。可以把它想象成一个全球互联网的“历史档案馆”,由非营利组织“互联网档案馆”(Internet Archive)运营。

简单来说,它是一个从1996年至今,保存了超过8560亿个网页历史快照的超大数据库。对信息安全测试来说,它的价值在于能帮你找到那些早已被开发者遗忘,但在当前服务器上依然可以访问的历史接口和敏感文件