全文搜索(Full Text Searches)
A query that doesn’t specify a field searches across all text-based fields for the word or phrase submitted.
field 指的是诸如services
、services.software
、ct.entries
…之类的字段,它们是 censys.io 网站开发人员定义好的,对比 fofa,就很好理解了!那么上面语句的意思就是:如果用户没有指定任何 field 进行查询,比如,就输了个 hello,那么,censys.io 会自动将我们输入的 hello 应用于 text-based fields 进行查询,即,censys.io 自动进行了services: hello
、services.http.response.headers: hello
、services.http.response.html_title: hello
等查询,然后将结果返回。
全文搜索对象如果是短语,比如,hello world,那么需要双引号包裹,即,“hello world”,搜索结果大小写不敏感,可以看到 “HELLO WORLD” 之类的结果展现。
键值对搜索(Field, Value Searches)
services.software.product: Windows
此搜索不会将结果限制为指定的确切单词。“Windows Server 2012 R2” 的主机也会作为结果返回。如果想要搜索完全匹配,那么将冒号换为等于符号即可,即,services.software.product=Windows
。
通配符搜索(Wildcard Searches)
*: 匹配零个或多个未知字符。
?: 匹配恰好1个未知字符。
services.software.product: e*mail
注意:前导通配符搜索,如,“*windows”,是不受支持的!但有时候,需要前导通配符,那么,搜索 “target.com”,默认情况下包含 target.com 所有子域的结果。
布尔逻辑搜索(Boolean Logic Searches)
Censys 允许使用二元运算符 and、or、not 以及括号来组合搜索条件。返回位于美国或加拿大的所有主机,如下:
location.country: Canada or location.country: "United States"
有时候,使用 or 的组合查询语句太长,可以使用集合来缩短较长的 or 语句,如下,
location.country: {Canada, Chile, Honduras, Mexico, "United States", Uruguay}
返回 443 端口开放(任何服务类型)的所有主机和具有 HTTP 服务(任何端口)的所有主机,如下,
services.port: 443 and services.service_name: HTTP
这里很容易误解为查询开放 443 端口且运行 HTTP 服务的主机!查找在非标准端口上运行 SSH 的主机,例如,既不是 22 也不是 2222,如下,
services: (service_name: SSH and not port: {22, 2222})
嵌套搜索(Nested Searches)
返回在端口 8888 上运行 HTTP 服务的主机,如下,
services: (port: 8888 and service_name: HTTP)
返回具有返回特定 Etag 标头值的 HTTP 服务的主机,如下,
services.http.response.headers: (key: `Etag` and value.headers: `"6001043d.16d"`)
ip field 的使用,如下,
ip: [119.167.243.56 to 119.167.243.201]
ip: 35.180.0.0/16
还有一些关于转义字符和保留字符的东西,不想写了,参考文档如下:
查主机:
Example-Host-Queries-in-Censys-Search-Language
查证书:
Example-Certificate-Queries-in-Censys-Search-Language
复杂查询:
Complex-Censys-Search-Methods-and-Queries
根据提示自动生成查询语法: