白帽故事 · 2025年5月15日

漏洞挖掘之 FOFA 语法技巧

file

假设以 example.com 为目标网站:

domain="example.com"

file

然后会发现下方有数百个 Favicons:

file

单击任意一个图标,哈希值会自动添加到现有 dork 中:

domain="example.com" && icon_hash="xxxxxxxxxx"

此时在左侧可以选择对存在云 WAF 的站点进行过滤:

file

然后针对非 443端口的 HTTPS 站点进行再次过滤:

domain="example.com" && protocol="https" && port!="443"
domain="example.com" && protocol="https" && port!="443" && port!="80"

file

再针对非 80 端口的 HTTP 站点进行过滤:

domain="example.com" && protocol="http" && port!="80"
domain="example.com" && protocol="http" && port!="80" && port!="443"

file

搜索云存储桶

domain="example.com" && body="ListBucketResult"

file

file

如果名称分配了关键字 “public”,那它就基本没什么用了。

<ListBucketResult xmlns="http://s3.amazonaws.com/doc/....">
<Name>....public.....</Name>

其他情况的话,我们可以分析目标是否为刻意公开还是无意公开。

现实案例:

https://osintteam.blog/p4-bug-in-healthcare-company-979db17df4dd

端点或其它类似搜索

body="http_request_duration_seconds_sum"
body="http_requests_in_flight"
body="http_responses_total"
body="http_request_duration_seconds_bucket"
body="http_request_duration_seconds_count"
body="flask_http_request_duration_seconds_sum"
body="python_gc_objects_uncollectable_total"
body="process_virtual_memory_bytes"
body="process_resident_memory_bytes"
body="http_request_duration_highr_seconds_bucket"
body="kasiopea_assignment_total"
body="by_path_counter_total"

#combine with below using && operator
body="GET"
body="POST"
body="PUT"
body="/api"
body="/auth"
body="password"
body="security"
body="roles"
body="groups"
body="/v1"
body="/v2"
domain="example.com"

#extras
body="ghc_gcdetails_elapsed_seconds"
body="ghc_gcdetails_par_max_copied_bytes"
body="ghc_max_mem_in_use_bytes"
body="ghc_gcs_total"

关键路径与端点测试

file

file

注册功能寻找

body="register" && body="login"
body="register" && body="login" && domain="example.com"

file

API 端点

body="/api/v1" && domain="example.com"
body="/api/v2" && domain="example.com"

file

管理员端点

body="/admin" && domain="example.com"

file

信息泄露

body="any file name that leads to info disc" && domain="example.com"

举例:

body="config.txt" && domain="example.com"

file

JS 中的 API 密钥

body="any_api_key_name_you_know" && domain="example.com"

#example for algolia api key
body="algolia_api_key" && domain="example.com"
body="algolia_application_id" && domain="example.com"

file

将任何字符串与历史已知漏洞端点匹配

比如,以前你知道 sub2.sub1.example.tld 通过 “xyz” 参数容易受到 RXSS 的攻击,那么可以查看端点的页面源代码,匹配一些唯一的关键字、短语、字符串、函数、对象或变量名称。

body="keyword1" && body="keyword2" && domain="example.com"

为了方便找到历史易受攻击的端点,可以通过 HackerOne 披露的报告或 OpenBugBounty 进行了搜索:

#hackerone
site:hackerone.com inurl:reports "domain.tld"

#openbugbounty
https://www.openbugbounty.org/reports/domain/example.com

file

你学到了吗?

原文:https://medium.com/legionhunters/fofa-dorking-for-bug-hunters-a35c80bbab6e