一、远程命令执行(RCE)
RCE漏洞概述 RCE漏洞允许攻击者通过某种方式在目标服务器上执行任意命令。这种漏洞通常出现在服务器端语言中,如PHP。
RCE漏洞原理 PHP中的一些函数可以执行命令或代码,但如果对这些函数的输入未加限制,就可能引发RCE漏洞。
1.执行PHP代码的函数 以下函数可能存在RCE风险:
$code =$_GET['code'];
eval($code); // 动态执行PHP代码
assert($code); // 断言执行PHP代码
echo preg_replace('/test/e',$code,'hello test'); // 正则表达式执行PHP代码
- 执行系统命令的函数 以下函数可用于执行系统命令:
$cmd =$_GET['cmd'];
echo `$cmd`; // 反引号执行系统命令
echo system($cmd); // system函数执行系统命令
echo shell_exec($cmd); // shell_exec函数执行系统命令
示例请求:http://192.168.10.111/day03/rcmd.php?cmd=whoami
- 命令链接符的使用
commend && 2commend
:逻辑与操作,前命令失败则不执行后命令。1commend & 2commend
:后台执行,两个命令同时执行。1commend || 2commend
:逻辑或操作,前命令成功则不执行后命令。1commend | 2commend
:管道操作,将前命令的输出作为后命令的输入。
- RCE漏洞防御措施
- 避免使用危险的函数。
- 对用户输入进行严格的过滤和验证。
二、文件上传漏洞
-
文件上传漏洞概述 文件上传漏洞允许攻击者上传可执行文件到服务器,进而执行恶意代码。
-
文件上传漏洞利用 以下是基于upload-lab的学习笔记,展示了文件上传漏洞的常见利用方法:
(1)前端检查绕过 直接删除表单的onsubmit事件。
(2)MIME类型验证绕过 通过抓包工具修改上传文件的Content-Type。
(3)黑名单限制绕过 使用黑名单中未列出的文件后缀名,如.php3、.phtml等。
(4)全面黑名单绕过 上传.htaccess文件,修改服务器配置,使所有文件按PHP执行。
SetHandler application/x-httpd-php
(5)大小写绕过 利用服务器对大小写不敏感的特性,上传不同大小写的文件后缀。
(6)空格和点绕过 在文件名末尾添加空格或点,利用Windows自动去除的特性绕过验证。
- 文件上传漏洞防御
- 使用白名单限制可上传的文件类型。
- 对上传文件进行重命名,避免使用用户提供的文件名。
- 对上传文件进行内容检查,确保其安全。