被动侦察与主动侦察
被动侦察在接近目标过程中发挥着重要作用。与主动侦察相比,被动侦察是一种无声、隐秘的侦察,攻击者不与目标互动。相反,他们从其他外部第三方来源获取有关目标的信息。这些信息从开放端口到发现更多资产和发现敏感信息不等。这种被动侦察的来源就是搜索引擎。
在下面的文章中,我列出了两个最流行的技术,即Google Search 和Shodan,以及我用来通过查找更多(可能易受攻击的)资产和揭露秘密来扩大攻击面的一些技术。我还想包括Github 搜索,但我有限的经验不允许我这样做。也许在以后的文章中?我希望。
谷歌搜索
随着时间的推移,Google 搜索的使用量不断增加,因为它不仅是一种非常简单的方法,不仅可以发现网络上隐藏的信息,而且还可以更快地识别可能存在漏洞的域和端点。
随着使用Google 搜索作为被动侦察工具,Google dorking 也随之而来。 Google dorking 是一种根据用户定义的过滤器和限制对Google 搜索进行更具体查询的技术,以便搜索引擎返回更具体的结果。它包括以下形式的过滤器
filter:value
以及过滤器之间的逻辑运算符
filter:value [OPERATOR] filter:value
或者
[OPERATOR]value
过滤器和运算符
有许多过滤器可以与Google dorks 一起使用。一些在寻找错误时派上用场的过滤器和运算符:
-
site
从指定站点/域生成结果,例如site:example.com
-
inurl
和allinurl
生成在URL 中包含指定字符串的结果,例如inurl:cmd
和allinurl:cmd execute
-
related
产生与指定站点/域相关的结果。它对于查找组织的收购很有用。例如related:randstad.com
返回来自公司域的结果,例如monster.com
,属于任仕达。 -
filetype
从指定的文件类型产生结果和端点,例如filetype:pdf
-
intitle
和allintitle
产生具有指定标题的结果,例如intitle:Organisation intitle:Internal
或者allintitle:Organisation Internal
-
intext
产生在结果文本中找到指定字符串的结果,例如intext:password
-
AND
用于组合过滤器的逻辑AND 运算符,例如site:example.com AND filetype:pdf
-
OR
,|
用于组合过滤器的逻辑或运算符,例如site:example.com OR site:target.com
或者site:example.com | site:target.com
-
-
在过滤器之前使用的异常运算符,例如site:example.com -site:www.example.com
将产生子域的结果example.com
除了www.example.com
。还-inurl:www
和-www
可以使用。 -
*
用作通配符,例如site:www.example.*
子域发现
简单的查询
site:example.com -www
会要求Google 返回每个子域的结果 example.com
众所周知,除了 www.example.com
。这是一个很好的查询,可用于发现其他子域,以防您的自动化错过任何子域。
内容发现
查询
site:example.com inurl:src
返回带有参数的结果 src
在网址中,例如 https://example.com/css_src.php?src=
。然后,可以分析端点是否存在可能的漏洞,特别是如果参数具有指向特定漏洞的名称,例如参数 return
指向开放重定向。
发现向公众开放的技术
针对特定技术可以通过 intitle
筛选。查询
intitle:"Dashboard [Jenkins]" site:example.com
将返回一个公共Jenkins 实例,属于 example.com
,如果有的话。
秘密发现
在里面 exploit-db.com 集合 有大量的Google dorks 查询用于揭示目标的秘密和信息,例如通过查询发现私钥
"-----BEGIN RSA PRIVATE KEY-----" inurl:id_rsa
为了更有创意,我们可以构建自己的查询来定位包含敏感信息的文件。结合上述一些过滤器,我们可以得出
site:*.target.com ( filetype:TYPE1 | filetype:TYPE2 ) intext:SECRET
其中SECRET 是我们想要测试/发现的目标秘密,例如 password
和TYPE1/TYPE2 可能包含此类秘密的文件类型,例如 pdf
或者 txt
或者 ppt
。当然,SECRET和TYPE1/TYPE2都可能取决于目标。对于有计费流程的公司来说,秘密可能是 invoice
或者 receipt
比方说,对于一家合同审查公司来说, pdf
和 docx
TYPE 可能更有可能返回任何结果。
请注意,google dorking 可能会返回漏报。这意味着即使查询没有产生结果,也不意味着它不存在。如果网站是新的或开发人员通过以下方式阻止谷歌抓取其网站,谷歌的搜索引擎需要一些时间来更新其搜索结果 在页面的HTML 代码中包含noindex 元标记,或者在HTTP 请求中返回“noindex”标头。
有很多过滤器和运算符可用于google dorks,因此这里还有一些其他列表以及可用选项:
案例研究:内容发现
如前所述,您可以使用Google dorks 来识别可能的漏洞。当我在目标中寻找错误时,我遇到了一个普通的Apache 服务器 subdomain.target.com
,我首先以为根本没有内容。通过使用非常简单的查询
site:subdomain.target.com
谷歌为我提供了我的单词列表错过的子域的链接和相对路径。这引导我在该服务器上部署一个Web 应用程序,在那里我找到了一个容易受到XSS 攻击的端点,另一个容易受到框架注入攻击的端点。请注意,Google 生成的端点未包含在 gau
和 waybackurls
结果。
案例研究:易受攻击的参数
虽然这需要大量时间,但可以使用以下命令在Web 应用程序中搜索可能存在漏洞的参数: inrul
筛选。通过参数列表,可以测试这些参数是否存在,这些参数可能容易受到某种攻击。在这种情况下,使用 常用开放重定向参数列表 并通过查询
site:subdomain.target.com inurl:rt
我发现了一个容易受到开放重定向攻击的端点,然后我将其升级为XSS。
谷歌只是一个工具
谷歌可能是最强大的搜索引擎。学会利用它来发挥我们的优势可以给我们带来优势。当开始进行侦察时,它可以是一个很好的起点,或者当其他一切都失败时,它可以用作最后的手段。它甚至可以用来 查找错误赏金计划 开始黑客攻击。
绍丹
尽管Shodan 非常有名并且很受欢迎,但我认为它并没有像它应该的那样经常用于错误查找。
Shodan 是一个针对互联网连接设备的搜索引擎。它是一个特定用途的搜索引擎,最初是作为一个宠物项目创建的。现在它被用来帮助研究人员开展工作。它收集有关Web 服务器的信息,例如开放端口、在这些端口上运行的服务及其横幅。进行查询,假设“microsoft”将生成shodan 数据库中包含该词的任何设备 microsoft
在其横幅中
Shodan 最好通过一次性付款的方式使用,这样人们就可以使用它的大部分功能。但要使用它的说明符(过滤器),您需要创建一个免费帐户。
该搜索引擎可以在您寻找错误时发挥重要作用。当范围不严格限于特定子域并且足够开放以允许您搜索与组织相关的任何服务器时,这就是它最闪耀的地方。
过滤器
就像在Google 中一样,您也可以使用该网站提供的一些过滤器来指定您的查询。一些最重要的是:
-
http.status
返回具有指定http状态代码的服务器,例如http.status:200
。 -
http.title
查询可在横幅中找到的指定http 标题。一个独特的例子是用于查找BIG IP 易受攻击组件的shodan dork:http.title:"BIG-IP®- Redirect"
。 -
http.component
返回网站上使用的具有指定网络技术的服务器,例如http.component:"jenkins"
。 -
ssl
查找SSL 证书中包含指定字符串的服务器,例如ssl:"Microsoft"
。该过滤器可以进一步指定ssl.expired
,ssl.version
(更多关于资源)。 -
org
查找IP 属于指定组织网络块的服务器,例如,org:"Microsoft"
-
port
端口过滤器返回指定端口打开的组件,例如port:8080
。 -
os
使用此过滤器shodan 返回运行指定操作系统的服务器,例如os:Windows
。 -
product
使用此过滤器shodan 返回运行此特定产品的设备,例如product:"Apache Tomcat"
或者product:"IIS Windows Server"
-
version
这version
过滤器要与product
筛选。它指定指定产品的版本,例如product:"Apache Tomcat" version:"7.0.82"
-
vuln
此过滤器仅适用于学术用户或小型企业API 订阅及更高版本。它用于返回易受指定CVE 标识符攻击的组件,例如vuln:cve-2010-2730
。
以下是shodan 及其过滤器/使用的资源。
当然,在查询中使用的过滤器越多,查询就越指定。
虽然上述所有过滤器对于寻找错误来说都是最重要的,但我个人最喜欢的过滤器是 ssl
。使用 ssl
通过过滤器,您可以搜索颁发给组织的证书,并让您发现与组织相关(松散范围)或在范围内(严格范围)但未被侦察自动化工具拾取的服务器的IP。您可以通过对找到的IP 进行反向DNS 查找来检查后者。
把事情混在一起
有了我们的武器库中的所有上述过滤器,我们就可以开始将结果范围缩小到我们的特定目标。
案例研究:敏感信息泄露
无需组合大量过滤器即可获得最终结果。使用简单的过滤器
ssl:"Target"
在哪里 Target
是组织的名称,我找到了一些证书颁发给的服务器 Target
。逐一检查它们,在对其中一个进行内容发现时,我发现敏感文件 web.config.txt
已公开公开,包含许多SQLConnection 字符串,其中大部分与 Target
。尽管没有向Internet 开放SQL 端口供我测试它们,但我报告了它并且它被接受了。
案例研究:SSL 证书和CVE-2020-3452
2020 年7 月,思科的自适应安全设备(ASA) 软件和Firepower 威胁防御(FTD) 被发现容易遭受未经身份验证的文件读取/路径遍历。受影响的系统是WebVPN 服务器,它携带字符串 "Set-Cookie: webvpn;"
在他们的横幅上。通过将搜索限制为仅包含SSL 证书包含组织名称的服务器,我找到了几台容易受到CVE-2020-3452 攻击的服务器。
询问:
ssl:"Target" "Set-Cookie: webvpn;"
CVE-2020-3452 的漏洞检查/PoC:
curl -s -k "https://[IP or DOMAIN]/+CSCOT+/translation-table?type=mst&textdomain=/%2bCSCOE%2b/portal_inc.lua&default-language&lang=../"
这 ssl
过滤器可以进一步用于更具体的结果。 Shodan 以JSON 格式读取SSL 证书,格式如下(来源):
"ssl": {
"cert": {
"sig_alg": "sha1WithRSAEncryption",
"issued": "20110325103212Z",
"expires": "20120324103212Z",
"expired": true,
"version": 2,
"extensions": [{
"data": "\u0003\u0002\u0006@",
"name": "nsCertType"
}],
"serial": 10104044343792293356,
"issuer": {
"C": "TW",
"L": "TAIPEI",
"O": "CAMEO",
"ST": "TAIWAN"
},
"pubkey": {
"bits": 1024,
"type": "rsa"
},
"subject": {
"C": "TW",
"L": "TAIPEI",
"O": "CAMEO",
"ST": "TAIWAN"
"CN":"name.tld"
}
},
"cipher": {
"version": "TLSv1/SSLv3",
"bits": 256,
"name": "AES256-SHA"
},
"chain": ["-----BEGIN CERTIFICATE-----
MIICETCCAXqgAwIBAgIJAIw4xswSiNXsMA0GCSqGSIb3DQEBBQUAMD8xCzAJBgNV
BAYTAlRXMQ8wDQYDVQQIEwZUQUlXQU4xDzANBgNVBAcTBlRBSVBFSTEOMAwGA1UE
ChMFQ0FNRU8wHhcNMTEwMzI1MTAzMjEyWhcNMTIwMzI0MTAzMjEyWjA/MQswCQYD
VQQGEwJUVzEPMA0GA1UECBMGVEFJV0FOMQ8wDQYDVQQHEwZUQUlQRUkxDjAMBgNV
BAoTBUNBTUVPMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCj8HWSuWUHYWLD
ASV1KCWd9+9U19tINKgY8CTw/gKeVoF6bjgQ3tuXliScLAsU8nNGiZibaXq9KR67
nLjjHzFiJDr6s8M3qimLdhcA7kf71v806Mls4KctdrMUiX3Bc7WvYtbClke0QDlC
FGgK7HksEWpQ026E3pI0T/2mTvbeXQIDAQABoxUwEzARBglghkgBhvhCAQEEBAMC
BkAwDQYJKoZIhvcNAQEFBQADgYEANbiCHCROX0X9ZbBaOsijkGh6+7WLaLUDEUpp
rw+bHFKhOvtQgEyQ01U0V9ZYtdPyVLnNVmJu6Q8MPuqBCkpcv0/gH31YSSRyOhid
vc+qCUCA7UBqt5f7QVOOYPqhzieoUO+pmQ3zidcwUGYh19gQv/fl7SnG00cDgxg3
m89S7ao=
-----END CERTIFICATE-----
"],
"versions": ["TLSv1", "SSLv3", "-SSLv2", "-TLSv1.1", "-TLSv1.2"]
}
我们可以解析SSL 证书并在其中搜索术语。我们可以通过分隔嵌套的JSON 键来解析JSON .
。使用术语搜索通用名称 target
在其中,我们可以使用查询 ssl.cert.subject.CN:target
。
案例研究:Netblocks 和CVE-2020-3452
一项技术 运动鞋恶作剧 不久前向我展示了正在查看目标组织是否拥有ASN。这不仅可以在cli 中完成,也可以在shodan 中完成。与之前的案例研究一样,可以通过查询来发现目标ASN 中易受CVE-2020-3452 攻击的服务器
"Set-Cookie: webvpn;" org:"Target"
重要的是,这里要进行额外的检查,检查服务器是否实际上由目标拥有,而不仅仅是托管在其ASN 中。因此,为此,您可以添加 ssl:"Target"
对IP进行过滤或反向DNS检查,看看域名是否在范围内。
Shodan CLI
使用网络应用程序可能会很累而且很慢,所以还有 shodan cli 选项可将结果直接输入命令行并将其与管道和其他工具集成。您只需使用您的API 密钥对其进行初始化即可。
Shodan CLI 可以帮助您进行初始被动侦察。初始化该工具后,您可以使用它进行端口扫描、横幅抓取以及通过httpx/httprobe 探测HTTP 端口:
$ shodan host x.x.x.x # port scanning
$ shodan search ip:x.x.x.x # banner grabbing
$ shodan host --format tsv x.x.x.x | awk '{ print"x.x.x.x:"$1 }' | httpx -silent # probing for HTTP ports
Google 搜索服务器和IoT 设备
如前所述,当与开放范围相结合时,使用Shodan 进行错误赏金最引人注目,在开放范围中也可以报告与组织相关的系统。但是,与所有工具和搜索引擎一样,shodan 并不拥有所有可能的IP,因此它也可能导致漏报。但在完成初步侦察后,它绝对是一个有价值的工具。
结论
使用搜索引擎进行被动侦察,无论是端点发现、秘密发现还是子域发现,都需要大量挖掘,并且可能需要一些时间。但当谈到寻找错误时,越需要挖掘错误,它就越有可能不被骗。测试过滤器并创建独特且富有创意的查询是关键。