软文推广案例500字,企业网站pc优化,怎么做网站报告,wordpress菜单不现实什么是RCE#xff1f; Remote Command/Code Execute#xff0c;远程命令或代码执行。通过构造特殊的字符串#xff0c;将数据提交至Web应用程序#xff0c;并利用该方式执行外部程序或系统命令实施攻击#xff0c;类似于SQL注入。 Web应用程序使用了一些可以执行系统命令或…什么是RCE Remote Command/Code Execute远程命令或代码执行。通过构造特殊的字符串将数据提交至Web应用程序并利用该方式执行外部程序或系统命令实施攻击类似于SQL注入。 Web应用程序使用了一些可以执行系统命令或代码的函数而且对用户提交的数据过滤不严格导致黑客可以利用服务器执行命令或代码。 php相关函数
eval(string $code);assert()函数preg_replace()函数call_user_func()函数exec()/shell_exec()函数反撇号作为命令来执行
当然不是只有以上的方式才是实现rce这几个是最典型的函数还有其他的函数就又大家以后去收集了
下面我们来看看远程代码执行
eval()函数我们在www目录下创建一个名为rce的文件夹并且创建rce.php文件写入以下代码
?php
//防止中文乱码
header(content-type:text/html;charsetutf8);
eval($_GET[code]);
? 去访问这个文件然后传入参数?codeecho 8-2;可以看到页面回显了6。
如果是一个恶意代码呢?codephpinfo(); 回显了php等其他相关信息
assert()函数assert函数的本意并不是要执行代码而是程序员用来调试代码用的。但是如果第一个参数是字符串它将会被 assert() 当做 PHP 代码来执行。先来看代码
?php
//防止中文乱码
header(content-type:text/html;charsetutf8);
//eval($_GET[code]);
assert($_GET[code]);
?
preg_replace函数preg_replace ( mixed $pattern , mixed $replacement , mixed $subject)
搜索 subject 中匹配 pattern 的部分 以 replacement 进行替换。如果所替换内容为可执行函数则该函数会被执行。
e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码。
?php
//防止中文乱码
header(content-type:text/html;charsetutf8);
//eval($_GET[code]);
//assert($_GET[code]);
//这里可以将phpinfo替换成$_GET[code]
preg_replace(/www/e,phpinfo(),www.com);
?
call_user_func()函数,这个函数输入的不是函数而是函数名?codephpinfo
?php
//防止中文乱码
header(content-type:text/html;charsetutf8);
//eval($_GET[code]);
//assert($_GET[code]);
//preg_replace(/www/e,phpinfo(),www.com);
call_user_func($_GET[code]);
? 下面是远程命令执行
exec()、shell_exec()函数
这里就可以输入ipconfig,whoami在我们输入ipconfig时我们发现只有一行的回显这是因为返回时有多行信息所以就返回最后一行所以我们就可以换一个函数
?php
echo exec($_GET[cmd]);
? 这个时候再传入ipconfig,信息就完整了
?php
//echo exec($_GET[cmd]);
echo shell_exec($_GET[cmd]);
?
反撇号
这个键在Esc键的下方Tab键的上方被反撇号包起来的的内容会被当做命令去执行但是内部不允许使用单引号双引号等所以直接上代码
?php
//echo exec($_GET[cmd]);
//echo shell_exec($_GET[cmd]);
$cmd $_GET[cmd];
echo $cmd;
?
接下来看看命令连接符 下面几个命令作为练习和验证
?php
//echo exec($_GET[cmd]);
//echo shell_exec($_GET[cmd]);
//$cmd $_GET[cmd];
//echo $cmd;
//pwd是linux下的命令在windows中不会有任何操作
echo whoamiipconfig;
echo pwdipconfig;
?
趁热打铁我们来到pikachu靶场进入第一个环境 这里提示要我们输入一个ip地址进去我这里输入127.0.0.1可以看到正确执行了这些乱码其实是pikachu内置的编码和浏览器不一致导致的 当然输入一个域名也是可以的这里我输入的百度的 接下来就可以练习命令连接符这里去ping127.0.0.1一定可以执行通过的连接后面的命令一定可以执行如果你的靶场搭建在linux操作系统中相应的命令要发生变换
//比如输入
127.0.0.1whoami
127.0.0.1ipconfig
接下来看看evel最简单的输入phpinfo(); ,或者echo 10-2; 。 rce漏洞该怎么防御呢对用户输入的符号做替换进行严格的过滤还可以进行输入内容的特征来详细的过滤比如第一个ping在这个环境中他只想让我们输入Ip地址那我们就可以根据Ip地址的特点点分十进制首先将输入的内容以点号来分割校验这四个部分是不是都是数字只要有一个部分不是数字那便返回错误。